From 8579d8b3b5a02929d4d53859d0ca9c6c460764d1 Mon Sep 17 00:00:00 2001 From: Peter Surda Date: Mon, 27 Feb 2017 13:02:37 +0100 Subject: [PATCH] PyInstaller spec file updates - file name based on architecture, version and date - workaround for __init__ in src - change to unix line endings --- packages/pyinstaller/bitmessagemain.spec | 165 +++++++++++------------ 1 file changed, 79 insertions(+), 86 deletions(-) diff --git a/packages/pyinstaller/bitmessagemain.spec b/packages/pyinstaller/bitmessagemain.spec index 1f568f33..06cf6e76 100644 --- a/packages/pyinstaller/bitmessagemain.spec +++ b/packages/pyinstaller/bitmessagemain.spec @@ -1,86 +1,79 @@ -import ctypes -import os - -srcPath = "C:\\src\\PyBitmessage\\src\\" -qtPath = "C:\\Qt-4.8.7\\" -openSSLPath = "C:\\OpenSSL-1.0.2j\\" -outPath = "C:\\src\\PyInstaller-3.2.1\\bitmessagemain" - -hiddenimports= [] - -# manually add messagetypes directory and its listing -with open(os.path.join(srcPath, 'messagetypes.txt'), 'wt') as f: - for mt in os.listdir(os.path.join(srcPath, 'messagetypes')): - if mt == "__init__.py": - continue - splitted = os.path.splitext(mt) - if splitted[1] != ".py": - continue - f.write(mt + "\n") - hiddenimports.append('messagetypes.' + splitted[0]) - -# -*- mode: python -*- -a = Analysis([srcPath + 'bitmessagemain.py'], - pathex=[outPath], - hiddenimports=hiddenimports, - hookspath=None, - runtime_hooks=None) - -a.datas.append(('messagetypes.txt', os.path.join(srcPath, 'messagetypes.txt'), 'DATA')) - -# fix duplicates -for d in a.datas: - if 'pyconfig' in d[0]: - a.datas.remove(d) - break - -def addTranslations(): - import os - extraDatas = [] - for file in os.listdir(srcPath + 'translations'): - if file[-3:] != ".qm": - continue - extraDatas.append((os.path.join('translations', file), os.path.join(srcPath, 'translations', file), 'DATA')) - for file in os.listdir(qtPath + 'translations'): - if file[0:3] != "qt_" or file[5:8] != ".qm": - continue - extraDatas.append((os.path.join('translations', file), os.path.join(qtPath, 'translations', file), 'DATA')) - return extraDatas - -def addUIs(): - import os - extraDatas = [] - for file in os.listdir(srcPath + 'bitmessageqt'): - if file[-3:] != ".ui": - continue - extraDatas.append((os.path.join('ui', file), os.path.join(srcPath, 'bitmessageqt', file), 'DATA')) - return extraDatas - -# append the translations directory -a.datas += addTranslations() -a.datas += addUIs() - -if ctypes.sizeof(ctypes.c_voidp) == 4: - arch=32 -else: - arch=64 - -a.binaries += [('libeay32.dll', openSSLPath + 'libeay32.dll', 'BINARY'), - (os.path.join('bitmsghash', 'bitmsghash%i.dll' % (arch)), os.path.join(srcPath, 'bitmsghash', 'bitmsghash%i.dll' % (arch)), 'BINARY'), - (os.path.join('bitmsghash', 'bitmsghash.cl'), os.path.join(srcPath, 'bitmsghash', 'bitmsghash.cl'), 'BINARY'), - (os.path.join('sslkeys', 'cert.pem'), os.path.join(srcPath, 'sslkeys', 'cert.pem'), 'BINARY'), - (os.path.join('sslkeys', 'key.pem'), os.path.join(srcPath, 'sslkeys', 'key.pem'), 'BINARY') - ] - -pyz = PYZ(a.pure) -exe = EXE(pyz, - a.scripts, - a.binaries, - a.zipfiles, - a.datas, - a.binaries, - name='Bitmessage.exe', - debug=False, - strip=None, - upx=False, - console=False, icon= os.path.join(srcPath, 'images', 'can-icon.ico')) +import ctypes +import os +import time + +srcPath = "C:\\src\\PyBitmessage\\src\\" +qtPath = "C:\\Qt-4.8.7\\" +openSSLPath = "C:\\OpenSSL-1.0.2j\\bin\\" +outPath = "C:\\src\\PyInstaller-3.2.1\\bitmessagemain" +today = time.strftime("%Y%m%d") +snapshot = False + +os.rename(os.path.join(srcPath, '__init__.py'), os.path.join(srcPath, '__init__.py.backup')) + +# -*- mode: python -*- +a = Analysis([srcPath + 'bitmessagemain.py'], + pathex=[outPath], + hiddenimports=[], + hookspath=None, + runtime_hooks=None) + +os.rename(os.path.join(srcPath, '__init__.py.backup'), os.path.join(srcPath, '__init__.py')) + +def addTranslations(): + import os + extraDatas = [] + for file in os.listdir(srcPath + 'translations'): + if file[-3:] != ".qm": + continue + extraDatas.append((os.path.join('translations', file), os.path.join(srcPath, 'translations', file), 'DATA')) + for file in os.listdir(qtPath + 'translations'): + if file[0:3] != "qt_" or file[5:8] != ".qm": + continue + extraDatas.append((os.path.join('translations', file), os.path.join(qtPath, 'translations', file), 'DATA')) + return extraDatas + +def addUIs(): + import os + extraDatas = [] + for file in os.listdir(srcPath + 'bitmessageqt'): + if file[-3:] != ".ui": + continue + extraDatas.append((os.path.join('ui', file), os.path.join(srcPath, 'bitmessageqt', file), 'DATA')) + return extraDatas + +# append the translations directory +a.datas += addTranslations() +a.datas += addUIs() + +if ctypes.sizeof(ctypes.c_voidp) == 4: + arch=32 +else: + arch=64 + +a.binaries += [('libeay32.dll', openSSLPath + 'libeay32.dll', 'BINARY'), + (os.path.join('bitmsghash', 'bitmsghash%i.dll' % (arch)), os.path.join(srcPath, 'bitmsghash', 'bitmsghash%i.dll' % (arch)), 'BINARY'), + (os.path.join('bitmsghash', 'bitmsghash.cl'), os.path.join(srcPath, 'bitmsghash', 'bitmsghash.cl'), 'BINARY'), + (os.path.join('sslkeys', 'cert.pem'), os.path.join(srcPath, 'sslkeys', 'cert.pem'), 'BINARY'), + (os.path.join('sslkeys', 'key.pem'), os.path.join(srcPath, 'sslkeys', 'key.pem'), 'BINARY') + ] + +with open(os.path.join(srcPath, 'version.py'), 'rt') as f: + softwareVersion = f.readline().split('\'')[1] + +fname = 'Bitmessage_%s_%s.exe' % ("x86" if arch == 32 else "x64", softwareVersion) +if snapshot: + fname = 'Bitmessagedev_%s_%s.exe' % ("x86" if arch == 32 else "x64", today) + +pyz = PYZ(a.pure) +exe = EXE(pyz, + a.scripts, + a.binaries, + a.zipfiles, + a.datas, + a.binaries, + name=fname, + debug=False, + strip=None, + upx=False, + console=False, icon= os.path.join(srcPath, 'images', 'can-icon.ico'))