On 23. 7. 2026 16:59, Ivan Zhakov wrote:
I would like to discuss CMake minimum required version for trunk and 1.15.x.

Currently Subversion requires CMake version >= 3.14

We have two workarounds to support CMake < 3.18 [1, 2]. And one workaround to support CMake < 3.20 [3]

Compatibility with versions of CMake older than 3.10 is deprecated in CMake 3.31 [4]. Compatibility with versions of CMake older than 3.5 is removed in CMake 4.0 [4].

Information about bundled CMake versions in different distributions and toolsets:
- Visual Studio 2017   (supported until Apr 2027): CMake 3.6
- Visual Studio 2019     (supported until Apr 2029): CMake 3.20
- Visual Studio 2022     (supported until Jan 2032): CMake 3.31
- Visual Studio 2026     (supported until Nov 2028): CMake 4.3
- Debian 11 "bullseye"   (supported until Aug 2026): CMake 3.18
- Debian 12 "bookworm"   (supported until Jun 2028): CMake 3.25
- Debian 13 "trixie"     (supported until Aug 2030): CMake 3.31
- Ubuntu 22.04 LTS       (supported until May 2027): CMake 3.22
- Ubuntu 24.04 LTS       (supported until May 2029): CMake 3.28
- Ubuntu 26.04 LTS       (supported until May 2031): CMake 4.2
- RHEL 8                 (supported until May 2029): CMake 3.26
- RHEL 9                 (supported until May 2032): CMake 3.31
- RHEL 10                (supported until May 2035): CMake 3.31

The same information sorted by CMake version:
- Visual Studio 2017 (supported until Apr 2027): CMake 3.6
- Debian 11 "bullseye" (supported until Aug 2026): CMake 3.18
- Visual Studio 2019     (supported until Apr 2029): CMake 3.20
- Ubuntu 22.04 LTS       (supported until May 2027): CMake 3.22
- Debian 12 "bookworm" (supported until Jun 2028): CMake 3.25
- RHEL 8 (supported until May 2029): CMake 3.26
- Ubuntu 24.04 LTS     (supported until May 2029): CMake 3.28
- Visual Studio 2022 (supported until Jan 2032): CMake 3.31
- RHEL 9 (supported until May 2032): CMake 3.31
- RHEL 10                (supported until May 2035): CMake 3.31
- Debian 13 "trixie" (supported until Aug 2030): CMake 3.31
- Ubuntu 26.04 LTS (supported until May 2031): CMake 4.2
- Visual Studio 2026 (supported until Nov 2028): CMake 4.3

Based on these tables, I think we can make CMake 3.20 the minimum required version. This would support building Subversion with bundled CMake in Visual Studio 2019 and would allow us to remove the three workarounds.


I assume that the bundled version can be ignored/updated by a separate installation of CMake? If not, we should explicitly say in the release notes that we do not support building with CMake with VS 2017. That's a build environment that's less than 10 years old. Well, we still support it in the vcxproj generator.


The other close option is CMake 3.18 (for Debian 11 support), but I would say it's not exactly worth it, since Debian 11 becomes unsupported in Aug 2026.


Unix distros will use the autotools build. We should ignore them for this discussion. I don't see the distros switching to CMake given that they've used autotools for decades.


So I propose that we bump the minimum required version to 3.20 and backport this change to 1.15.x branch.

Thoughts?

[1]: https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&pathrev=1936525&view=markup#l725 <https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&pathrev=1936525&view=markup#l725> [2]: https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&pathrev=1936525&view=markup#l1042 <https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&pathrev=1936525&view=markup#l1042> [3]: https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&pathrev=1936525&view=markup#l459 <https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&pathrev=1936525&view=markup#l459> [4]: https://cmake.org/cmake/help/latest/command/cmake_minimum_required.html#policy-version

--
Ivan Zhakov

Reply via email to