diff --git a/ci/test/Dockerfile.asan b/ci/test/Dockerfile.asan new file mode 100644 index 0000000000000..682ae30cf573a --- /dev/null +++ b/ci/test/Dockerfile.asan @@ -0,0 +1,41 @@ +FROM bitcoin-core-base:latest + +# Add any additional environment variables +RUN export BPFCC_PACKAGE="bpfcc-tools linux-headers-$(uname --kernel-release)" +ENV LLVM_VERSION="19" +ENV BITCOIN_CONFIG="\ + -DWITH_USDT=ON -DWITH_ZMQ=ON -DWITH_BDB=ON -DWARN_INCOMPATIBLE_BDB=OFF -DBUILD_GUI=ON \ + -DSANITIZERS=address,float-divide-by-zero,integer,undefined \ + -DCMAKE_C_COMPILER=clang-${LLVM_VERSION} \ + -DCMAKE_CXX_COMPILER=clang++-${LLVM_VERSION} \ + -DCMAKE_C_FLAGS='-ftrivial-auto-var-init=pattern' \ + -DCMAKE_CXX_FLAGS='-ftrivial-auto-var-init=pattern -Wno-error=deprecated-declarations' \ + -DAPPEND_CXXFLAGS='-std=c++23' \ + -DAPPEND_CPPFLAGS='-DARENA_DEBUG -DDEBUG_LOCKORDER' \ +" + +# For LLVM 19 sources +RUN wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc \ + && . /etc/os-release \ + && echo "deb http://apt.llvm.org/${VERSION_CODENAME}/ llvm-toolchain-${VERSION_CODENAME}-${LLVM_VERSION} main" > "/etc/apt/sources.list.d/llvm-toolchain-${VERSION_CODENAME}-${LLVM_VERSION}.list" + +# Install specific packages +RUN apt-get update && apt-get install --yes \ + "${BPFCC_PACKAGE}" \ + clang-${APT_LLVM_VERSION} \ + libboost-dev \ + libclang-rt-${LLVM_VERSION}-dev \ + libdb5.3++-dev \ + libevent-dev \ + libqrencode-dev \ + libsqlite3-dev \ + libzmq3-dev \ + llvm-${LLVM_VERSION} \ + python3-zmq \ + qtbase5-dev \ + qttools5-dev \ + qttools5-dev-tools \ + systemtap-sdt-dev \ + && rm -rf /var/lib/apt/lists/* + +CMD ["bash"] diff --git a/ci/test/Dockerfile.base b/ci/test/Dockerfile.base new file mode 100644 index 0000000000000..d4d43067a6d08 --- /dev/null +++ b/ci/test/Dockerfile.base @@ -0,0 +1,25 @@ +# ubuntu:noble-20241015 +FROM ubuntu:noble-20241015@sha256:278628f08d4979fb9af9ead44277dbc9c92c2465922310916ad0c46ec9999295 + +ENV DEBIAN_FRONTEND=noninteractive + +# CI Base Packages +RUN apt-get update && apt-get install --yes \ + bison \ + build-essential \ + ca-certificates \ + ccache \ + cmake \ + curl \ + e2fsprogs \ + git \ + ninja-build \ + pkg-config \ + procps \ + python3 \ + python3-pip \ + rsync \ + wget \ + && rm -rf /var/lib/apt/lists/* + +CMD ["bash"] diff --git a/ci/test/docker-bake.hcl b/ci/test/docker-bake.hcl new file mode 100644 index 0000000000000..23c26ae5cb3e8 --- /dev/null +++ b/ci/test/docker-bake.hcl @@ -0,0 +1,13 @@ +target "base" { + context = "." + dockerfile = "./Dockerfile.base" + platforms = ["linux/amd64"] + tags = ["bitcoin-core-base:latest"] +} + +target "asan" { + dockerfile = "./Dockerfile.asan" + context = "." + platforms = ["linux/amd64"] + tags = ["bitcoin-core-asan:latest"] +} diff --git a/ci/test/justfile b/ci/test/justfile new file mode 100644 index 0000000000000..8b918976f4029 --- /dev/null +++ b/ci/test/justfile @@ -0,0 +1,9 @@ +[private] +default: + @just --list + +base: + docker buildx bake base + +asan: + docker buildx bake asan