[build] py2exe: Migrate to freeze API (#5149)

Closes #5135
Authored by: SG5, pukkandan
This commit is contained in:
Sergey 2022-11-09 19:24:14 -08:00 committed by GitHub
parent 4dc23a8051
commit dc3028d233
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 71 additions and 56 deletions

View file

@ -194,7 +194,7 @@ jobs:
python-version: '3.8' python-version: '3.8'
- name: Install Requirements - name: Install Requirements
run: | # Custom pyinstaller built with https://github.com/yt-dlp/pyinstaller-builds run: | # Custom pyinstaller built with https://github.com/yt-dlp/pyinstaller-builds
python -m pip install --upgrade pip setuptools wheel "py2exe<0.12" python -m pip install --upgrade pip setuptools wheel py2exe
pip install "https://yt-dlp.github.io/Pyinstaller-Builds/x86_64/pyinstaller-5.3-py3-none-any.whl" -r requirements.txt pip install "https://yt-dlp.github.io/Pyinstaller-Builds/x86_64/pyinstaller-5.3-py3-none-any.whl" -r requirements.txt
- name: Prepare - name: Prepare

125
setup.py
View file

@ -36,36 +36,34 @@ def packages():
def py2exe_params(): def py2exe_params():
import py2exe # noqa: F401
warnings.warn( warnings.warn(
'py2exe builds do not support pycryptodomex and needs VC++14 to run. ' 'py2exe builds do not support pycryptodomex and needs VC++14 to run. '
'The recommended way is to use "pyinst.py" to build using pyinstaller') 'It is recommended to run "pyinst.py" to build using pyinstaller instead')
return { return {
'console': [{ 'console': [{
'script': './yt_dlp/__main__.py', 'script': './yt_dlp/__main__.py',
'dest_base': 'yt-dlp', 'dest_base': 'yt-dlp',
'icon_resources': [(1, 'devscripts/logo.ico')],
}],
'version_info': {
'version': VERSION, 'version': VERSION,
'description': DESCRIPTION, 'description': DESCRIPTION,
'comments': LONG_DESCRIPTION.split('\n')[0], 'comments': LONG_DESCRIPTION.split('\n')[0],
'product_name': 'yt-dlp', 'product_name': 'yt-dlp',
'product_version': VERSION, 'product_version': VERSION,
'icon_resources': [(1, 'devscripts/logo.ico')],
}],
'options': {
'py2exe': {
'bundle_files': 0,
'compressed': 1,
'optimize': 2,
'dist_dir': './dist',
'excludes': ['Crypto', 'Cryptodome'], # py2exe cannot import Crypto
'dll_excludes': ['w9xpopen.exe', 'crypt32.dll'],
# Modules that are only imported dynamically must be added here
'includes': ['yt_dlp.compat._legacy'],
}
}, },
'zipfile': None 'options': {
'bundle_files': 0,
'compressed': 1,
'optimize': 2,
'dist_dir': './dist',
'excludes': ['Crypto', 'Cryptodome'], # py2exe cannot import Crypto
'dll_excludes': ['w9xpopen.exe', 'crypt32.dll'],
# Modules that are only imported dynamically must be added here
'includes': ['yt_dlp.compat._legacy'],
},
'zipfile': None,
} }
@ -113,41 +111,58 @@ def run(self):
subprocess.run([sys.executable, 'devscripts/make_lazy_extractors.py']) subprocess.run([sys.executable, 'devscripts/make_lazy_extractors.py'])
params = py2exe_params() if sys.argv[1:2] == ['py2exe'] else build_params() def main():
setup( if sys.argv[1:2] == ['py2exe']:
name='yt-dlp', params = py2exe_params()
version=VERSION, try:
maintainer='pukkandan', from py2exe import freeze
maintainer_email='pukkandan.ytdlp@gmail.com', except ImportError:
description=DESCRIPTION, import py2exe # noqa: F401
long_description=LONG_DESCRIPTION, warnings.warn('You are using an outdated version of py2exe. Support for this version will be removed in the future')
long_description_content_type='text/markdown', params['console'][0].update(params.pop('version_info'))
url='https://github.com/yt-dlp/yt-dlp', params['options'] = {'py2exe': params.pop('options')}
packages=packages(), else:
install_requires=REQUIREMENTS, return freeze(**params)
python_requires='>=3.7', else:
project_urls={ params = build_params()
'Documentation': 'https://github.com/yt-dlp/yt-dlp#readme',
'Source': 'https://github.com/yt-dlp/yt-dlp', setup(
'Tracker': 'https://github.com/yt-dlp/yt-dlp/issues', name='yt-dlp',
'Funding': 'https://github.com/yt-dlp/yt-dlp/blob/master/Collaborators.md#collaborators', version=VERSION,
}, maintainer='pukkandan',
classifiers=[ maintainer_email='pukkandan.ytdlp@gmail.com',
'Topic :: Multimedia :: Video', description=DESCRIPTION,
'Development Status :: 5 - Production/Stable', long_description=LONG_DESCRIPTION,
'Environment :: Console', long_description_content_type='text/markdown',
'Programming Language :: Python', url='https://github.com/yt-dlp/yt-dlp',
'Programming Language :: Python :: 3.7', packages=packages(),
'Programming Language :: Python :: 3.8', install_requires=REQUIREMENTS,
'Programming Language :: Python :: 3.9', python_requires='>=3.7',
'Programming Language :: Python :: 3.10', project_urls={
'Programming Language :: Python :: 3.11', 'Documentation': 'https://github.com/yt-dlp/yt-dlp#readme',
'Programming Language :: Python :: Implementation', 'Source': 'https://github.com/yt-dlp/yt-dlp',
'Programming Language :: Python :: Implementation :: CPython', 'Tracker': 'https://github.com/yt-dlp/yt-dlp/issues',
'Programming Language :: Python :: Implementation :: PyPy', 'Funding': 'https://github.com/yt-dlp/yt-dlp/blob/master/Collaborators.md#collaborators',
'License :: Public Domain', },
'Operating System :: OS Independent', classifiers=[
], 'Topic :: Multimedia :: Video',
cmdclass={'build_lazy_extractors': build_lazy_extractors}, 'Development Status :: 5 - Production/Stable',
**params 'Environment :: Console',
) 'Programming Language :: Python',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: Implementation',
'Programming Language :: Python :: Implementation :: CPython',
'Programming Language :: Python :: Implementation :: PyPy',
'License :: Public Domain',
'Operating System :: OS Independent',
],
cmdclass={'build_lazy_extractors': build_lazy_extractors},
**params
)
main()