diff --git a/README.rst b/README.rst index 43d3257f6..9b1832354 100644 --- a/README.rst +++ b/README.rst @@ -93,20 +93,12 @@ This directory contains the python dependencies used by Electrum. Mac OS X / macOS -------- -:: - - # On MacPorts installs: - sudo python3 setup-release.py py2app - - # On Homebrew installs: - ARCHFLAGS="-arch i386 -arch x86_64" sudo python3 setup-release.py py2app --includes sip - - sudo hdiutil create -fs HFS+ -volname "Electrum" -srcfolder dist/Electrum.app dist/electrum-VERSION-macosx.dmg +See `contrib/build-osx/`. Windows ------- -See `contrib/build-wine/README` file. +See `contrib/build-wine/`. Android diff --git a/contrib/build-osx/README.md b/contrib/build-osx/README.md new file mode 100644 index 000000000..af43e05ce --- /dev/null +++ b/contrib/build-osx/README.md @@ -0,0 +1,17 @@ +Building Mac OS binaries +======================== + +This guide explains how to build Electrum binaries for macOS systems. +We build our binaries on El Capitan (10.11.6) as building it on High Sierra +makes the binaries incompatible with older versions. + +This assumes that the Xcode command line tools (and thus git) are already installed. + + +## 1. Run the script + + + + ./make_osx + +## 2. Done diff --git a/contrib/build-osx/make_osx b/contrib/build-osx/make_osx new file mode 100755 index 000000000..d8af8c9d6 --- /dev/null +++ b/contrib/build-osx/make_osx @@ -0,0 +1,75 @@ +#!/bin/bash +RED='\033[0;31m' +BLUE='\033[0,34m' +NC='\033[0m' # No Color +function info { + printf "\r💬 ${BLUE}INFO:${NC} ${1}\n" +} +function fail { + printf "\r🗯 ${RED}ERROR:${NC} ${1}\n" + exit 1 +} + +build_dir=$(dirname "$0") +test -n "$build_dir" -a -d "$build_dir" || exit +cd $build_dir/../.. + +export PYTHONHASHSEED=22 +VERSION=`git describe --tags` +PYTHON_VERSION=3.6.4 + + +info "Installing Python $PYTHON_VERSION" +export PATH="~/.pyenv/bin:~/.pyenv/shims:$PATH:~/Library/Python/3.6/bin" +if [ -d "~/.pyenv" ]; then + pyenv update +else + curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash > /dev/null 2>&1 +fi +PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install -s $PYTHON_VERSION && \ +pyenv global $PYTHON_VERSION || \ +fail "Unable to use Python $PYTHON_VERSION" + + +if ! which pyinstaller > /dev/null; then + info "Installing pyinstaller" + python3 -m pip install pyinstaller -I --user || fail "Could not install pyinstaller" +fi + +info "Using these versions for building Electrum:" +sw_vers +python3 --version +echo -n "Pyinstaller " +pyinstaller --version + +rm -rf ./dist + + +rm -rf /tmp/electrum-build > /dev/null 2>&1 +mkdir /tmp/electrum-build + +info "Downloading icons and locale..." +for repo in icons locale; do + git clone https://github.com/spesmilo/electrum-$repo /tmp/electrum-build/electrum-$repo +done + +cp -R /tmp/electrum-build/electrum-locale/locale/ ./lib/locale/ +cp /tmp/electrum-build/electrum-icons/icons_rc.py ./gui/qt/ + +info "Installing requirements..." +python3 -m pip install -Ir ./contrib/deterministic-build/requirements.txt --user && \ +python3 -m pip install pyqt5 --user || \ +fail "Could not install requirements" + +info "Installing hardware wallet requirements..." +python3 -m pip install -Ir ./contrib/deterministic-build/requirements-hw.txt --user || \ +fail "Could not install hardware wallet requirements" + +info "Building Electrum..." +python3 setup.py install --user > /dev/null || fail "Could not build Electrum" + +info "Building binary" +pyinstaller --noconfirm --ascii --name $VERSION contrib/build-osx/osx.spec || fail "Could not build binary" + +info "Creating .DMG" +hdiutil create -fs HFS+ -volname "Electrum" -srcfolder dist/Electrum.app dist/electrum-$VERSION.dmg || fail "Could not create .DMG" diff --git a/contrib/osx.spec b/contrib/build-osx/osx.spec similarity index 94% rename from contrib/osx.spec rename to contrib/build-osx/osx.spec index 9dabf291c..cfce7172f 100644 --- a/contrib/osx.spec +++ b/contrib/build-osx/osx.spec @@ -12,8 +12,8 @@ for i, x in enumerate(sys.argv): else: raise BaseException('no version') -electrum = "../" -block_cipher=None +electrum = os.path.abspath(".") + "/" +block_cipher = None # see https://github.com/pyinstaller/pyinstaller/issues/2005 hiddenimports = [] diff --git a/contrib/make_osx b/contrib/make_osx deleted file mode 100755 index f354e331a..000000000 --- a/contrib/make_osx +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash -rm -rf dist -export PYTHONHASHSEED=22 -VERSION=`git describe --tags` -pyinstaller --noconfirm --ascii --name $VERSION contrib/osx.spec -hdiutil create -fs HFS+ -volname "Electrum" -srcfolder dist/Electrum.app dist/electrum-$VERSION.dmg