<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Mar 25, 2020, at 12:00, Tom Stellard <<a href="mailto:tstellar@redhat.com" class="">tstellar@redhat.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">On 03/25/2020 06:20 AM, Louis Dionne wrote:</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class=""><br class=""><blockquote type="cite" class="">On Mar 25, 2020, at 00:47, Tom Stellard <<a href="mailto:tstellar@redhat.com" class="">tstellar@redhat.com</a>> wrote:<br class=""><br class="">On 03/24/2020 09:00 PM, Petr Hosek via llvm-dev wrote:<br class=""><blockquote type="cite" class="">In October, there was a discussion about updating CMake to 3.15: <a href="http://lists.llvm.org/pipermail/llvm-dev/2019-October/136295.html" class="">http://lists.llvm.org/pipermail/llvm-dev/2019-October/136295.html</a>. No decision was made, but maybe we should revisit that proposal? If we're going to require a newer version of CMake for some subprojects, I'd prefer to bump the minimum CMake version for all of LLVM.<br class=""></blockquote></blockquote><br class="">My personal opinion is that there's a tendency to view all subprojects under the LLVM umbrella as a single, monolithic project. That leads to the desire to make decisions for the whole project, which is often difficult, as opposed to making the right decision for each subproject, which is often easier. This results on subprojects being blocked from doing the right thing for them, like we've seen happen for pre-commit CI. But that's a much larger (non-technical) discussion than the scope of a simple CMake version bump.<br class=""><br class="">Let's try to bump CMake for all of LLVM and see how that goes.<br class=""><br class=""><blockquote type="cite" class="">Yes, I agree we should bump the version for all of LLVM, but I don't<br class="">think we should bump the version without a long-term cmake usage plan.<br class="">e.g. something like: After every release branch, we bump the cmake version<br class="">to whatever version of cmake is X months old.<br class=""><br class="">I think the concern that this was our one chance to bump the CMake version<br class="">led to the choice of 3.15 as the next version, which would be too new for some Linux distros.<br class="">I think if we had a planned upgrade path, it would be easier for those of us that<br class="">want something really new to settle on a release that is a little bit older.<br class=""></blockquote><br class="">Ok, how about the following policy:<br class=""><br class=""> After every release branch, we bump the CMake version to whatever version of CMake is 12 months old.<br class=""><br class="">This is simple, straightforward, and it gives a full year of old CMakes being supported. If we did this right now, this would take us to CMake 3.14.0, released around March 14th, 2019 (<a href="https://github.com/Kitware/CMake/releases/tag/v3.14.0" class="">https://github.com/Kitware/CMake/releases/tag/v3.14.0</a>). I believe the expectation should be that recent CMakes are upgraded using some package manager or download from the site -- we can't really expect the CMake version to be the one provided by the system, because that is either non-existent or very old on most Linux distributions AFAICT. Fortunately, installing a new CMake is incredibly easy.<br class=""><br class="">Is everybody OK with the above policy? What would be the preferred place to document it?<br class=""><br class=""></blockquote><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">12 months is fine with me.</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">I'm not sure the best place to document the policy.  Some suggestions are here:</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><a href="https://llvm.org/docs/CMake.html" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">https://llvm.org/docs/CMake.html</a><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class=""><span class="Apple-converted-space"> </span>or in the Programmer's manual.</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""></div></blockquote><div><br class=""></div><div>Okay, so assuming nobody objects to this, the process would then be:</div><div>- I put up a Phabricator review updating the documentation and the `cmake_minimum_required` fields for (all?) LLVM projects I can find.</div><div>- I wait for <some amount of time> before committing the change for build bot owners to update their CMake</div><div>- I commit the change -- at that point using a too-old CMake will error out and we can point any remaining failing bot to the policy</div><div><br class=""></div><div>Does that sound like a reasonable plan? What should be the <some amount of time>? I'd suggest something like two weeks to give folks ample time to update builders.</div><div><br class=""></div><div>Louis</div><br class=""><blockquote type="cite" class=""><div class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">-Tom</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">Cheers,<br class="">Louis<br class=""><br class=""><blockquote type="cite" class=""><blockquote type="cite" class="">On Tue, Mar 24, 2020 at 8:11 PM Louis Dionne via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a> <<a href="mailto:llvm-dev@lists.llvm.org" class="">mailto:llvm-dev@lists.llvm.org</a>>> wrote:<br class=""><br class="">  Hi,<br class=""><br class="">  The minimum CMake version currently advertised for libc++ and libc++abi is currently 3.4.3. I think the oldest version of CMake actually being tested on any builder is 3.7.0, so advertising 3.4.3 is somewhat of a lie (I'm pretty sure we're using features that require a more recent version already). However, we do need to bump it to 3.8.0 at least because CMake 3.7 doesn't know about C++17 in its compilation features, and we'll need that to build libc++ properly going forward. This will mean for bot owners:<br class="">  1. They need to upgrade CMake on the builders to at least 3.8.0 (which is really easy), or<br class="">  2. they can disable processing of libc++ and libc++abi's CMake files by making sure they do not appear in LLVM_ENABLE_PROJECTS<br class=""><br class="">  Any objections?<br class=""><br class="">  Cheers,<br class="">  Louis<br class=""><br class="">  _______________________________________________<br class="">  LLVM Developers mailing list<br class="">  <a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a> <<a href="mailto:llvm-dev@lists.llvm.org" class="">mailto:llvm-dev@lists.llvm.org</a>><br class="">  <a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br class=""><br class=""><br class=""><br class="">_______________________________________________<br class="">LLVM Developers mailing list<br class=""><a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a><br class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</blockquote></blockquote></blockquote></div></blockquote></div><br class=""></body></html>