c13a13efec
ar -D: Operate in deterministic mode. When adding files and the archive index use zero for UIDs, GIDs, timestamps, and use consistent file modes for all files. When this option is used, if ar is used with identical options and identical input files, multiple runs will create identical output files regardless of the input files' owners, groups, file modes, or modification times.
98 lines
3.6 KiB
YAML
98 lines
3.6 KiB
YAML
---
|
|
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.1e.tar.gz"
|
|
- "miniupnpc-1.8.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 "f74f15e8c8ff11aa3d5bb5f276d202ec18d7246e95f961db76054199c69c1ae3 openssl-1.0.1e.tar.gz" | sha256sum -c
|
|
echo "bc5f73c7b0056252c1888a80e6075787a1e1e9112b808f863a245483ff79859c miniupnpc-1.8.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.1e.tar.gz
|
|
cd openssl-1.0.1e
|
|
# 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.8.tar.gz
|
|
cd miniupnpc-1.8
|
|
# 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-r3.zip
|