Aarch64 binaries now require at least ARMv8.2, released in 2016. Most notably, this enables use of ARM LSE, i.e. native atomic operations. \ Also, CMake build option "NO_ARMV81_OR_HIGHER" has been added to allow compilation of binaries for older ARMv8.0 hardware, e.g. Raspberry Pi 4. #41610 (Robert Schulze).
2025-02-10 22:46:45,343 Output placed into /home/ubuntu/actions-runner/_work/ClickHouse/ClickHouse/ci/tmp/build INFO:root:Built successfully INFO:root:Build finished as success, log path /home/ubuntu/actions-runner/_work/ClickHouse/ClickHouse/ci/tmp/build_log/build_log.log INFO:botocore.credentials:Found credentials from IAM Role: ec2_admin INFO:root:Processing file without compression INFO:root:File is too large, do not provide content type INFO:root:Upload /home/ubuntu/actions-runner/_work/ClickHouse/ClickHouse/ci/tmp/build/clickhouse to https://s3.amazonaws.com/clickhouse-builds/master/aarch64v80compat/clickhouse-full Meta: {} Notice: Binary static URL (with debug info): https://s3.amazonaws.com/clickhouse-builds/master/aarch64v80compat/clickhouse-full INFO:root:Processing file without compression INFO:root:File is too large, do not provide content type INFO:root:Upload /home/ubuntu/actions-runner/_work/ClickHouse/ClickHouse/ci/tmp/build/clickhouse-stripped to https://s3.amazonaws.com/clickhouse-builds/master/aarch64v80compat/clickhouse Meta: {} Notice: Binary static URL (compact): https://s3.amazonaws.com/clickhouse-builds/master/aarch64v80compat/clickhouse Run action done for: [binary_aarch64_v80compat] INFO:botocore.credentials:Found credentials from IAM Role: ec2_admin INFO:root:Get token with 4322 remaining requests INFO:root:User robot-clickhouse-ci-1 with 4322 remaining requests is used {} === Run script finished ===
Feb 12 08:22:09 [3590/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/CMakeFiles/llvm-tblgen.dir/SubtargetFeatureInfo.cpp.o Feb 12 08:22:10 [3591/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/CMakeFiles/llvm-tblgen.dir/CompressInstEmitter.cpp.o Feb 12 08:22:10 [3592/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/CMakeFiles/llvm-tblgen.dir/X86DisassemblerTables.cpp.o Feb 12 08:22:10 [3593/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/GlobalISel/CMakeFiles/LLVMTableGenGlobalISel.dir/CodeExpander.cpp.o Feb 12 08:22:11 [3594/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/GlobalISel/CMakeFiles/LLVMTableGenGlobalISel.dir/GIMatchDagEdge.cpp.o Feb 12 08:22:11 [3595/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/CMakeFiles/llvm-tblgen.dir/WebAssemblyDisassemblerEmitter.cpp.o Feb 12 08:22:11 [3596/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/CMakeFiles/llvm-tblgen.dir/X86RecognizableInstr.cpp.o Feb 12 08:22:11 [3596/10884] cd /build/build_docker/rust/skim && /usr/bin/cmake -E make_directory /build/build_docker/rust/skim/RelWithDebInfo && /usr/bin/cmake -E env CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=/usr/bin/clang++-16 CC_aarch64-unknown-linux-gnu=/usr/bin/clang-16 HOST_CC=/usr/bin/clang-16 CXX_aarch64-unknown-linux-gnu=/usr/bin/clang++-16 HOST_CXX=/usr/bin/clang++-16 CORROSION_BUILD_DIR=/build/build_docker/rust/skim CARGO_BUILD_RUSTC=/rust/rustup/toolchains/nightly-2023-07-04-aarch64-unknown-linux-gnu/bin/rustc /rust/rustup/toolchains/nightly-2023-07-04-aarch64-unknown-linux-gnu/bin/cargo rustc --target=aarch64-unknown-linux-gnu --package _ch_rust_skim_rust --manifest-path /build/build_docker/rust/skim/Cargo.toml --target-dir /build/build_docker/RelWithDebInfo/cargo/build --profile=release -- -Cdefault-linker-libraries=no -Clink-args=--target=aarch64-linux-gnu && /usr/bin/cmake -E copy_if_different /build/build_docker/RelWithDebInfo/cargo/build/aarch64-unknown-linux-gnu/release/lib_ch_rust_skim_rust.a /build/build_docker/rust/skim/RelWithDebInfo Feb 12 08:22:11 error: package `cxx v1.0.140` cannot be built because it requires rustc 1.73 or newer, while the currently active rustc version is 1.72.0-nightly Feb 12 08:22:11 Either upgrade to rustc 1.73 or newer, or use Feb 12 08:22:11 cargo update -p cxx@1.0.140 --precise ver Feb 12 08:22:11 where `ver` is the latest version of `cxx` supporting rustc 1.72.0-nightly Feb 12 08:22:12 [3600/10884] Linking CXX static library contrib/ulid-c-cmake/lib_ulid.a Feb 12 08:22:12 FAILED: rust/skim/CMakeFiles/cargo-build__ch_rust_skim_rust rust/skim/RelWithDebInfo/lib_ch_rust_skim_rust.a /build/build_docker/rust/skim/CMakeFiles/cargo-build__ch_rust_skim_rust /build/build_docker/rust/skim/RelWithDebInfo/lib_ch_rust_skim_rust.a Feb 12 08:22:12 cd /build/build_docker/rust/skim && /usr/bin/cmake -E make_directory /build/build_docker/rust/skim/RelWithDebInfo && /usr/bin/cmake -E env CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=/usr/bin/clang++-16 CC_aarch64-unknown-linux-gnu=/usr/bin/clang-16 HOST_CC=/usr/bin/clang-16 CXX_aarch64-unknown-linux-gnu=/usr/bin/clang++-16 HOST_CXX=/usr/bin/clang++-16 CORROSION_BUILD_DIR=/build/build_docker/rust/skim CARGO_BUILD_RUSTC=/rust/rustup/toolchains/nightly-2023-07-04-aarch64-unknown-linux-gnu/bin/rustc /rust/rustup/toolchains/nightly-2023-07-04-aarch64-unknown-linux-gnu/bin/cargo rustc --target=aarch64-unknown-linux-gnu --package _ch_rust_skim_rust --manifest-path /build/build_docker/rust/skim/Cargo.toml --target-dir /build/build_docker/RelWithDebInfo/cargo/build --profile=release -- -Cdefault-linker-libraries=no -Clink-args=--target=aarch64-linux-gnu && /usr/bin/cmake -E copy_if_different /build/build_docker/RelWithDebInfo/cargo/build/aarch64-unknown-linux-gnu/release/lib_ch_rust_skim_rust.a /build/build_docker/rust/skim/RelWithDebInfo Feb 12 08:22:12 [3602/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/CMakeFiles/llvm-tblgen.dir/SearchableTableEmitter.cpp.o Feb 12 08:22:12 [3603/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/CMakeFiles/llvm-tblgen.dir/CTagsEmitter.cpp.o Feb 12 08:22:12 [3604/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/CMakeFiles/llvm-tblgen.dir/VarLenCodeEmitterGen.cpp.o Feb 12 08:22:12 [3605/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/CMakeFiles/llvm-tblgen.dir/InstrInfoEmitter.cpp.o Feb 12 08:22:12 [3606/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/GlobalISel/CMakeFiles/LLVMTableGenGlobalISel.dir/GIMatchDagOperands.cpp.o Feb 12 08:22:12 [3607/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/GlobalISel/CMakeFiles/LLVMTableGenGlobalISel.dir/GIMatchDagInstr.cpp.o Feb 12 08:22:12 [3608/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/GlobalISel/CMakeFiles/LLVMTableGenGlobalISel.dir/GIMatchDag.cpp.o Feb 12 08:22:12 [3609/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/CMakeFiles/llvm-tblgen.dir/X86FoldTablesEmitter.cpp.o Feb 12 08:22:12 [3610/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/GlobalISel/CMakeFiles/LLVMTableGenGlobalISel.dir/GIMatchDagPredicateDependencyEdge.cpp.o Feb 12 08:22:12 [3611/10884] Building CXX object contrib/llvm-project/llvm/lib/BinaryFormat/CMakeFiles/LLVMBinaryFormat.dir/COFF.cpp.o Feb 12 08:22:13 [3612/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/GlobalISel/CMakeFiles/LLVMTableGenGlobalISel.dir/GIMatchDagPredicate.cpp.o Feb 12 08:22:13 [3613/10884] Building CXX object contrib/llvm-project/llvm/lib/BinaryFormat/CMakeFiles/LLVMBinaryFormat.dir/AMDGPUMetadataVerifier.cpp.o Feb 12 08:22:14 [3614/10884] Building CXX object contrib/llvm-project/llvm/lib/BinaryFormat/CMakeFiles/LLVMBinaryFormat.dir/Dwarf.cpp.o Feb 12 08:22:15 [3615/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/CMakeFiles/llvm-tblgen.dir/SubtargetEmitter.cpp.o Feb 12 08:22:18 [3616/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/CMakeFiles/llvm-tblgen.dir/RegisterInfoEmitter.cpp.o Feb 12 08:22:19 [3617/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/GlobalISel/CMakeFiles/LLVMTableGenGlobalISel.dir/GIMatchTree.cpp.o Feb 12 08:22:24 [3618/10884] Building CXX object contrib/llvm-project/llvm/utils/TableGen/CMakeFiles/llvm-tblgen.dir/GlobalISelEmitter.cpp.o
Feb 13 01:24:21 Failed distributed compilations 0 Feb 13 01:24:21 Cache location Local disk: "/root/.cache/sccache" Feb 13 01:24:21 Version (client) 0.5.4 Feb 13 01:24:21 + ccache --evict-older-than 1d Feb 13 01:24:21 + '[' '' == 1 ']' Feb 13 01:24:21 + '[' -n '' ']' Feb 13 01:24:21 + ls -l /output Feb 13 01:24:21 total 680996 Feb 13 01:24:21 -rwxr-xr-x 1 root root 697336944 Feb 13 01:24 clickhouse Feb 13 01:24:21 lrwxrwxrwx 1 root root 10 Feb 13 01:24 clickhouse-benchmark -> clickhouse Feb 13 01:24:21 lrwxrwxrwx 1 root root 10 Feb 13 01:24 clickhouse-client -> clickhouse Feb 13 01:24:21 lrwxrwxrwx 1 root root 10 Feb 13 01:24 clickhouse-compressor -> clickhouse Feb 13 01:24:21 lrwxrwxrwx 1 root root 10 Feb 13 01:24 clickhouse-copier -> clickhouse Feb 13 01:24:21 lrwxrwxrwx 1 root root 10 Feb 13 01:24 clickhouse-disks -> clickhouse Feb 13 01:24:21 lrwxrwxrwx 1 root root 10 Feb 13 01:24 clickhouse-extract-from-config -> clickhouse Feb 13 01:24:21 lrwxrwxrwx 1 root root 10 Feb 13 01:24 clickhouse-format -> clickhouse Feb 13 01:24:21 lrwxrwxrwx 1 root root 10 Feb 13 01:24 clickhouse-git-import -> clickhouse Feb 13 01:24:21 lrwxrwxrwx 1 root root 10 Feb 13 01:24 clickhouse-keeper -> clickhouse Feb 13 01:24:21 lrwxrwxrwx 1 root root 10 Feb 13 01:24 clickhouse-keeper-client -> clickhouse Feb 13 01:24:21 lrwxrwxrwx 1 root root 10 Feb 13 01:24 clickhouse-keeper-converter -> clickhouse Feb 13 01:24:21 lrwxrwxrwx 1 root root 10 Feb 13 01:24 clickhouse-local -> clickhouse Feb 13 01:24:21 lrwxrwxrwx 1 root root 10 Feb 13 01:24 clickhouse-obfuscator -> clickhouse Feb 13 01:24:21 lrwxrwxrwx 1 root root 10 Feb 13 01:24 clickhouse-server -> clickhouse Feb 13 01:24:21 lrwxrwxrwx 1 root root 10 Feb 13 01:24 clickhouse-static-files-disk-uploader -> clickhouse Feb 13 01:24:21 lrwxrwxrwx 1 root root 10 Feb 13 01:24 clickhouse-su -> clickhouse
上面的文件打包,然后 core dump 机器上测试下没问题:
1 2 3 4
./clickhouse local -q 'select 1' 1 ./clickhouse-server --version ClickHouse server version 23.8.16.1.
这里版本有问题不是 23.8.16.40,找下发现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
$ find . -type f -exec grep -wl 23.8.16.1 {} \; ./cmake/autogenerated_versions.txt ^C $ cat cmake/autogenerated_versions.txt # This variables autochanged by tests/ci/version_helper.py:
# NOTE: VERSION_REVISION has nothing common with DBMS_TCP_PROTOCOL_VERSION, # only DBMS_TCP_PROTOCOL_VERSION should be incremented on protocol changes. SET(VERSION_REVISION 54477) SET(VERSION_MAJOR 23) SET(VERSION_MINOR 8) SET(VERSION_PATCH 16) SET(VERSION_GITHASH 060ff8e813a4a16a540063127f8c91e2108d9adf) SET(VERSION_DESCRIBE v23.8.16.1-lts) SET(VERSION_STRING 23.8.16.1) # end of autochange
最后构建脚本里 docker/packager/packager 看到有:
1 2 3 4 5 6 7 8 9 10 11
... if with_coverage: cmake_flags.append("-DWITH_COVERAGE=1")
if version: result.append(f"VERSION_STRING='{version}'")
info: This is the version for the rustup toolchain manager, not the rustc compiler. info: The currently active `rustc` version is `rustc 1.85.0-nightly (7442931d4 2024-11-30)` -- Rust Toolchain: Could not find toolchain '' Available toolchains: nightly-2023-07-04-aarch64-unknown-linux-gnu nightly-2024-12-01-aarch64-unknown-linux-gnu
# see https://github.com/moby/moby/issues/4032#issuecomment-192327844 # It could be removed after we move on a version 23:04+ ARG DEBIAN_FRONTEND=noninteractive
# ARG for quick switch to a given ubuntu mirror ARG apt_archive="http://archive.ubuntu.com"
# We shouldn't use `apt upgrade` to not change the upstream image. It's updated biweekly
# user/group precreated explicitly with fixed uid/gid on purpose. # It is especially important for rootless containers: in that case entrypoint # can't do chown and owners of mounted volumes should be configured externally. # We do that in advance at the begining of Dockerfile before any packages will be # installed to prevent picking those uid / gid by some unrelated software. # The same uid / gid (101) is used both for alpine and ubuntu. RUN sed -i "s|http://archive.ubuntu.com|${apt_archive}|g" /etc/apt/sources.list \ && groupadd -r clickhouse --gid=101 \ && useradd -r -g clickhouse --uid=101 --home-dir=/var/lib/clickhouse --shell=/bin/bash clickhouse \ && apt-get update \ && apt-get install --yes --no-install-recommends \ ca-certificates \ locales \ tzdata \ wget \ && rm -rf /var/lib/apt/lists/* /var/cache/debconf /tmp/*
ARG VERSION="23.8.16.40"
ARG single_binary_location_url=""
# install from a single binary RUNif [ -n "${single_binary_location_url}" ]; then \ echo"installing from single binary url: ${single_binary_location_url}" \ && rm -rf /tmp/clickhouse_binary \ && mkdir -p /tmp/clickhouse_binary \ && wget --progress=bar:force:noscroll "${single_binary_location_url}" -O /tmp/clickhouse_binary/clickhouse \ && chmod +x /tmp/clickhouse_binary/clickhouse \ && /tmp/clickhouse_binary/clickhouse install --user "clickhouse" --group "clickhouse" \ && rm -rf /tmp/* ; \ fi
# The rest is the same in the official docker and in our build system #docker-official-library:on
# post install # we need to allow "others" access to clickhouse folder, because docker container # can be started with arbitrary uid (openshift usecase) RUN clickhouse-local -q 'SELECT * FROM system.build_options' \ && mkdir -p /var/lib/clickhouse /var/log/clickhouse-server /etc/clickhouse-server /etc/clickhouse-client \ && chmod ugo+Xrw -R /var/lib/clickhouse /var/log/clickhouse-server /etc/clickhouse-server /etc/clickhouse-client
RUN locale-gen en_US.UTF-8 ENV LANG=en_US.UTF-8 ENV TZ=UTC