Changeset View
Changeset View
Standalone View
Standalone View
contrib/gitian-descriptors/gitian-osx.yml
Show All 24 Lines | |||||
- "libtinfo5" | - "libtinfo5" | ||||
- "libtool" | - "libtool" | ||||
- "libz-dev" | - "libz-dev" | ||||
- "ninja-build" | - "ninja-build" | ||||
- "pkg-config" | - "pkg-config" | ||||
- "python3" | - "python3" | ||||
- "python3-dev" | - "python3-dev" | ||||
- "python3-setuptools" | - "python3-setuptools" | ||||
# FIXME: these dependencies are only required to make CMake happy when building | |||||
# native tools. They can be removed when the `NativeExecutable.cmake` gets | |||||
# improved to avoid requiring all the bitcoin-abc dependencies. | |||||
- "libboost-all-dev" | |||||
- "libevent-dev" | |||||
- "libssl-dev" | |||||
remotes: | remotes: | ||||
- "url": "https://github.com/Bitcoin-ABC/bitcoin-abc.git" | - "url": "https://github.com/Bitcoin-ABC/bitcoin-abc.git" | ||||
"dir": "bitcoin" | "dir": "bitcoin" | ||||
files: | files: | ||||
- "MacOSX10.11.sdk.tar.gz" | - "MacOSX10.11.sdk.tar.gz" | ||||
script: | | script: | | ||||
WRAP_DIR=$HOME/wrapped | WRAP_DIR=$HOME/wrapped | ||||
HOSTS="x86_64-apple-darwin14" | HOSTS="x86_64-apple-darwin14" | ||||
CONFIGFLAGS="--enable-reduce-exports --disable-bench --disable-gui-tests GENISOIMAGE=$WRAP_DIR/genisoimage" | |||||
# CMake toolchain file name differ from host name | |||||
declare -A CMAKE_TOOLCHAIN_FILE | |||||
CMAKE_TOOLCHAIN_FILE[x86_64-apple-darwin14]=OSX.cmake | |||||
FAKETIME_HOST_PROGS="" | FAKETIME_HOST_PROGS="" | ||||
FAKETIME_PROGS="ar ranlib date dmg genisoimage" | FAKETIME_PROGS="ar ranlib date dmg genisoimage" | ||||
export QT_RCC_TEST=1 | export QT_RCC_TEST=1 | ||||
export QT_RCC_SOURCE_DATE_OVERRIDE=1 | export QT_RCC_SOURCE_DATE_OVERRIDE=1 | ||||
export GZIP="-9n" | export GZIP="-9n" | ||||
export TAR_OPTIONS="--mtime="$REFERENCE_DATE\\\ $REFERENCE_TIME"" | export TAR_OPTIONS="--mtime="$REFERENCE_DATE\\\ $REFERENCE_TIME"" | ||||
export TZ="UTC" | export TZ="UTC" | ||||
Show All 33 Lines | script: | | ||||
# Faketime for depends so intermediate results are comparable | # Faketime for depends so intermediate results are comparable | ||||
export PATH_orig=${PATH} | export PATH_orig=${PATH} | ||||
create_global_faketime_wrappers "2000-01-01 12:00:00" | create_global_faketime_wrappers "2000-01-01 12:00:00" | ||||
create_per-host_faketime_wrappers "2000-01-01 12:00:00" | create_per-host_faketime_wrappers "2000-01-01 12:00:00" | ||||
export PATH=${WRAP_DIR}:${PATH} | export PATH=${WRAP_DIR}:${PATH} | ||||
cd bitcoin | cd bitcoin | ||||
SOURCEDIR=`pwd` | |||||
BASEPREFIX=`pwd`/depends | BASEPREFIX=`pwd`/depends | ||||
mkdir -p ${BASEPREFIX}/SDKs | mkdir -p ${BASEPREFIX}/SDKs | ||||
tar -C ${BASEPREFIX}/SDKs -xf ${BUILD_DIR}/MacOSX10.11.sdk.tar.gz | tar -C ${BASEPREFIX}/SDKs -xf ${BUILD_DIR}/MacOSX10.11.sdk.tar.gz | ||||
# Build dependencies for each host | # Build dependencies for each host | ||||
for i in $HOSTS; do | for i in $HOSTS; do | ||||
make ${MAKEOPTS} -C ${BASEPREFIX} HOST="${i}" | make ${MAKEOPTS} -C ${BASEPREFIX} HOST="${i}" | ||||
done | done | ||||
# Faketime for binaries | # Faketime for binaries | ||||
export PATH=${PATH_orig} | export PATH=${PATH_orig} | ||||
create_global_faketime_wrappers "${REFERENCE_DATETIME}" | create_global_faketime_wrappers "${REFERENCE_DATETIME}" | ||||
create_per-host_faketime_wrappers "${REFERENCE_DATETIME}" | create_per-host_faketime_wrappers "${REFERENCE_DATETIME}" | ||||
export PATH=${WRAP_DIR}:${PATH} | export PATH=${WRAP_DIR}:${PATH} | ||||
# Create the release tarball using (arbitrarily) the first host | mkdir -p source_package | ||||
./autogen.sh | pushd source_package | ||||
CONFIG_SITE=${BASEPREFIX}/`echo "${HOSTS}" | awk '{print $1;}'`/share/config.site ./configure --prefix=/ | cmake -GNinja .. \ | ||||
make dist | -DBUILD_BITCOIN_WALLET=OFF \ | ||||
-DBUILD_BITCOIN_ZMQ=OFF \ | |||||
-DBUILD_BITCOIN_ZMQ=OFF \ | |||||
-DBUILD_BITCOIN_SEEDER=OFF \ | |||||
-DBUILD_BITCOIN_CLI=OFF \ | |||||
-DBUILD_BITCOIN_TX=OFF \ | |||||
-DBUILD_BITCOIN_QT=OFF \ | |||||
-DBUILD_LIBBITCOINCONSENSUS=OFF \ | |||||
-DENABLE_QRCODE=OFF \ | |||||
-DENABLE_UPNP=OFF | |||||
ninja package_source | |||||
SOURCEDIST=`echo bitcoin-abc-*.tar.gz` | SOURCEDIST=`echo bitcoin-abc-*.tar.gz` | ||||
mv ${SOURCEDIST} .. | |||||
popd | |||||
DISTNAME=`echo ${SOURCEDIST} | sed 's/.tar.*//'` | DISTNAME=`echo ${SOURCEDIST} | sed 's/.tar.*//'` | ||||
# Correct tar file order | # Correct tar file order | ||||
mkdir -p temp | mkdir -p temp | ||||
pushd temp | pushd temp | ||||
tar xf ../$SOURCEDIST | tar xf ../$SOURCEDIST | ||||
find bitcoin-abc-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST | find bitcoin-abc-* | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ../$SOURCEDIST | ||||
popd | popd | ||||
ORIGPATH="$PATH" | ORIGPATH="$PATH" | ||||
# Extract the release tarball into a dir for each host and build | # Extract the release tarball into a dir for each host and build | ||||
for i in ${HOSTS}; do | for i in ${HOSTS}; do | ||||
export PATH=${BASEPREFIX}/${i}/native/bin:${ORIGPATH} | export PATH=${BASEPREFIX}/${i}/native/bin:${ORIGPATH} | ||||
mkdir -p distsrc-${i} | mkdir -p distsrc-${i} | ||||
cd distsrc-${i} | cd distsrc-${i} | ||||
INSTALLPATH=`pwd`/installed/${DISTNAME} | INSTALLPATH=`pwd`/installed/${DISTNAME} | ||||
mkdir -p ${INSTALLPATH} | mkdir -p ${INSTALLPATH} | ||||
tar --strip-components=1 -xf ../$SOURCEDIST | tar --strip-components=1 -xf ../$SOURCEDIST | ||||
CONFIG_SITE=${BASEPREFIX}/${i}/share/config.site ./configure --prefix=/ --disable-ccache --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS} | cmake -GNinja .. \ | ||||
make ${MAKEOPTS} | -DCMAKE_TOOLCHAIN_FILE=${SOURCEDIR}/cmake/platforms/${CMAKE_TOOLCHAIN_FILE[${i}]} \ | ||||
make install-strip DESTDIR=${INSTALLPATH} | -DCLIENT_VERSION_IS_RELEASE=ON \ | ||||
-DENABLE_REDUCE_EXPORTS=ON \ | |||||
-DCMAKE_INSTALL_PREFIX=${INSTALLPATH} \ | |||||
-DCCACHE=OFF \ | |||||
-DGENISOIMAGE_EXECUTABLE="${WRAP_DIR}/genisoimage" | |||||
ninja | |||||
ninja install | |||||
export PYTHONPATH="${BASEPREFIX}/${i}/native/lib/python3/dist-packages:${PYTHONPATH}" | |||||
ninja osx-deploydir | |||||
make osx_volname | |||||
make deploydir | |||||
OSX_VOLNAME="$(cat osx_volname)" | OSX_VOLNAME="$(cat osx_volname)" | ||||
mkdir -p unsigned-app-${i} | mkdir -p unsigned-app-${i} | ||||
cp osx_volname unsigned-app-${i}/ | cp osx_volname unsigned-app-${i}/ | ||||
cp contrib/macdeploy/detached-sig-apply.sh unsigned-app-${i} | cp contrib/macdeploy/detached-sig-apply.sh unsigned-app-${i} | ||||
cp contrib/macdeploy/detached-sig-create.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/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}-codesign_allocate unsigned-app-${i}/codesign_allocate | ||||
cp ${BASEPREFIX}/${i}/native/bin/${i}-pagestuff unsigned-app-${i}/pagestuff | cp ${BASEPREFIX}/${i}/native/bin/${i}-pagestuff unsigned-app-${i}/pagestuff | ||||
mv dist unsigned-app-${i} | mv dist unsigned-app-${i} | ||||
pushd 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 | 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 | popd | ||||
make deploy | ninja osx-dmg | ||||
${WRAP_DIR}/dmg dmg "${OSX_VOLNAME}.dmg" ${OUTDIR}/${DISTNAME}-osx-unsigned.dmg | ${WRAP_DIR}/dmg dmg "${OSX_VOLNAME}.dmg" ${OUTDIR}/${DISTNAME}-osx-unsigned.dmg | ||||
cd installed | cd installed | ||||
find . -name "lib*.la" -delete | # The install/strip target should do exactly that. However there is a bug in | ||||
find . -name "lib*.a" -delete | # in the Buster CMake version that causes strip to be called with the wrong | ||||
rm -rf ${DISTNAME}/lib/pkgconfig | # parameters when an Apple strip tool is used. This is fixed starting with | ||||
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 | # CMake versions >= 3.14, see: | ||||
# https://gitlab.kitware.com/cmake/cmake/merge_requests/2892 | |||||
find -path "*.app*" -type f -executable -exec mv {} ${DISTNAME}/bin/bitcoin-qt \; | |||||
find ${DISTNAME}/bin -type f -executable -exec ${i}-strip -u -r {} \; | |||||
find ${DISTNAME}/lib -type f -executable -exec ${i}-strip -x {} \; | |||||
find ${DISTNAME} -not -path "*.app*" | 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 ../../ | cd ../../ | ||||
done | done | ||||
mkdir -p $OUTDIR/src | mkdir -p $OUTDIR/src | ||||
mv $SOURCEDIST $OUTDIR/src | mv $SOURCEDIST $OUTDIR/src | ||||
mv ${OUTDIR}/${DISTNAME}-x86_64-*.tar.gz ${OUTDIR}/${DISTNAME}-osx64.tar.gz | mv ${OUTDIR}/${DISTNAME}-x86_64-*.tar.gz ${OUTDIR}/${DISTNAME}-osx64.tar.gz |