99 lines
3.6 KiB
YAML
99 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.1i.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 "3c179f46ca77069a6a0bac70212a9b3b838b2f66129cb52d568837fc79d8fcc7 openssl-1.0.1i.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.1i.tar.gz
|
|
cd openssl-1.0.1i
|
|
# 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-r8.zip
|