-
Builds multiplatform release
-
Builds 32bit Windows release & Instaler
-
Builds Universal 64bit Linux release with Self-Extracting CLI Installer
-
Builds 2 64bit OSX releases and OSX Installers
- OSX builds are produced currently by both py2app and pyinstaller each may have different quirks/bugs py2app is prone to windowing issues (not in foreground when desired) pyinstaller creates binary that will segfault and fail if PyQT dylibs are found in the dylib path - typically if user has macports installed
- first run on clean build directory will configure variables, download and build dependencies, cython and Windows C extensions, zip/tar sources for Source release and binar packagers.
- if performing a SIGNED build, preparation steps cannot be re-used, all dependencies will be downloaded and compiled otherwise,
-
Requires either:
- Linux (Ubuntu 14.04) with Docker 1.5.0 installed
- OSX with boot2docker 1.5.0, and macports, with python2.7, pyqt4, and pip installed
- Homebrew should also work, with some modifications (pathnames, etc) but is untested
- builds using default Apple python installation are discouraged.
-
OSX buildhosts will build all all packages, Linux hosts are limited to building Linux, and Windows packages.
- ** Mazaclub release packages are built via OSX in a single run with the following command: **
This clones https://github.com/mazaclub/encompass to
./build.sh 0.5.0 SIGNED
and checks out the release tag specified, then runs the build scripts.contrib/mazaclub-release/repo
./build.sh version type
./buildOSX version type
./buildLinux version type
./buildWindows version type
Types supported are:
- local
- build from local source - copies your local repo to a build dir, and builds
- will reuse cached images, repos, and compiled C extensions
- allows for easy iteration of builds
- all other modes download and compile all deps and requirements
- master
- build from current github master
- tagged
- build from github tagged release
- SIGNED
- signed
- TODO: develop
Currently only local and SIGNED are well tested!
Many of the scripts found in helpers/*.sh are able to be run independently, provided previous steps in the build are completed and cached.
Many files are saved to helpers/ during the build process
-
clean.sh [what] cleans as desired - supports a single argument:
- "osx" - reuibld OSX binaries
- "linux" - rebuild Linux binaries
- "windows" - rebuild Windows binaries
- "all" - Fresh Build
-
helpers/build-common.sh common functions for all helper scripts to use
-
build.sh (buildOSX buildLinux buildWindows) creates build-config.sh
- helpers/config.sh builds the docker build container, prepares build repo
- helpers/prep_deps.sh
- helpers/prepare_repo.sh runs make_release inside this container
- helpers/build_release.sh
- helpers/make_release determines the build, builds for specified OS(es)
- build.sh:pick_build() puts all the resulting release packages and windows exe files in releases/ and finally, makes md5 and sha1 sums and gpg signs all the sums and releases
- build.sh: completeReleasePackage
If the final step fails to run, any produced binaries are found in helpers/release-packages
When the build completes, you should be left with
repo/ source/ releases/
The releases/ will contain signed & summed .tar.gz .zip .exe and -setup.exe files for your release.
This build should be easily adaptable to any electrum derived wallet.
It's still a little hack-y - this is adapted from a few sources to provide a complete release packager, and intended to provide a fully deterministic build process. However, since the build script runs directly on the host, writing to the host's filesystem, and this doesn't provide the mean to specify a docker version,this is not 100% deterministic. A future update will include a vagrant box file to specify a build VM to run the build script.
The script also does a little extra work as we integrate it into Encompass and our release process.
There's a lot to apt-get in the Dockerfile, this will take a while to build the docker image. Once the docker image is built on your machine, the Encompass build runs quickly.
Preparation Steps are only run once between full cleanings - first build run on clean build dir will take extra time - build_release.sh is run, completing prep tasks for all 3 OS versions - cython is compiled along with C extensions for windows