mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-03-03 10:16:14 +00:00
The current SHA1 LLVM signing key is considered not secure since 2026-02-01T00:00:00Z which makes this run fail when downloading packages. See: https://github.com/llvm/llvm-project/issues/153385 Apply the fix from the issue to temporarily to treat this error as a warning, until the upstream key can be updated. This PR should be reverted once the upstream key is updated.
108 lines
4.3 KiB
Bash
Executable File
108 lines
4.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Copyright (c) 2018-present The Bitcoin Core developers
|
|
# Distributed under the MIT software license, see the accompanying
|
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
export LC_ALL=C.UTF-8
|
|
|
|
set -o errexit -o pipefail -o xtrace
|
|
|
|
CFG_DONE="${BASE_ROOT_DIR}/ci.base-install-done" # Use a global setting to remember whether this script ran to avoid running it twice
|
|
|
|
if [ "$( cat "${CFG_DONE}" || true )" == "done" ]; then
|
|
echo "Skip base install"
|
|
exit 0
|
|
fi
|
|
|
|
MAKEJOBS="-j$( nproc )" # Use nproc, because MAKEJOBS is the default in docker image builds.
|
|
|
|
if [ -n "$DPKG_ADD_ARCH" ]; then
|
|
dpkg --add-architecture "$DPKG_ADD_ARCH"
|
|
fi
|
|
|
|
if [ -n "${APT_LLVM_V}" ]; then
|
|
# Temporarily work around Sequoia PGP policy deadline for legacy repositories.
|
|
# See https://github.com/llvm/llvm-project/issues/153385.
|
|
if [ -f /usr/share/apt/default-sequoia.config ]; then
|
|
sed -i 's/\(sha1\.second_preimage_resistance =\).*/\1 9999-01-01/' /usr/share/apt/default-sequoia.config
|
|
fi
|
|
${CI_RETRY_EXE} apt-get update
|
|
${CI_RETRY_EXE} apt-get install curl -y
|
|
curl "https://apt.llvm.org/llvm-snapshot.gpg.key" | tee "/etc/apt/trusted.gpg.d/apt.llvm.org.asc"
|
|
(
|
|
# shellcheck disable=SC2034
|
|
source /etc/os-release
|
|
echo "deb http://apt.llvm.org/${VERSION_CODENAME}/ llvm-toolchain-${VERSION_CODENAME}-${APT_LLVM_V} main" > "/etc/apt/sources.list.d/llvm-toolchain-${VERSION_CODENAME}-${APT_LLVM_V}.list"
|
|
)
|
|
fi
|
|
|
|
if [[ $CI_IMAGE_NAME_TAG == *alpine* ]]; then
|
|
${CI_RETRY_EXE} apk update
|
|
# shellcheck disable=SC2086
|
|
${CI_RETRY_EXE} apk add --no-cache $CI_BASE_PACKAGES $PACKAGES
|
|
elif [ "$CI_OS_NAME" != "macos" ]; then
|
|
if [[ -n "${APPEND_APT_SOURCES_LIST}" ]]; then
|
|
echo "${APPEND_APT_SOURCES_LIST}" >> /etc/apt/sources.list
|
|
fi
|
|
${CI_RETRY_EXE} apt-get update
|
|
# shellcheck disable=SC2086
|
|
${CI_RETRY_EXE} apt-get install --no-install-recommends --no-upgrade -y $PACKAGES $CI_BASE_PACKAGES
|
|
fi
|
|
|
|
if [ -n "${APT_LLVM_V}" ]; then
|
|
update-alternatives --install /usr/bin/clang++ clang++ "/usr/bin/clang++-${APT_LLVM_V}" 100
|
|
update-alternatives --install /usr/bin/clang clang "/usr/bin/clang-${APT_LLVM_V}" 100
|
|
update-alternatives --install /usr/bin/llvm-symbolizer llvm-symbolizer "/usr/bin/llvm-symbolizer-${APT_LLVM_V}" 100
|
|
fi
|
|
|
|
if [ -n "$PIP_PACKAGES" ]; then
|
|
# shellcheck disable=SC2086
|
|
${CI_RETRY_EXE} pip3 install --user $PIP_PACKAGES
|
|
fi
|
|
|
|
if [[ -n "${USE_INSTRUMENTED_LIBCPP}" ]]; then
|
|
${CI_RETRY_EXE} git clone --depth=1 https://github.com/llvm/llvm-project -b "llvmorg-21.1.5" /llvm-project
|
|
|
|
cmake -G Ninja -B /cxx_build/ \
|
|
-DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi;libunwind" \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DLLVM_USE_SANITIZER="${USE_INSTRUMENTED_LIBCPP}" \
|
|
-DCMAKE_C_COMPILER=clang \
|
|
-DCMAKE_CXX_COMPILER=clang++ \
|
|
-DLLVM_TARGETS_TO_BUILD=Native \
|
|
-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF \
|
|
-DLIBCXXABI_USE_LLVM_UNWINDER=OFF \
|
|
-DLIBCXX_ABI_DEFINES="_LIBCPP_ABI_BOUNDED_ITERATORS;_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STD_ARRAY;_LIBCPP_ABI_BOUNDED_ITERATORS_IN_STRING;_LIBCPP_ABI_BOUNDED_ITERATORS_IN_VECTOR;_LIBCPP_ABI_BOUNDED_UNIQUE_PTR" \
|
|
-DLIBCXX_HARDENING_MODE=debug \
|
|
-S /llvm-project/runtimes
|
|
|
|
ninja -C /cxx_build/ "$MAKEJOBS"
|
|
|
|
# Clear no longer needed source folder
|
|
du -sh /llvm-project
|
|
rm -rf /llvm-project
|
|
fi
|
|
|
|
if [[ "${RUN_IWYU}" == true ]]; then
|
|
${CI_RETRY_EXE} git clone --depth=1 https://github.com/include-what-you-use/include-what-you-use -b clang_"${TIDY_LLVM_V}" /include-what-you-use
|
|
(cd /include-what-you-use && patch -p1 < /ci_container_base/ci/test/01_iwyu.patch)
|
|
cmake -B /iwyu-build/ -G 'Unix Makefiles' -DCMAKE_PREFIX_PATH=/usr/lib/llvm-"${TIDY_LLVM_V}" -S /include-what-you-use
|
|
make -C /iwyu-build/ install "$MAKEJOBS"
|
|
fi
|
|
|
|
mkdir -p "${DEPENDS_DIR}/SDKs" "${DEPENDS_DIR}/sdk-sources"
|
|
|
|
OSX_SDK_BASENAME="Xcode-${XCODE_VERSION}-${XCODE_BUILD_ID}-extracted-SDK-with-libcxx-headers"
|
|
|
|
if [ -n "$XCODE_VERSION" ] && [ ! -d "${DEPENDS_DIR}/SDKs/${OSX_SDK_BASENAME}" ]; then
|
|
OSX_SDK_FILENAME="${OSX_SDK_BASENAME}.tar"
|
|
OSX_SDK_PATH="${DEPENDS_DIR}/sdk-sources/${OSX_SDK_FILENAME}"
|
|
if [ ! -f "$OSX_SDK_PATH" ]; then
|
|
${CI_RETRY_EXE} curl --location --fail "${SDK_URL}/${OSX_SDK_FILENAME}" -o "$OSX_SDK_PATH"
|
|
fi
|
|
tar -C "${DEPENDS_DIR}/SDKs" -xf "$OSX_SDK_PATH"
|
|
fi
|
|
|
|
echo -n "done" > "${CFG_DONE}"
|