When we copy the whole boost-root AFTER the build(s) it will contain
also build artefacts such as the bin.v2 folder.
When restoring that later B2 might skip parts of the build although it
should not.
Make a copy after the initial setup & bootstrap.
Instead of cloning the Boost main repository and later potentially many
submodules (by `depinst.py`) we can cache the last checkout.
On any changes the checkout-and-pull should update it to the appropriate
version.
- Add macos-15
- Move gcc-10+ to 22.04
- Move coverage from gcc-8 to gcc-13 and build with cxxstd 03,2b
- Move coverity to clang-12 and build with cxxstd 03,20
- Remove ubuntu-24.04 container, use 24.04 runner
- Remove redundant libc++ clang-12 build
- Deal with clang-17 incompatibility with libstdc++-13 with cxxstd 2b/23
GitHub actions now requires Node 20 which doesn't work with the old
GLibc version in those containers.
Drop them which means dropping:
- GCC < 7
- Clang < 6
There are failures like
> Adding repository ppa:ubuntu-toolchain-r/test
> Error: retrieving gpg key timed out.
So add an intermediate update to avoid this.
Homebrew is no longer supported on MacOS 11 and installing ccache takes too long (which is described in the "non-support-message" as possibly expected)
Avoid errors like
> /__e/node20/bin/node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by /__e/node20/bin/node)
when using Ubuntu 16/18 containers with the @v4 actions
See https://github.com/actions/checkout/issues/1590
The `sudo` doesn't apply to the redirection of the stdout
so if the invoking user isn't allowed to write to the file the command will fail with "permission denied".
Use the `-o`-parameter to `gpg` instead.
As pointed out by @sdarwin multiple values in `B2_DEFINES` led to a failing build as the scripts only supported a single value for the "new" var usages.
This is a regression from the old usage where `B2_DEFINES: define=FOO=1 define=BAR=2` could be used.
This is now fixed by a small parser function which generates multiple `define=*` entries and additionally now also supports spaces in the define values.
Same is done for `B2_INCLUDE` which has the same issue.
Also includes the change to the CI script from #177 and an additional test in test.cpp to verify that this works.
Collecting coverage data on Windows is VERY expensive (takes long).
So only do a 64-bit build with latest standard on msvc-14.3 by default.
Library authors can change that if required.