161 lines
4.5 KiB
Python
161 lines
4.5 KiB
Python
# -*- mode: python -*-
|
|
import sys
|
|
from PyInstaller.utils.hooks import collect_data_files, collect_submodules
|
|
|
|
|
|
for i, x in enumerate(sys.argv):
|
|
if x == '--name':
|
|
cmdline_name = sys.argv[i+1]
|
|
break
|
|
else:
|
|
raise Exception('no name')
|
|
|
|
hiddenimports = collect_submodules('trezorlib')
|
|
hiddenimports += collect_submodules('btchip')
|
|
hiddenimports += collect_submodules('keepkeylib')
|
|
hiddenimports += collect_submodules('websocket')
|
|
hiddenimports += [
|
|
'lib',
|
|
'lib.base_wizard',
|
|
'lib.plot',
|
|
'lib.qrscanner',
|
|
'lib.websockets',
|
|
'gui.qt',
|
|
|
|
'plugins',
|
|
|
|
'plugins.hw_wallet.qt',
|
|
|
|
'plugins.audio_modem.qt',
|
|
'plugins.cosigner_pool.qt',
|
|
'plugins.digitalbitbox.qt',
|
|
'plugins.email_requests.qt',
|
|
'plugins.keepkey.qt',
|
|
'plugins.labels.qt',
|
|
'plugins.trezor.qt',
|
|
'plugins.ledger.qt',
|
|
'plugins.virtualkeyboard.qt',
|
|
]
|
|
|
|
datas = [
|
|
('lib/servers.json', 'electrum_zclassic'),
|
|
('lib/servers_testnet.json', 'electrum_zclassic'),
|
|
('lib/servers_regtest.json', 'electrum_zclassic'),
|
|
('lib/currencies.json', 'electrum_zclassic'),
|
|
('lib/locale', 'electrum_zclassic/locale'),
|
|
('lib/wordlist', 'electrum_zclassic/wordlist'),
|
|
('C:\\zbarw', '.'),
|
|
]
|
|
datas += collect_data_files('trezorlib')
|
|
datas += collect_data_files('btchip')
|
|
datas += collect_data_files('keepkeylib')
|
|
|
|
binaries = [('C:/Python36/libusb-1.0.dll', '.')]
|
|
|
|
# https://github.com/pyinstaller/pyinstaller/wiki/Recipe-remove-tkinter-tcl
|
|
sys.modules['FixTk'] = None
|
|
excludes = ['FixTk', 'tcl', 'tk', '_tkinter', 'tkinter', 'Tkinter']
|
|
excludes += [
|
|
'PyQt5.QtCLucene',
|
|
'PyQt5.Qt5CLucene',
|
|
'PyQt5.QtDesigner',
|
|
'PyQt5.QtDesignerComponents',
|
|
'PyQt5.QtHelp',
|
|
'PyQt5.QtLocation',
|
|
'PyQt5.QtMultimedia',
|
|
'PyQt5.QtMultimediaQuick_p',
|
|
'PyQt5.QtMultimediaWidgets',
|
|
'PyQt5.QtNetwork',
|
|
'PyQt5.QtOpenGL',
|
|
'PyQt5.QtPositioning',
|
|
'PyQt5.QtPrintSupport',
|
|
'PyQt5.QtQml',
|
|
'PyQt5.QtQuick',
|
|
'PyQt5.QtQuickParticles',
|
|
'PyQt5.QtQuickWidgets',
|
|
'PyQt5.QtSensors',
|
|
'PyQt5.QtSerialPort',
|
|
'PyQt5.QtSql',
|
|
'PyQt5.Qt5Sql',
|
|
'PyQt5.QtTest',
|
|
'PyQt5.QtWebChannel',
|
|
'PyQt5.QtWebKit',
|
|
'PyQt5.QtWebKitWidgets',
|
|
'PyQt5.QtWebSockets',
|
|
'PyQt5.QtXml',
|
|
'PyQt5.QtXmlPatterns',
|
|
'PyQt5.QtWebProcess',
|
|
'PyQt5.QtWinExtras',
|
|
]
|
|
|
|
a = Analysis(['electrum-zclassic'],
|
|
pathex=['plugins'],
|
|
hiddenimports=hiddenimports,
|
|
datas=datas,
|
|
binaries=binaries,
|
|
excludes=excludes,
|
|
runtime_hooks=['pyi_runtimehook.py'])
|
|
|
|
# http://stackoverflow.com/questions/19055089/
|
|
for d in a.datas:
|
|
if 'pyconfig' in d[0]:
|
|
a.datas.remove(d)
|
|
break
|
|
|
|
# Add TOC to electrum_zclassic, electrum_zclassic_gui, electrum_zclassic_plugins
|
|
for p in sorted(a.pure):
|
|
if p[0].startswith('lib') and p[2] == 'PYMODULE':
|
|
a.pure += [('electrum_zclassic%s' % p[0][3:] , p[1], p[2])]
|
|
if p[0].startswith('gui') and p[2] == 'PYMODULE':
|
|
a.pure += [('electrum_zclassic_gui%s' % p[0][3:] , p[1], p[2])]
|
|
if p[0].startswith('plugins') and p[2] == 'PYMODULE':
|
|
a.pure += [('electrum_zclassic_plugins%s' % p[0][7:] , p[1], p[2])]
|
|
|
|
pyz = PYZ(a.pure)
|
|
|
|
exe = EXE(pyz,
|
|
a.scripts,
|
|
exclude_binaries=True,
|
|
debug=False,
|
|
strip=False,
|
|
upx=False,
|
|
console=False,
|
|
icon='icons/electrum-zclassic.ico',
|
|
name=os.path.join('build\\pyi.win32\\electrum', cmdline_name))
|
|
|
|
# exe with console output
|
|
conexe = EXE(pyz,
|
|
a.scripts,
|
|
exclude_binaries=True,
|
|
debug=False,
|
|
strip=False,
|
|
upx=False,
|
|
console=True,
|
|
icon='icons/electrum-zclassic.ico',
|
|
name=os.path.join('build\\pyi.win32\\electrum',
|
|
'console-%s' % cmdline_name))
|
|
|
|
# trezorctl separate executable
|
|
tctl_a = Analysis(['C:/Python36/Scripts/trezorctl'],
|
|
hiddenimports=['pkgutil'],
|
|
excludes=excludes,
|
|
runtime_hooks=['pyi_tctl_runtimehook.py'])
|
|
|
|
tctl_pyz = PYZ(tctl_a.pure)
|
|
|
|
tctl_exe = EXE(tctl_pyz,
|
|
tctl_a.scripts,
|
|
exclude_binaries=True,
|
|
debug=False,
|
|
strip=False,
|
|
upx=False,
|
|
console=True,
|
|
name=os.path.join('build\\pyi.win32\\electrum', 'trezorctl.exe'))
|
|
|
|
coll = COLLECT(exe, conexe, tctl_exe,
|
|
a.binaries,
|
|
a.datas,
|
|
strip=False,
|
|
upx=False,
|
|
name=os.path.join('dist', 'electrum-zclassic'))
|