Changeset View
Changeset View
Standalone View
Standalone View
contrib/gitian-descriptors/gitian-win.yml
--- | --- | ||||
name: "bitcoin-abc-0.20-win" | name: "bitcoin-abc-0.20-win" | ||||
enable_cache: true | enable_cache: true | ||||
distro: "debian" | distro: "debian" | ||||
suites: | suites: | ||||
- "buster" | - "buster" | ||||
architectures: | architectures: | ||||
- "amd64" | - "amd64" | ||||
packages: | packages: | ||||
- "autoconf" | - "autoconf" | ||||
- "automake" | - "automake" | ||||
- "bsdmainutils" | - "bsdmainutils" | ||||
- "ca-certificates" | - "ca-certificates" | ||||
- "cmake" | |||||
- "curl" | - "curl" | ||||
- "faketime" | - "faketime" | ||||
- "g++" | - "g++" | ||||
- "g++-mingw-w64" | - "g++-mingw-w64" | ||||
- "git" | - "git" | ||||
- "libboost-all-dev" | |||||
- "libevent-dev" | |||||
- "libssl-dev" | |||||
- "libtool" | - "libtool" | ||||
- "ninja-build" | |||||
- "mingw-w64" | - "mingw-w64" | ||||
- "nsis" | - "nsis" | ||||
- "pkg-config" | - "pkg-config" | ||||
- "python3" | - "python3" | ||||
- "rename" | |||||
- "zip" | - "zip" | ||||
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: [] | ||||
script: | | script: | | ||||
WRAP_DIR=$HOME/wrapped | |||||
HOSTS="i686-w64-mingw32 x86_64-w64-mingw32" | HOSTS="i686-w64-mingw32 x86_64-w64-mingw32" | ||||
CONFIGFLAGS="--enable-reduce-exports --disable-bench --disable-gui-tests --without-seeder" | |||||
# CMake toolchain file name differ from host name | |||||
declare -A CMAKE_TOOLCHAIN_FILE | |||||
CMAKE_TOOLCHAIN_FILE[i686-w64-mingw32]=Win32.cmake | |||||
CMAKE_TOOLCHAIN_FILE[x86_64-w64-mingw32]=Win64.cmake | |||||
WRAP_DIR=$HOME/wrapped | |||||
FAKETIME_HOST_PROGS="ar ranlib nm windres strip objcopy" | FAKETIME_HOST_PROGS="ar ranlib nm windres strip objcopy" | ||||
FAKETIME_PROGS="date makensis zip" | FAKETIME_PROGS="date makensis zip" | ||||
HOST_CFLAGS="-O2 -g" | HOST_CFLAGS="-O2 -g" | ||||
HOST_CXXFLAGS="-O2 -g" | HOST_CXXFLAGS="-O2 -g" | ||||
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" | ||||
▲ Show 20 Lines • Show All 58 Lines • ▼ Show 20 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" | ||||
create_per-host_linker_wrapper "2000-01-01 12:00:00" | create_per-host_linker_wrapper "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 | ||||
# 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}" | ||||
create_per-host_linker_wrapper "${REFERENCE_DATETIME}" | create_per-host_linker_wrapper "${REFERENCE_DATETIME}" | ||||
export PATH=${WRAP_DIR}:${PATH} | export PATH=${WRAP_DIR}:${PATH} | ||||
# Create the release tarball using (arbitrarily) the first host | mkdir build | ||||
./autogen.sh | cd build | ||||
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_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} .. | |||||
cd .. | |||||
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 | ||||
mkdir -p $OUTDIR/src | mkdir -p $OUTDIR/src | ||||
cp ../$SOURCEDIST $OUTDIR/src | cp ../$SOURCEDIST $OUTDIR/src | ||||
popd | popd | ||||
# Allow extra cmake option to be specified for each host | |||||
declare -A CMAKE_EXTRA_OPTIONS | |||||
CMAKE_EXTRA_OPTIONS[i686-w64-mingw32]="-DCPACK_PACKAGE_FILE_NAME=${DISTNAME}-win32-setup-unsigned" | |||||
CMAKE_EXTRA_OPTIONS[x86_64-w64-mingw32]="-DCPACK_PACKAGE_FILE_NAME=${DISTNAME}-win64-setup-unsigned" | |||||
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:${WRAP_DIR}:${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} CFLAGS="${HOST_CFLAGS}" CXXFLAGS="${HOST_CXXFLAGS}" | cmake -GNinja .. \ | ||||
make ${MAKEOPTS} | -DCMAKE_TOOLCHAIN_FILE=${SOURCEDIR}/cmake/platforms/${CMAKE_TOOLCHAIN_FILE[${i}]} \ | ||||
make ${MAKEOPTS} -C src check-security | -DCLIENT_VERSION_IS_RELEASE=ON \ | ||||
make deploy | -DENABLE_REDUCE_EXPORTS=ON \ | ||||
make install DESTDIR=${INSTALLPATH} | -DBUILD_BITCOIN_SEEDER=OFF \ | ||||
cp -f bitcoin-abc-*setup*.exe $OUTDIR/ | -DCPACK_STRIP_FILES=ON \ | ||||
-DCMAKE_INSTALL_PREFIX=${INSTALLPATH} \ | |||||
-DCCACHE=OFF \ | |||||
${CMAKE_EXTRA_OPTIONS[${i}]} | |||||
ninja | |||||
ninja check-security | |||||
ninja install | |||||
ninja package | |||||
cp -f bitcoin-abc-*-setup-unsigned.exe ${OUTDIR}/ | |||||
cd installed | cd installed | ||||
mkdir -p ${DISTNAME}/lib | |||||
mv ${DISTNAME}/bin/*.dll ${DISTNAME}/lib/ | mv ${DISTNAME}/bin/*.dll ${DISTNAME}/lib/ | ||||
find . -name "lib*.la" -delete | |||||
find . -name "lib*.a" -delete | |||||
rm -rf ${DISTNAME}/lib/pkgconfig | |||||
find ${DISTNAME}/bin -type f -executable -exec ${i}-objcopy --only-keep-debug {} {}.dbg \; -exec ${i}-strip -s {} \; -exec ${i}-objcopy --add-gnu-debuglink={}.dbg {} \; | find ${DISTNAME}/bin -type f -executable -exec ${i}-objcopy --only-keep-debug {} {}.dbg \; -exec ${i}-strip -s {} \; -exec ${i}-objcopy --add-gnu-debuglink={}.dbg {} \; | ||||
find ${DISTNAME}/lib -type f -exec ${i}-objcopy --only-keep-debug {} {}.dbg \; -exec ${i}-strip -s {} \; -exec ${i}-objcopy --add-gnu-debuglink={}.dbg {} \; | find ${DISTNAME}/lib -type f -exec ${i}-objcopy --only-keep-debug {} {}.dbg \; -exec ${i}-strip -s {} \; -exec ${i}-objcopy --add-gnu-debuglink={}.dbg {} \; | ||||
find ${DISTNAME} -not -name "*.dbg" -type f | sort | zip -X@ ${OUTDIR}/${DISTNAME}-${i}.zip | find ${DISTNAME} -not -name "*.dbg" -type f | sort | zip -X@ ${OUTDIR}/${DISTNAME}-${i}.zip | ||||
find ${DISTNAME} -name "*.dbg" -type f | sort | zip -X@ ${OUTDIR}/${DISTNAME}-${i}-debug.zip | find ${DISTNAME} -name "*.dbg" -type f | sort | zip -X@ ${OUTDIR}/${DISTNAME}-${i}-debug.zip | ||||
cd ../../ | cd ../../ | ||||
rm -rf distsrc-${i} | rm -rf distsrc-${i} | ||||
done | done | ||||
cd $OUTDIR | cd $OUTDIR | ||||
rename 's/-setup\.exe$/-setup-unsigned.exe/' *-setup.exe | |||||
find . -name "*-setup-unsigned.exe" | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-win-unsigned.tar.gz | find . -name "*-setup-unsigned.exe" | sort | tar --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-win-unsigned.tar.gz | ||||
mv ${OUTDIR}/${DISTNAME}-x86_64-*-debug.zip ${OUTDIR}/${DISTNAME}-win64-debug.zip | mv ${OUTDIR}/${DISTNAME}-x86_64-*-debug.zip ${OUTDIR}/${DISTNAME}-win64-debug.zip | ||||
mv ${OUTDIR}/${DISTNAME}-i686-*-debug.zip ${OUTDIR}/${DISTNAME}-win32-debug.zip | mv ${OUTDIR}/${DISTNAME}-i686-*-debug.zip ${OUTDIR}/${DISTNAME}-win32-debug.zip | ||||
mv ${OUTDIR}/${DISTNAME}-x86_64-*.zip ${OUTDIR}/${DISTNAME}-win64.zip | mv ${OUTDIR}/${DISTNAME}-x86_64-*.zip ${OUTDIR}/${DISTNAME}-win64.zip | ||||
mv ${OUTDIR}/${DISTNAME}-i686-*.zip ${OUTDIR}/${DISTNAME}-win32.zip | mv ${OUTDIR}/${DISTNAME}-i686-*.zip ${OUTDIR}/${DISTNAME}-win32.zip |