dash/contrib/gitian-descriptors/linux/gitian-linux-darkcoin.yml

103 lines
4.0 KiB
YAML

---
name: "darkcoin"
suites:
- "precise"
architectures:
- "i386"
- "amd64"
packages:
- "g++"
- "git-core"
- "unzip"
- "pkg-config"
- "autoconf2.13"
- "libtool"
- "automake"
- "faketime"
- "bsdmainutils"
- "libqt4-core"
- "libqt4-dev"
- "libqt4-gui"
- "libqt4-dbus"
- "libqt4-network"
- "libqt4-test"
reference_datetime: "2014-01-10 00:00:00"
remotes:
- "url": "https://github.com/darkcoin/darkcoin.git"
"dir": "darkcoin"
files:
- "bitcoin-deps-linux32-gitian-r6.zip"
- "bitcoin-deps-linux64-gitian-r6.zip"
- "boost-linux32-1.55.0-gitian-r1.zip"
- "boost-linux64-1.55.0-gitian-r1.zip"
- "qt-linux32-4.6.4-gitian-r1.tar.gz"
- "qt-linux64-4.6.4-gitian-r1.tar.gz"
- "zlib-1.2.8.tar.gz"
script: |
# Integrity Check
echo "36658cb768a54c1d4dec43c3116c27ed893e88b02ecfcb44f2166f9c0b7f2a0d zlib-1.2.8.tar.gz" | sha256sum -c
STAGING="$HOME/install"
#
tar xzf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure --prefix=$STAGING
make $MAKEOPTS install
cd ..
OPTFLAGS='-O2'
BINDIR="${OUTDIR}/bin/${GBUILD_BITS}" # 32/64 bit build specific output directory
TEMPDIR="$HOME/tempdir"
export TZ=UTC
export LIBRARY_PATH="$STAGING/lib"
export PATH="$STAGING/bin:$PATH"
mkdir -p ${BINDIR}
#
mkdir -p $STAGING
cd $STAGING
unzip ../build/bitcoin-deps-linux${GBUILD_BITS}-gitian-r6.zip
unzip ../build/boost-linux${GBUILD_BITS}-1.55.0-gitian-r1.zip
tar -zxf ../build/qt-linux${GBUILD_BITS}-4.6.4-gitian-r1.tar.gz
cd ../build
# Avoid exporting *any* symbols from the executable
# This avoids conflicts between the libraries statically linked into darkcoin and any
# libraries we may link dynamically (such as Qt and OpenSSL, see issue #4094).
# It also avoids start-up overhead to not export any unnecessary symbols.
# To do this, build a linker script that marks all symbols as local.
LINKER_SCRIPT=$HOME/build/linker_version_script
echo '
{
local: *;
};' > $LINKER_SCRIPT
function do_configure {
./configure "$@" --enable-upnp-default --prefix=$STAGING --with-protoc-bindir=$STAGING/host/bin --with-qt-bindir=$STAGING/bin --with-boost=$STAGING --disable-maintainer-mode --disable-dependency-tracking PKG_CONFIG_PATH="$STAGING/lib/pkgconfig" CPPFLAGS="-I$STAGING/include ${OPTFLAGS}" LDFLAGS="-L$STAGING/lib -Wl,--version-script=$LINKER_SCRIPT ${OPTFLAGS}" CXXFLAGS="-frandom-seed=darkcoin ${OPTFLAGS}" BOOST_CHRONO_EXTRALIBS="-lrt" --enable-glibc-back-compat
}
#
cd $HOME/build/darkcoin
VERSION_TAG=`git describe --tags --exact-match --always | cut -c 2-`
git archive HEAD --format=tar.gz --prefix=darkcoin-$VERSION_TAG/ > darkcoin-$VERSION_TAG.tar.gz
DISTNAME=`echo darkcoin-*.tar.gz`
# Build dynamic versions of everything
# (with static linking to boost and openssl as well a some non-OS deps)
mkdir -p distsrc
cd distsrc
tar --strip-components=1 -xf ../$DISTNAME
cd src
make -f makefile.unix STATIC=1 OPENSSL_INCLUDE_PATH="$STAGING/include" OPENSSL_LIB_PATH="$STAGING/lib" $MAKEOPTS darkcoind USE_UPNP=0 DEBUGFLAGS= USE_SSE2=1 BOOST_LIB_SUFFIX=-mt
mkdir -p $OUTDIR/bin/$GBUILD_BITS
install -s darkcoind $OUTDIR/bin/$GBUILD_BITS
cd ..
qmake MINIUPNPC_LIB_PATH=$STAGING/lib MINIUPNPC_INCLUDE_PATH=$STAGING/include BDB_LIB_PATH=$STAGING/lib BDB_INCLUDE_PATH=$STAGING/include BOOST_LIB_PATH=$STAGING/lib BOOST_INCLUDE_PATH=$STAGING/include BOOST_LIB_SUFFIX=-mt OPENSSL_LIB_PATH=$STAGING/lib OPENSSL_INCLUDE_PATH=$STAGING/include QRENCODE_LIB_PATH=$STAGING/lib QRENCODE_INCLUDE_PATH=$STAGING/include USE_QRCODE=1 INCLUDEPATH=$STAGING/include DEFINES=BOOST_THREAD_USE_LIB QMAKE_LRELEASE=lrelease USE_BUILD_INFO=1 USE_SSE2=1 USE_UPNP=1 RELEASE=1
make $MAKEOPTS
install darkcoin-qt $OUTDIR/bin/$GBUILD_BITS
# sort distribution tar file and normalize user/group/mtime information for deterministic output
mkdir -p $OUTDIR/src
rm -rf $TEMPDIR
mkdir -p $TEMPDIR
cd $TEMPDIR
tar -xvf $HOME/build/darkcoin/$DISTNAME | sort | tar --no-recursion -cT /dev/stdin --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 --mtime="$REFERENCE_DATETIME" | gzip -n > $OUTDIR/src/$DISTNAME