|
|
@ -12,43 +12,42 @@ if [ "$CI_OS_NAME" == "macos" ]; then
|
|
|
|
top -l 1 -s 0 | awk ' /PhysMem/ {print}'
|
|
|
|
top -l 1 -s 0 | awk ' /PhysMem/ {print}'
|
|
|
|
echo "Number of CPUs: $(sysctl -n hw.logicalcpu)"
|
|
|
|
echo "Number of CPUs: $(sysctl -n hw.logicalcpu)"
|
|
|
|
else
|
|
|
|
else
|
|
|
|
CI_EXEC free -m -h
|
|
|
|
free -m -h
|
|
|
|
CI_EXEC echo "Number of CPUs \(nproc\):" \$\(nproc\)
|
|
|
|
echo "Number of CPUs \(nproc\):" \$\(nproc\)
|
|
|
|
CI_EXEC echo "$(lscpu | grep Endian)"
|
|
|
|
lscpu | grep Endian
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
CI_EXEC echo "Free disk space:"
|
|
|
|
echo "Free disk space:"
|
|
|
|
CI_EXEC df -h
|
|
|
|
df -h
|
|
|
|
|
|
|
|
|
|
|
|
if [ "$RUN_FUZZ_TESTS" = "true" ]; then
|
|
|
|
if [ "$RUN_FUZZ_TESTS" = "true" ]; then
|
|
|
|
export DIR_FUZZ_IN=${DIR_QA_ASSETS}/fuzz_seed_corpus/
|
|
|
|
export DIR_FUZZ_IN=${DIR_QA_ASSETS}/fuzz_seed_corpus/
|
|
|
|
if [ ! -d "$DIR_FUZZ_IN" ]; then
|
|
|
|
if [ ! -d "$DIR_FUZZ_IN" ]; then
|
|
|
|
CI_EXEC git clone --depth=1 https://github.com/bitcoin-core/qa-assets "${DIR_QA_ASSETS}"
|
|
|
|
git clone --depth=1 https://github.com/bitcoin-core/qa-assets "${DIR_QA_ASSETS}"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
elif [ "$RUN_UNIT_TESTS" = "true" ] || [ "$RUN_UNIT_TESTS_SEQUENTIAL" = "true" ]; then
|
|
|
|
elif [ "$RUN_UNIT_TESTS" = "true" ] || [ "$RUN_UNIT_TESTS_SEQUENTIAL" = "true" ]; then
|
|
|
|
export DIR_UNIT_TEST_DATA=${DIR_QA_ASSETS}/unit_test_data/
|
|
|
|
export DIR_UNIT_TEST_DATA=${DIR_QA_ASSETS}/unit_test_data/
|
|
|
|
if [ ! -d "$DIR_UNIT_TEST_DATA" ]; then
|
|
|
|
if [ ! -d "$DIR_UNIT_TEST_DATA" ]; then
|
|
|
|
CI_EXEC mkdir -p "$DIR_UNIT_TEST_DATA"
|
|
|
|
mkdir -p "$DIR_UNIT_TEST_DATA"
|
|
|
|
CI_EXEC curl --location --fail https://github.com/bitcoin-core/qa-assets/raw/main/unit_test_data/script_assets_test.json -o "${DIR_UNIT_TEST_DATA}/script_assets_test.json"
|
|
|
|
curl --location --fail https://github.com/bitcoin-core/qa-assets/raw/main/unit_test_data/script_assets_test.json -o "${DIR_UNIT_TEST_DATA}/script_assets_test.json"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
CI_EXEC mkdir -p "${BASE_SCRATCH_DIR}/sanitizer-output/"
|
|
|
|
mkdir -p "${BASE_SCRATCH_DIR}/sanitizer-output/"
|
|
|
|
|
|
|
|
|
|
|
|
if [ "$USE_BUSY_BOX" = "true" ]; then
|
|
|
|
if [ "$USE_BUSY_BOX" = "true" ]; then
|
|
|
|
echo "Setup to use BusyBox utils"
|
|
|
|
echo "Setup to use BusyBox utils"
|
|
|
|
# tar excluded for now because it requires passing in the exact archive type in ./depends (fixed in later BusyBox version)
|
|
|
|
# tar excluded for now because it requires passing in the exact archive type in ./depends (fixed in later BusyBox version)
|
|
|
|
# ar excluded for now because it does not recognize the -q option in ./depends (unknown if fixed)
|
|
|
|
# ar excluded for now because it does not recognize the -q option in ./depends (unknown if fixed)
|
|
|
|
# shellcheck disable=SC1010
|
|
|
|
for util in $(busybox --list | grep -v "^ar$" | grep -v "^tar$" ); do ln -s "$(command -v busybox)" "${BINS_SCRATCH_DIR}/$util"; done
|
|
|
|
CI_EXEC for util in \$\(busybox --list \| grep -v "^ar$" \| grep -v "^tar$" \)\; do ln -s \$\(command -v busybox\) "${BINS_SCRATCH_DIR}/\$util"\; done
|
|
|
|
|
|
|
|
# Print BusyBox version
|
|
|
|
# Print BusyBox version
|
|
|
|
CI_EXEC patch --help
|
|
|
|
patch --help
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# Make sure default datadir does not exist and is never read by creating a dummy file
|
|
|
|
# Make sure default datadir does not exist and is never read by creating a dummy file
|
|
|
|
if [ "$CI_OS_NAME" == "macos" ]; then
|
|
|
|
if [ "$CI_OS_NAME" == "macos" ]; then
|
|
|
|
echo > "${HOME}/Library/Application Support/Bitcoin"
|
|
|
|
echo > "${HOME}/Library/Application Support/Bitcoin"
|
|
|
|
else
|
|
|
|
else
|
|
|
|
CI_EXEC echo \> \$HOME/.bitcoin
|
|
|
|
echo > "${HOME}/.bitcoin"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
if [ -z "$NO_DEPENDS" ]; then
|
|
|
|
if [ -z "$NO_DEPENDS" ]; then
|
|
|
@ -60,10 +59,10 @@ if [ -z "$NO_DEPENDS" ]; then
|
|
|
|
else
|
|
|
|
else
|
|
|
|
SHELL_OPTS="CONFIG_SHELL="
|
|
|
|
SHELL_OPTS="CONFIG_SHELL="
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
CI_EXEC "$SHELL_OPTS" make "$MAKEJOBS" -C depends HOST="$HOST" "$DEP_OPTS" LOG=1
|
|
|
|
bash -c "$SHELL_OPTS make $MAKEJOBS -C depends HOST=$HOST $DEP_OPTS LOG=1"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
if [ "$DOWNLOAD_PREVIOUS_RELEASES" = "true" ]; then
|
|
|
|
if [ "$DOWNLOAD_PREVIOUS_RELEASES" = "true" ]; then
|
|
|
|
CI_EXEC test/get_previous_releases.py -b -t "$PREVIOUS_RELEASES_DIR"
|
|
|
|
test/get_previous_releases.py -b -t "$PREVIOUS_RELEASES_DIR"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
BITCOIN_CONFIG_ALL="--enable-suppress-external-warnings --disable-dependency-tracking"
|
|
|
|
BITCOIN_CONFIG_ALL="--enable-suppress-external-warnings --disable-dependency-tracking"
|
|
|
@ -74,46 +73,46 @@ if [ -z "$NO_WERROR" ]; then
|
|
|
|
BITCOIN_CONFIG_ALL="${BITCOIN_CONFIG_ALL} --enable-werror"
|
|
|
|
BITCOIN_CONFIG_ALL="${BITCOIN_CONFIG_ALL} --enable-werror"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
CI_EXEC "ccache --zero-stats --max-size=$CCACHE_SIZE"
|
|
|
|
ccache --zero-stats --max-size="${CCACHE_SIZE}"
|
|
|
|
PRINT_CCACHE_STATISTICS="ccache --version | head -n 1 && ccache --show-stats"
|
|
|
|
PRINT_CCACHE_STATISTICS="ccache --version | head -n 1 && ccache --show-stats"
|
|
|
|
|
|
|
|
|
|
|
|
if [ -n "$ANDROID_TOOLS_URL" ]; then
|
|
|
|
if [ -n "$ANDROID_TOOLS_URL" ]; then
|
|
|
|
CI_EXEC make distclean || true
|
|
|
|
make distclean || true
|
|
|
|
CI_EXEC ./autogen.sh
|
|
|
|
./autogen.sh
|
|
|
|
CI_EXEC ./configure "$BITCOIN_CONFIG_ALL" "$BITCOIN_CONFIG" || ( (CI_EXEC cat config.log) && false)
|
|
|
|
bash -c "./configure $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG" || ( (cat config.log) && false)
|
|
|
|
CI_EXEC "make $MAKEJOBS && cd src/qt && ANDROID_HOME=${ANDROID_HOME} ANDROID_NDK_HOME=${ANDROID_NDK_HOME} make apk"
|
|
|
|
make "${MAKEJOBS}" && cd src/qt && ANDROID_HOME=${ANDROID_HOME} ANDROID_NDK_HOME=${ANDROID_NDK_HOME} make apk
|
|
|
|
CI_EXEC "${PRINT_CCACHE_STATISTICS}"
|
|
|
|
bash -c "${PRINT_CCACHE_STATISTICS}"
|
|
|
|
exit 0
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
BITCOIN_CONFIG_ALL="${BITCOIN_CONFIG_ALL} --enable-external-signer --prefix=$BASE_OUTDIR"
|
|
|
|
BITCOIN_CONFIG_ALL="${BITCOIN_CONFIG_ALL} --enable-external-signer --prefix=$BASE_OUTDIR"
|
|
|
|
|
|
|
|
|
|
|
|
if [ -n "$CONFIG_SHELL" ]; then
|
|
|
|
if [ -n "$CONFIG_SHELL" ]; then
|
|
|
|
CI_EXEC "$CONFIG_SHELL" -c "./autogen.sh"
|
|
|
|
"$CONFIG_SHELL" -c "./autogen.sh"
|
|
|
|
else
|
|
|
|
else
|
|
|
|
CI_EXEC ./autogen.sh
|
|
|
|
./autogen.sh
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
CI_EXEC mkdir -p "${BASE_BUILD_DIR}"
|
|
|
|
mkdir -p "${BASE_BUILD_DIR}"
|
|
|
|
export P_CI_DIR="${BASE_BUILD_DIR}"
|
|
|
|
cd "${BASE_BUILD_DIR}"
|
|
|
|
|
|
|
|
|
|
|
|
CI_EXEC "${BASE_ROOT_DIR}/configure" --cache-file=config.cache "$BITCOIN_CONFIG_ALL" "$BITCOIN_CONFIG" || ( (CI_EXEC cat config.log) && false)
|
|
|
|
bash -c "${BASE_ROOT_DIR}/configure --cache-file=config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG" || ( (cat config.log) && false)
|
|
|
|
|
|
|
|
|
|
|
|
CI_EXEC make distdir VERSION="$HOST"
|
|
|
|
make distdir VERSION="$HOST"
|
|
|
|
|
|
|
|
|
|
|
|
export P_CI_DIR="${BASE_BUILD_DIR}/bitcoin-$HOST"
|
|
|
|
cd "${BASE_BUILD_DIR}/bitcoin-$HOST"
|
|
|
|
|
|
|
|
|
|
|
|
CI_EXEC ./configure --cache-file=../config.cache "$BITCOIN_CONFIG_ALL" "$BITCOIN_CONFIG" || ( (CI_EXEC cat config.log) && false)
|
|
|
|
bash -c "./configure --cache-file=../config.cache $BITCOIN_CONFIG_ALL $BITCOIN_CONFIG" || ( (cat config.log) && false)
|
|
|
|
|
|
|
|
|
|
|
|
set -o errtrace
|
|
|
|
set -o errtrace
|
|
|
|
trap 'CI_EXEC "cat ${BASE_SCRATCH_DIR}/sanitizer-output/* 2> /dev/null"' ERR
|
|
|
|
trap 'bash -c "cat ${BASE_SCRATCH_DIR}/sanitizer-output/* 2> /dev/null"' ERR
|
|
|
|
|
|
|
|
|
|
|
|
if [[ ${USE_MEMORY_SANITIZER} == "true" ]]; then
|
|
|
|
if [[ ${USE_MEMORY_SANITIZER} == "true" ]]; then
|
|
|
|
# MemorySanitizer (MSAN) does not support tracking memory initialization done by
|
|
|
|
# MemorySanitizer (MSAN) does not support tracking memory initialization done by
|
|
|
|
# using the Linux getrandom syscall. Avoid using getrandom by undefining
|
|
|
|
# using the Linux getrandom syscall. Avoid using getrandom by undefining
|
|
|
|
# HAVE_SYS_GETRANDOM. See https://github.com/google/sanitizers/issues/852 for
|
|
|
|
# HAVE_SYS_GETRANDOM. See https://github.com/google/sanitizers/issues/852 for
|
|
|
|
# details.
|
|
|
|
# details.
|
|
|
|
CI_EXEC 'grep -v HAVE_SYS_GETRANDOM src/config/bitcoin-config.h > src/config/bitcoin-config.h.tmp && mv src/config/bitcoin-config.h.tmp src/config/bitcoin-config.h'
|
|
|
|
grep -v HAVE_SYS_GETRANDOM src/config/bitcoin-config.h > src/config/bitcoin-config.h.tmp && mv src/config/bitcoin-config.h.tmp src/config/bitcoin-config.h
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
if [[ "${RUN_TIDY}" == "true" ]]; then
|
|
|
|
if [[ "${RUN_TIDY}" == "true" ]]; then
|
|
|
@ -121,11 +120,11 @@ if [[ "${RUN_TIDY}" == "true" ]]; then
|
|
|
|
MAYBE_TOKEN="--"
|
|
|
|
MAYBE_TOKEN="--"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
CI_EXEC "${MAYBE_BEAR}" "${MAYBE_TOKEN}" make "$MAKEJOBS" "$GOAL" || ( echo "Build failure. Verbose build follows." && CI_EXEC make "$GOAL" V=1 ; false )
|
|
|
|
bash -c "${MAYBE_BEAR} ${MAYBE_TOKEN} make $MAKEJOBS $GOAL" || ( echo "Build failure. Verbose build follows." && make "$GOAL" V=1 ; false )
|
|
|
|
|
|
|
|
|
|
|
|
CI_EXEC "${PRINT_CCACHE_STATISTICS}"
|
|
|
|
bash -c "${PRINT_CCACHE_STATISTICS}"
|
|
|
|
CI_EXEC du -sh "${DEPENDS_DIR}"/*/
|
|
|
|
du -sh "${DEPENDS_DIR}"/*/
|
|
|
|
CI_EXEC du -sh "${PREVIOUS_RELEASES_DIR}"
|
|
|
|
du -sh "${PREVIOUS_RELEASES_DIR}"
|
|
|
|
|
|
|
|
|
|
|
|
if [[ $HOST = *-mingw32 ]]; then
|
|
|
|
if [[ $HOST = *-mingw32 ]]; then
|
|
|
|
# Generate all binaries, so that they can be wrapped
|
|
|
|
# Generate all binaries, so that they can be wrapped
|
|
|
|