Fix compatibility with current GNU Make (and Ubuntu 26.04)#4929
Conversation
|
This still doesn't fix 26.04, because the compiler there doesn't like something in libelf: |
|
This will need vgteam/structures#15 and vgteam/libbdsg#242 |
|
I don't think we'll be able to get the Docker build logs from CI without fixing or working around greg7mdp/sparsepp#98. When I run the Docker build locally on my Mac I get a complaint at the final link step that there's something wring with This happens even if I stick a |
|
If we want the Docker to ship a static binary, which we pull out and use for our static ARM release and for putting in a new, smaller Docker container, then we can't upgrade past 22.04 until https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1104888 is fixed and shipped in an Ubuntu release, since in 24.04 and on Ubuntu no longer packages a Or else we need to pull in Cairo as a submodule or otherwise provide a source build of Cairo for the Docker container. |
|
OK I have no idea why the docs build job can't find vgteam/libbdsg@5429995 which is merged in over there. And it looks like the updated libelf is not happy back on 22.04? I will have to come back to this. |
This still doesn't work for a static build on the same system, because when Cairo calls into pixman to try and draw a png, it crashes because its thread-local storage is not there. Something is wrong with thread-local storage when loading the synamic libc on top of the existing static libc, somehow. The code to dynamically load Cairo works fine when libc itself is dynamically linked. But there's no way to build for a dynamically-linked libc from a system with a newer libc than the one you want to run on; glibc can't do this. Also when you dlopen and the wrong libc.so is there it does exciting signals instead of giving you a null result like dlopen is meant to do when it doesn't work, so you can't actually poll for the right libc at runtime.
This partly reverts 8732a33 and recursively clones all the submodules at the start of the docs build, which *should* play more nicely with whatever Gitlab is doing to the Git config.
|
I have finally fixed the docs job, but my approach makes the docs job almost twice as long as the fix in #4870. So we probably want to use that one when they conflict. |
|
There's still a problem where the Meson in the CI base image is too old to build Cairo/pixman. I think I need to also switch the CI prebake image over to a newer Ubuntu. |
Changelog Entry
To be copied to the draft changelog by merger:
make get-deps.Description
GNU Make removed the hack we were using to run a rule at Makefile startup (claiming that it would generate an include-able Makefile fragment, marking it
.PHONYso it would always run, and telling Make not to complain if the file to be included didn't exist). It's not mentioned in the project'sNEWSfile, but it happened between 4.3 and 4.4.1.This converts half of that target to
$(shell )calls (the half that needs a bunch of Make-level variables), and the other half to a shell script (the half where we need to enforce success).