$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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