From 8f60d5ec903d96d3e073546a9c6184f68a611779 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Wed, 8 Mar 2017 11:12:03 +0100 Subject: [PATCH] changes for pyinstaller3 --- contrib/build-wine/build-electrum-git.sh | 3 +- contrib/build-wine/deterministic.spec | 57 +++++++++--------------- contrib/build-wine/prepare-wine.sh | 12 +++-- electrum | 1 + plugins/__init__.py | 15 +++++++ 5 files changed, 47 insertions(+), 41 deletions(-) diff --git a/contrib/build-wine/build-electrum-git.sh b/contrib/build-wine/build-electrum-git.sh index d2eb4cffb..ed30b39cd 100755 --- a/contrib/build-wine/build-electrum-git.sh +++ b/contrib/build-wine/build-electrum-git.sh @@ -35,7 +35,7 @@ fi cd electrum-git VERSION=`git describe --tags` echo "Last commit: $VERSION" - +$PYTHON setup.py install cd .. rm -rf $WINEPREFIX/drive_c/electrum @@ -59,6 +59,7 @@ rm -rf dist/ # build standalone version $PYTHON "C:/pyinstaller/pyinstaller.py" --noconfirm --ascii --name $NAME_ROOT-$VERSION.exe -w deterministic.spec +exit # build NSIS installer # $VERSION could be passed to the electrum.nsi script, but this would require some rewriting in the script iself. wine "$WINEPREFIX/drive_c/Program Files (x86)/NSIS/makensis.exe" /DPRODUCT_VERSION=$VERSION electrum.nsi diff --git a/contrib/build-wine/deterministic.spec b/contrib/build-wine/deterministic.spec index ad3f936f7..3c4adfd65 100644 --- a/contrib/build-wine/deterministic.spec +++ b/contrib/build-wine/deterministic.spec @@ -11,6 +11,19 @@ else: home = 'C:\\electrum\\' +dlls = ['libiconv-2.dll', + 'libjpeg-7.dll', + 'libMagickCore-2.dll', + 'libMagickWand-2.dll', + 'libpng12-0.dll', + 'libtiff-3.dll', + 'libxml2-2.dll', + 'libzbar-0.dll', + 'zlib1.dll'] + +zbar_dlls = [('C:\\Program Files (x86)\\Zbar\\bin\\'+x, x) for x in dlls] + + # We don't put these files in to actually include them in the script but to make the Analysis method scan them for imports a = Analysis([home+'electrum', home+'gui/qt/main_window.py', @@ -21,6 +34,9 @@ a = Analysis([home+'electrum', home+'lib/bitcoin.py', home+'lib/dnssec.py', home+'lib/commands.py', + home+'lib/daemon.py', + home+'lib/plugins.py', + home+'lib/qrscanner.py', home+'plugins/cosigner_pool/qt.py', home+'plugins/email_requests/qt.py', home+'plugins/trezor/client.py', @@ -29,45 +45,12 @@ a = Analysis([home+'electrum', home+'plugins/ledger/qt.py', home+'packages/requests/utils.py' ], - pathex=[home+'lib', home+'gui', home+'plugins', home+'packages'], - hiddenimports=['lib', 'gui'], + datas = [ + (home+'lib/currencies.json', 'electrum'), + (home+'lib/wordlist/english.txt', 'electrum/wordlist')], + binaries= zbar_dlls, hookspath=[]) -##### include folder in distribution ####### -def extra_datas(mydir): - def rec_glob(p, files): - import os - import glob - for d in glob.glob(p): - if os.path.isfile(d): - files.append(d) - rec_glob("%s/*" % d, files) - files = [] - rec_glob("%s/*" % mydir, files) - extra_datas = [] - for f in files: - d = f.split('\\') - t = '' - for a in d[2:]: - if len(t)==0: - t = a - else: - t = t+'\\'+a - extra_datas.append((t, f, 'DATA')) - - return extra_datas -########################################### - -# append dirs - -# cacert.pem -a.datas += [ ('requests/cacert.pem', home+'packages/requests/cacert.pem', 'DATA') ] - -# Py folders that are needed because of the magic import finding -a.datas += extra_datas(home+'gui') -a.datas += extra_datas(home+'lib') -a.datas += extra_datas(home+'plugins') -a.datas += extra_datas(home+'packages') # http://stackoverflow.com/questions/19055089/pyinstaller-onefile-warning-pyconfig-h-when-importing-scipy-or-scipy-signal for d in a.datas: diff --git a/contrib/build-wine/prepare-wine.sh b/contrib/build-wine/prepare-wine.sh index db460d445..a7d7aae29 100755 --- a/contrib/build-wine/prepare-wine.sh +++ b/contrib/build-wine/prepare-wine.sh @@ -4,7 +4,8 @@ PYTHON_URL=https://www.python.org/ftp/python/2.7.13/python-2.7.13.msi PYQT4_URL=http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-4.11.1/PyQt4-4.11.1-gpl-Py2.7-Qt4.8.6-x32.exe PYWIN32_URL=http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/pywin32-219.win32-py2.7.exe/download -PYINSTALLER_URL=https://pypi.python.org/packages/source/P/PyInstaller/PyInstaller-2.1.zip +#PYINSTALLER_URL=https://pypi.python.org/packages/source/P/PyInstaller/PyInstaller-2.1.zip +PYINSTALLER_URL=https://pypi.python.org/packages/source/P/PyInstaller/PyInstaller-3.2.zip NSIS_URL=http://prdownloads.sourceforge.net/nsis/nsis-2.46-setup.exe?download SETUPTOOLS_URL=https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11.win32-py2.7.exe @@ -49,11 +50,16 @@ wine PyQt.exe # Install pyinstaller wget -O pyinstaller.zip "$PYINSTALLER_URL" unzip pyinstaller.zip -mv PyInstaller-2.1 $WINEPREFIX/drive_c/pyinstaller +#mv PyInstaller-2.1 $WINEPREFIX/drive_c/pyinstaller +mv PyInstaller-3.2.1 $WINEPREFIX/drive_c/pyinstaller +#note: run setup.py too! +wine c:/python27/python.exe -OO -B setup.py install + +also needed: https://pypi.python.org/pypi/win_inet_pton # Install ZBar #wget -q -O zbar.exe "http://sourceforge.net/projects/zbar/files/zbar/0.10/zbar-0.10-setup.exe/download" -#wine zbar.exe +#wine zbar-0.10-setup.exe # install Cryptodome $PYTHON -m pip install pycryptodomex diff --git a/electrum b/electrum index b9ab19648..95babb7b5 100755 --- a/electrum +++ b/electrum @@ -94,6 +94,7 @@ if is_bundle or is_local or is_android: import imp imp.load_module('electrum', *imp.find_module('lib')) imp.load_module('electrum_gui', *imp.find_module('gui')) + imp.load_module('electrum_plugins', *imp.find_module('plugins')) from electrum import bitcoin, network from electrum import SimpleConfig, Network diff --git a/plugins/__init__.py b/plugins/__init__.py index c6cfe2fdb..de5abb849 100644 --- a/plugins/__init__.py +++ b/plugins/__init__.py @@ -23,4 +23,19 @@ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. +import audio_modem +names = [ + 'audio_modem', + 'cosigner_pool', + 'digitalbitbox', + 'email_requests', + 'greenaddress_instant', + 'hw_wallet', + 'keepkey', + 'labels', + 'ledger', + 'trezor', + 'trustedcoin', + 'virtualkeyboard', +]