Posts /

Gitian builds for AXE

Twitter Facebook
15 Oct 2018

AXE-GITIAN

axe-gitian

This guide covers deterministic build process for AXE binaries on macOS. axe-gitian is a Vagrant box, provisioned with Ansible and deployed in VirtualBox environment. Gitian affords a way to be assured that AXE binaries are built from the exact source, provided on GitHub.

Prepare

Install Git and set it up with your GitHub account.

GnuPG

Download and install the latest version of GPG Suite from here.

Vagrant

Download and install the latest version of Vagrant from here.

VirtualBox

Download and install the latest version of VirtualBox from here.

Ansible

Install prerequisites

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew doctor
brew install git
sudo easy_install pip

Setup Ansible

sudo pip install ansible

Apple SDK

Download Xcode 7.3.1 dmg and mount it. Then pack a tarball by executing following in Terminal:

tar -C /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ -czf MacOSX10.11.sdk.tar.gz MacOSX10.11.sdk

Build

git clone https://github.com/AXErunners/axe-gitian
cd axe-gitian

Edit your gitian.yml file:

# URL of repository containing AXE source code.
axe_git_repo_url: 'https://github.com/AXErunners/axe'

# Specific tag or branch you want to build.
axe_version: 'v1.1.8'

# The name@ in the e-mail address of your GPG key, alternatively a key ID.
gpg_key_name: 'F16219F4C23F91112E9C734A8DFCBF8E5A4D8019'

# OPTIONAL set to import your SSH key into the VM. Example: id_rsa, id_ed25519. Assumed to reside in ~/.ssh
ssh_key_name: ''

Place Apple SDK tarball (MacOSX10.11.sdk.tar.gz) into axe-gitian folder.

Start the build with vagrant up --provision axe-build.

Then connect to the box with vagrant ssh axe-build.

Prepare the container and start building with:

#replace $SIGNER and $VERSION to match your gitian.yml
./gitian-build.py --setup $signer $version
./gitian-build.py -B $SIGNER $VERSION

Transfer files

Commit assertions from the box using git or use vagrant scp plugin to transfer data between the box and the host.


Twitter Facebook