From ff88a05cff49ec1a2d6b93c0a420b63537fd6f42 Mon Sep 17 00:00:00 2001 From: pukkandan Date: Thu, 4 Feb 2021 22:01:22 +0530 Subject: [PATCH] [pyinst] Automatically detect python architecture and working directory :ci skip all --- README.md | 2 +- devscripts/pyinst.py | 43 ++++++++++++++++++++++++++----------------- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 45b0031c6..2ff137e45 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,7 @@ To build the Windows executable, you must have pyinstaller (and optionally mutag python -m pip install --upgrade pyinstaller mutagen -For the 64bit version, run `py devscripts\pyinst.py 64` using 64bit python3. Similarly, to install 32bit version, run `py devscripts\pyinst.py 32` using 32bit python (preferably 3) +Once you have all the necessary dependancies installed, just run `py devscripts\pyinst.py`. The executable will be built for the same architecture (32/64 bit) as the python used to build it. It is strongly reccomended to use python3 although python2.6+ is supported. You can also build the executable without any version info or metadata by using: diff --git a/devscripts/pyinst.py b/devscripts/pyinst.py index a7fb59af0..49a055af3 100644 --- a/devscripts/pyinst.py +++ b/devscripts/pyinst.py @@ -1,5 +1,10 @@ +#!/usr/bin/env python +# coding: utf-8 + from __future__ import unicode_literals import sys +import os +import platform from PyInstaller.utils.win32.versioninfo import ( VarStruct, VarFileInfo, StringStruct, StringTable, @@ -7,13 +12,17 @@ from PyInstaller.utils.win32.versioninfo import ( ) import PyInstaller.__main__ +arch = sys.argv[1] if len(sys.argv) > 1 else platform.architecture()[0][:2] +assert arch in ('32', '64') +print('Building %sbit version' % arch) +_x86 = '_x86' if arch == '32' else '' -assert len(sys.argv) > 1 and sys.argv[1] in ("32", "64") -_x86 = "_x86" if sys.argv[1] == "32" else "" - -FILE_DESCRIPTION = 'Media Downloader%s' % (" (32 Bit)" if _x86 else '') -SHORT_URLS = {"32": "git.io/JUGsM", "64": "git.io/JLh7K"} +FILE_DESCRIPTION = 'Media Downloader%s' % (' (32 Bit)' if _x86 else '') +SHORT_URLS = {'32': 'git.io/JUGsM', '64': 'git.io/JLh7K'} +root_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) +print('Changing working directory to %s' % root_dir) +os.chdir(root_dir) exec(compile(open('youtube_dlc/version.py').read(), 'youtube_dlc/version.py', 'exec')) VERSION = locals()['__version__'] @@ -38,21 +47,21 @@ VERSION_FILE = VSVersionInfo( kids=[ StringFileInfo([ StringTable( - "040904B0", [ - StringStruct("Comments", "Youtube-dlc%s Command Line Interface." % _x86), - StringStruct("CompanyName", "pukkandan@gmail.com"), - StringStruct("FileDescription", FILE_DESCRIPTION), - StringStruct("FileVersion", VERSION), - StringStruct("InternalName", "youtube-dlc%s" % _x86), + '040904B0', [ + StringStruct('Comments', 'Youtube-dlc%s Command Line Interface.' % _x86), + StringStruct('CompanyName', 'pukkandan@gmail.com'), + StringStruct('FileDescription', FILE_DESCRIPTION), + StringStruct('FileVersion', VERSION), + StringStruct('InternalName', 'youtube-dlc%s' % _x86), StringStruct( - "LegalCopyright", - "pukkandan@gmail.com | UNLICENSE", + 'LegalCopyright', + 'pukkandan@gmail.com | UNLICENSE', ), - StringStruct("OriginalFilename", "youtube-dlc%s.exe" % _x86), - StringStruct("ProductName", "Youtube-dlc%s" % _x86), - StringStruct("ProductVersion", "%s%s | %s" % (VERSION, _x86, SHORT_URLS[sys.argv[1]])), + StringStruct('OriginalFilename', 'youtube-dlc%s.exe' % _x86), + StringStruct('ProductName', 'Youtube-dlc%s' % _x86), + StringStruct('ProductVersion', '%s%s | %s' % (VERSION, _x86, SHORT_URLS[arch])), ])]), - VarFileInfo([VarStruct("Translation", [0, 1200])]) + VarFileInfo([VarStruct('Translation', [0, 1200])]) ] )