/ ci / test / 00_setup_env_native_asan.sh
00_setup_env_native_asan.sh
 1  #!/usr/bin/env bash
 2  #
 3  # Copyright (c) 2019-present The Bitcoin Core developers
 4  # Distributed under the MIT software license, see the accompanying
 5  # file COPYING or http://www.opensource.org/licenses/mit-license.php.
 6  
 7  export LC_ALL=C.UTF-8
 8  
 9  export CI_IMAGE_NAME_TAG="mirror.gcr.io/ubuntu:24.04"
10  
11  # Only install BCC tracing packages in CI. Container has to match the host for BCC to work.
12  if [[ "${INSTALL_BCC_TRACING_TOOLS}" == "true" ]]; then
13    # Required for USDT functional tests to run
14    BPFCC_PACKAGE="bpfcc-tools linux-headers-$(uname --kernel-release)"
15    export CI_CONTAINER_CAP="--privileged -v /sys/kernel:/sys/kernel:rw"
16  else
17    BPFCC_PACKAGE=""
18    export CI_CONTAINER_CAP="--cap-add SYS_PTRACE"  # If run with (ASan + LSan), the container needs access to ptrace (https://github.com/google/sanitizers/issues/764)
19  fi
20  
21  export CONTAINER_NAME=ci_native_asan
22  export APT_LLVM_V="21"
23  export PACKAGES="systemtap-sdt-dev clang-${APT_LLVM_V} llvm-${APT_LLVM_V} libclang-rt-${APT_LLVM_V}-dev mold python3-zmq qt6-base-dev qt6-tools-dev qt6-l10n-tools libevent-dev libboost-dev libzmq3-dev libqrencode-dev libsqlite3-dev ${BPFCC_PACKAGE} libcapnp-dev capnproto python3-pip"
24  export PIP_PACKAGES="--break-system-packages pycapnp"
25  export NO_DEPENDS=1
26  export GOAL="install"
27  export CI_LIMIT_STACK_SIZE=1
28  export BITCOIN_CONFIG="\
29   --preset=dev-mode \
30   -DSANITIZERS=address,float-divide-by-zero,integer,undefined \
31   -DCMAKE_C_COMPILER=clang \
32   -DCMAKE_CXX_COMPILER=clang++ \
33   -DCMAKE_C_FLAGS='-ftrivial-auto-var-init=pattern' \
34   -DCMAKE_CXX_FLAGS='-ftrivial-auto-var-init=pattern' \
35   -DCMAKE_EXE_LINKER_FLAGS='-fuse-ld=mold' \
36   -DAPPEND_CXXFLAGS='-std=c++23' \
37   -DAPPEND_CPPFLAGS='-DARENA_DEBUG -DDEBUG_LOCKORDER' \
38  "