-
Notifications
You must be signed in to change notification settings - Fork 3.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ubuntu-18.04 is too intruisive - forcing non compatible libstdc++ by default for c++ #3432
Comments
Hello @Milerius, |
I understand but 11.1.0 break the ABI, should not replace the default libstdc++ and break existing actions too ! Thanks for the response looking forward |
@Milerius a small question — does GCC 10 also breaks the ABI or it's safe to leave version 10 on the image? |
I think the maximum version of 18.04 should be GCC 8.4, and on 20.04 GCC 10 according to official Ubuntu release GCC 8.1.0: GLIBCXX_3.4.25, CXXABI_1.3.11 GCC 9.1.0: GLIBCXX_3.4.26, CXXABI_1.3.12 GCC 9.2.0: GLIBCXX_3.4.27, CXXABI_1.3.12 GCC 9.3.0: GLIBCXX_3.4.28, CXXABI_1.3.12 GCC 10.1.0: GLIBCXX_3.4.28, CXXABI_1.3.12 GCC 11.1.0: GLIBCXX_3.4.29, CXXABI_1.3.13 If you look at: https://packages.ubuntu.com/bionic/libstdc++6 You have the default version shipped for each Ubuntu distribution |
In #3376, a workaround has been suggested:
This deals with the header problem. It works well if you don't distribute built binaries to users. If you do distribute built binaries to users, and you expect the binaries to run Ubuntu 18.04, there is one more step to deal with the lib problem:
You have to manually downgrade the C++ standard library. Unfortunately,
This again demonstrated how ugly the issue is. Feel free to share a way that allows the downgrade to happen without explicit version number. |
Recently it comes to my attention that Github Actions image installs experimental C++ standard library from an unsupported PPA, which effectively breaks assumptions of binary compatibility for the OS (in this case, Ubuntu 18.04+). Unfortunately, as a result, the Github Actions environment can no longer be trusted to compile proper binaries. This change adds a Dockerfile that composes a proper Ubuntu 18.04 environment from official "ubuntu:bionic" image, and builds Node binaries in it. Bug: actions/runner-images#3432
Recently it comes to my attention that Github Actions image installs experimental C++ standard library from an unsupported PPA, which effectively breaks assumptions of binary compatibility for the OS (in this case, Ubuntu 18.04+). Unfortunately, as a result, the Github Actions environment can no longer be trusted to compile proper binaries. This change adds a Dockerfile that composes a proper Ubuntu 18.04 environment from official "ubuntu:bionic" image, and builds Node binaries in it. Bug: actions/runner-images#3432
Thanks for the info @jesec !
I get the error:
It seems related to the "--no-remove" flag, but since you got it working, I'm not sure. |
The flag is there to prevent accidental removal of libstdc++, as any C++ program will immediately break (incl. OS ones like Oops. It seems that on 18.04 the GCC 10 depends on libs from experimental PPA as well... You have to remove GCC 10 as well in the previous ( and maybe also 9... |
The updated snippet seems to work well, and the max version is now back to GLIBCXX_3.4.25.
Thanks for the help! |
Hey! Ubuntu images without GCC 11 were fully deployed. |
Description
If you go start a fresh ubuntu 18.04 machine you should have the following:
However on your machine we got:
with
GLIBCXX_3.4.29
-> https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html -> break abi forcing end user that download a app that have been build on github actions to have gcc 11.1.0 installeddue to
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep "GLIBCXX"
Please do not force such intruisive behaviour by default, every appimage that build on your VM 18.04 force user to atleast have gcc 11.1.0 or ubuntu hirsute
for infos: https://packages.ubuntu.com/bionic/libstdc++6 -> gcc 8.4.0 not gcc 11.1.0, if user want the last gcc, they should use the last ubuntu image, not the 18.04
Area for Triage:
Question, Bug, or Feature?:
Bug
Virtual environments affected
Expected behavior
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep "GLIBCXX"
should returnGLIBCXX_3.4.25 GLIBCXX_3.4.26
Maximum, not GLIBCXX_3.4.29Actual behavior
A simple appimage build on 18.04 will produce the following behaviour:
Repro steps
Build an appimage with last version of clang using libstdc++ will produce the above error
The text was updated successfully, but these errors were encountered: