Reworked extra package installation and added explicit specification
of external package sources. Moved some common constants to environment
variables. Removed installation of unneeded packages in the containers.
The Ubuntu 16.04 environment is scheduled to be removed from GitHub Actions
in September 2021. Migrate those jobs to Docker containers or Ubuntu 18.04.
Also, added some older compilers. Ported CMake tests from Travis CI.
Based on https://github.com/boostorg/core/pull/95.
Closes https://github.com/boostorg/core/pull/95.
Removing gcc and libstdc++ packages did not fix the clang-8 test failures.
Instead, setup a dummy gcc toolset tree and point clang to it to force
the compiler detect and use an older libstdc++.
This is another attempt to make clang-8 tests not fail in C++20 mode. Remove
gcc-10 and libstdc++-10 to prevent clang using it.
Also, use apt-get instead of apt since the former is recommended to use in
scripts. This should silence apt warnings.
clang-8 jobs fail in C++20 mode since it doesn't support
std::is_constant_evaluated, which is called from libstdc++-10 that is installed
in Focal image. Moving it back to Bionic should work around the issue
as it should use an older libstdc++ version.
gcc-10 and 11 were moved to Focal just to make this configuration tested.
Also, changed 2a to 20 for compilers that support this.