diff --git a/.evergreen/config_generator/components/earthly.py b/.evergreen/config_generator/components/earthly.py index 178e7f637d..683be59728 100644 --- a/.evergreen/config_generator/components/earthly.py +++ b/.evergreen/config_generator/components/earthly.py @@ -27,16 +27,18 @@ EnvKey = Literal[ - "u16", - "u18", "u20", "u22", - "alpine3.16", - "alpine3.17", - "alpine3.18", + "almalinux8", + "almalinux9", + "almalinux10", "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"] @@ -57,7 +59,7 @@ def os_split(env: EnvKey) -> tuple[str, None | str]: """Convert the environment key into a pretty name+version pair""" match env: - # match 'alpine3.18' 'alpine53.123' etc. + # Match 'alpine3.18' 'alpine53.123' etc. case alp if mat := re.match(r"alpine(\d+\.\d+)", alp): return ("Alpine", mat[1]) case "archlinux": @@ -65,12 +67,14 @@ 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]}" + # Match 'almalinux8', 'almalinux10', etc. + case alm if mat := re.match(r"almalinux(\d+)", alm): + return "AlmaLinux", 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 +156,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 +181,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 9588339416..4a530d39ee 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, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, 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, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, 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, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, 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, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, 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, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, 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, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, 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, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, 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, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, 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, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, 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, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, 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, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, 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, almalinux10-clang, almalinux10-gcc, almalinux8-clang, almalinux8-gcc, almalinux9-clang, almalinux9-gcc, 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 aef0522f8d..24db1d4592 100644 --- a/.evergreen/generated_configs/variants.yml +++ b/.evergreen/generated_configs/variants.yml @@ -1,46 +1,46 @@ buildvariants: - - name: alpine3.16-clang - display_name: Alpine 3.16 (LLVM/Clang) + - name: almalinux10-clang + display_name: AlmaLinux 10 (LLVM/Clang) expansions: MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: alpine3.16 + MONGOC_EARTHLY_ENV: almalinux10 tasks: - - name: .alpine3.16-clang - - name: alpine3.16-gcc - display_name: Alpine 3.16 (GCC) + - name: .almalinux10-clang + - name: almalinux10-gcc + display_name: AlmaLinux 10 (GCC) expansions: MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: alpine3.16 + MONGOC_EARTHLY_ENV: almalinux10 tasks: - - name: .alpine3.16-gcc - - name: alpine3.17-clang - display_name: Alpine 3.17 (LLVM/Clang) + - name: .almalinux10-gcc + - name: almalinux8-clang + display_name: AlmaLinux 8 (LLVM/Clang) expansions: MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: alpine3.17 + MONGOC_EARTHLY_ENV: almalinux8 tasks: - - name: .alpine3.17-clang - - name: alpine3.17-gcc - display_name: Alpine 3.17 (GCC) + - name: .almalinux8-clang + - name: almalinux8-gcc + display_name: AlmaLinux 8 (GCC) expansions: MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: alpine3.17 + MONGOC_EARTHLY_ENV: almalinux8 tasks: - - name: .alpine3.17-gcc - - name: alpine3.18-clang - display_name: Alpine 3.18 (LLVM/Clang) + - name: .almalinux8-gcc + - name: almalinux9-clang + display_name: AlmaLinux 9 (LLVM/Clang) expansions: MONGOC_EARTHLY_C_COMPILER: clang - MONGOC_EARTHLY_ENV: alpine3.18 + MONGOC_EARTHLY_ENV: almalinux9 tasks: - - name: .alpine3.18-clang - - name: alpine3.18-gcc - display_name: Alpine 3.18 (GCC) + - name: .almalinux9-clang + - name: almalinux9-gcc + display_name: AlmaLinux 9 (GCC) expansions: MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: alpine3.18 + MONGOC_EARTHLY_ENV: almalinux9 tasks: - - name: .alpine3.18-gcc + - name: .almalinux9-gcc - name: alpine3.19-clang display_name: Alpine 3.19 (LLVM/Clang) expansions: @@ -55,6 +55,48 @@ buildvariants: MONGOC_EARTHLY_ENV: alpine3.19 tasks: - 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.20 + tasks: + - name: .alpine3.20-clang + - name: alpine3.20-gcc + display_name: Alpine 3.20 (GCC) + expansions: + MONGOC_EARTHLY_C_COMPILER: gcc + MONGOC_EARTHLY_ENV: alpine3.20 + tasks: + - 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.21 + tasks: + - name: .alpine3.21-clang + - name: alpine3.21-gcc + display_name: Alpine 3.21 (GCC) + expansions: + MONGOC_EARTHLY_C_COMPILER: gcc + MONGOC_EARTHLY_ENV: alpine3.21 + tasks: + - 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.22 + tasks: + - name: .alpine3.22-clang + - name: alpine3.22-gcc + display_name: Alpine 3.22 (GCC) + expansions: + MONGOC_EARTHLY_C_COMPILER: gcc + MONGOC_EARTHLY_ENV: alpine3.22 + tasks: + - name: .alpine3.22-gcc - name: archlinux-clang display_name: ArchLinux (LLVM/Clang) expansions: @@ -69,20 +111,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: centos7 + MONGOC_EARTHLY_ENV: centos10 tasks: - - name: .centos7-clang - - name: centos7-gcc - display_name: CentOS 7.0 (GCC) + - name: .centos10-clang + - name: centos10-gcc + display_name: CentOS 10 (GCC) expansions: MONGOC_EARTHLY_C_COMPILER: gcc - MONGOC_EARTHLY_ENV: centos7 + MONGOC_EARTHLY_ENV: centos10 tasks: - - name: .centos7-gcc + - name: .centos10-gcc + - name: centos9-clang + display_name: CentOS 9 (LLVM/Clang) + expansions: + MONGOC_EARTHLY_C_COMPILER: clang + MONGOC_EARTHLY_ENV: centos9 + tasks: + - name: .centos9-clang + - name: centos9-gcc + display_name: CentOS 9 (GCC) + expansions: + MONGOC_EARTHLY_C_COMPILER: gcc + MONGOC_EARTHLY_ENV: centos9 + tasks: + - name: .centos9-gcc - name: clang-format display_name: clang-format run_on: @@ -305,34 +361,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..ba6af57c39 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,10 @@ 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=almalinux8 --env=almalinux9 --env=almalinux10 \ --env=archlinux \ --tls=OpenSSL --tls=off \ --sasl=Cyrus --sasl=off \ @@ -426,8 +419,9 @@ verify-headers: # many as possible. BUILD +do-verify-headers-impl \ --from +env.alpine3.19 \ - --from +env.u22 \ - --from +env.centos7 \ + --from +env.almalinux8 \ + --from +env.u20 \ + --from +env.centos10 \ --sasl=off --tls=off --cxx_compiler=gcc --c_compiler=gcc do-verify-headers-impl: @@ -466,36 +460,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 +476,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 + ENV PATH="/opt/uv/bin:$PATH" + RUN PIPX_BIN_DIR=/opt/uv/bin pipx install uv + ELSE + RUN __install uv + END + IF test "$purpose" = "build" RUN __install snappy-dev ccache ELSE IF test "$purpose" = "test" @@ -530,6 +515,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 +533,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 + ENV PATH="/opt/uv/bin:$PATH" + RUN PIPX_BIN_DIR=/opt/uv/bin pipx install uv + IF test "$purpose" = build RUN __install ninja-build gcc ccache libsnappy-dev zlib1g-dev ELSE IF test "$purpose" = test @@ -549,23 +549,60 @@ UBUNTU_ENV: DO --pass-args tools+ADD_C_COMPILER DO +PREP_CMAKE -CENTOS_ENV: +env.centos9: + DO --pass-args +CENTOS_STREAM_ENV --version=9 --image=quay.io/centos/centos:stream9 + +env.centos10: + DO --pass-args +CENTOS_STREAM_ENV --version=10 --image=quay.io/centos/centos:stream10 + +env.almalinux8: + DO --pass-args +CENTOS_STREAM_ENV --version 8 --image=$default_search_registry/library/almalinux:8 + +env.almalinux9: + DO --pass-args +CENTOS_STREAM_ENV --version 9 --image=$default_search_registry/library/almalinux:9 + +env.almalinux10: + DO --pass-args +CENTOS_STREAM_ENV --version 10 --image=$default_search_registry/library/almalinux:10 + +CENTOS_STREAM_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 - ARG --required purpose + ARG --required image + FROM --pass-args tools+init-env --from "$image" + + RUN yum -y install epel-release + RUN yum -y install "dnf-command(config-manager)" + IF test "$version" = "8" + RUN yum config-manager --enable powertools + ELSE + RUN yum config-manager --enable crb + END + RUN yum -y install gcc gcc-c++ make + + ARG --required purpose IF test "$purpose" = build RUN yum -y install ninja-build ccache snappy-devel zlib-devel ELSE IF test "$purpose" = test RUN yum -y install ninja-build snappy END + IF test "$version" = "8" + # Neither uv nor pipx is available via yum. + # uv requires Python 3.7+, but system default is Python 3.6. yum provides Python 3.8+. + RUN yum -y install python38 + RUN python3 -m pip install --no-warn-script-location pipx + ENV PATH="/opt/uv/bin:$PATH" + RUN PIPX_BIN_DIR=/opt/uv/bin python3 -m pipx install uv + ELSE IF test "$version" = "9" + # uv is not available via yum. Avoid snapd (systemd) by using pipx instead. + RUN yum -y install pipx + ENV PATH="/opt/uv/bin:$PATH" + RUN PIPX_BIN_DIR=/opt/uv/bin pipx install uv + ELSE + RUN yum -y install uv + END + DO --pass-args tools+ADD_SASL --cyrus_dev_pkg="cyrus-sasl-devel" --cyrus_rt_pkg="cyrus-sasl-lib" DO --pass-args tools+ADD_TLS --openssl_dev_pkg="openssl-devel" --openssl_rt_pkg="openssl-libs" DO --pass-args tools+ADD_C_COMPILER 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>