mirror of
https://github.com/dashpay/dash.git
synced 2024-12-26 20:42:59 +01:00
a3a7a22268
8f7b93047581c67f2133cdb8c7845471de66c30f Drop the leading 0 from the version number (Andrew Chow)
Pull request description:
Removes the leading 0 from the version number. The minor version, which we had been using as the major version, is now the major version. The revision, which we had been using as the minor version, is now the minor version. The revision number is dropped. The build number is promoted to being part of the version number. This also avoids issues where it was accidentally not included in the version number.
The CLIENT_VERSION remains the same format as previous as previously, as the Major version was 0 so it never actually got included in it.
The user agent string formatter is updated to follow this new versioning.
***
Honestly I'm just tired of all of the people asking for "1.0" that maybe this'll shut them up. Skip the whole 1.0 thing and go straight to version 22.0!
Also, this means that the terminology we commonly use lines up with how the variables are named. So major versions are actually bumping the major version number, etc.
ACKs for top commit:
jnewbery:
Code review ACK 8f7b930475
MarcoFalke:
review ACK 8f7b93047581c67f2133cdb8c7845471de66c30f 🎻
Tree-SHA512: b5c3fae14d4c0a9c0ab3b1db7c949ecc0ac3537646306b13d98dd0efc17c489cdd16d43f0a24aaa28e9c4a92ea360500e05480a335b03f9fb308010cdd93a436
191 lines
7.1 KiB
YAML
Executable File
191 lines
7.1 KiB
YAML
Executable File
---
|
|
name: "dash-win-18"
|
|
enable_cache: true
|
|
distro: "ubuntu"
|
|
suites:
|
|
- "focal"
|
|
architectures:
|
|
- "amd64"
|
|
packages:
|
|
- "curl"
|
|
- "g++"
|
|
- "git"
|
|
- "pkg-config"
|
|
- "autoconf"
|
|
- "libtool"
|
|
- "automake"
|
|
- "faketime"
|
|
- "bsdmainutils"
|
|
- "mingw-w64"
|
|
- "g++-mingw-w64"
|
|
- "nsis"
|
|
- "zip"
|
|
- "ca-certificates"
|
|
- "python3"
|
|
- "ccache"
|
|
remotes:
|
|
- "url": "https://github.com/dashpay/dash.git"
|
|
"dir": "dash"
|
|
files: []
|
|
script: |
|
|
set -e -o pipefail
|
|
|
|
WRAP_DIR=$HOME/wrapped
|
|
HOSTS="x86_64-w64-mingw32"
|
|
CONFIGFLAGS="--enable-reduce-exports --disable-miner --disable-bench --disable-gui-tests --enable-crash-hooks"
|
|
FAKETIME_HOST_PROGS="ar ranlib nm windres strip objcopy"
|
|
FAKETIME_PROGS="date makensis zip"
|
|
HOST_CFLAGS="-O2 -g -fno-ident"
|
|
HOST_CXXFLAGS="-O2 -g -fno-ident"
|
|
|
|
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}/depends
|
|
mkdir -p ${BASE_CACHE} ${SOURCES_PATH}
|
|
|
|
# Setup ccache to use correct cache directories and fix the compiler check of ccache
|
|
CONFIGFLAGS="${CONFIGFLAGS} --enable-ccache"
|
|
export CCACHE_DIR=${GBUILD_PACKAGE_CACHE}/ccache
|
|
# As we later wrap the gcc binaries, this is fast
|
|
export CCACHE_COMPILERCHECK="content"
|
|
if [ -f ${GBUILD_PACKAGE_CACHE}/ccache.tar ]; then
|
|
pushd ${GBUILD_PACKAGE_CACHE}
|
|
tar xf ccache.tar
|
|
rm ccache.tar
|
|
popd
|
|
fi
|
|
# instead of compressing ccache.tar, we let ccache handle it by itself
|
|
# Otherwise we end up uncompressing/compressing a lot of cache files which we actually never use
|
|
export CCACHE_COMPRESS=1
|
|
else
|
|
CONFIGFLAGS="${CONFIGFLAGS} --disable-ccache"
|
|
fi
|
|
|
|
# We include the GCC version in all wrappers so that ccache can detect compiler upgrades when hashing the wrappers
|
|
GCCVERSION=$(gcc --version | head -1)
|
|
|
|
# Use $LIB in LD_PRELOAD to avoid hardcoding the dir (See `man ld.so`)
|
|
function create_global_faketime_wrappers {
|
|
for prog in ${FAKETIME_PROGS}; do
|
|
echo '#!/usr/bin/env bash' > ${WRAP_DIR}/${prog}
|
|
echo "# GCCVERSION=${GCCVERSION}" >> ${WRAP_DIR}/${prog}
|
|
echo "REAL=\`which -a ${prog} | grep -v ${WRAP_DIR}/${prog} | head -1\`" >> ${WRAP_DIR}/${prog}
|
|
echo "export LD_PRELOAD='/usr/\$LIB/faketime/libfaketime.so.1'" >> ${WRAP_DIR}/${prog}
|
|
echo "export FAKETIME=\"$1\"" >> ${WRAP_DIR}/${prog}
|
|
echo "\$REAL \$@" >> $WRAP_DIR/${prog}
|
|
chmod +x ${WRAP_DIR}/${prog}
|
|
touch -d "${REFERENCE_DATETIME}" ${WRAP_DIR}/${prog}
|
|
done
|
|
}
|
|
|
|
function create_per-host_faketime_wrappers {
|
|
for i in $HOSTS; do
|
|
for prog in ${FAKETIME_HOST_PROGS}; do
|
|
echo '#!/usr/bin/env bash' > ${WRAP_DIR}/${i}-${prog}
|
|
echo "# GCCVERSION=${GCCVERSION}" >> ${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/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}
|
|
touch -d "${REFERENCE_DATETIME}" ${WRAP_DIR}/${i}-${prog}
|
|
done
|
|
done
|
|
}
|
|
|
|
function create_per-host_compiler_wrapper {
|
|
# -posix variant is required for c++11 threading.
|
|
for i in $HOSTS; do
|
|
for prog in gcc g++; do
|
|
echo '#!/usr/bin/env bash' > ${WRAP_DIR}/${i}-${prog}
|
|
echo "# GCCVERSION=${GCCVERSION}" >> ${WRAP_DIR}/${i}-${prog}
|
|
echo "REAL=\`which -a ${i}-${prog}-posix | grep -v ${WRAP_DIR}/${i}-${prog} | head -1\`" >> ${WRAP_DIR}/${i}-${prog}
|
|
echo '# Add the gcc version to the wrapper so that ccache takes this into account (we use CCACHE_COMPILERCHECK=content)' >> ${WRAP_DIR}/${i}-${prog}
|
|
echo "# $(${prog} --version | head -1)" >> ${WRAP_DIR}/${i}-${prog}
|
|
echo "export LD_PRELOAD='/usr/\$LIB/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}
|
|
touch -d "${REFERENCE_DATETIME}" ${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"
|
|
create_per-host_compiler_wrapper "2000-01-01 12:00:00"
|
|
export PATH=${WRAP_DIR}:${PATH}
|
|
|
|
cd dash
|
|
BASEPREFIX="${PWD}/depends"
|
|
# 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}"
|
|
create_per-host_compiler_wrapper "${REFERENCE_DATETIME}"
|
|
export PATH=${WRAP_DIR}:${PATH}
|
|
|
|
# Define DISTNAME variable.
|
|
# shellcheck source=contrib/gitian-descriptors/assign_DISTNAME
|
|
source contrib/gitian-descriptors/assign_DISTNAME
|
|
|
|
GIT_ARCHIVE="${OUTDIR}/src/${DISTNAME}.tar.gz"
|
|
|
|
# Create the source tarball
|
|
mkdir -p "$(dirname "$GIT_ARCHIVE")"
|
|
git archive --prefix="${DISTNAME}/" --output="$GIT_ARCHIVE" HEAD
|
|
|
|
ORIGPATH="$PATH"
|
|
# Extract the git archive 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 "${GIT_ARCHIVE}"
|
|
|
|
./autogen.sh
|
|
CONFIG_SITE=${BASEPREFIX}/${i}/share/config.site ./configure --prefix=/ --disable-maintainer-mode --disable-dependency-tracking ${CONFIGFLAGS} CFLAGS="${HOST_CFLAGS}" CXXFLAGS="${HOST_CXXFLAGS}"
|
|
make ${MAKEOPTS}
|
|
make ${MAKEOPTS} -C src check-security
|
|
make deploy BITCOIN_WIN_INSTALLER="${OUTDIR}/${DISTNAME}-win64-setup-unsigned.exe"
|
|
make install DESTDIR=${INSTALLPATH}
|
|
cd installed
|
|
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 -print0 | xargs -0 -n1 -I{} ../contrib/devtools/split-debug.sh {} {} {}.dbg
|
|
find ${DISTNAME}/lib -type f -print0 | xargs -0 -n1 -I{} ../contrib/devtools/split-debug.sh {} {} {}.dbg
|
|
cp ../doc/README_windows.txt ${DISTNAME}/readme.txt
|
|
find ${DISTNAME} -not -name "*.dbg" -type f | sort | zip -X@ ${OUTDIR}/${DISTNAME}-${i//x86_64-w64-mingw32/win64}.zip
|
|
find ${DISTNAME} -name "*.dbg" -type f | sort | zip -X@ ${OUTDIR}/${DISTNAME}-${i//x86_64-w64-mingw32/win64}-debug.zip
|
|
cd ../../
|
|
rm -rf distsrc-${i}
|
|
done
|
|
|
|
cp -rf contrib/windeploy $BUILD_DIR
|
|
cd $BUILD_DIR/windeploy
|
|
mkdir unsigned
|
|
cp ${OUTDIR}/${DISTNAME}-win64-setup-unsigned.exe unsigned/
|
|
find . | sort | tar --mtime="$REFERENCE_DATETIME" --no-recursion --mode='u+rw,go+r-w,a+X' --owner=0 --group=0 -c -T - | gzip -9n > ${OUTDIR}/${DISTNAME}-win-unsigned.tar.gz
|
|
|
|
# Compress ccache (otherwise the assert file will get too huge)
|
|
if [ "$CCACHE_DIR" != "" ]; then
|
|
pushd ${GBUILD_PACKAGE_CACHE}
|
|
tar cf ccache.tar ccache
|
|
rm -rf ccache
|
|
popd
|
|
fi
|