diff --git a/docker/test/fasttest/Dockerfile b/docker/test/fasttest/Dockerfile index 32416993caa..318f437a108 100644 --- a/docker/test/fasttest/Dockerfile +++ b/docker/test/fasttest/Dockerfile @@ -40,22 +40,42 @@ RUN ln -s /usr/bin/lld-${LLVM_VERSION} /usr/bin/ld.lld # https://salsa.debian.org/pkg-llvm-team/llvm-toolchain/-/commit/992e52c0b156a5ba9c6a8a54f8c4857ddd3d371d RUN sed -i '/_IMPORT_CHECK_FILES_FOR_\(mlir-\|llvm-bolt\|merge-fdata\|MLIR\)/ {s|^|#|}' /usr/lib/llvm-${LLVM_VERSION}/lib/cmake/llvm/LLVMExports-*.cmake -# LLVM changes paths for compiler-rt libraries. For some reason clang-18.1.8 cannot catch up libraries from default install path. -# It's very dirty workaround, better to build compiler and LLVM ourself and use it. Details: https://github.com/llvm/llvm-project/issues/95792 -RUN test ! -d /usr/lib/llvm-18/lib/clang/18/lib/x86_64-pc-linux-gnu || ln -s /usr/lib/llvm-18/lib/clang/18/lib/x86_64-pc-linux-gnu /usr/lib/llvm-18/lib/clang/18/lib/x86_64-unknown-linux-gnu +ARG CCACHE_VERSION=4.6.1 +RUN mkdir /tmp/ccache \ + && cd /tmp/ccache \ + && curl -L \ + -O https://github.com/ccache/ccache/releases/download/v$CCACHE_VERSION/ccache-$CCACHE_VERSION.tar.xz \ + -O https://github.com/ccache/ccache/releases/download/v$CCACHE_VERSION/ccache-$CCACHE_VERSION.tar.xz.asc \ + && gpg --recv-keys --keyserver hkps://keyserver.ubuntu.com 5A939A71A46792CF57866A51996DDA075594ADB8 \ + && gpg --verify ccache-4.6.1.tar.xz.asc \ + && tar xf ccache-$CCACHE_VERSION.tar.xz \ + && cd /tmp/ccache/ccache-$CCACHE_VERSION \ + && cmake -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=None \ + -DZSTD_FROM_INTERNET=ON \ + -DREDIS_STORAGE_BACKEND=OFF \ + -Wno-dev \ + -B build \ + -S . \ + && make VERBOSE=1 -C build \ + && make install -C build \ + && cd / \ + && rm -rf /tmp/ccache -# Rust toolchain and libraries -ENV RUSTUP_HOME=/rust/rustup -ENV CARGO_HOME=/rust/cargo -ENV PATH="/rust/cargo/bin:${PATH}" -RUN curl https://sh.rustup.rs -sSf | bash -s -- -y && \ - chmod 777 -R /rust && \ - rustup toolchain install nightly-2024-12-01 && \ - rustup default nightly-2024-12-01 && \ - rustup toolchain remove stable && \ - rustup component add rust-src && \ - rustup target add x86_64-unknown-linux-gnu && \ - rustup target add aarch64-unknown-linux-gnu +ARG TARGETARCH +ARG SCCACHE_VERSION=v0.7.7 +ENV SCCACHE_IGNORE_SERVER_IO_ERROR=1 +# sccache requires a value for the region. So by default we use The Default Region +ENV SCCACHE_REGION=us-east-1 +RUN arch=${TARGETARCH:-amd64} \ + && case $arch in \ + amd64) rarch=x86_64 ;; \ + arm64) rarch=aarch64 ;; \ + esac \ + && curl -Ls "https://github.com/mozilla/sccache/releases/download/$SCCACHE_VERSION/sccache-$SCCACHE_VERSION-$rarch-unknown-linux-musl.tar.gz" | \ + tar xz -C /tmp \ + && mv "/tmp/sccache-$SCCACHE_VERSION-$rarch-unknown-linux-musl/sccache" /usr/bin \ + && rm "/tmp/sccache-$SCCACHE_VERSION-$rarch-unknown-linux-musl" -r # Give suid to gdb to grant it attach permissions # chmod 777 to make the container user independent diff --git a/docs/en/development/build.md b/docs/en/development/build.md index e130e57aeb2..f8e02c81245 100644 --- a/docs/en/development/build.md +++ b/docs/en/development/build.md @@ -70,8 +70,8 @@ enable sanitizers you must use a version that matches the exact same `std` as th the crates): ```bash -rustup toolchain install nightly-2024-04-01 -rustup default nightly-2024-04-01 +rustup toolchain install nightly-2024-12-01 +rustup default nightly-2024-12-01 rustup component add rust-src ``` diff --git a/docs/ja/development/build.md b/docs/ja/development/build.md index 48d2649fb79..1c135936b0f 100644 --- a/docs/ja/development/build.md +++ b/docs/ja/development/build.md @@ -67,8 +67,8 @@ C++ 依存関係と同様に、ClickHouse はベンダリングを使用して サニタイザを有効にする予定がある場合は、CI で使用されるものと同じ `std` と一致するバージョンを使用する必要があります(crates をベンダリングしています): ```bash -rustup toolchain install nightly-2024-04-01 -rustup default nightly-2024-04-01 +rustup toolchain install nightly-2024-12-01 +rustup default nightly-2024-12-01 rustup component add rust-src ```