--- name: "boost" suites: - "precise" architectures: - "i386" - "amd64" packages: - "g++" - "unzip" - "pkg-config" - "libtool" - "faketime" - "bsdmainutils" - "zip" - "libz-dev" reference_datetime: "2011-01-30 00:00:00" remotes: [] files: - "boost_1_55_0.tar.bz2" script: | STAGING="$HOME/install" TEMPDIR="$HOME/tmp" export LIBRARY_PATH="$STAGING/lib" export LD_PRELOAD=/usr/lib/faketime/libfaketime.so.1 export FAKETIME=$REFERENCE_DATETIME export TZ=UTC # Input Integrity Check echo "fff00023dd79486d444c8e29922f4072e1d451fc5a4d2b6075852ead7f2b7b52 boost_1_55_0.tar.bz2" | shasum -c mkdir -p "$STAGING" tar --warning=no-timestamp -xjf boost_1_55_0.tar.bz2 cd boost_1_55_0 GCCVERSION=$(g++ -E -dM $(mktemp --suffix=.h) | grep __VERSION__ | cut -d ' ' -f 3 | cut -d '"' -f 2) # note: bjam with -d+2 reveals that -O3 is implied by default, no need to provide it in cxxflags echo "using gcc : $GCCVERSION : g++ : \"-frandom-seed=boost1 -fPIC\" ;" > user-config.jam ./bootstrap.sh --without-icu ./bjam toolset=gcc threadapi=pthread threading=multi variant=release link=static runtime-link=shared --user-config=user-config.jam --without-mpi --without-python -sNO_BZIP2=1 --layout=tagged --build-type=complete --prefix="$STAGING" $MAKEOPTS -d+2 install # 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 | sort | zip -X@ $OUTDIR/boost-linux${GBUILD_BITS}-1.55.0-gitian-r1.zip