#!/bin/bash NAME_ROOT=electrum # These settings probably don't need any change export WINEPREFIX=/opt/wine64 export PYTHONDONTWRITEBYTECODE=1 export PYTHONHASHSEED=22 PYHOME=c:/python3 PYTHON="wine $PYHOME/python.exe -OO -B" # Let's begin! set -e here="$(dirname "$(readlink -e "$0")")" . "$CONTRIB"/build_tools_util.sh pushd $WINEPREFIX/drive_c/electrum VERSION=`git describe --tags --dirty --always` info "Last commit: $VERSION" # Load electrum-locale for this release git submodule update --init pushd ./contrib/deterministic-build/electrum-locale if ! which msgfmt > /dev/null 2>&1; then fail "Please install gettext" fi for i in ./locale/*; do dir=$WINEPREFIX/drive_c/electrum/electrum/$i/LC_MESSAGES mkdir -p $dir msgfmt --output-file=$dir/electrum.mo $i/electrum.po || true done popd find -exec touch -d '2000-11-11T11:11:11+00:00' {} + popd # Install frozen dependencies $PYTHON -m pip install -r "$CONTRIB"/deterministic-build/requirements.txt $PYTHON -m pip install -r "$CONTRIB"/deterministic-build/requirements-hw.txt pushd $WINEPREFIX/drive_c/electrum # see https://github.com/pypa/pip/issues/2195 -- pip makes a copy of the entire directory info "Pip installing Electrum. This might take a long time if the project folder is large." $PYTHON -m pip install . popd rm -rf dist/ # build standalone and portable versions info "Running pyinstaller..." wine "$PYHOME/scripts/pyinstaller.exe" --noconfirm --ascii --clean --name $NAME_ROOT-$VERSION -w deterministic.spec # set timestamps in dist, in order to make the installer reproducible pushd dist find -exec touch -d '2000-11-11T11:11:11+00:00' {} + popd info "building NSIS installer" # $VERSION could be passed to the electrum.nsi script, but this would require some rewriting in the script itself. wine "$WINEPREFIX/drive_c/Program Files (x86)/NSIS/makensis.exe" /DPRODUCT_VERSION=$VERSION electrum.nsi cd dist mv electrum-setup.exe $NAME_ROOT-$VERSION-setup.exe cd .. sha256sum dist/electrum*.exe