New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Build failure with cmake 3.19.2 #12920
Comments
@dfandrich: This syntax was in fact introduced a few commits earlier in ea0b575 (not by me). It's a new here that someone must be pointed out by name to be "at fault"! |
These still have nothing to do with the introduction of the breaking CMake syntax. It's trivial to look up when it was introduced:
|
The reason you are not seeing the problem earlier, is because my "at fault" (your wording) commit made the libcurl manual option to work by default (that is without having to manually enable building the curl manual too with another option). But, given the necessary options, you'd see the same issue after the initial commit. |
Makes, sense and what I was hedging about with "without specifying any build options". @levitte, is there an alternate way of doing this that works on older cmake? |
Can we do something in the builds/CI to detect when we rely on too new cmake features? |
A generator expression was added, that was a bit too modern. Forunately, a foreach() loop can produce the same result relatively easily. Fixes curl#12920
It was quite easy to replace the generator expression with a loop. Isn't quite as nice, but should be workable much further back in CMake versions. This has me wonder if I should have a container in place with an old CMake, just to test this sort of thing (no, not just for curl...) Anyway, fix in #12922 |
It's probably possible to install a cmake package with an appropriately old version. Question is, how far back do the package repositories go? That being said, this can also be solved, by having a package repository of your own with suitably old stuff and try to install from that [yeah, cringe, and unsure if that's actually possible], or self-host a runner (for those CIs that permit it), again with suitably old stuff [yeah, cringe]. |
These are the versions in currently-supported LTS distros:
3.28.1: OpenSUSE Leap 15.6
3.20.2: CentOS 8
3.18.4: Debian 10/buster (a.k.a. oldstable)
3.17.0: SUSE SLE-12-SP5
3.16.3: Ubuntu 20.04LTS
3.10.2: Ubuntu 18.04ELTS
3.7.2: Debian 9/stretch (ELTS, so very limited support)
3.5.1: Ubuntu 16.04ELTS
3.0.2: Debian 8/jessie (ELTS, so very limited support)
2.8.12: CentOS 7
It looks like Debian stretch has the closest to what we want, namely exactly the
oldest version we support. Debian ELTS gives very limited support, but for our
purposes of building something and not running it on the live Internet in a
production capacity, it should be sufficient:
https://wiki.debian.org/LTS/Extended
I just tried setting up a Debian 9 container with ELTS packages (with cmake
3.7.2) and it worked fine with docs disabled. With docs enabled and PR#12922
applied, it failed because of another LIST:TRANSFORM elsewhere. But this looks
like a viable approach.
|
A generator expression was added, that was a bit too modern. Forunately, a foreach() loop can produce the same result relatively easily. Fixes curl#12920
A generator expression was added in some CMakeLists.txts, that was a bit too modern. Forunately, a foreach() loop can produce the same result relatively easily. Fixes curl#12920
A generator expression was added in some CMakeLists.txts, that was a bit too modern. Forunately, a foreach() loop can produce the same result relatively easily. Fixes curl#12920
The CMake syntax was a bit too new for our toolchain's CMake. The following patch was backported: curl/curl@b2497a8 Relevant issue: curl/curl#12920 As soon as the fix lands in the next curl version, we can remove this patch again. :^)
The CMake syntax was a bit too new for our toolchain's CMake. The following patch was backported: curl/curl@b2497a8 Relevant issue: curl/curl#12920 As soon as the fix lands in the next curl version, we can remove this patch again. :^)
I worked around this using the BUILD_LIBCURL_DOCS=OFF CMake option |
I did this
Trying to configure 8.6.0 (or master) using cmake 3.19.2 results in the error:
Bisecting shows commit a808aab is at fault. This version of cmake is only a couple of years old and the documentation says cmake 3.7 is the earliest supported version, so I would expect this to work.I expected the following
cmake should run without error.
curl/libcurl version
curl 8.6.0
operating system
Linux x86_64
The text was updated successfully, but these errors were encountered: