URI: 
       tdeterministic.spec - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
       tdeterministic.spec (5938B)
       ---
            1 # -*- mode: python -*-
            2 
            3 from PyInstaller.utils.hooks import collect_data_files, collect_submodules, collect_dynamic_libs
            4 
            5 import sys
            6 for i, x in enumerate(sys.argv):
            7     if x == '--name':
            8         cmdline_name = sys.argv[i+1]
            9         break
           10 else:
           11     raise Exception('no name')
           12 
           13 home = 'C:\\electrum\\'
           14 
           15 # see https://github.com/pyinstaller/pyinstaller/issues/2005
           16 hiddenimports = []
           17 hiddenimports += collect_submodules('pkg_resources')  # workaround for https://github.com/pypa/setuptools/issues/1963
           18 hiddenimports += collect_submodules('trezorlib')
           19 hiddenimports += collect_submodules('safetlib')
           20 hiddenimports += collect_submodules('btchip')
           21 hiddenimports += collect_submodules('keepkeylib')
           22 hiddenimports += collect_submodules('websocket')
           23 hiddenimports += collect_submodules('ckcc')
           24 hiddenimports += collect_submodules('bitbox02')
           25 hiddenimports += ['PyQt5.QtPrintSupport']  # needed by Revealer
           26 
           27 
           28 binaries = []
           29 
           30 # Workaround for "Retro Look":
           31 binaries += [b for b in collect_dynamic_libs('PyQt5') if 'qwindowsvista' in b[0]]
           32 
           33 binaries += [('C:/tmp/libsecp256k1-0.dll', '.')]
           34 binaries += [('C:/tmp/libusb-1.0.dll', '.')]
           35 binaries += [('C:/tmp/libzbar-0.dll', '.')]
           36 
           37 datas = [
           38     (home+'electrum/*.json', 'electrum'),
           39     (home+'electrum/lnwire/*.csv', 'electrum/lnwire'),
           40     (home+'electrum/wordlist/english.txt', 'electrum/wordlist'),
           41     (home+'electrum/locale', 'electrum/locale'),
           42     (home+'electrum/plugins', 'electrum/plugins'),
           43     (home+'electrum/gui/icons', 'electrum/gui/icons'),
           44 ]
           45 datas += collect_data_files('trezorlib')
           46 datas += collect_data_files('safetlib')
           47 datas += collect_data_files('btchip')
           48 datas += collect_data_files('keepkeylib')
           49 datas += collect_data_files('ckcc')
           50 datas += collect_data_files('bitbox02')
           51 
           52 # We don't put these files in to actually include them in the script but to make the Analysis method scan them for imports
           53 a = Analysis([home+'run_electrum',
           54               home+'electrum/gui/qt/main_window.py',
           55               home+'electrum/gui/text.py',
           56               home+'electrum/util.py',
           57               home+'electrum/wallet.py',
           58               home+'electrum/simple_config.py',
           59               home+'electrum/bitcoin.py',
           60               home+'electrum/dnssec.py',
           61               home+'electrum/commands.py',
           62               home+'electrum/plugins/cosigner_pool/qt.py',
           63               home+'electrum/plugins/email_requests/qt.py',
           64               home+'electrum/plugins/trezor/qt.py',
           65               home+'electrum/plugins/safe_t/client.py',
           66               home+'electrum/plugins/safe_t/qt.py',
           67               home+'electrum/plugins/keepkey/qt.py',
           68               home+'electrum/plugins/ledger/qt.py',
           69               home+'electrum/plugins/coldcard/qt.py',
           70               #home+'packages/requests/utils.py'
           71               ],
           72              binaries=binaries,
           73              datas=datas,
           74              #pathex=[home+'lib', home+'gui', home+'plugins'],
           75              hiddenimports=hiddenimports,
           76              hookspath=[])
           77 
           78 
           79 # http://stackoverflow.com/questions/19055089/pyinstaller-onefile-warning-pyconfig-h-when-importing-scipy-or-scipy-signal
           80 for d in a.datas:
           81     if 'pyconfig' in d[0]:
           82         a.datas.remove(d)
           83         break
           84 
           85 # Strip out parts of Qt that we never use. Reduces binary size by tens of MBs. see #4815
           86 qt_bins2remove=('qt5web', 'qt53d', 'qt5game', 'qt5designer', 'qt5quick',
           87                 'qt5location', 'qt5test', 'qt5xml', r'pyqt5\qt\qml\qtquick')
           88 print("Removing Qt binaries:", *qt_bins2remove)
           89 for x in a.binaries.copy():
           90     for r in qt_bins2remove:
           91         if x[0].lower().startswith(r):
           92             a.binaries.remove(x)
           93             print('----> Removed x =', x)
           94 
           95 qt_data2remove=(r'pyqt5\qt\translations\qtwebengine_locales', )
           96 print("Removing Qt datas:", *qt_data2remove)
           97 for x in a.datas.copy():
           98     for r in qt_data2remove:
           99         if x[0].lower().startswith(r):
          100             a.datas.remove(x)
          101             print('----> Removed x =', x)
          102 
          103 # hotfix for #3171 (pre-Win10 binaries)
          104 a.binaries = [x for x in a.binaries if not x[1].lower().startswith(r'c:\windows')]
          105 
          106 pyz = PYZ(a.pure)
          107 
          108 
          109 #####
          110 # "standalone" exe with all dependencies packed into it
          111 
          112 exe_standalone = EXE(
          113     pyz,
          114     a.scripts,
          115     a.binaries,
          116     a.datas,
          117     name=os.path.join('build\\pyi.win32\\electrum', cmdline_name + ".exe"),
          118     debug=False,
          119     strip=None,
          120     upx=False,
          121     icon=home+'electrum/gui/icons/electrum.ico',
          122     console=False)
          123     # console=True makes an annoying black box pop up, but it does make Electrum output command line commands, with this turned off no output will be given but commands can still be used
          124 
          125 exe_portable = EXE(
          126     pyz,
          127     a.scripts,
          128     a.binaries,
          129     a.datas + [ ('is_portable', 'README.md', 'DATA' ) ],
          130     name=os.path.join('build\\pyi.win32\\electrum', cmdline_name + "-portable.exe"),
          131     debug=False,
          132     strip=None,
          133     upx=False,
          134     icon=home+'electrum/gui/icons/electrum.ico',
          135     console=False)
          136 
          137 #####
          138 # exe and separate files that NSIS uses to build installer "setup" exe
          139 
          140 exe_inside_setup_noconsole = EXE(
          141     pyz,
          142     a.scripts,
          143     exclude_binaries=True,
          144     name=os.path.join('build\\pyi.win32\\electrum', cmdline_name),
          145     debug=False,
          146     strip=None,
          147     upx=False,
          148     icon=home+'electrum/gui/icons/electrum.ico',
          149     console=False)
          150 
          151 exe_inside_setup_console = EXE(
          152     pyz,
          153     a.scripts,
          154     exclude_binaries=True,
          155     name=os.path.join('build\\pyi.win32\\electrum', cmdline_name+"-debug"),
          156     debug=False,
          157     strip=None,
          158     upx=False,
          159     icon=home+'electrum/gui/icons/electrum.ico',
          160     console=True)
          161 
          162 coll = COLLECT(
          163     exe_inside_setup_noconsole,
          164     exe_inside_setup_console,
          165     a.binaries,
          166     a.zipfiles,
          167     a.datas,
          168     strip=None,
          169     upx=True,
          170     debug=False,
          171     icon=home+'electrum/gui/icons/electrum.ico',
          172     console=False,
          173     name=os.path.join('dist', 'electrum'))