4452829b10
Release version strings were broken in Gitian by 7522. This is a minimal fix suitable for 0.15. After this, we should fix up version handling for good so that gitian packages the correct string in the release tarball, so that git is not required to get the tag name.
166 lines
5.4 KiB
YAML
166 lines
5.4 KiB
YAML
---
|
|
name: "bitcoin-osx-0.16"
|
|
enable_cache: true
|
|
suites:
|
|
- "trusty"
|
|
architectures:
|
|
- "amd64"
|
|
packages:
|
|
- "ca-certificates"
|
|
- "curl"
|
|
- "g++"
|
|
- "git-core"
|
|
- "pkg-config"
|
|
- "autoconf"
|
|
- "librsvg2-bin"
|
|
- "libtiff-tools"
|
|
- "libtool"
|
|
- "automake"
|
|
- "faketime"
|
|
- "bsdmainutils"
|
|
- "cmake"
|
|
- "imagemagick"
|
|
- "libcap-dev"
|
|
- "libz-dev"
|
|
- "libbz2-dev"
|
|
- "python"
|
|
- "python-dev"
|
|
- "python-setuptools"
|
|
- "fonts-tuffy"
|
|
remotes:
|
|
- "url": "https://github.com/bitcoin/bitcoin.git"
|
|
"dir": "bitcoin"
|
|
files:
|
|
- "MacOSX10.11.sdk.tar.gz"
|
|
script: |
|
|
WRAP_DIR=$HOME/wrapped
|
|
HOSTS="x86_64-apple-darwin11"
|
|
CONFIGFLAGS="--enable-reduce-exports --disable-bench --disable-gui-tests GENISOIMAGE=$WRAP_DIR/genisoimage"
|
|
FAKETIME_HOST_PROGS=""
|
|
FAKETIME_PROGS="ar ranlib date dmg genisoimage"
|
|
|
|
export QT_RCC_TEST=1
|
|
export GZIP="-9n"
|
|
export TAR_OPTIONS="--mtime="$REFERENCE_DATE\\\ $REFERENCE_TIME""
|
|
export TZ="UTC"
|
|
export BUILD_DIR=`pwd`
|
|
mkdir -p ${WRAP_DIR}
|
|
if test -n "$GBUILD_CACHE_ENABLED"; then
|
|
export SOURCES_PATH=${GBUILD_COMMON_CACHE}
|
|
export BASE_CACHE=${GBUILD_PACKAGE_CACHE}
|
|
mkdir -p ${BASE_CACHE} ${SOURCES_PATH}
|
|
fi
|
|
|
|
export ZERO_AR_DATE=1
|
|
|
|
function create_global_faketime_wrappers {
|
|
for prog in ${FAKETIME_PROGS}; do
|
|
echo '#!/bin/bash' > ${WRAP_DIR}/${prog}
|
|
echo "REAL=\`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1\`" >> ${WRAP_DIR}/${prog}
|
|
echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${prog}
|
|
echo "export FAKETIME=\"$1\"" >> ${WRAP_DIR}/${prog}
|
|
echo "\$REAL \$@" >> $WRAP_DIR/${prog}
|
|
chmod +x ${WRAP_DIR}/${prog}
|
|
done
|
|
}
|
|
|
|
function create_per-host_faketime_wrappers {
|
|
for i in $HOSTS; do
|
|
for prog in ${FAKETIME_HOST_PROGS}; do
|
|
echo '#!/bin/bash' > ${WRAP_DIR}/${i}-${prog}
|
|
echo "REAL=\`which -a ${i}-${prog} | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog}
|
|
echo 'export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1' >> ${WRAP_DIR}/${i}-${prog}
|
|
echo "export FAKETIME=\"$1\"" >> ${WRAP_DIR}/${i}-${prog}
|
|
echo "\$REAL \$@" >> $WRAP_DIR/${i}-${prog}
|
|
chmod +x ${WRAP_DIR}/${i}-${prog}
|
|
done
|
|
done
|
|
}
|
|
|
|
# Faketime for depends so intermediate results are comparable
|
|
export PATH_orig=${PATH}
|
|
create_global_faketime_wrappers "2000-01-01 12:00:00"
|
|
create_per-host_faketime_wrappers "2000-01-01 12:00:00"
|
|
export PATH=${WRAP_DIR}:${PATH}
|
|
|
|
cd bitcoin
|
|
BASEPREFIX=`pwd`/depends
|
|
|
|
mkdir -p ${BASEPREFIX}/SDKs
|
|
tar -C ${BASEPREFIX}/SDKs -xf ${BUILD_DIR}/MacOSX10.11.sdk.tar.gz
|
|
|
|
# Build dependencies for each host
|
|
for i in $HOSTS; do
|
|
make ${MAKEOPTS} -C ${BASEPREFIX} HOST="${i}"
|
|
done
|
|
|
|
# Faketime for binaries
|
|
export PATH=${PATH_orig}
|
|
create_global_faketime_wrappers "${REFERENCE_DATETIME}"
|
|
create_per-host_faketime_wrappers "${REFERENCE_DATETIME}"
|
|
export PATH=${WRAP_DIR}:${PATH}
|
|
|
|
# Create the release tarball using (arbitrarily) the first host
|
|
./autogen.sh
|
|
CONFIG_SITE=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`/share/config.site ./configure --prefix=/
|
|
make dist
|
|
SOURCEDIST=`echo bitcoin-*.tar.gz`
|
|
DISTNAME=`echo ${SOURCEDIST} | sed 's/.tar.*//'`
|
|
|
|
# Correct tar file order
|
|
mkdir -p temp
|
|
pushd temp
|
|
tar xf ../$SOURCEDIST
|
|
find bitcoin-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST
|
|
popd
|
|
|
|
# Workaround for tarball not building with the bare tag version (prep)
|
|
make -C src obj/build.h
|
|
|
|
ORIGPATH="$PATH"
|
|
# Extract the release tarball into a dir for each host and build
|
|
for i in ${HOSTS}; do
|
|
export PATH=${BASEPREFIX}/${i}/native/bin:${ORIGPATH}
|
|
mkdir -p distsrc-${i}
|
|
cd distsrc-${i}
|
|
INSTALLPATH=`pwd`/installed/${DISTNAME}
|
|
mkdir -p ${INSTALLPATH}
|
|
tar --strip-components=1 -xf ../$SOURCEDIST
|
|
|
|
# Workaround for tarball not building with the bare tag version
|
|
echo '#!/bin/true' >share/genbuild.sh
|
|
mkdir src/obj
|
|
cp ../src/obj/build.h src/obj/
|
|
|
|
CONFIG_SITE=${BASEPREFIX}/${i}/share/config.site ./configure --prefix=/ --disable-ccache --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS}
|
|
make ${MAKEOPTS}
|
|
make install-strip DESTDIR=${INSTALLPATH}
|
|
|
|
make osx_volname
|
|
make deploydir
|
|
OSX_VOLNAME="$(cat osx_volname)"
|
|
mkdir -p unsigned-app-${i}
|
|
cp osx_volname unsigned-app-${i}/
|
|
cp contrib/macdeploy/detached-sig-apply.sh unsigned-app-${i}
|
|
cp contrib/macdeploy/detached-sig-create.sh unsigned-app-${i}
|
|
cp ${BASEPREFIX}/${i}/native/bin/dmg ${BASEPREFIX}/${i}/native/bin/genisoimage unsigned-app-${i}
|
|
cp ${BASEPREFIX}/${i}/native/bin/${i}-codesign_allocate unsigned-app-${i}/codesign_allocate
|
|
cp ${BASEPREFIX}/${i}/native/bin/${i}-pagestuff unsigned-app-${i}/pagestuff
|
|
mv dist unsigned-app-${i}
|
|
pushd unsigned-app-${i}
|
|
find . | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-osx-unsigned.tar.gz
|
|
popd
|
|
|
|
make deploy
|
|
${WRAP_DIR}/dmg dmg "${OSX_VOLNAME}.dmg" ${OUTDIR}/${DISTNAME}-osx-unsigned.dmg
|
|
|
|
cd installed
|
|
find . -name "lib*.la" -delete
|
|
find . -name "lib*.a" -delete
|
|
rm -rf ${DISTNAME}/lib/pkgconfig
|
|
find ${DISTNAME} | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-${i}.tar.gz
|
|
cd ../../
|
|
done
|
|
mkdir -p $OUTDIR/src
|
|
mv $SOURCEDIST $OUTDIR/src
|
|
mv ${OUTDIR}/${DISTNAME}-x86_64-*.tar.gz ${OUTDIR}/${DISTNAME}-osx64.tar.gz
|