Re: CMake minimum required version
Branko Čibej <[email protected]> Thu, 23 Jul 2026 17:08:27 +0200
| Newsgroups | gmane.comp.version-control.subversion.devel |
|---|---|
| Organization | The Apache Software Foundation |
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format.
--------------qC36Tkx9sqzi0UzhpkBeUrHr
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
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
--------------qC36Tkx9sqzi0UzhpkBeUrHr
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div class="moz-cite-prefix">On 23. 7. 2026 16:59, Ivan Zhakov
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAPZho09qES_ggim1XBH8NsongDL7RTnQ_gUymXwOm++YhyJz9Q@mail.gmail.com">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<div dir="ltr">
<div>I would like to discuss CMake minimum required version for
trunk and 1.15.x.</div>
<div><br>
</div>
<div>Currently Subversion requires CMake version >= 3.14</div>
<div><br>
</div>
<div>
<div>We have two workarounds to support CMake < 3.18 [1,
2]. And one workaround to support CMake < 3.20 [3]</div>
<br>
</div>
<div>Compatibility with versions of CMake older than 3.10 is
deprecated in CMake 3.31 [4].</div>
<div>
<span class="gmail-versionmodified gmail-changed"> </span>Compatibility
with versions of CMake older than 3.5 is removed in CMake 4.0
[4].</div>
<div><br>
</div>
<div>Information about bundled CMake versions in different
distributions and toolsets:</div>
<div><span style="font-family:monospace">- Visual Studio 2017
(supported until Apr 2027): CMake 3.6<br>
- Visual Studio 2019 (supported until Apr 2029): CMake
3.20<br>
- Visual Studio 2022 (supported until Jan 2032): CMake
3.31<br>
- Visual Studio 2026 (supported until Nov 2028): CMake
4.3<br>
- Debian 11 "bullseye" (supported until Aug 2026): CMake
3.18<br>
- Debian 12 "bookworm" (supported until Jun 2028): CMake
3.25<br>
- Debian 13 "trixie" (supported until Aug 2030): CMake
3.31<br>
- Ubuntu 22.04 LTS (supported until May 2027): CMake
3.22<br>
- Ubuntu 24.04 LTS (supported until May 2029): CMake
3.28<br>
- Ubuntu 26.04 LTS (supported until May 2031): CMake
4.2<br>
- RHEL 8 (supported until May 2029): CMake
3.26<br>
- RHEL 9 (supported until May 2032): CMake
3.31<br>
- RHEL 10 (supported until May 2035): CMake
3.31<br>
</span><br>
</div>
<div>The same information sorted by CMake version:</div>
<span style="font-family:monospace">- Visual Studio 2017
(supported until Apr 2027): CMake 3.6<br>
</span>
<span style="font-family:monospace">- Debian 11 "bullseye"
(supported until Aug 2026): CMake 3.18<br>
</span><span style="font-family:monospace">- Visual Studio 2019
(supported until Apr 2029): CMake 3.20<br>
- Ubuntu 22.04 LTS (supported until May 2027): CMake
3.22<br>
</span>
<span style="font-family:monospace">- Debian 12 "bookworm"
(supported until Jun 2028): CMake 3.25<br>
</span>
<span style="font-family:monospace">- RHEL 8
(supported until May 2029): CMake 3.26<br>
</span><span style="font-family:monospace">- Ubuntu 24.04 LTS
(supported until May 2029): CMake 3.28<br>
</span>
<span style="font-family:monospace">- Visual Studio 2022
(supported until Jan 2032): CMake 3.31<br>
</span>
<span style="font-family:monospace">- RHEL 9
(supported until May 2032): CMake 3.31<br>
- RHEL 10 (supported until May 2035): CMake
3.31<br>
</span>
<span style="font-family:monospace">- Debian 13 "trixie"
(supported until Aug 2030): CMake 3.31<br>
</span>
<span style="font-family:monospace">- Ubuntu 26.04 LTS
(supported until May 2031): CMake 4.2<br>
</span>
<span style="font-family:monospace">- Visual Studio 2026
(supported until Nov 2028): CMake 4.3<br>
</span>
<div><br>
</div>
<div>
<span>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.<br>
</span></div>
</div>
</blockquote>
<br>
<br>
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.<br>
<br>
<br>
<blockquote type="cite"
cite="mid:CAPZho09qES_ggim1XBH8NsongDL7RTnQ_gUymXwOm++YhyJz9Q@mail.gmail.com">
<div dir="ltr">
<div><span>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.<br>
</span></div>
</div>
</blockquote>
<br>
<br>
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.<br>
<br>
<br>
<blockquote type="cite"
cite="mid:CAPZho09qES_ggim1XBH8NsongDL7RTnQ_gUymXwOm++YhyJz9Q@mail.gmail.com">
<div dir="ltr">
<div><span>So I propose that we bump the minimum required
version to 3.20 and backport this change to 1.15.x branch.<br>
<br>
Thoughts?</span>
</div>
<div><br>
</div>
<div>[1]: <a
href="https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&pathrev=1936525&view=markup#l725"
moz-do-not-send="true">https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&pathrev=1936525&view=markup#l725</a></div>
<div>[2]: <a
href="https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&pathrev=1936525&view=markup#l1042"
moz-do-not-send="true">https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&pathrev=1936525&view=markup#l1042</a> </div>
<div>[3]: <a
href="https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&pathrev=1936525&view=markup#l459"
moz-do-not-send="true">https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&pathrev=1936525&view=markup#l459</a></div>
<div>[4]: <a
href="https://cmake.org/cmake/help/latest/command/cmake_minimum_required.html#policy-version"
moz-do-not-send="true" class="moz-txt-link-freetext">https://cmake.org/cmake/help/latest/command/cmake_minimum_required.html#policy-version</a></div>
<div><br>
</div>
<span class="gmail_signature_prefix">-- </span><br>
<div dir="ltr" class="gmail_signature"
data-smartmail="gmail_signature">Ivan Zhakov</div>
</div>
</blockquote>
<br>
</body>
</html>
--------------qC36Tkx9sqzi0UzhpkBeUrHr--