--- name: "bitcoin" suites: - "precise" architectures: - "i386" - "amd64" packages: - "g++" - "unzip" - "zip" - "pkg-config" - "libtool" - "faketime" - "bsdmainutils" reference_datetime: "2013-06-01 00:00:00" remotes: [] files: - "openssl-1.0.1k.tar.gz" - "miniupnpc-1.9.20140701.tar.gz" - "qrencode-3.4.3.tar.bz2" - "protobuf-2.5.0.tar.bz2" - "db-4.8.30.NC.tar.gz" script: | STAGING="$HOME/install" TEMPDIR="$HOME/tmp" OPTFLAGS='-O2' export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 export FAKETIME=$REFERENCE_DATETIME export TZ=UTC export LIBRARY_PATH="$STAGING/lib" # Integrity Check echo "8f9faeaebad088e772f4ef5e38252d472be4d878c6b3a2718c10a4fcebe7a41c openssl-1.0.1k.tar.gz" | sha256sum -c echo "26f3985bad7768b8483b793448ae49414cdc4451d0ec83e7c1944367e15f9f07 miniupnpc-1.9.20140701.tar.gz" | sha256sum -c echo "dfd71487513c871bad485806bfd1fdb304dedc84d2b01a8fb8e0940b50597a98 qrencode-3.4.3.tar.bz2" | sha256sum -c echo "13bfc5ae543cf3aa180ac2485c0bc89495e3ae711fc6fab4f8ffe90dfb4bb677 protobuf-2.5.0.tar.bz2" | sha256sum -c echo "12edc0df75bf9abd7f82f821795bcee50f42cb2e5f76a6a281b85732798364ef db-4.8.30.NC.tar.gz" | sha256sum -c # tar xzf openssl-1.0.1k.tar.gz cd openssl-1.0.1k # need -fPIC to avoid relocation error in 64 bit builds ./config no-shared no-zlib no-dso no-krb5 --openssldir=$STAGING -fPIC # need to build OpenSSL with faketime because a timestamp is embedded into cversion.o make make install_sw cd .. # tar xzfm miniupnpc-1.9.20140701.tar.gz cd miniupnpc-1.9.20140701 # miniupnpc is always built with -fPIC INSTALLPREFIX=$STAGING make $MAKEOPTS install rm -f $STAGING/lib/libminiupnpc.so* # no way to skip shared lib build cd .. # tar xjf qrencode-3.4.3.tar.bz2 cd qrencode-3.4.3 unset FAKETIME # unset fake time during configure, as it does some clock sanity tests # need --with-pic to avoid relocation error in 64 bit builds ./configure --prefix=$STAGING --enable-static --disable-shared --with-pic --without-tools --disable-dependency-tracking # Workaround to prevent re-configuring by make; make all files have a date in the past find . -print0 | xargs -r0 touch -t 200001010000 export FAKETIME=$REFERENCE_DATETIME make $MAKEOPTS install cd .. # tar xjf protobuf-2.5.0.tar.bz2 cd protobuf-2.5.0 mkdir -p $STAGING/host/bin unset FAKETIME # unset fake time during configure, as it does some clock sanity tests # need --with-pic to avoid relocation error in 64 bit builds ./configure --prefix=$STAGING --bindir=$STAGING/host/bin --enable-static --disable-shared --with-pic --without-zlib # Workaround to prevent re-configuring by make; make all files have a date in the past find . -print0 | xargs -r0 touch -t 200001010000 export FAKETIME=$REFERENCE_DATETIME make $MAKEOPTS install cd .. # tar xzf db-4.8.30.NC.tar.gz cd db-4.8.30.NC/build_unix # need --with-pic to avoid relocation error in 64 bit builds ../dist/configure --prefix=$STAGING --enable-cxx --disable-shared --with-pic # Workaround to prevent re-configuring by make; make all files have a date in the past find . -print0 | xargs -r0 touch -t 200001010000 make $MAKEOPTS library_build make install_lib install_include cd ../.. # post-process all generated libraries to be deterministic # extract them to a temporary directory then re-build them deterministically for LIB in $(find $STAGING -name \*.a); do rm -rf $TEMPDIR && mkdir $TEMPDIR && cd $TEMPDIR ar xv $LIB | cut -b5- > /tmp/list.txt rm $LIB ar crsD $LIB $(cat /tmp/list.txt) done # cd $STAGING find include lib bin host | sort | zip -X@ $OUTDIR/bitcoin-deps-linux${GBUILD_BITS}-gitian-r9.zip