Boost logo

Boost :

From: Alexander Grund (alexander.grund_at_[hidden])
Date: 2024-08-28 07:50:38


Am 27.08.24 um 19:10 schrieb Jeff Trull via Boost:
> It looks like the version of glibc in some of the old Ubuntu containers,
> which are required to compile against old versions of gcc,
> is incompatible with the Node executable that runs actions/checkout_at_v2 (and
> 3 and 4). You might see errors like this:

Some more details/context:

actions/cache_at_v3 can be used instead of the v2 as it is (likely) a small
improvement although I forgot by now what they did.
Both have the same restriction in that they don't run in Node 20.
actions/cache_at_v4 should be used where possible, i.e. where Node 20 is
available.

The GLIBC issue appears when using the `container` feature in the Github
Actions yaml with Ubuntu 16.04 & 18.04.

Newer Ubuntu versions are available as runner images directly, i.e. `os:
ubuntu-20.04`. Those should be preferred if the required compiler
packages are available.
Going forward I hope we can drop the container jobs someday as the
compilers tested (only) there become ancient.
(GCC 7 is in Ubuntu 20, GCC 14 is the latest release, for Clang it is
Clang 8 with Clang 18 being the latest release)

I'd also like to suggest to take inspiration of the templates in Boost.CI:
https://github.com/boostorg/boost-ci/blob/master/.github/workflows/ci.yml

The relevant workaround for the glibc issue is here:
https://github.com/boostorg/boost-ci/blob/0e4bc4d58c45a3bad2eba054eafdaaef7b8275a4/.github/workflows/ci.yml#L146-L152
There I even went a step further and conditionally use
actions/checkout_at_v3 or actions/checkout_at_v4
to avoid deprecation warnings and IIRC the newer versions have some
reliability improvements.

>> Is there a fix other than "rewrite using manual
>> checkout"?
>> [...]
>> env:
>> ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
>>
>> Though it seems unwise to rely on in the long run.
> The only solution I know of is to stop using actions/checkout (or
> anything actions/* really).
I do prefer the declarative approach of using the actions instead of
manual commands.
Especially not having to specify some parameters like the repository or
fetch-depth is convenient.
So `- uses: actions/checkout_at_v4` was a nice and clean way to do the
cloning without any "noise".
Of course this has changed due to this breakage and a manual clone step
might be easier, especially if they completely drop the support for the
workaround
before we drop support of the old compilers.
However the `actions/cache` action for use with ccache to speed up CI
runs is highly useful to me and could not be easily replaced.
I also found other actions, such as `codecov/codecov-action_at_v4` to be
more reliable than the manual approach as they seemingly
include logic to gracefully handle temporary issues such as network
timeouts.
IIRC the checkout action has something like that too.

In the end it's a trade-off like everything else and needs a decision by
the respective maintainers.

Happy CI testing!




Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk