|
Boost : |
From: Jeff Trull (linmodemstudent_at_[hidden])
Date: 2024-12-10 14:50:09
You have saved me and many others hours of work. Thank you.
On Mon, Dec 9, 2024 at 11:04â¯AM 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
>
> _______________________________________________
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost
>
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk