diff --git a/.evergreen/config_generator/components/earthly.py b/.evergreen/config_generator/components/earthly.py index 178e7f637d..f3bf2e9fb4 100644 --- a/.evergreen/config_generator/components/earthly.py +++ b/.evergreen/config_generator/components/earthly.py @@ -27,16 +27,15 @@ EnvKey = Literal[ - "u16", - "u18", "u20", "u22", - "alpine3.16", - "alpine3.17", - "alpine3.18", "alpine3.19", + "alpine3.20", + "alpine3.21", + "alpine3.22", "archlinux", - "centos7", + "centos9", + "centos10", ] "Identifiers for environments. These correspond to special 'env.*' targets in the Earthfile." CompilerName = Literal["gcc", "clang"] @@ -65,12 +64,11 @@ def os_split(env: EnvKey) -> tuple[str, None | str]: # Match 'u22', 'u20', 'u71' etc. case ubu if mat := re.match(r"u(\d\d)", ubu): return "Ubuntu", f"{mat[1]}.04" - case "centos7": - return "CentOS", "7.0" + # Match 'centos9', 'centos10', etc. + case cent if mat := re.match(r"centos(\d+)", cent): + return "CentOS", f"{mat[1]}" case _: - raise ValueError( - f"Failed to split OS env key {env=} into a name+version pair (unrecognized)" - ) + raise ValueError(f"Failed to split OS env key {env=} into a name+version pair (unrecognized)") class EarthlyVariant(NamedTuple): @@ -152,12 +150,8 @@ class DockerLoginAmazonECR(Function): name = "docker-login-amazon-ecr" commands = [ # Avoid inadvertently using a pre-existing and potentially conflicting Docker config. - expansions_update( - updates=[KeyValueParam(key="DOCKER_CONFIG", value="${workdir}/.docker")] - ), - ec2_assume_role( - role_arn="arn:aws:iam::901841024863:role/ecr-role-evergreen-ro" - ), + expansions_update(updates=[KeyValueParam(key="DOCKER_CONFIG", value="${workdir}/.docker")]), + ec2_assume_role(role_arn="arn:aws:iam::901841024863:role/ecr-role-evergreen-ro"), subprocess_exec( binary="bash", command_type=EvgCommandType.SETUP, @@ -181,12 +175,6 @@ def task_filter(env: EarthlyVariant, conf: Configuration) -> bool: configuration values. """ match env, conf: - # u16/u18/centos7 are not capable of building mongocxx - case e, (_sasl, _tls, cxx) if re.match( - r"^Ubuntu 16|^Ubuntu 18|^CentOS 7", e.display_name - ): - # Only build if C++ driver is test is disabled - return cxx == "none" # Anything else: Allow it to run: case _: return True diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index 407eed823e..087efe5394 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -1131,7 +1131,7 @@ tasks: - debian12-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, alpine3.16-clang, alpine3.16-gcc, alpine3.17-clang, alpine3.17-gcc, alpine3.18-clang, alpine3.18-gcc, alpine3.19-clang, alpine3.19-gcc, archlinux-clang, archlinux-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1174,7 +1174,7 @@ tasks: - debian12-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, alpine3.16-clang, alpine3.16-gcc, alpine3.17-clang, alpine3.17-gcc, alpine3.18-clang, alpine3.18-gcc, alpine3.19-clang, alpine3.19-gcc, archlinux-clang, archlinux-gcc, centos7-clang, centos7-gcc, u16-clang, u16-gcc, u18-clang, u18-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1217,7 +1217,7 @@ tasks: - debian12-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, alpine3.16-clang, alpine3.16-gcc, alpine3.17-clang, alpine3.17-gcc, alpine3.18-clang, alpine3.18-gcc, alpine3.19-clang, alpine3.19-gcc, archlinux-clang, archlinux-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1260,7 +1260,7 @@ tasks: - debian12-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, alpine3.16-clang, alpine3.16-gcc, alpine3.17-clang, alpine3.17-gcc, alpine3.18-clang, alpine3.18-gcc, alpine3.19-clang, alpine3.19-gcc, archlinux-clang, archlinux-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1303,7 +1303,7 @@ tasks: - debian12-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, alpine3.16-clang, alpine3.16-gcc, alpine3.17-clang, alpine3.17-gcc, alpine3.18-clang, alpine3.18-gcc, alpine3.19-clang, alpine3.19-gcc, archlinux-clang, archlinux-gcc, centos7-clang, centos7-gcc, u16-clang, u16-gcc, u18-clang, u18-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1346,7 +1346,7 @@ tasks: - debian12-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, alpine3.16-clang, alpine3.16-gcc, alpine3.17-clang, alpine3.17-gcc, alpine3.18-clang, alpine3.18-gcc, alpine3.19-clang, alpine3.19-gcc, archlinux-clang, archlinux-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1389,7 +1389,7 @@ tasks: - debian12-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, alpine3.16-clang, alpine3.16-gcc, alpine3.17-clang, alpine3.17-gcc, alpine3.18-clang, alpine3.18-gcc, alpine3.19-clang, alpine3.19-gcc, archlinux-clang, archlinux-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1432,7 +1432,7 @@ tasks: - debian12-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, alpine3.16-clang, alpine3.16-gcc, alpine3.17-clang, alpine3.17-gcc, alpine3.18-clang, alpine3.18-gcc, alpine3.19-clang, alpine3.19-gcc, archlinux-clang, archlinux-gcc, centos7-clang, centos7-gcc, u16-clang, u16-gcc, u18-clang, u18-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1475,7 +1475,7 @@ tasks: - debian12-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, alpine3.16-clang, alpine3.16-gcc, alpine3.17-clang, alpine3.17-gcc, alpine3.18-clang, alpine3.18-gcc, alpine3.19-clang, alpine3.19-gcc, archlinux-clang, archlinux-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1518,7 +1518,7 @@ tasks: - debian12-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, alpine3.16-clang, alpine3.16-gcc, alpine3.17-clang, alpine3.17-gcc, alpine3.18-clang, alpine3.18-gcc, alpine3.19-clang, alpine3.19-gcc, archlinux-clang, archlinux-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1561,7 +1561,7 @@ tasks: - debian12-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, alpine3.16-clang, alpine3.16-gcc, alpine3.17-clang, alpine3.17-gcc, alpine3.18-clang, alpine3.18-gcc, alpine3.19-clang, alpine3.19-gcc, archlinux-clang, archlinux-gcc, centos7-clang, centos7-gcc, u16-clang, u16-gcc, u18-clang, u18-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] commands: - func: docker-login-amazon-ecr - command: subprocess.exec @@ -1604,7 +1604,7 @@ tasks: - debian12-large - ubuntu2204-large - ubuntu2404-large - tags: [earthly, pr-merge-gate, alpine3.16-clang, alpine3.16-gcc, alpine3.17-clang, alpine3.17-gcc, alpine3.18-clang, alpine3.18-gcc, alpine3.19-clang, alpine3.19-gcc, archlinux-clang, archlinux-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] + tags: [earthly, pr-merge-gate, alpine3.19-clang, alpine3.19-gcc, alpine3.20-clang, alpine3.20-gcc, alpine3.21-clang, alpine3.21-gcc, alpine3.22-clang, alpine3.22-gcc, archlinux-clang, archlinux-gcc, centos10-clang, centos10-gcc, centos9-clang, centos9-gcc, u20-clang, u20-gcc, u22-clang, u22-gcc] commands: - func: docker-login-amazon-ecr - command: subprocess.exec diff --git a/.evergreen/generated_configs/variants.yml b/.evergreen/generated_configs/variants.yml index 30437749ef..f29a486bfd 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -1,60 +1,60 @@ buildvariants: - - name: alpine3.16-clang - display_name: Alpine 3.16 (LLVM/Clang) + - name: alpine3.19-clang + display_name: Alpine 3.19 (LLVM/Clang) expansions: MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: alpine3.16 + MONGOC_EARTHLY_ENV: alpine3.19 tasks: - - name: .alpine3.16-clang - - name: alpine3.16-gcc - display_name: Alpine 3.16 (GCC) + - name: .alpine3.19-clang + - name: alpine3.19-gcc + display_name: Alpine 3.19 (GCC) expansions: MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: alpine3.16 + MONGOC_EARTHLY_ENV: alpine3.19 tasks: - - name: .alpine3.16-gcc - - name: alpine3.17-clang - display_name: Alpine 3.17 (LLVM/Clang) + - name: .alpine3.19-gcc + - name: alpine3.20-clang + display_name: Alpine 3.20 (LLVM/Clang) expansions: MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: alpine3.17 + MONGOC_EARTHLY_ENV: alpine3.20 tasks: - - name: .alpine3.17-clang - - name: alpine3.17-gcc - display_name: Alpine 3.17 (GCC) + - name: .alpine3.20-clang + - name: alpine3.20-gcc + display_name: Alpine 3.20 (GCC) expansions: MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: alpine3.17 + MONGOC_EARTHLY_ENV: alpine3.20 tasks: - - name: .alpine3.17-gcc - - name: alpine3.18-clang - display_name: Alpine 3.18 (LLVM/Clang) + - name: .alpine3.20-gcc + - name: alpine3.21-clang + display_name: Alpine 3.21 (LLVM/Clang) expansions: MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: alpine3.18 + MONGOC_EARTHLY_ENV: alpine3.21 tasks: - - name: .alpine3.18-clang - - name: alpine3.18-gcc - display_name: Alpine 3.18 (GCC) + - name: .alpine3.21-clang + - name: alpine3.21-gcc + display_name: Alpine 3.21 (GCC) expansions: MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: alpine3.18 + MONGOC_EARTHLY_ENV: alpine3.21 tasks: - - name: .alpine3.18-gcc - - name: alpine3.19-clang - display_name: Alpine 3.19 (LLVM/Clang) + - name: .alpine3.21-gcc + - name: alpine3.22-clang + display_name: Alpine 3.22 (LLVM/Clang) expansions: MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: alpine3.19 + MONGOC_EARTHLY_ENV: alpine3.22 tasks: - - name: .alpine3.19-clang - - name: alpine3.19-gcc - display_name: Alpine 3.19 (GCC) + - name: .alpine3.22-clang + - name: alpine3.22-gcc + display_name: Alpine 3.22 (GCC) expansions: MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: alpine3.19 + MONGOC_EARTHLY_ENV: alpine3.22 tasks: - - name: .alpine3.19-gcc + - name: .alpine3.22-gcc - name: archlinux-clang display_name: ArchLinux (LLVM/Clang) expansions: @@ -69,20 +69,34 @@ buildvariants: MONGOC_EARTHLY_ENV: archlinux tasks: - name: .archlinux-gcc - - name: centos7-clang - display_name: CentOS 7.0 (LLVM/Clang) + - name: centos10-clang + display_name: CentOS 10 (LLVM/Clang) + expansions: + MONGOC_EARTHLY_C_COMPILER: clang + MONGOC_EARTHLY_ENV: centos10 + tasks: + - name: .centos10-clang + - name: centos10-gcc + display_name: CentOS 10 (GCC) + expansions: + MONGOC_EARTHLY_C_COMPILER: gcc + MONGOC_EARTHLY_ENV: centos10 + tasks: + - name: .centos10-gcc + - name: centos9-clang + display_name: CentOS 9 (LLVM/Clang) expansions: MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: centos7 + MONGOC_EARTHLY_ENV: centos9 tasks: - - name: .centos7-clang - - name: centos7-gcc - display_name: CentOS 7.0 (GCC) + - name: .centos9-clang + - name: centos9-gcc + display_name: CentOS 9 (GCC) expansions: MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: centos7 + MONGOC_EARTHLY_ENV: centos9 tasks: - - name: .centos7-gcc + - name: .centos9-gcc - name: clang-format display_name: clang-format run_on: @@ -305,34 +319,6 @@ buildvariants: display_name: std-matrix tasks: - name: .std-matrix - - name: u16-clang - display_name: Ubuntu 16.04 (LLVM/Clang) - expansions: - MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: u16 - tasks: - - name: .u16-clang - - name: u16-gcc - display_name: Ubuntu 16.04 (GCC) - expansions: - MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: u16 - tasks: - - name: .u16-gcc - - name: u18-clang - display_name: Ubuntu 18.04 (LLVM/Clang) - expansions: - MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: u18 - tasks: - - name: .u18-clang - - name: u18-gcc - display_name: Ubuntu 18.04 (GCC) - expansions: - MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: u18 - tasks: - - name: .u18-gcc - name: u20-clang display_name: Ubuntu 20.04 (LLVM/Clang) expansions: diff --git a/.evergreen/scripts/cmake.sh b/.evergreen/scripts/cmake.sh deleted file mode 100755 index ac179efdfe..0000000000 --- a/.evergreen/scripts/cmake.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -set -eu -. "$(dirname "${BASH_SOURCE[0]}")/find-cmake-latest.sh" - -cmake=$(find_cmake_latest) - -$cmake "$@" diff --git a/Earthfile b/Earthfile index b4c344562e..4949550825 100644 --- a/Earthfile +++ b/Earthfile @@ -135,19 +135,10 @@ test-cxx-driver: # PREP_CMAKE "warms up" the CMake installation cache for the current environment PREP_CMAKE: FUNCTION - LET scratch=/opt/mongoc-cmake - # Copy the minimal amount that we need, as to avoid cache invalidation - COPY tools/use.sh tools/platform.sh tools/paths.sh tools/base.sh tools/download.sh \ - $scratch/tools/ - COPY .evergreen/scripts/find-cmake-version.sh \ - .evergreen/scripts/use-tools.sh \ - .evergreen/scripts/find-cmake-latest.sh \ - .evergreen/scripts/cmake.sh \ - $scratch/.evergreen/scripts/ - # "Install" a shim that runs our managed CMake executable: - RUN __alias cmake /opt/mongoc-cmake/.evergreen/scripts/cmake.sh + # Run all CMake commands using uvx: + RUN __alias cmake uvx cmake # Executing any CMake command will warm the cache: - RUN cmake --version + RUN cmake --version | head -n 1 env-warmup: ARG --required env @@ -157,8 +148,9 @@ env-warmup: # Simultaneously builds and tests multiple different platforms multibuild: BUILD +run --targets "test-example" \ - --env=alpine3.16 --env=alpine3.17 --env=alpine3.18 --env=alpine3.19 \ - --env=u16 --env=u18 --env=u20 --env=u22 --env=centos7 \ + --env=alpine3.19 --env=alpine3.20 --env=alpine3.21 --env=alpine3.22 \ + --env=u20 --env=u22 --env=u24 \ + --env=centos9 --env=centos10 \ --env=archlinux \ --tls=OpenSSL --tls=off \ --sasl=Cyrus --sasl=off \ @@ -427,7 +419,7 @@ verify-headers: BUILD +do-verify-headers-impl \ --from +env.alpine3.19 \ --from +env.u22 \ - --from +env.centos7 \ + --from +env.centos10 \ --sasl=off --tls=off --cxx_compiler=gcc --c_compiler=gcc do-verify-headers-impl: @@ -466,36 +458,12 @@ run: # 88. 88 V888 `8bd8' .88. 88 `88. `8b d8' 88 V888 88 88 88 88. 88 V888 88 db 8D # Y88888P VP V8P YP Y888888P 88 YD `Y88P' VP V8P YP YP YP Y88888P VP V8P YP `8888Y' -env.u16: - DO --pass-args +UBUNTU_ENV --version=16.04 - -env.u18: - DO --pass-args +UBUNTU_ENV --version=18.04 - -env.u20: - DO --pass-args +UBUNTU_ENV --version=20.04 - -env.u22: - DO --pass-args +UBUNTU_ENV --version=22.04 - -env.alpine3.16: - DO --pass-args +ALPINE_ENV --version=3.16 - -env.alpine3.17: - DO --pass-args +ALPINE_ENV --version=3.17 - -env.alpine3.18: - DO --pass-args +ALPINE_ENV --version=3.18 - -env.alpine3.19: - DO --pass-args +ALPINE_ENV --version=3.19 - env.archlinux: FROM --pass-args tools+init-env --from $default_search_registry/library/archlinux RUN pacman-key --init ARG --required purpose - RUN __install ninja snappy + RUN __install ninja snappy uv IF test "$purpose" = build RUN __install ccache @@ -506,19 +474,34 @@ env.archlinux: DO --pass-args tools+ADD_C_COMPILER DO +PREP_CMAKE -env.centos7: - DO --pass-args +CENTOS_ENV --version=7 +env.alpine3.19: + DO --pass-args +ALPINE_ENV --version=3.19 + +env.alpine3.20: + DO --pass-args +ALPINE_ENV --version=3.20 + +env.alpine3.21: + DO --pass-args +ALPINE_ENV --version=3.21 + +env.alpine3.22: + DO --pass-args +ALPINE_ENV --version=3.22 ALPINE_ENV: FUNCTION ARG --required version FROM --pass-args tools+init-env --from $default_search_registry/library/alpine:$version - # XXX: On Alpine, we just use the system's CMake. At time of writing, it is - # very up-to-date and much faster than building our own from source (since - # Kitware does not (yet) provide libmuslc builds of CMake) - RUN __install bash curl cmake ninja musl-dev make + RUN __install bash curl ninja musl-dev make python3 ARG --required purpose + IF test "$version" = "3.19" -o "$version" = "3.20" + # uv is not yet available. Install via pipx. + RUN __install pipx + RUN pipx install uv + ENV PATH="/root/.local/bin:$PATH" + ELSE + RUN __install uv + END + IF test "$purpose" = "build" RUN __install snappy-dev ccache ELSE IF test "$purpose" = "test" @@ -530,6 +513,16 @@ ALPINE_ENV: # Add "gcc" when installing Clang, since it pulls in a lot of runtime libraries and # utils that are needed for linking with Clang DO --pass-args tools+ADD_C_COMPILER --clang_pkg="gcc clang compiler-rt" + DO +PREP_CMAKE + +env.u20: + DO --pass-args +UBUNTU_ENV --version=20.04 + +env.u22: + DO --pass-args +UBUNTU_ENV --version=22.04 + +env.u24: + DO --pass-args +UBUNTU_ENV --version=24.04 UBUNTU_ENV: FUNCTION @@ -538,6 +531,11 @@ UBUNTU_ENV: RUN __install curl build-essential ARG --required purpose + # uv is not available via apt. Avoid snapd (systemd) by using pipx instead. + RUN __install python3-venv pipx + RUN pipx install uv + ENV PATH="/root/.local/bin:$PATH" + IF test "$purpose" = build RUN __install ninja-build gcc ccache libsnappy-dev zlib1g-dev ELSE IF test "$purpose" = test @@ -549,21 +547,28 @@ UBUNTU_ENV: DO --pass-args tools+ADD_C_COMPILER DO +PREP_CMAKE +env.centos9: + DO --pass-args +CENTOS_ENV --version=9 + +env.centos10: + DO --pass-args +CENTOS_ENV --version=10 + CENTOS_ENV: FUNCTION ARG --required version - FROM --pass-args tools+init-env --from $default_search_registry/library/centos:$version - # Update repositories to use vault.centos.org - RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* && \ - sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* - RUN yum -y --enablerepo=extras install epel-release && yum -y update - RUN yum -y install curl gcc gcc-c++ make + FROM --pass-args tools+init-env --from quay.io/centos/centos:stream$version + RUN yum -y install epel-release && yum -y update + RUN yum -y install gcc gcc-c++ make pipx ARG --required purpose + # uv is not available via yum. Avoid snapd (systemd) by using pipx instead. + RUN pipx install uv + ENV PATH="/root/.local/bin:$PATH" + IF test "$purpose" = build - RUN yum -y install ninja-build ccache snappy-devel zlib-devel + RUN yum -y --enablerepo=crb install ninja-build ccache snappy-devel zlib-devel ELSE IF test "$purpose" = test - RUN yum -y install ninja-build snappy + RUN yum -y --enablerepo=crb install ninja-build snappy END DO --pass-args tools+ADD_SASL --cyrus_dev_pkg="cyrus-sasl-devel" --cyrus_rt_pkg="cyrus-sasl-lib" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2ad258f3c4..d21b6a91d6 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -43,6 +43,7 @@ target_compile_options(public-header-warnings PRIVATE $<$:-Wno-reserved-identifier> $<$:-Wno-documentation-unknown-command> $<$:-Wno-unknown-warning-option> + $<$:-Wno-poison-system-directories> $<$:/W4> $<$:/WX> $<$:/wd4324>