HWI/docs/release-process.md
Andrew Chow 77257a18da Add build scripts and documentation for building releases
Adds builds scripts that are used to build releases deterministically.
Also adds documentation that explains the release process and what
the build scripts do.
2019-03-08 00:17:33 -05:00

1.6 KiB

Release Process

  1. Bump version number in pyproject.toml, generate the setup.py file, and git tag release
  2. Build distribution archives for PyPi with contrib/build_dist.sh
  3. For MacOS and Linux, use contrib/build_bin.sh. This needs to be run on a MacOS machine for the MacOS binary and on a Linux machine for the linux one.
  4. For Windows, use contrib/build_wine.sh to build the Windows binary using wine
  5. Upload distribution archives to PyPi
  6. Upload distribution archives and standalone binaries to Github

Deterministic builds with Docker

Create the docker image:

docker build --no-cache -t hwi-builder -f contrib/build.Dockerfile .

Build everything

docker run -it --name hwi-builder -v $PWD:/opt/hwi --rm  --workdir /opt/hwi hwi-builder /bin/bash -c "contrib/build_bin.sh && contrib/build_dist.sh && contrib/build_wine.sh"

Building macOS binary

Note that the macOS build is non-deterministic.

First install pyenv using whichever method you prefer.

Then a deterministic build of Python 3.6.8 needs to be installed. This can be done with the patch in contrib/reproducible-python.diff. First cd into HWI's source tree. Then use:

cat contrib/reproducible-python.diff | PYTHON_CONFIGURE_OPTS="--enable-framework" BUILD_DATE="Jan  1 2019" BUILD_TIME="00:00:00" pyenv install -kp 3.6.8

Make sure that python 3.6.8 is active

$ python --version
Python 3.6.8

Now install Poetry with pip install poetry

Additional dependencies can be installed with:

brew install libusb

Build the binaries by using contrib/build_bin.sh.