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 &gt;= 3.14</div>
        <div><br>
        </div>
        <div>
          <div>We have two workarounds to support CMake &lt; 3.18 [1,
            2]. And one workaround to support CMake &lt; 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&amp;pathrev=1936525&amp;view=markup#l725"
            moz-do-not-send="true">https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&amp;pathrev=1936525&amp;view=markup#l725</a></div>
        <div>[2]: <a
href="https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&amp;pathrev=1936525&amp;view=markup#l1042"
            moz-do-not-send="true">https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&amp;pathrev=1936525&amp;view=markup#l1042</a> </div>
        <div>[3]: <a
href="https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&amp;pathrev=1936525&amp;view=markup#l459"
            moz-do-not-send="true">https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&amp;pathrev=1936525&amp;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--