update windows building scripts
This commit is contained in:
parent
22575b9760
commit
d48c211960
|
@ -1,10 +1,10 @@
|
||||||
These scripts can be used for cross-compilation of Windows Electrum executables from Linux/Wine.
|
These scripts can be used for cross-compilation of Windows Electrum executables from Linux/Wine.
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
1. Copy content of this directory to /build-wine.
|
1. Install Wine (tested with wine-1.7.18)
|
||||||
2. Install Wine (version 1.4 or 1.5+ works fine, 1.4.1 has bug).
|
2. Run "./prepare-wine.sh", it will download all dependencies. When you'll be asked, always leave default settings and press "Next >".
|
||||||
3. Run "./prepare-wine.sh", it will download all dependencies. When you'll be asked, always leave default settings and press "Next >".
|
3. Run "./prepare-hw.sh" to build support for hardware wallets (trezor)
|
||||||
4. By running "./build-electrum.sh", sources will be packed into three separate versions to dist/ directory:
|
4. Run "./build-electrum-git.sh". Sources will be packed into three separate versions to dist/ directory:
|
||||||
* Standalone compressed executable is "dist/electrum.exe"
|
* Standalone compressed executable is "dist/electrum.exe"
|
||||||
* Uncompressed binaries are in "dist/electrum". They're useful for comparsion with other builds.
|
* Uncompressed binaries are in "dist/electrum". They're useful for comparsion with other builds.
|
||||||
* NSIS-based installer of Electrum is "electrum-setup.exe"
|
* NSIS-based installer of Electrum is "electrum-setup.exe"
|
||||||
|
|
|
@ -5,11 +5,14 @@ ELECTRUM_GIT_URL=git://github.com/spesmilo/electrum.git
|
||||||
BRANCH=master
|
BRANCH=master
|
||||||
NAME_ROOT=electrum
|
NAME_ROOT=electrum
|
||||||
|
|
||||||
|
|
||||||
# These settings probably don't need any change
|
# These settings probably don't need any change
|
||||||
export WINEPREFIX=/opt/wine-electrum
|
export WINEPREFIX=/opt/electrum/wine64
|
||||||
|
|
||||||
PYHOME=c:/python27
|
PYHOME=c:/python27
|
||||||
PYTHON="wine $PYHOME/python.exe -OO -B"
|
PYTHON="wine $PYHOME/python.exe -OO -B"
|
||||||
|
|
||||||
|
|
||||||
# Let's begin!
|
# Let's begin!
|
||||||
cd `dirname $0`
|
cd `dirname $0`
|
||||||
set -e
|
set -e
|
||||||
|
@ -19,28 +22,28 @@ cd tmp
|
||||||
if [ -d "electrum-git" ]; then
|
if [ -d "electrum-git" ]; then
|
||||||
# GIT repository found, update it
|
# GIT repository found, update it
|
||||||
echo "Pull"
|
echo "Pull"
|
||||||
|
|
||||||
cd electrum-git
|
cd electrum-git
|
||||||
git pull
|
git pull
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
else
|
else
|
||||||
# GIT repository not found, clone it
|
# GIT repository not found, clone it
|
||||||
echo "Clone"
|
echo "Clone"
|
||||||
|
|
||||||
git clone -b $BRANCH $ELECTRUM_GIT_URL electrum-git
|
git clone -b $BRANCH $ELECTRUM_GIT_URL electrum-git
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd electrum-git
|
cd electrum-git
|
||||||
COMMIT_HASH=`git rev-parse HEAD | awk '{ print substr($1, 0, 11) }'`
|
VERSION=`git describe --tags`
|
||||||
echo "Last commit: $COMMIT_HASH"
|
echo "Last commit: $VERSION"
|
||||||
cd ..
|
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
|
||||||
rm -rf $WINEPREFIX/drive_c/electrum
|
rm -rf $WINEPREFIX/drive_c/electrum
|
||||||
cp -r electrum-git $WINEPREFIX/drive_c/electrum
|
cp -r electrum-git $WINEPREFIX/drive_c/electrum
|
||||||
cp electrum-git/LICENCE .
|
cp electrum-git/LICENCE .
|
||||||
|
|
||||||
|
# add python packages (built with make_packages)
|
||||||
|
cp -r ../../../packages $WINEPREFIX/drive_c/electrum/
|
||||||
|
|
||||||
# Build Qt resources
|
# Build Qt resources
|
||||||
wine $WINEPREFIX/drive_c/Python27/Lib/site-packages/PyQt4/pyrcc4.exe C:/electrum/icons.qrc -o C:/electrum/lib/icons_rc.py
|
wine $WINEPREFIX/drive_c/Python27/Lib/site-packages/PyQt4/pyrcc4.exe C:/electrum/icons.qrc -o C:/electrum/lib/icons_rc.py
|
||||||
wine $WINEPREFIX/drive_c/Python27/Lib/site-packages/PyQt4/pyrcc4.exe C:/electrum/icons.qrc -o C:/electrum/gui/qt/icons_rc.py
|
wine $WINEPREFIX/drive_c/Python27/Lib/site-packages/PyQt4/pyrcc4.exe C:/electrum/icons.qrc -o C:/electrum/gui/qt/icons_rc.py
|
||||||
|
@ -49,14 +52,27 @@ cd ..
|
||||||
|
|
||||||
rm -rf dist/
|
rm -rf dist/
|
||||||
|
|
||||||
|
# build standalone version
|
||||||
$PYTHON "C:/pyinstaller/pyinstaller.py" --noconfirm --ascii -w deterministic.spec
|
$PYTHON "C:/pyinstaller/pyinstaller.py" --noconfirm --ascii -w deterministic.spec
|
||||||
|
|
||||||
# For building NSIS installer, run:
|
# build NSIS installer
|
||||||
wine "$WINEPREFIX/drive_c/Program Files/NSIS/makensis.exe" electrum.nsi
|
wine "$WINEPREFIX/drive_c/Program Files (x86)/NSIS/makensis.exe" electrum.nsi
|
||||||
|
|
||||||
DATE=`date +"%Y%m%d"`
|
|
||||||
cd dist
|
cd dist
|
||||||
mv electrum.exe $NAME_ROOT-$DATE-$COMMIT_HASH.exe
|
mv electrum.exe $NAME_ROOT-$VERSION.exe
|
||||||
mv electrum $NAME_ROOT-$DATE-$COMMIT_HASH
|
mv electrum-setup.exe $NAME_ROOT-$VERSION-setup.exe
|
||||||
mv electrum-setup.exe $NAME_ROOT-$DATE-$COMMIT_HASH-setup.exe
|
mv electrum $NAME_ROOT-$VERSION
|
||||||
zip -r $NAME_ROOT-$DATE-$COMMIT_HASH.zip $NAME_ROOT-$DATE-$COMMIT_HASH
|
zip -r $NAME_ROOT-$VERSION.zip $NAME_ROOT-$VERSION
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
# build portable version
|
||||||
|
cp portable.patch $WINEPREFIX/drive_c/electrum
|
||||||
|
pushd $WINEPREFIX/drive_c/electrum
|
||||||
|
patch < portable.patch
|
||||||
|
popd
|
||||||
|
$PYTHON "C:/pyinstaller/pyinstaller.py" --noconfirm --ascii -w deterministic.spec
|
||||||
|
cd dist
|
||||||
|
mv electrum.exe $NAME_ROOT-$VERSION-portable.exe
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
echo "Done."
|
||||||
|
|
|
@ -1,50 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# You probably need to update only this link
|
|
||||||
ELECTRUM_URL=http://electrum.bitcoin.cz/download/Electrum-1.6.1.tar.gz
|
|
||||||
NAME_ROOT=electrum-1.6.1
|
|
||||||
|
|
||||||
# These settings probably don't need any change
|
|
||||||
export WINEPREFIX=/opt/wine-electrum
|
|
||||||
PYHOME=c:/python26
|
|
||||||
PYTHON="wine $PYHOME/python.exe -OO -B"
|
|
||||||
|
|
||||||
# Let's begin!
|
|
||||||
cd `dirname $0`
|
|
||||||
set -e
|
|
||||||
|
|
||||||
cd tmp
|
|
||||||
|
|
||||||
# Download and unpack Electrum
|
|
||||||
wget -O electrum.tgz "$ELECTRUM_URL"
|
|
||||||
tar xf electrum.tgz
|
|
||||||
mv Electrum-* electrum
|
|
||||||
rm -rf $WINEPREFIX/drive_c/electrum
|
|
||||||
cp electrum/LICENCE .
|
|
||||||
mv electrum $WINEPREFIX/drive_c
|
|
||||||
|
|
||||||
# Copy ZBar libraries to electrum
|
|
||||||
#cp "$WINEPREFIX/drive_c/Program Files (x86)/ZBar/bin/"*.dll "$WINEPREFIX/drive_c/electrum/"
|
|
||||||
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
rm -rf dist/$NAME_ROOT
|
|
||||||
rm -f dist/$NAME_ROOT.zip
|
|
||||||
rm -f dist/$NAME_ROOT.exe
|
|
||||||
rm -f dist/$NAME_ROOT-setup.exe
|
|
||||||
|
|
||||||
# For building standalone compressed EXE, run:
|
|
||||||
$PYTHON "C:/pyinstaller/pyinstaller.py" --noconfirm --ascii -w --onefile "C:/electrum/electrum"
|
|
||||||
|
|
||||||
# For building uncompressed directory of dependencies, run:
|
|
||||||
$PYTHON "C:/pyinstaller/pyinstaller.py" --noconfirm --ascii -w deterministic.spec
|
|
||||||
|
|
||||||
# For building NSIS installer, run:
|
|
||||||
wine "$WINEPREFIX/drive_c/Program Files (x86)/NSIS/makensis.exe" electrum.nsi
|
|
||||||
#wine $WINEPREFIX/drive_c/Program\ Files\ \(x86\)/NSIS/makensis.exe electrum.nsis
|
|
||||||
|
|
||||||
cd dist
|
|
||||||
mv electrum.exe $NAME_ROOT.exe
|
|
||||||
mv electrum $NAME_ROOT
|
|
||||||
mv electrum-setup.exe $NAME_ROOT-setup.exe
|
|
||||||
zip -r $NAME_ROOT.zip $NAME_ROOT
|
|
|
@ -5,7 +5,6 @@ home = 'C:\\electrum\\'
|
||||||
# We don't put these files in to actually include them in the script but to make the Analysis method scan them for imports
|
# 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',
|
a = Analysis([home+'electrum',
|
||||||
home+'gui/qt/main_window.py',
|
home+'gui/qt/main_window.py',
|
||||||
home+'gui/qt/lite_window.py',
|
|
||||||
home+'gui/text.py',
|
home+'gui/text.py',
|
||||||
home+'lib/util.py',
|
home+'lib/util.py',
|
||||||
home+'lib/wallet.py',
|
home+'lib/wallet.py',
|
||||||
|
@ -13,10 +12,13 @@ a = Analysis([home+'electrum',
|
||||||
home+'lib/bitcoin.py',
|
home+'lib/bitcoin.py',
|
||||||
home+'lib/dnssec.py',
|
home+'lib/dnssec.py',
|
||||||
home+'lib/commands.py',
|
home+'lib/commands.py',
|
||||||
|
home+'plugins/cosigner_pool.py',
|
||||||
|
home+'plugins/email_requests.py',
|
||||||
|
home+'plugins/trezor.py',
|
||||||
home+'packages/requests/utils.py'
|
home+'packages/requests/utils.py'
|
||||||
],
|
],
|
||||||
pathex=['lib','gui','plugins','packages'],
|
pathex=[home+'lib', home+'gui', home+'plugins', home+'packages'],
|
||||||
hiddenimports=['lib','gui'],
|
hiddenimports=['lib', 'gui'],
|
||||||
hookspath=[])
|
hookspath=[])
|
||||||
|
|
||||||
##### include folder in distribution #######
|
##### include folder in distribution #######
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/electrum b/electrum
|
||||||
|
index 8c972c6..46903b7 100755
|
||||||
|
--- a/electrum
|
||||||
|
+++ b/electrum
|
||||||
|
@@ -454,6 +454,8 @@ if __name__ == '__main__':
|
||||||
|
if config_options.get('server'):
|
||||||
|
config_options['auto_connect'] = False
|
||||||
|
|
||||||
|
+ config_options['portable'] = True
|
||||||
|
+
|
||||||
|
if config_options.get('portable'):
|
||||||
|
config_options['electrum_path'] = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'electrum_data')
|
||||||
|
|
|
@ -0,0 +1,89 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
TREZOR_GIT_URL=git://github.com/trezor/python-trezor.git
|
||||||
|
KEEPKEY_GIT_URL=git://github.com/keepkey/python-keepkey.git
|
||||||
|
BTCHIP_GIT_URL=git://github.com/LedgerHQ/btchip-python.git
|
||||||
|
|
||||||
|
BRANCH=master
|
||||||
|
|
||||||
|
# These settings probably don't need any change
|
||||||
|
export WINEPREFIX=/opt/electrum/wine64
|
||||||
|
|
||||||
|
PYHOME=c:/python27
|
||||||
|
PYTHON="wine $PYHOME/python.exe "
|
||||||
|
|
||||||
|
# Let's begin!
|
||||||
|
cd `dirname $0`
|
||||||
|
set -e
|
||||||
|
|
||||||
|
cd tmp
|
||||||
|
|
||||||
|
# downoad mingw-get-setup.exe
|
||||||
|
#wget http://downloads.sourceforge.net/project/mingw/Installer/mingw-get-setup.exe
|
||||||
|
#wine mingw-get-setup.exe
|
||||||
|
|
||||||
|
#echo "add c:\MinGW\bin to PATH using regedit"
|
||||||
|
#regedit
|
||||||
|
#exit
|
||||||
|
|
||||||
|
#wine mingw-get install gcc
|
||||||
|
#wine mingw-get install mingw-utils
|
||||||
|
#wine mingw-get install mingw32-libz
|
||||||
|
|
||||||
|
#create cfg file
|
||||||
|
#printf "[build]\ncompiler=mingw32\n" > /opt/me/wine64/drive_c/Python27/Lib/distutils/distutils.cfg
|
||||||
|
|
||||||
|
# Install Cython
|
||||||
|
#wine "$PYHOME\\Scripts\\easy_install.exe" cython
|
||||||
|
|
||||||
|
|
||||||
|
# not working
|
||||||
|
##wine "$PYHOME\\Scripts\\easy_install.exe" hidapi
|
||||||
|
|
||||||
|
#git clone https://github.com/trezor/cython-hidapi.git
|
||||||
|
|
||||||
|
#replace: from distutils.core import setup, Extenstion
|
||||||
|
|
||||||
|
#cd cython-hidapi
|
||||||
|
#git submodule init
|
||||||
|
#git submodule update
|
||||||
|
#$PYTHON setup.py install
|
||||||
|
#cd ..
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if [ -d "trezor-git" ]; then
|
||||||
|
cd trezor-git
|
||||||
|
git pull
|
||||||
|
cd ..
|
||||||
|
else
|
||||||
|
git clone -b $BRANCH $TREZOR_GIT_URL trezor-git
|
||||||
|
fi
|
||||||
|
cd trezor-git
|
||||||
|
$PYTHON setup.py install
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
#keepkey
|
||||||
|
if [ -d "keepkey-git" ]; then
|
||||||
|
cd keepkey-git
|
||||||
|
git pull
|
||||||
|
cd ..
|
||||||
|
else
|
||||||
|
git clone -b $BRANCH $KEEPKEY_GIT_URL keepkey-git
|
||||||
|
fi
|
||||||
|
cd keepkey-git
|
||||||
|
# fails $PYTHON setup.py install
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
#btchip
|
||||||
|
if [ -d "btchip-git" ]; then
|
||||||
|
cd btchip-git
|
||||||
|
git pull
|
||||||
|
cd ..
|
||||||
|
else
|
||||||
|
git clone -b $BRANCH $BTCHIP_GIT_URL btchip-git
|
||||||
|
fi
|
||||||
|
cd btchip-git
|
||||||
|
$PYTHON setup.py install
|
||||||
|
cd ..
|
||||||
|
|
|
@ -8,8 +8,11 @@ PYINSTALLER_URL=https://pypi.python.org/packages/source/P/PyInstaller/PyInstalle
|
||||||
NSIS_URL=http://prdownloads.sourceforge.net/nsis/nsis-2.46-setup.exe?download
|
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
|
SETUPTOOLS_URL=https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11.win32-py2.7.exe
|
||||||
|
|
||||||
# These settings probably don't need change
|
|
||||||
export WINEPREFIX=/opt/wine-electrum
|
## These settings probably don't need change
|
||||||
|
export WINEPREFIX=/opt/electrum/wine64
|
||||||
|
#export WINEARCH='win32'
|
||||||
|
|
||||||
PYHOME=c:/python27
|
PYHOME=c:/python27
|
||||||
PYTHON="wine $PYHOME/python.exe -OO -B"
|
PYTHON="wine $PYHOME/python.exe -OO -B"
|
||||||
|
|
||||||
|
@ -19,9 +22,11 @@ set -e
|
||||||
|
|
||||||
# Clean up Wine environment
|
# Clean up Wine environment
|
||||||
echo "Cleaning $WINEPREFIX"
|
echo "Cleaning $WINEPREFIX"
|
||||||
rm -rf $WINEPREFIX/*
|
rm -rf $WINEPREFIX
|
||||||
echo "done"
|
echo "done"
|
||||||
|
|
||||||
|
wine 'wineboot'
|
||||||
|
|
||||||
echo "Cleaning tmp"
|
echo "Cleaning tmp"
|
||||||
rm -rf tmp
|
rm -rf tmp
|
||||||
mkdir -p tmp
|
mkdir -p tmp
|
||||||
|
@ -54,9 +59,6 @@ mv PyInstaller-2.1 $WINEPREFIX/drive_c/pyinstaller
|
||||||
wget -O setuptools.exe "$SETUPTOOLS_URL"
|
wget -O setuptools.exe "$SETUPTOOLS_URL"
|
||||||
wine setuptools.exe
|
wine setuptools.exe
|
||||||
|
|
||||||
# Install dependencies
|
|
||||||
wine "$PYHOME\\Scripts\\easy_install.exe" ecdsa #zbar
|
|
||||||
|
|
||||||
# Install NSIS installer
|
# Install NSIS installer
|
||||||
wget -q -O nsis.exe "$NSIS_URL"
|
wget -q -O nsis.exe "$NSIS_URL"
|
||||||
wine nsis.exe
|
wine nsis.exe
|
||||||
|
|
Loading…
Reference in New Issue