[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

View File

@ -36,25 +36,24 @@ 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': { 'options': {
'py2exe': {
'bundle_files': 0, 'bundle_files': 0,
'compressed': 1, 'compressed': 1,
'optimize': 2, 'optimize': 2,
@ -63,9 +62,8 @@ def py2exe_params():
'dll_excludes': ['w9xpopen.exe', 'crypt32.dll'], 'dll_excludes': ['w9xpopen.exe', 'crypt32.dll'],
# Modules that are only imported dynamically must be added here # Modules that are only imported dynamically must be added here
'includes': ['yt_dlp.compat._legacy'], 'includes': ['yt_dlp.compat._legacy'],
}
}, },
'zipfile': None 'zipfile': None,
} }
@ -113,7 +111,21 @@ class build_lazy_extractors(Command):
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():
if sys.argv[1:2] == ['py2exe']:
params = py2exe_params()
try:
from py2exe import freeze
except ImportError:
import py2exe # noqa: F401
warnings.warn('You are using an outdated version of py2exe. Support for this version will be removed in the future')
params['console'][0].update(params.pop('version_info'))
params['options'] = {'py2exe': params.pop('options')}
else:
return freeze(**params)
else:
params = build_params()
setup( setup(
name='yt-dlp', name='yt-dlp',
version=VERSION, version=VERSION,
@ -151,3 +163,6 @@ setup(
cmdclass={'build_lazy_extractors': build_lazy_extractors}, cmdclass={'build_lazy_extractors': build_lazy_extractors},
**params **params
) )
main()