Repository navigation
Build failure with cmake 3.19.2 #12920
Description
Activity
@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:
$ git log -S 'LIST:TRANSFORM' commit ea0b575dab86a3c44dd1d547dc500276266aa382 [...]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?
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
Can we do something in the builds/CI to detect when we rely on too new cmake features?
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.Reacted by Viktor Szakats and Marcel Raad
- added a commit that references this issue
on Feb 18, 2024 - added 2 commits that reference this issue
on Feb 21, 2024 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