|
Boost : |
From: Matt Borland (matt_at_[hidden])
Date: 2024-12-09 19:10:38
On Monday, December 9th, 2024 at 2:04 PM, Alexander Grund via Boost <boost_at_[hidden]> wrote:
>
>
> Dear maintainers,
>
>
> I made a bunch of PRs to fix the Github Actions CI for almost 40 repositories.
> Opening a PR in GitHub is manual work while I was able to apply similar changes over all those repositories using a script which commits to a single branch (and hence PR) per repo. Hence the PRs contain a few related changes that in combination allow the CI to pass again.
>
>
> To avoid repeating this in each PR I wanted to shortly explain the changes here:
>
>
> 1. macos-12 runners are dropped by github and jobs won't start anymore. at least macos-13 needs to be used
>
> 2. Ubuntu 23.* doesn't work anymore as e.g. some APT repositories don't exist anymore. Ubuntu 24.04 can be used instead
> 3. clang 17 (and partly 16) don't work in C++23/2b mode with the stdlibc++ (12) installed on ubuntu 24.04, clang 18+ and/or the other C++ standards can still be used
> 4. Support for Node 16 was recently fully dropped by Github Actions so the @v3 actions must be upgraded to @v4, which require Node 20. The workaround using $ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION has no effect anymore
> 5. The node 20 version available by default conflicts with the glibc version in the Ubuntu 16/18 container images used for testing older compilers.
>
>
> I addressed all of them with last one being the major one:
> Installing a compatible version inside a custom image to be used instead doesn't work because GHA mounts the node 20 installation from the host os.
>
> The solution I implemented downloads an unofficial node 20 built against the correct/older glibc and creates 2 mount points such that we can put that node onto the host runner and mount that instead of what github gives us using the idea from https://github.com/dixyes/ghactionsplay/blob/bf889ee2fed8dcd72cc8e32bfd4789be177c958f/.github/workflows/glibc217node20.yml
> To avoid overloading the unofficial-builds.nodejs.org server we use a copy hosted at boost.io
>
> Download and extraction requires curl and xz-utils to be installed which I added where required.
>
> Additionally I noticed additional failures due to use of C++03 where the dependencies require C++11, or of C++0x using GCC < 4.9 where e.g. C++11 `alignof`, required by the Boost.SmartPtr dependency, is not available.
> For (only) those I removed the C++03 and/or GCC 4.7/4.8 jobs (which cannot succeed).
>
> I think combining those changes into a single PR avoids a lot of additional manual work by me and allows to verify that the changes are sufficient to make CI pass again. Keeping e.g. C++03 builds, that cannot succeed due to dependencies, makes verifying the success of the Node 20 fix harder/less clear
>
>
> If anyone prefers to separate those changes into multiple PRs please mention that in the relevant PR for me to keep track of, or cherry-pick the individual changes. However it might be sufficient to check the status of the CI for the individual commits to compare the state (success/failure) for the jobs fixed or removed by the next commit.
>
>
> I realize maintaining the CI is a PITA and hope this helps.
>
> Regards,
> Alex
>
Alex,
Thank you for the explanation and hard work on this. It is certainly appreciated.
Matt
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk