mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-24 00:22:29 +00:00
Use clang-18 in CI
This commit is contained in:
parent
9ea7ff231b
commit
ee772aaf0f
4
.github/workflows/nightly.yml
vendored
4
.github/workflows/nightly.yml
vendored
@ -51,8 +51,8 @@ jobs:
|
||||
SONAR_SCANNER_VERSION: 4.8.0.2856
|
||||
SONAR_SERVER_URL: "https://sonarcloud.io"
|
||||
BUILD_WRAPPER_OUT_DIR: build_wrapper_output_directory # Directory where build-wrapper output will be placed
|
||||
CC: clang-17
|
||||
CXX: clang++-17
|
||||
CC: clang-18
|
||||
CXX: clang++-18
|
||||
steps:
|
||||
- name: Check out repository code
|
||||
uses: ClickHouse/checkout@v1
|
||||
|
@ -3,10 +3,10 @@ compilers and build settings. Correctly configured Docker daemon is single depen
|
||||
|
||||
Usage:
|
||||
|
||||
Build deb package with `clang-17` in `debug` mode:
|
||||
Build deb package with `clang-18` in `debug` mode:
|
||||
```
|
||||
$ mkdir deb/test_output
|
||||
$ ./packager --output-dir deb/test_output/ --package-type deb --compiler=clang-17 --debug-build
|
||||
$ ./packager --output-dir deb/test_output/ --package-type deb --compiler=clang-18 --debug-build
|
||||
$ ls -l deb/test_output
|
||||
-rw-r--r-- 1 root root 3730 clickhouse-client_22.2.2+debug_all.deb
|
||||
-rw-r--r-- 1 root root 84221888 clickhouse-common-static_22.2.2+debug_amd64.deb
|
||||
@ -17,11 +17,11 @@ $ ls -l deb/test_output
|
||||
|
||||
```
|
||||
|
||||
Build ClickHouse binary with `clang-17` and `address` sanitizer in `relwithdebuginfo`
|
||||
Build ClickHouse binary with `clang-18` and `address` sanitizer in `relwithdebuginfo`
|
||||
mode:
|
||||
```
|
||||
$ mkdir $HOME/some_clickhouse
|
||||
$ ./packager --output-dir=$HOME/some_clickhouse --package-type binary --compiler=clang-17 --sanitizer=address
|
||||
$ ./packager --output-dir=$HOME/some_clickhouse --package-type binary --compiler=clang-18 --sanitizer=address
|
||||
$ ls -l $HOME/some_clickhouse
|
||||
-rwxr-xr-x 1 root root 787061952 clickhouse
|
||||
lrwxrwxrwx 1 root root 10 clickhouse-benchmark -> clickhouse
|
||||
|
@ -403,19 +403,19 @@ def parse_args() -> argparse.Namespace:
|
||||
parser.add_argument(
|
||||
"--compiler",
|
||||
choices=(
|
||||
"clang-17",
|
||||
"clang-17-darwin",
|
||||
"clang-17-darwin-aarch64",
|
||||
"clang-17-aarch64",
|
||||
"clang-17-aarch64-v80compat",
|
||||
"clang-17-ppc64le",
|
||||
"clang-17-riscv64",
|
||||
"clang-17-s390x",
|
||||
"clang-17-amd64-compat",
|
||||
"clang-17-amd64-musl",
|
||||
"clang-17-freebsd",
|
||||
"clang-18",
|
||||
"clang-18-darwin",
|
||||
"clang-18-darwin-aarch64",
|
||||
"clang-18-aarch64",
|
||||
"clang-18-aarch64-v80compat",
|
||||
"clang-18-ppc64le",
|
||||
"clang-18-riscv64",
|
||||
"clang-18-s390x",
|
||||
"clang-18-amd64-compat",
|
||||
"clang-18-amd64-musl",
|
||||
"clang-18-freebsd",
|
||||
),
|
||||
default="clang-17",
|
||||
default="clang-18",
|
||||
help="a compiler to use",
|
||||
)
|
||||
parser.add_argument(
|
||||
|
@ -17,7 +17,7 @@ stage=${stage:-}
|
||||
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
||||
echo "$script_dir"
|
||||
repo_dir=ch
|
||||
BINARY_TO_DOWNLOAD=${BINARY_TO_DOWNLOAD:="clang-17_debug_none_unsplitted_disable_False_binary"}
|
||||
BINARY_TO_DOWNLOAD=${BINARY_TO_DOWNLOAD:="clang-18_debug_none_unsplitted_disable_False_binary"}
|
||||
BINARY_URL_TO_DOWNLOAD=${BINARY_URL_TO_DOWNLOAD:="https://clickhouse-builds.s3.amazonaws.com/$PR_TO_TEST/$SHA_TO_TEST/clickhouse_build_check/$BINARY_TO_DOWNLOAD/clickhouse"}
|
||||
|
||||
function git_clone_with_retry
|
||||
|
@ -2,7 +2,7 @@
|
||||
set -euo pipefail
|
||||
|
||||
|
||||
CLICKHOUSE_PACKAGE=${CLICKHOUSE_PACKAGE:="https://clickhouse-builds.s3.amazonaws.com/$PR_TO_TEST/$SHA_TO_TEST/clickhouse_build_check/clang-17_relwithdebuginfo_none_unsplitted_disable_False_binary/clickhouse"}
|
||||
CLICKHOUSE_PACKAGE=${CLICKHOUSE_PACKAGE:="https://clickhouse-builds.s3.amazonaws.com/$PR_TO_TEST/$SHA_TO_TEST/clickhouse_build_check/clang-18_relwithdebuginfo_none_unsplitted_disable_False_binary/clickhouse"}
|
||||
CLICKHOUSE_REPO_PATH=${CLICKHOUSE_REPO_PATH:=""}
|
||||
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
set -euo pipefail
|
||||
|
||||
|
||||
CLICKHOUSE_PACKAGE=${CLICKHOUSE_PACKAGE:="https://clickhouse-builds.s3.amazonaws.com/$PR_TO_TEST/$SHA_TO_TEST/clickhouse_build_check/clang-17_relwithdebuginfo_none_unsplitted_disable_False_binary/clickhouse"}
|
||||
CLICKHOUSE_PACKAGE=${CLICKHOUSE_PACKAGE:="https://clickhouse-builds.s3.amazonaws.com/$PR_TO_TEST/$SHA_TO_TEST/clickhouse_build_check/clang-18_relwithdebuginfo_none_unsplitted_disable_False_binary/clickhouse"}
|
||||
CLICKHOUSE_REPO_PATH=${CLICKHOUSE_REPO_PATH:=""}
|
||||
|
||||
|
||||
|
@ -6,7 +6,7 @@ set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
|
||||
BINARY_TO_DOWNLOAD=${BINARY_TO_DOWNLOAD:="clang-17_debug_none_unsplitted_disable_False_binary"}
|
||||
BINARY_TO_DOWNLOAD=${BINARY_TO_DOWNLOAD:="clang-18_debug_none_unsplitted_disable_False_binary"}
|
||||
BINARY_URL_TO_DOWNLOAD=${BINARY_URL_TO_DOWNLOAD:="https://clickhouse-builds.s3.amazonaws.com/$PR_TO_TEST/$SHA_TO_TEST/clickhouse_build_check/$BINARY_TO_DOWNLOAD/clickhouse"}
|
||||
|
||||
function wget_with_retry
|
||||
|
@ -5,7 +5,7 @@ FROM ubuntu:22.04
|
||||
ARG apt_archive="http://archive.ubuntu.com"
|
||||
RUN sed -i "s|http://archive.ubuntu.com|$apt_archive|g" /etc/apt/sources.list
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive LLVM_VERSION=17
|
||||
ENV DEBIAN_FRONTEND=noninteractive LLVM_VERSION=18
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install \
|
||||
|
@ -13,14 +13,14 @@ The cross-build for macOS is based on the [Build instructions](../development/bu
|
||||
|
||||
The following sections provide a walk-through for building ClickHouse for `x86_64` macOS. If you’re targeting ARM architecture, simply substitute all occurrences of `x86_64` with `aarch64`. For example, replace `x86_64-apple-darwin` with `aarch64-apple-darwin` throughout the steps.
|
||||
|
||||
## Install Clang-17
|
||||
## Install clang-18
|
||||
|
||||
Follow the instructions from https://apt.llvm.org/ for your Ubuntu or Debian setup.
|
||||
For example the commands for Bionic are like:
|
||||
|
||||
``` bash
|
||||
sudo echo "deb [trusted=yes] http://apt.llvm.org/bionic/ llvm-toolchain-bionic-17 main" >> /etc/apt/sources.list
|
||||
sudo apt-get install clang-17
|
||||
sudo apt-get install clang-18
|
||||
```
|
||||
|
||||
## Install Cross-Compilation Toolset {#install-cross-compilation-toolset}
|
||||
@ -59,7 +59,7 @@ curl -L 'https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX11
|
||||
cd ClickHouse
|
||||
mkdir build-darwin
|
||||
cd build-darwin
|
||||
CC=clang-17 CXX=clang++-17 cmake -DCMAKE_AR:FILEPATH=${CCTOOLS}/bin/x86_64-apple-darwin-ar -DCMAKE_INSTALL_NAME_TOOL=${CCTOOLS}/bin/x86_64-apple-darwin-install_name_tool -DCMAKE_RANLIB:FILEPATH=${CCTOOLS}/bin/x86_64-apple-darwin-ranlib -DLINKER_NAME=${CCTOOLS}/bin/x86_64-apple-darwin-ld -DCMAKE_TOOLCHAIN_FILE=cmake/darwin/toolchain-x86_64.cmake ..
|
||||
CC=clang-18 CXX=clang++-18 cmake -DCMAKE_AR:FILEPATH=${CCTOOLS}/bin/x86_64-apple-darwin-ar -DCMAKE_INSTALL_NAME_TOOL=${CCTOOLS}/bin/x86_64-apple-darwin-install_name_tool -DCMAKE_RANLIB:FILEPATH=${CCTOOLS}/bin/x86_64-apple-darwin-ranlib -DLINKER_NAME=${CCTOOLS}/bin/x86_64-apple-darwin-ld -DCMAKE_TOOLCHAIN_FILE=cmake/darwin/toolchain-x86_64.cmake ..
|
||||
ninja
|
||||
```
|
||||
|
||||
|
@ -23,7 +23,7 @@ sudo bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)"
|
||||
``` bash
|
||||
cd ClickHouse
|
||||
mkdir build-riscv64
|
||||
CC=clang-17 CXX=clang++-17 cmake . -Bbuild-riscv64 -G Ninja -DCMAKE_TOOLCHAIN_FILE=cmake/linux/toolchain-riscv64.cmake -DGLIBC_COMPATIBILITY=OFF -DENABLE_LDAP=OFF -DOPENSSL_NO_ASM=ON -DENABLE_JEMALLOC=ON -DENABLE_PARQUET=OFF -DENABLE_GRPC=OFF -DENABLE_HDFS=OFF -DENABLE_MYSQL=OFF
|
||||
CC=clang-18 CXX=clang++-18 cmake . -Bbuild-riscv64 -G Ninja -DCMAKE_TOOLCHAIN_FILE=cmake/linux/toolchain-riscv64.cmake -DGLIBC_COMPATIBILITY=OFF -DENABLE_LDAP=OFF -DOPENSSL_NO_ASM=ON -DENABLE_JEMALLOC=ON -DENABLE_PARQUET=OFF -DENABLE_GRPC=OFF -DENABLE_HDFS=OFF -DENABLE_MYSQL=OFF
|
||||
ninja -C build-riscv64
|
||||
```
|
||||
|
||||
|
@ -67,8 +67,8 @@ to see what version you have installed before setting this environment variable.
|
||||
:::
|
||||
|
||||
``` bash
|
||||
export CC=clang-17
|
||||
export CXX=clang++-17
|
||||
export CC=clang-18
|
||||
export CXX=clang++-18
|
||||
```
|
||||
|
||||
### Checkout ClickHouse Sources {#checkout-clickhouse-sources}
|
||||
@ -105,7 +105,7 @@ The build requires the following components:
|
||||
|
||||
- Git (used to checkout the sources, not needed for the build)
|
||||
- CMake 3.20 or newer
|
||||
- Compiler: clang-17 or newer
|
||||
- Compiler: clang-18 or newer
|
||||
- Linker: lld-17 or newer
|
||||
- Ninja
|
||||
- Yasm
|
||||
|
@ -153,7 +153,7 @@ Builds ClickHouse in various configurations for use in further steps. You have t
|
||||
|
||||
### Report Details
|
||||
|
||||
- **Compiler**: `clang-17`, optionally with the name of a target platform
|
||||
- **Compiler**: `clang-18`, optionally with the name of a target platform
|
||||
- **Build type**: `Debug` or `RelWithDebInfo` (cmake).
|
||||
- **Sanitizer**: `none` (without sanitizers), `address` (ASan), `memory` (MSan), `undefined` (UBSan), or `thread` (TSan).
|
||||
- **Status**: `success` or `fail`
|
||||
@ -177,7 +177,7 @@ Performs static analysis and code style checks using `clang-tidy`. The report is
|
||||
There is a convenience `packager` script that runs the clang-tidy build in docker
|
||||
```sh
|
||||
mkdir build_tidy
|
||||
./docker/packager/packager --output-dir=./build_tidy --package-type=binary --compiler=clang-17 --debug-build --clang-tidy
|
||||
./docker/packager/packager --output-dir=./build_tidy --package-type=binary --compiler=clang-18 --debug-build --clang-tidy
|
||||
```
|
||||
|
||||
|
||||
|
@ -115,7 +115,7 @@ While inside the `build` directory, configure your build by running CMake. Befor
|
||||
export CC=clang CXX=clang++
|
||||
cmake ..
|
||||
|
||||
If you installed clang using the automatic installation script above, also specify the version of clang installed in the first command, e.g. `export CC=clang-17 CXX=clang++-17`. The clang version will be in the script output.
|
||||
If you installed clang using the automatic installation script above, also specify the version of clang installed in the first command, e.g. `export CC=clang-18 CXX=clang++-18`. The clang version will be in the script output.
|
||||
|
||||
The `CC` variable specifies the compiler for C (short for C Compiler), and `CXX` variable instructs which C++ compiler is to be used for building.
|
||||
|
||||
|
@ -670,63 +670,63 @@ CI_CONFIG = CIConfig(
|
||||
build_config={
|
||||
Build.PACKAGE_RELEASE: BuildConfig(
|
||||
name=Build.PACKAGE_RELEASE,
|
||||
compiler="clang-17",
|
||||
compiler="clang-18",
|
||||
package_type="deb",
|
||||
static_binary_name="amd64",
|
||||
additional_pkgs=True,
|
||||
),
|
||||
Build.PACKAGE_AARCH64: BuildConfig(
|
||||
name=Build.PACKAGE_AARCH64,
|
||||
compiler="clang-17-aarch64",
|
||||
compiler="clang-18-aarch64",
|
||||
package_type="deb",
|
||||
static_binary_name="aarch64",
|
||||
additional_pkgs=True,
|
||||
),
|
||||
Build.PACKAGE_ASAN: BuildConfig(
|
||||
name=Build.PACKAGE_ASAN,
|
||||
compiler="clang-17",
|
||||
compiler="clang-18",
|
||||
sanitizer="address",
|
||||
package_type="deb",
|
||||
),
|
||||
Build.PACKAGE_UBSAN: BuildConfig(
|
||||
name=Build.PACKAGE_UBSAN,
|
||||
compiler="clang-17",
|
||||
compiler="clang-18",
|
||||
sanitizer="undefined",
|
||||
package_type="deb",
|
||||
),
|
||||
Build.PACKAGE_TSAN: BuildConfig(
|
||||
name=Build.PACKAGE_TSAN,
|
||||
compiler="clang-17",
|
||||
compiler="clang-18",
|
||||
sanitizer="thread",
|
||||
package_type="deb",
|
||||
),
|
||||
Build.PACKAGE_MSAN: BuildConfig(
|
||||
name=Build.PACKAGE_MSAN,
|
||||
compiler="clang-17",
|
||||
compiler="clang-18",
|
||||
sanitizer="memory",
|
||||
package_type="deb",
|
||||
),
|
||||
Build.PACKAGE_DEBUG: BuildConfig(
|
||||
name=Build.PACKAGE_DEBUG,
|
||||
compiler="clang-17",
|
||||
compiler="clang-18",
|
||||
debug_build=True,
|
||||
package_type="deb",
|
||||
sparse_checkout=True, # Check that it works with at least one build, see also update-submodules.sh
|
||||
),
|
||||
Build.PACKAGE_RELEASE_COVERAGE: BuildConfig(
|
||||
name=Build.PACKAGE_RELEASE_COVERAGE,
|
||||
compiler="clang-17",
|
||||
compiler="clang-18",
|
||||
coverage=True,
|
||||
package_type="deb",
|
||||
),
|
||||
Build.BINARY_RELEASE: BuildConfig(
|
||||
name=Build.BINARY_RELEASE,
|
||||
compiler="clang-17",
|
||||
compiler="clang-18",
|
||||
package_type="binary",
|
||||
),
|
||||
Build.BINARY_TIDY: BuildConfig(
|
||||
name=Build.BINARY_TIDY,
|
||||
compiler="clang-17",
|
||||
compiler="clang-18",
|
||||
debug_build=True,
|
||||
package_type="binary",
|
||||
static_binary_name="debug-amd64",
|
||||
@ -735,69 +735,69 @@ CI_CONFIG = CIConfig(
|
||||
),
|
||||
Build.BINARY_DARWIN: BuildConfig(
|
||||
name=Build.BINARY_DARWIN,
|
||||
compiler="clang-17-darwin",
|
||||
compiler="clang-18-darwin",
|
||||
package_type="binary",
|
||||
static_binary_name="macos",
|
||||
),
|
||||
Build.BINARY_AARCH64: BuildConfig(
|
||||
name=Build.BINARY_AARCH64,
|
||||
compiler="clang-17-aarch64",
|
||||
compiler="clang-18-aarch64",
|
||||
package_type="binary",
|
||||
),
|
||||
Build.BINARY_AARCH64_V80COMPAT: BuildConfig(
|
||||
name=Build.BINARY_AARCH64_V80COMPAT,
|
||||
compiler="clang-17-aarch64-v80compat",
|
||||
compiler="clang-18-aarch64-v80compat",
|
||||
package_type="binary",
|
||||
static_binary_name="aarch64v80compat",
|
||||
comment="For ARMv8.1 and older",
|
||||
),
|
||||
Build.BINARY_FREEBSD: BuildConfig(
|
||||
name=Build.BINARY_FREEBSD,
|
||||
compiler="clang-17-freebsd",
|
||||
compiler="clang-18-freebsd",
|
||||
package_type="binary",
|
||||
static_binary_name="freebsd",
|
||||
),
|
||||
Build.BINARY_DARWIN_AARCH64: BuildConfig(
|
||||
name=Build.BINARY_DARWIN_AARCH64,
|
||||
compiler="clang-17-darwin-aarch64",
|
||||
compiler="clang-18-darwin-aarch64",
|
||||
package_type="binary",
|
||||
static_binary_name="macos-aarch64",
|
||||
),
|
||||
Build.BINARY_PPC64LE: BuildConfig(
|
||||
name=Build.BINARY_PPC64LE,
|
||||
compiler="clang-17-ppc64le",
|
||||
compiler="clang-18-ppc64le",
|
||||
package_type="binary",
|
||||
static_binary_name="powerpc64le",
|
||||
),
|
||||
Build.BINARY_AMD64_COMPAT: BuildConfig(
|
||||
name=Build.BINARY_AMD64_COMPAT,
|
||||
compiler="clang-17-amd64-compat",
|
||||
compiler="clang-18-amd64-compat",
|
||||
package_type="binary",
|
||||
static_binary_name="amd64compat",
|
||||
comment="SSE2-only build",
|
||||
),
|
||||
Build.BINARY_AMD64_MUSL: BuildConfig(
|
||||
name=Build.BINARY_AMD64_MUSL,
|
||||
compiler="clang-17-amd64-musl",
|
||||
compiler="clang-18-amd64-musl",
|
||||
package_type="binary",
|
||||
static_binary_name="amd64musl",
|
||||
comment="Build with Musl",
|
||||
),
|
||||
Build.BINARY_RISCV64: BuildConfig(
|
||||
name=Build.BINARY_RISCV64,
|
||||
compiler="clang-17-riscv64",
|
||||
compiler="clang-18-riscv64",
|
||||
package_type="binary",
|
||||
static_binary_name="riscv64",
|
||||
),
|
||||
Build.BINARY_S390X: BuildConfig(
|
||||
name=Build.BINARY_S390X,
|
||||
compiler="clang-17-s390x",
|
||||
compiler="clang-18-s390x",
|
||||
package_type="binary",
|
||||
static_binary_name="s390x",
|
||||
),
|
||||
Build.FUZZERS: BuildConfig(
|
||||
name=Build.FUZZERS,
|
||||
compiler="clang-17",
|
||||
compiler="clang-18",
|
||||
package_type="fuzzers",
|
||||
job_config=JobConfig(run_by_label=Labels.libFuzzer),
|
||||
),
|
||||
|
Loading…
Reference in New Issue
Block a user