diff --git a/docker/gitian-bitcoin-host/Dockerfile b/docker/gitian-bitcoin-host/Dockerfile new file mode 100644 index 0000000..7078d7b --- /dev/null +++ b/docker/gitian-bitcoin-host/Dockerfile @@ -0,0 +1,17 @@ + +FROM gdm85/gitian-host + +MAINTAINER Giuseppe Mazzotta "gdm85@users.noreply.github.com" + +RUN apt-get install -y parallel patch + +ADD gitian.patch /home/debian/ + +WORKDIR /home/debian + +RUN cd gitian-builder && patch -p1 < ../gitian.patch + +ADD step1.sh /home/debian/ +ADD step2.sh /home/debian/ + +RUN chown -R debian.debian /home/debian/ diff --git a/docker/gitian-bitcoin-host/gitian.patch b/docker/gitian-bitcoin-host/gitian.patch new file mode 100644 index 0000000..9d3f652 --- /dev/null +++ b/docker/gitian-bitcoin-host/gitian.patch @@ -0,0 +1,21 @@ +diff --git a/bin/make-base-vm b/bin/make-base-vm +index c1920f3..8a44f13 100755 +--- a/bin/make-base-vm ++++ b/bin/make-base-vm +@@ -109,16 +109,3 @@ rm -rf $OUT + sudo vmbuilder kvm ubuntu --rootsize 10240 --arch=$ARCH --suite=$SUITE --addpkg=$addpkg --removepkg=$removepkg --ssh-key=var/id_dsa.pub --ssh-user-key=var/id_dsa.pub --mirror=$MIRROR --secu + mv $OUT/*.qcow2 $OUT.qcow2 + rm -rf $OUT +- +-if [ $LXC = "1" ]; then +- #sudo debootstrap --include=$addpkg --arch=$ARCH $SUITE $OUT-root $MIRROR +- echo Extracting partition for lxc +- qemu-img convert $OUT.qcow2 $OUT.raw +- loop=`sudo kpartx -av $OUT.raw|sed -n '/loop.p1/{s/.*loop\(.\)p1.*/\1/;p}'` +- sudo cp --sparse=always /dev/mapper/loop${loop}p1 $OUT +- sudo chown $USER $OUT +- sudo kpartx -d /dev/loop$loop +- rm -f $OUT.raw +- # bootstrap-fixup is done in libexec/make-clean-vm +-fi +- diff --git a/docker/gitian-bitcoin-host/step1.sh b/docker/gitian-bitcoin-host/step1.sh new file mode 100755 index 0000000..a613899 --- /dev/null +++ b/docker/gitian-bitcoin-host/step1.sh @@ -0,0 +1,41 @@ +#!/bin/bash +set -e + +if [[ -z "$VERSION" ]]; then + echo "Please define VERSION environment variable for bitcoin checkout" 1>&2 + exit 1 +fi + +source ~/.bash_profile + +git clone https://github.com/bitcoin/bitcoin.git +cd bitcoin +git checkout v${VERSION} +cd ../gitian-builder +mkdir -p var +if [ ! -e var/id_dsa ]; then + ssh-keygen -t dsa -f var/id_dsa -N "" +fi + +export MIRROR_HOST=$GITIAN_HOST_IP +SUITE=precise + +## build both VMs in parallel +echo -e "MIRROR_HOST=$GITIAN_HOST_IP bin/make-base-vm --lxc --arch i386 --suite $SUITE\nMIRROR_HOST=$GITIAN_HOST_IP bin/make-base-vm --lxc --arch amd64 --suite $SUITE" | parallel -j2 || exit $? + +function ext_partition() { + local OUT=$1 + echo Extracting $OUT partition for lxc + qemu-img convert $OUT.qcow2 $OUT.raw + loop=`sudo kpartx -av $OUT.raw|sed -n '/loop.p1/{s/.*loop\(.\)p1.*/\1/;p}'` + sudo cp --sparse=always /dev/mapper/loop${loop}p1 $OUT + sudo chown $USER $OUT + sudo sync + sleep 5 + sudo kpartx -d /dev/loop$loop + sudo rm /dev/mapper/loop${loop}p1 + rm -f $OUT.raw +} + +ext_partition base-${SUITE}-i386 && \ +ext_partition base-${SUITE}-amd64 || exit $? diff --git a/docker/gitian-bitcoin-host/step2.sh b/docker/gitian-bitcoin-host/step2.sh new file mode 100755 index 0000000..1405ed1 --- /dev/null +++ b/docker/gitian-bitcoin-host/step2.sh @@ -0,0 +1,34 @@ +#!/bin/bash +set -e + +if [[ -z "$VERSION" ]]; then + echo "Please define VERSION environment variable for bitcoin checkout" 1>&2 + exit 1 +fi + +if [[ "$VERSION" != "0.9.1" ]]; then + echo "Dependencies on this script are valid only for 0.9.1" + exit 2 +fi + +cd gitian-builder +mkdir -p inputs; cd inputs/ + +## +## dependencies valid only for 0.9.1! +## +wget 'http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.8.tar.gz' -O miniupnpc-1.8.tar.gz +wget --no-check-certificate 'https://www.openssl.org/source/openssl-1.0.1g.tar.gz' +wget 'http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz' +wget 'http://zlib.net/zlib-1.2.8.tar.gz' +wget 'ftp://ftp.simplesystems.org/pub/png/src/history/libpng16/libpng-1.6.8.tar.gz' +wget 'https://fukuchi.org/works/qrencode/qrencode-3.4.3.tar.bz2' +wget 'https://downloads.sourceforge.net/project/boost/boost/1.55.0/boost_1_55_0.tar.bz2' +wget 'https://download.qt-project.org/official_releases/qt/5.2/5.2.0/single/qt-everywhere-opensource-src-5.2.0.tar.gz' +wget 'https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.bz2' +cd .. +./bin/gbuild ../bitcoin/contrib/gitian-descriptors/boost-linux.yml +mv build/out/boost-*.zip inputs/ +./bin/gbuild ../bitcoin/contrib/gitian-descriptors/deps-linux.yml +mv build/out/bitcoin-deps-*.zip inputs/ +./bin/gbuild --commit bitcoin=v${VERSION} ../bitcoin/contrib/gitian-descriptors/gitian-linux.yml