-
Notifications
You must be signed in to change notification settings - Fork 157
manylinux-policy: allow glibc component libanl #607
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
Conversation
libanl was addedd to resolv in glibc 2.2.5 in 2001 to support async dns queries. It uses private GLIBC symbols, thus to ensure it works with higher glibc runtime versions, it must be shared linked and should not be vendored into the wheels. (similar to libdl / dlopen) In 2021 with glibc 2.34 similar to many other split libraries, libanl got folded into libc itself, and thus any applications that use async dns queries no longer gain libanl NEEDED shared library dependency with a stub remaining in place. (similar to libdl / libpthread etc). Thus for policies between 2.2.5 and 2.33 there is a need to allow list libanl, for example when vendoring modern builds of icu. Longer term, it would be interested to support dropping libraries, because policies built to manylinux 2.34 policy really should no longer link with libanl / libdl / libpthread etc. As in all of those libraries have now become no-op stubs.
libanl is a glibc component between versions 2.2.5 and 2.33, which should be allowed by default in those older policies. Newer builds do not gain such a dependency, as libanl got folded into libc itself, but it is harmless. Cherry-picked from: - pypa/auditwheel#607
libanl is a glibc component between versions 2.2.5 and 2.33, which should be allowed by default in those older policies. Newer builds do not gain such a dependency, as libanl got folded into libc itself, but it is harmless. Cherry-picked from: - pypa/auditwheel#607
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #607 +/- ##
=======================================
Coverage 92.83% 92.83%
=======================================
Files 21 21
Lines 1772 1772
Branches 333 333
=======================================
Hits 1645 1645
Misses 77 77
Partials 50 50 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds the libanl.so.1
library to the manylinux policy whitelists across all policy versions to support async DNS queries. The libanl library was added to glibc 2.2.5 in 2001 for asynchronous DNS resolution and was later folded into libc itself in glibc 2.34 (2021).
- Adds
libanl.so.1
to library whitelists for all manylinux policy versions - Enables proper handling of async DNS query dependencies in wheel builds
- Addresses compatibility requirements for libraries like ICU that use modern async DNS functionality
libanl is a glibc component between versions 2.2.5 and 2.33, which should be allowed by default in those older policies. Newer builds do not gain such a dependency, as libanl got folded into libc itself, but it is harmless. Cherry-picked from: - pypa/auditwheel#607
Thanks for the details @xnox |
libanl was addedd to resolv in glibc 2.2.5 in 2001 to support async
dns queries.
It uses private GLIBC symbols, thus to ensure it works with higher
glibc runtime versions, it must be shared linked and should not be
vendored into the wheels. (similar to libdl / dlopen)
In 2021 with glibc 2.34 similar to many other split libraries, libanl
got folded into libc itself, and thus any applications that use async
dns queries no longer gain libanl NEEDED shared library dependency
with a stub remaining in place. (similar to libdl / libpthread etc).
Thus for policies between 2.2.5 and 2.33 there is a need to allow list
libanl, for example when vendoring modern builds of icu.
Longer term, it would be interested to support dropping libraries,
because policies built to manylinux 2.34 policy really should no
longer link with libanl / libdl / libpthread etc. As in all of those
libraries have now become no-op stubs.