From a4a5cfe5bf65de2a0866926a89d5bf27f5265b2a Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Fri, 6 Jun 2025 09:31:16 -0500 Subject: [PATCH 1/4] CXX-3300 update build-from-source minimum supported compiler versions --- CHANGELOG.md | 6 ++++++ CMakeLists.txt | 28 ++++++++++++++++++++-------- 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 01ba9b3a86..41bb015842 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,12 @@ Changes prior to 3.9.0 are documented as [release notes on GitHub](https://githu ### Changed - CMake 3.16.0 or newer is required when `ENABLE_TESTS=ON` for compatibility with the updated Catch2 library version (3.7.0 -> 3.8.1). +- Minimum supported compiler versions to build from source are updated to the following: + - GCC 8.1 (from GCC 4.8.2). + - Users on RHEL 7 may consult Red Hat's ["Hello World - installing GCC on RHEL 7"](https://developers.redhat.com/HW/gcc-RHEL-7#) or ["How to install GCC 8 and Clang/LLVM 6 on Red Hat Enterprise Linux 7"](https://developers.redhat.com/blog/2019/03/05/yum-install-gcc-8-clang-6#) for instructions on how to obtain GCC 8 or newer. + - Clang 3.8 (from Clang 3.5). + - Apple Clang 13.1 with Xcode 13.4.1 (from Apple Clang 5.1 with Xcode 5.1). + - MSVC 19.0.24210 with Visual Studio 2015 Update 3 (from MSVC 19.0.23506 with Visual Studio 2015 Update 1). ## 4.1.0 diff --git a/CMakeLists.txt b/CMakeLists.txt index 6caee2052f..9f2be35846 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,20 +25,32 @@ set(CMAKE_MODULE_PATH option(BUILD_TESTING "When ENABLE_TESTS=ON, include test targets in the \"all\" target") if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.8.2") - message(FATAL_ERROR "Insufficient GCC version - GCC 4.8.2+ required") + # https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html + # https://gcc.gnu.org/projects/cxx-status.html + # https://gcc.gnu.org/releases.html + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "8.1") + message(FATAL_ERROR "GCC 8.1 or newer is required") endif() elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.0.23506") - message(FATAL_ERROR "Insufficient Microsoft Visual C++ version - MSVC 2015 Update 1+ required") + # https://en.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B#Internal_version_numbering + # https://learn.microsoft.com/en-us/cpp/overview/compiler-versions + # https://learn.microsoft.com/en-us/cpp/overview/visual-cpp-language-conformance + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.0.24210") + message(FATAL_ERROR "Visual Studio 13 2015 Update 3 or newer is required") endif() elseif(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5.1") - message(FATAL_ERROR "Insufficient Apple clang version - XCode 5.1+ required") + # https://developer.apple.com/xcode/cpp/ + # https://en.wikipedia.org/wiki/Xcode#Version_comparison_table + # https://trac.macports.org/wiki/XcodeVersionInfo + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "13.1") + message(FATAL_ERROR "Xcode 13.4.1 or newer is required") endif() elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.5") - message(FATAL_ERROR "Insufficient clang version - clang 3.5+ required") + # https://releases.llvm.org/ + # https://clang.llvm.org/cxx_status.html + # https://libcxx.llvm.org/#c-standards-conformance + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.8") + message(FATAL_ERROR "Clang 3.8 or newer is required") endif() else() message(WARNING "Unknown compiler... recklessly proceeding without a version check") From b47e97902402d41d606284054ffa31846ca4ff76 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 10 Jun 2025 15:32:28 -0500 Subject: [PATCH 2/4] Remove trailing # in links --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41bb015842..1e18d69487 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,7 @@ Changes prior to 3.9.0 are documented as [release notes on GitHub](https://githu - CMake 3.16.0 or newer is required when `ENABLE_TESTS=ON` for compatibility with the updated Catch2 library version (3.7.0 -> 3.8.1). - Minimum supported compiler versions to build from source are updated to the following: - GCC 8.1 (from GCC 4.8.2). - - Users on RHEL 7 may consult Red Hat's ["Hello World - installing GCC on RHEL 7"](https://developers.redhat.com/HW/gcc-RHEL-7#) or ["How to install GCC 8 and Clang/LLVM 6 on Red Hat Enterprise Linux 7"](https://developers.redhat.com/blog/2019/03/05/yum-install-gcc-8-clang-6#) for instructions on how to obtain GCC 8 or newer. + - Users on RHEL 7 may consult Red Hat's ["Hello World - installing GCC on RHEL 7"](https://developers.redhat.com/HW/gcc-RHEL-7) or ["How to install GCC 8 and Clang/LLVM 6 on Red Hat Enterprise Linux 7"](https://developers.redhat.com/blog/2019/03/05/yum-install-gcc-8-clang-6) for instructions on how to obtain GCC 8 or newer. - Clang 3.8 (from Clang 3.5). - Apple Clang 13.1 with Xcode 13.4.1 (from Apple Clang 5.1 with Xcode 5.1). - MSVC 19.0.24210 with Visual Studio 2015 Update 3 (from MSVC 19.0.23506 with Visual Studio 2015 Update 1). From 80804f51061d1491c386dd76c9c1a22d2ea85ad5 Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 10 Jun 2025 15:40:35 -0500 Subject: [PATCH 3/4] Add missing import of ec2_assume_role --- .evergreen/config_generator/components/mongohouse.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.evergreen/config_generator/components/mongohouse.py b/.evergreen/config_generator/components/mongohouse.py index 8d262b5da8..dfa53097b9 100644 --- a/.evergreen/config_generator/components/mongohouse.py +++ b/.evergreen/config_generator/components/mongohouse.py @@ -8,7 +8,7 @@ from config_generator.etc.utils import bash_exec from shrub.v3.evg_build_variant import BuildVariant -from shrub.v3.evg_command import EvgCommandType +from shrub.v3.evg_command import EvgCommandType, ec2_assume_role from shrub.v3.evg_task import EvgTask, EvgTaskRef From e0ef513a5e5bc253fa1ef51ea2e7c2e3182631df Mon Sep 17 00:00:00 2001 From: Ezra Chung Date: Tue, 10 Jun 2025 15:40:35 -0500 Subject: [PATCH 4/4] Temporarily disable RHEL 7.9 tasks --- .evergreen/config_generator/components/compile_only.py | 1 + .evergreen/generated_configs/tasks.yml | 2 ++ 2 files changed, 3 insertions(+) diff --git a/.evergreen/config_generator/components/compile_only.py b/.evergreen/config_generator/components/compile_only.py index 8a22a0d4ea..d5fb9fba37 100644 --- a/.evergreen/config_generator/components/compile_only.py +++ b/.evergreen/config_generator/components/compile_only.py @@ -110,6 +110,7 @@ def tasks(): run_on=distro.name, patchable=patchable, commands=commands, + disable=(True if distro_name == 'rhel7.9' else None), # DEVPROD-18187 ) diff --git a/.evergreen/generated_configs/tasks.yml b/.evergreen/generated_configs/tasks.yml index d791a5e57d..add57f618c 100644 --- a/.evergreen/generated_configs/tasks.yml +++ b/.evergreen/generated_configs/tasks.yml @@ -431,6 +431,7 @@ tasks: - name: compile-only-rhel7.9-gcc-cxx11-debug run_on: rhel7.9-large tags: [compile-only, rhel7.9, cxx11, gcc, debug] + disable: true commands: - command: expansions.update params: @@ -451,6 +452,7 @@ tasks: - name: compile-only-rhel7.9-gcc-cxx14-debug run_on: rhel7.9-large tags: [compile-only, rhel7.9, cxx14, gcc, debug] + disable: true commands: - command: expansions.update params: