What changed, and why it matters
This commit is a routine cleanup of Bitcoin Core's continuous integration (CI) scripts. It removes an old option that let CI jobs use BusyBox utilities instead of GNU tools, because a dedicated Alpine Linux CI job now covers BusyBox testing. It also removes a now-unused temporary directory for executables and enables stricter shell error handling in one script. There is no user-facing change, no change to the Bitcoin node software, and no security relevance.
No action needed. This is a benign CI cleanup commit.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The patch removes the USE_BUSY_BOX environment variable and the BINS_SCRATCH_DIR directory setup from ci/test/00_setup_env.sh, ci/test/02_run_container.sh, and ci/test/03_test_script.sh. It drops the busybox package from the ARM CI environment and removes the symlink loop that exposed BusyBox applets in BINS_SCRATCH_DIR. Additionally, it changes set -ex to set -o errexit -o pipefail -o xtrace in 00_setup_env.sh, which makes piped commands fail if any stage fails. These are CI-only maintenance changes.
Changed components
ci/test/00_setup_env.shci/test/00_setup_env_arm.shci/test/02_run_container.shci/test/03_test_script.shInspect captured patch +3 / −21
diff --git a/ci/test/00_setup_env.sh b/ci/test/00_setup_env.sh
index a8f8d0ee..890bccde 100755
--- a/ci/test/00_setup_env.sh
+++ b/ci/test/00_setup_env.sh
@@ -6,7 +6,7 @@
export LC_ALL=C.UTF-8
-set -ex
+set -o errexit -o pipefail -o xtrace
# The source root dir, usually from git, usually read-only.
# The ci system copies this folder.
@@ -22,9 +22,6 @@ export DEPENDS_DIR=${DEPENDS_DIR:-$BASE_ROOT_DIR/depends}
# A folder for the ci system to put temporary files (build result, datadirs for tests, ...)
# This folder only exists on the ci guest.
export BASE_SCRATCH_DIR=${BASE_SCRATCH_DIR:-$BASE_ROOT_DIR/ci/scratch}
-# A folder for the ci system to put executables.
-# This folder only exists on the ci guest.
-export BINS_SCRATCH_DIR="${BASE_SCRATCH_DIR}/bins/"
echo "Setting specific values in env"
if [ -n "${FILE_ENV}" ]; then
@@ -36,8 +33,6 @@ fi
echo "Fallback to default values in env (if not yet set)"
# The number of parallel jobs to pass down to make and test_runner.py
export MAKEJOBS=${MAKEJOBS:--j$(if command -v nproc > /dev/null 2>&1; then nproc; else sysctl -n hw.logicalcpu; fi)}
-# Whether to prefer BusyBox over GNU utilities
-export USE_BUSY_BOX=${USE_BUSY_BOX:-false}
export RUN_UNIT_TESTS=${RUN_UNIT_TESTS:-true}
export RUN_FUNCTIONAL_TESTS=${RUN_FUNCTIONAL_TESTS:-true}
diff --git a/ci/test/00_setup_env_arm.sh b/ci/test/00_setup_env_arm.sh
index 46b3df8b..c410a80d 100755
--- a/ci/test/00_setup_env_arm.sh
+++ b/ci/test/00_setup_env_arm.sh
@@ -8,11 +8,10 @@ export LC_ALL=C.UTF-8
export HOST=arm-linux-gnueabihf
export DPKG_ADD_ARCH="armhf"
-export PACKAGES="python3-zmq g++-arm-linux-gnueabihf busybox libc6:armhf libstdc++6:armhf libfontconfig1:armhf libxcb1:armhf"
+export PACKAGES="python3-zmq g++-arm-linux-gnueabihf libc6:armhf libstdc++6:armhf libfontconfig1:armhf libxcb1:armhf"
export CONTAINER_NAME=ci_arm_linux
export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:24.04" # Check that https://packages.ubuntu.com/noble/g++-arm-linux-gnueabihf (version 13.x, similar to guix) can cross-compile
export CI_IMAGE_PLATFORM="linux/arm64"
-export USE_BUSY_BOX=true
export RUN_UNIT_TESTS=true
export RUN_FUNCTIONAL_TESTS=false
export GOAL="install"
diff --git a/ci/test/02_run_container.sh b/ci/test/02_run_container.sh
index 251b01c0..41128b5c 100755
--- a/ci/test/02_run_container.sh
+++ b/ci/test/02_run_container.sh
@@ -18,16 +18,13 @@ else
fi
CI_EXEC () {
- $CI_EXEC_CMD_PREFIX bash -c "export PATH=\"/path_with space:${BINS_SCRATCH_DIR}:${BASE_ROOT_DIR}/ci/retry:\$PATH\" && cd \"${BASE_ROOT_DIR}\" && $*"
+ $CI_EXEC_CMD_PREFIX bash -c "export PATH=\"/path_with space:${BASE_ROOT_DIR}/ci/retry:\$PATH\" && cd \"${BASE_ROOT_DIR}\" && $*"
}
export -f CI_EXEC
# Normalize all folders to BASE_ROOT_DIR
CI_EXEC rsync --recursive --perms --stats --human-readable "${BASE_READ_ONLY_DIR}/" "${BASE_ROOT_DIR}" || echo "Nothing to copy from ${BASE_READ_ONLY_DIR}/"
CI_EXEC "${BASE_ROOT_DIR}/ci/test/01_base_install.sh"
-
-CI_EXEC mkdir -p "${BINS_SCRATCH_DIR}"
-
CI_EXEC "${BASE_ROOT_DIR}/ci/test/03_test_script.sh"
if [ -z "$DANGER_RUN_CI_ON_HOST" ]; then
diff --git a/ci/test/03_test_script.sh b/ci/test/03_test_script.sh
index 09da8027..e61dc33e 100755
--- a/ci/test/03_test_script.sh
+++ b/ci/test/03_test_script.sh
@@ -85,15 +85,6 @@ elif [ "$RUN_UNIT_TESTS" = "true" ]; then
fi
fi
-if [ "$USE_BUSY_BOX" = "true" ]; then
- 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)
- # ar excluded for now because it does not recognize the -q option in ./depends (unknown if fixed)
- 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
- patch --help
-fi
-
# Make sure default datadir does not exist and is never read by creating a dummy file
if [ "$CI_OS_NAME" == "macos" ]; then
echo > "${HOME}/Library/Application Support/Bitcoin"
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.