From 4cc9ef207836d7423e76a7a893f82aaf08256c7e Mon Sep 17 00:00:00 2001 From: SomberNight Date: Fri, 17 Nov 2023 13:28:33 +0000 Subject: [PATCH] pyinstaller build: clean-up .spec, fix issue described in prev commit The hw_wallet and jade plugins were being included twice in the pyinstaller binaries. They were apparently the only two plugins being picked as "modules" (a.pure), which by default are included as compiled-bytecode. In addition, we included "electrum/plugins" as data (a.data), which meant all plugins in source form. Instead of hacking around to fix the specific issue, this attempts a larger clean-up. --- contrib/build-wine/deterministic.spec | 26 +++----------------------- contrib/osx/osx.spec | 26 ++++---------------------- 2 files changed, 7 insertions(+), 45 deletions(-) diff --git a/contrib/build-wine/deterministic.spec b/contrib/build-wine/deterministic.spec index 5413f4590..92204104d 100644 --- a/contrib/build-wine/deterministic.spec +++ b/contrib/build-wine/deterministic.spec @@ -13,17 +13,7 @@ home = 'C:\\electrum\\' # see https://github.com/pyinstaller/pyinstaller/issues/2005 hiddenimports = [] hiddenimports += collect_submodules('pkg_resources') # workaround for https://github.com/pypa/setuptools/issues/1963 -hiddenimports += collect_submodules('trezorlib') -hiddenimports += collect_submodules('safetlib') -hiddenimports += collect_submodules('btchip') # device plugin: ledger -hiddenimports += collect_submodules('ledger_bitcoin') # device plugin: ledger -hiddenimports += collect_submodules('keepkeylib') -hiddenimports += collect_submodules('websocket') -hiddenimports += collect_submodules('ckcc') -hiddenimports += collect_submodules('bitbox02') -hiddenimports += ['electrum.plugins.jade.jade'] -hiddenimports += ['electrum.plugins.jade.jadepy.jade'] -hiddenimports += ['PyQt5.QtPrintSupport'] # needed by Revealer +hiddenimports += collect_submodules('electrum.plugins') binaries = [] @@ -39,10 +29,10 @@ datas = [ (home+'electrum/wordlist/english.txt', 'electrum/wordlist'), (home+'electrum/wordlist/slip39.txt', 'electrum/wordlist'), (home+'electrum/locale', 'electrum/locale'), - (home+'electrum/plugins', 'electrum/plugins'), (home+'electrum/gui/icons', 'electrum/gui/icons'), ] -datas += collect_data_files('trezorlib') +datas += collect_data_files('electrum.plugins') +datas += collect_data_files('trezorlib') # TODO is this needed? and same question for other hww libs datas += collect_data_files('safetlib') datas += collect_data_files('btchip') datas += collect_data_files('keepkeylib') @@ -60,16 +50,6 @@ a = Analysis([home+'run_electrum', home+'electrum/bitcoin.py', home+'electrum/dnssec.py', home+'electrum/commands.py', - home+'electrum/plugins/trustedcoin/qt.py', - home+'electrum/plugins/cosigner_pool/qt.py', - home+'electrum/plugins/trezor/qt.py', - home+'electrum/plugins/safe_t/client.py', - home+'electrum/plugins/safe_t/qt.py', - home+'electrum/plugins/keepkey/qt.py', - home+'electrum/plugins/ledger/qt.py', - home+'electrum/plugins/coldcard/qt.py', - home+'electrum/plugins/jade/qt.py', - #home+'packages/requests/utils.py' ], binaries=binaries, datas=datas, diff --git a/contrib/osx/osx.spec b/contrib/osx/osx.spec index e428963e1..d8433c36f 100644 --- a/contrib/osx/osx.spec +++ b/contrib/osx/osx.spec @@ -20,17 +20,8 @@ block_cipher = None # see https://github.com/pyinstaller/pyinstaller/issues/2005 hiddenimports = [] hiddenimports += collect_submodules('pkg_resources') # workaround for https://github.com/pypa/setuptools/issues/1963 -hiddenimports += collect_submodules('trezorlib') -hiddenimports += collect_submodules('safetlib') -hiddenimports += collect_submodules('btchip') # device plugin: ledger -hiddenimports += collect_submodules('ledger_bitcoin') # device plugin: ledger -hiddenimports += collect_submodules('keepkeylib') -hiddenimports += collect_submodules('websocket') -hiddenimports += collect_submodules('ckcc') -hiddenimports += collect_submodules('bitbox02') -hiddenimports += ['electrum.plugins.jade.jade'] -hiddenimports += ['electrum.plugins.jade.jadepy.jade'] -hiddenimports += ['PyQt5.QtPrintSupport'] # needed by Revealer +hiddenimports += collect_submodules('electrum.plugins') + datas = [ (electrum + PYPKG + '/*.json', PYPKG), @@ -38,10 +29,10 @@ datas = [ (electrum + PYPKG + '/wordlist/english.txt', PYPKG + '/wordlist'), (electrum + PYPKG + '/wordlist/slip39.txt', PYPKG + '/wordlist'), (electrum + PYPKG + '/locale', PYPKG + '/locale'), - (electrum + PYPKG + '/plugins', PYPKG + '/plugins'), (electrum + PYPKG + '/gui/icons', PYPKG + '/gui/icons'), ] -datas += collect_data_files('trezorlib') +datas += collect_data_files('electrum.plugins') +datas += collect_data_files('trezorlib') # TODO is this needed? and same question for other hww libs datas += collect_data_files('safetlib') datas += collect_data_files('btchip') datas += collect_data_files('keepkeylib') @@ -64,15 +55,6 @@ a = Analysis([electrum+ MAIN_SCRIPT, electrum+'electrum/bitcoin.py', electrum+'electrum/dnssec.py', electrum+'electrum/commands.py', - electrum+'electrum/plugins/trustedcoin/qt.py', - electrum+'electrum/plugins/cosigner_pool/qt.py', - electrum+'electrum/plugins/trezor/qt.py', - electrum+'electrum/plugins/safe_t/client.py', - electrum+'electrum/plugins/safe_t/qt.py', - electrum+'electrum/plugins/keepkey/qt.py', - electrum+'electrum/plugins/ledger/qt.py', - electrum+'electrum/plugins/coldcard/qt.py', - electrum+'electrum/plugins/jade/qt.py', ], binaries=binaries, datas=datas,