Skip to content
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

fix: don't require glibc 2.29+ on linux arm64 builds #34491

Merged
merged 2 commits into from Jun 10, 2022
Merged

Conversation

jkleinsc
Copy link
Contributor

@jkleinsc jkleinsc commented Jun 9, 2022

Description of Change

When we updated our sysroots in #33557 as part of the Chromium roll to 102.0.4989.0, it introduced a new dependency in linux arm64 builds to use glibc 2.29 or greater. Since there are supported versions of linux distros (eg Ubuntu 18.04) that do not have access to this version of glibc, Electron no longer works in those versions.

This PR reverts the sysroot for linux arm64 only to the older sysroot as this issue only affects linux arm64 (linux x64 and armv7 are unaffected).

Checklist

Release Notes

Notes: Fixed linux arm64 builds to not require glibc 2.29+

@electron-cation electron-cation bot added the new-pr 🌱 PR opened in the last 24 hours label Jun 9, 2022
Copy link
Member

@VerteDinde VerteDinde left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

@jkleinsc jkleinsc added the semver/patch backwards-compatible bug fixes label Jun 9, 2022
@cobalt2727
Copy link

Thank you!

@deepak1556
Copy link
Member

@jkleinsc https://bugs.chromium.org/p/chromium/issues/detail?id=1309965 addresses the issue by disabling the newer glibc symbols, I would recommend to backport the version rewriter script to our sysroot creator repo.

@electron-cation electron-cation bot removed the new-pr 🌱 PR opened in the last 24 hours label Jun 10, 2022
@jkleinsc
Copy link
Contributor Author

@deepak1556 the latest sysroots that we generated have those script changes and it in fact appears that the latest revision, https://chromium.googlesource.com/chromium/src/+/f6901be733e76832721ad7fb8d4d51715df77095, explicitly disables symbol reversioning for ARM64, which is probably the source of the issue and the reason we don't see it happening on other arches.

The reason for disabling symbol reversioning for ARM64 is as follows per the comments:

Skip reversion_glibc.py. Glibc is compiled in a way where many libm math
functions do not have compatibility symbols for versions <= 2.17.

@jkleinsc jkleinsc merged commit bd81ae0 into main Jun 10, 2022
@jkleinsc jkleinsc deleted the arm64-glibc-fix branch June 10, 2022 18:15
@release-clerk
Copy link

release-clerk bot commented Jun 10, 2022

Release Notes Persisted

Fixed linux arm64 builds to not require glibc 2.29+

@trop
Copy link
Contributor

trop bot commented Jun 10, 2022

I have automatically backported this PR to "19-x-y", please check out #34502

@trop
Copy link
Contributor

trop bot commented Jun 10, 2022

I have automatically backported this PR to "20-x-y", please check out #34503

@deepak1556
Copy link
Member

Sorry I was looking at the sid branch from https://github.com/electron/debian-sysroot-image-creator earlier.

The upstream CL was reverted to avoid compile failures for their ChromeOS arm64 bot. What happens if we run the reversion script for arm64, if there are no compile errors then we should be good to keep the change in. I will setup a branch to verify this.

@theofficialgman
Copy link

theofficialgman commented Jun 10, 2022

I have tested the artifacts on arm64 linux bionic and can confirm it does work now (everything linked to glibc 2.17 only) https://app.circleci.com/pipelines/github/electron/electron/54402/workflows/fb4abab7-0486-4a4b-96ac-01bf197fa1b8/jobs/1243065/artifacts

I can test deepak1556's branch if necessary as well once that gets made

@deepak1556
Copy link
Member

@theofficialgman can you try the arm64 builds from https://app.circleci.com/pipelines/github/electron/electron/54496/workflows/ac4ef834-90d8-46a1-9228-69ce59a36f21/jobs/1245054/artifacts which uses bullseye for sysroot with reversioned libm symbols. Thanks!

@theofficialgman
Copy link

@theofficialgman can you try the arm64 builds from https://app.circleci.com/pipelines/github/electron/electron/54496/workflows/ac4ef834-90d8-46a1-9228-69ce59a36f21/jobs/1245054/artifacts which uses bullseye for sysroot with reversioned libm symbols. Thanks!

@deepak1556
everything re-versioned fine in that build. tested with fiddle and works fine.

@deepak1556
Copy link
Member

Thanks for confirming!

@defunctzombie
Copy link

Is there a process to request a new patch release for the v19 major version? I see this has been backported to the 19-x-y branch but no new release has been cut with this fix yet.

@theofficialgman
Copy link

I would also like this released @sudowoodo-release-bot[bot] generated the artifacts for 19.0.6 but hasn't published them

@jkleinsc jkleinsc mentioned this pull request Nov 3, 2022
3 tasks
khalwa pushed a commit to solarwindscloud/electron that referenced this pull request Feb 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
semver/patch backwards-compatible bug fixes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Bug]: Electron 19.x.y and main require Glibc 2.29+ on arm64
6 participants