Re: CMake minimum required version
Ivan Zhakov <[email protected]> Mon, 27 Jul 2026 14:14:03 +0300
| Newsgroups | gmane.comp.version-control.subversion.devel |
|---|---|
| Message-ID | <CAPZho0_T9ge7Qke=k81qi3RDY0SqH0X32jG4gh8WCiAvha3d1g@mail.gmail.com> |
--000000000000931027065795d268 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, 23 Jul 2026 at 18:08, Branko =C4=8Cibej <[email protected]> wrote: > 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 >=3D 3.14 > > We have two workarounds to support CMake < 3.18 [1, 2]. And one workaroun= d > 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 require= d > 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 i= t > in the vcxproj generator. > There is an advanced option in the UI that allows using a custom CMake executable [1]. It's hidden and not too intuitive, but using a different version is supported and documented. [1]: https://learn.microsoft.com/en-us/cpp/build/customize-cmake-settings?view= =3Dmsvc-170#cmake-executable --=20 Ivan Zhakov --000000000000931027065795d268 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr">On Thu, 23 Jul 2026 at 18:08, Branko =C4= =8Cibej <<a href=3D"mailto:[email protected]">[email protected]</a>> wr= ote:</div><div class=3D"gmail_quote gmail_quote_container"><blockquote clas= s=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid r= gb(204,204,204);padding-left:1ex"><u></u> =20 =20 =20 <div> <div>On 23. 7. 2026 16:59, Ivan Zhakov wrote:<br> </div> <blockquote type=3D"cite"> =20 <div dir=3D"ltr"> <div>I would like to discuss=C2=A0CMake minimum required version fo= r trunk and 1.15.x.</div> <div><br> </div> <div>Currently Subversion requires CMake version >=3D=C2=A03.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> </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=3D"font-family:monospace">- Visual Studio 2017 =C2= =A0 =C2=A0 (supported until Apr 2027): CMake 3.6<br> - Visual Studio 2019 =C2=A0 =C2=A0 (supported until Apr 2029): = CMake 3.20<br> - Visual Studio 2022 =C2=A0 =C2=A0 (supported until Jan 2032): = CMake 3.31<br> - Visual Studio 2026 =C2=A0 =C2=A0 (supported until Nov 2028): = CMake 4.3<br> - Debian 11 "bullseye" =C2=A0 (supported until Aug 20= 26): CMake 3.18<br> - Debian 12 "bookworm" =C2=A0 (supported until Jun 20= 28): CMake 3.25<br> - Debian 13 "trixie" =C2=A0 =C2=A0 (supported until A= ug 2030): CMake 3.31<br> - Ubuntu 22.04 LTS =C2=A0 =C2=A0 =C2=A0 (supported until May 20= 27): CMake 3.22<br> - Ubuntu 24.04 LTS =C2=A0 =C2=A0 =C2=A0 (supported until May 20= 29): CMake 3.28<br> - Ubuntu 26.04 LTS =C2=A0 =C2=A0 =C2=A0 (supported until May 20= 31): CMake 4.2<br> - RHEL 8 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 (supported until May 2029): CMake 3.26<br> - RHEL 9 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 (supported until May 2032): CMake 3.31<br> - RHEL 10 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0(supported until May 2035): CMake 3.31<br> </span><br> </div> <div>The same information sorted by CMake version:</div> <span style=3D"font-family:monospace">- Visual Studio 2017 =C2=A0 = =C2=A0 (supported until Apr 2027): CMake 3.6<br> </span> <span style=3D"font-family:monospace">- Debian 11 "bullseye&qu= ot; =C2=A0 (supported until Aug 2026): CMake 3.18<br> </span><span style=3D"font-family:monospace">- Visual Studio 2019 =C2=A0 =C2=A0 (supported until Apr 2029): CMake 3.20<br> - Ubuntu 22.04 LTS =C2=A0 =C2=A0 =C2=A0 (supported until May 2027= ): CMake 3.22<br> </span> <span style=3D"font-family:monospace">- Debian 12 "bookworm&qu= ot; =C2=A0 (supported until Jun 2028): CMake 3.25<br> </span> <span style=3D"font-family:monospace">- RHEL 8 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (supported until May 2029): CMake 3.26<br> </span><span style=3D"font-family:monospace">- Ubuntu 24.04 LTS =C2= =A0 =C2=A0 =C2=A0 (supported until May 2029): CMake 3.28<br> </span> <span style=3D"font-family:monospace">- Visual Studio 2022 =C2=A0 = =C2=A0 (supported until Jan 2032): CMake 3.31<br> </span> <span style=3D"font-family:monospace">- RHEL 9 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (supported until May 2032): CMake 3.31<br> - RHEL 10 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= (supported until May 2035): CMake 3.31<br> </span> <span style=3D"font-family:monospace">- Debian 13 "trixie"= ; =C2=A0 =C2=A0 (supported until Aug 2030): CMake 3.31<br> </span> <span style=3D"font-family:monospace">- Ubuntu 26.04 LTS =C2=A0 =C2= =A0 =C2=A0 (supported until May 2031): CMake 4.2<br> </span> <span style=3D"font-family:monospace">- Visual Studio 2026 =C2=A0 = =C2=A0 (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></div></blockquo= te><br></div><div class=3D"gmail_quote gmail_quote_container">There is an a= dvanced option in the UI that allows using a custom CMake executable [1]. I= t's hidden and not too intuitive, but using a different version is supp= orted and documented.<br><br>[1]: <a href=3D"https://learn.microsoft.com/en= -us/cpp/build/customize-cmake-settings?view=3Dmsvc-170#cmake-executable">ht= tps://learn.microsoft.com/en-us/cpp/build/customize-cmake-settings?view=3Dm= svc-170#cmake-executable</a></div><div class=3D"gmail_quote gmail_quote_con= tainer"><br></div><span class=3D"gmail_signature_prefix">-- </span><br><div= dir=3D"ltr" class=3D"gmail_signature">Ivan Zhakov</div></div> --000000000000931027065795d268--