CI on bleeding-edge compilers was mentioned in the Beman evening session. I have solved that problem for myself and I am very happy with how it turned out. I’m happy to collaborate / migrate if this is a fit for Beman.
Any dockerfile which is a variation of “<Linux Distro> + <Package Manager Commands>” will run into this problem at one point or another. It used to be all the world was a VAX, but in 2025 we’ve evolved, all the world is a Ubuntu 24.04 box.
You need a generic solution built around either pre-built tarballs or pulling from source, that’s the end state for every “we want to test everything” container set. For example, if you look at Docker’s official dockerfiles for gcc that’s how it’s done.
You use Debian-whatever as a bootstrap and then build what you need from source tarballs downloaded from upstream. Of course, that’s some work, and it’s appropriate to evaluate if “we want to test on everything” is a real goal.
Sorry for not replying earlier. (too much going on)
My suggestion would be to add a latest cmake into the base image and thus have it available in all the other images.
I don’t think it’d be reasonable to drop the default cmake, because it’s useful to test with the default tools users have installed.
Is a newer ninja necessary?
Anyway, I now pull cmake 4.0.3 into the base image and rebuilt all images on top of that.
That’s the right answer. For name module support (eg: Beman libraries exporting their api as a module) we need at least 3.85 (or something like that). For experimental import std support we need cmake 4. So 4.0.3 is perfect.