-
Notifications
You must be signed in to change notification settings - Fork 150
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
musllinux mess potential solution #349
Comments
For me the solution of providing a compatibility symlink is the most lightweight:
I agree with you that releasing an 1_2 standard for this issue is the wrong thing to do. One issue might be that storing symlinks in zip archives is not supported by the zipfile module (https://bugs.python.org/issue18595, https://bugs.python.org/issue27318) . It is supported by the Why zip was chosen as format for the whl archive, instead of tar.gz, goes below my understanding. It must be for compatibility with MSDOS. |
Ouch. Adding a copy of the library would likely not affect the zip size much (duplicated data - at least ideally it wouldn't), but would double the unpacked size. Can pip do processing like this on install? A wheel install is famously just a copy operation (though pip does process it for creating the Manylinux isn't a "build tool", it's just an environment - producing Now that SDists are always tar.gz, I don't know why wheels are zips, but yes, probably historical. :) |
Attacking the problem at pip level seems very simple:
|
Hmm, |
I see. However pip is probably still the best tool to create the symlink. The minimal amount to work would be to create a |
Auditwheel seems to have no power to solve the problem, unless it can inject a post-install script for pip to handle? If not it would be better to close this and think about the pip solution (pypa/pip#10678). |
There is no "post-install" for wheels, for security and reproducibility reasons. (There's a massive thread on this somewhere). Auditwheel could still always correct this to -musl. Moving to the correct solution then working on providing a way to keep old software working would be best? However, this can also be fixed in manylinux. I'd wait and let a few experts weigh in. |
From the latest updates in pypa/cibuildwheel#934
Now that Alpine is patched & while waiting for CPython 3.11, I think the most pressing issue for auditwheel is to enforce abi3 wheels were not impacted by the patch in Alpine & there's still no way with python/cpython#24502 to tell wether an abi3 module was meant to run on musl or glibc and I'll comment on that over there. abi3 are only searched for with All modules are ultimately searched for with |
I've encountered a probably similar issue in https://github.com/Blosc/python-blosc2/actions/runs/10525809286/job/29165344152
I thought that |
Currently, platform is based upon build_os detection which works ok for native builds and where build_os and host_os are same i.e. glibc based systems, but it fails for musl based systems to load correct modules which are shared libraries e.g. python3-pydantic-core This is already fixed upstream in 3.13+ but we need this backported at minimum to get 3.12 or 3.11 working with musl see https://gitlab.alpinelinux.org/alpine/aports/-/issues/13227 meta-homeassistant/meta-homeassistant#89 pypa/auditwheel#349 PyO3/maturin#1559 Signed-off-by: Khem Raj <raj.khem@gmail.com>
Currently, platform is based upon build_os detection which works ok for native builds and where build_os and host_os are same i.e. glibc based systems, but it fails for musl based systems to load correct modules which are shared libraries e.g. python3-pydantic-core This is already fixed upstream in 3.13+ but we need this backported at minimum to get 3.12 or 3.11 working with musl see https://gitlab.alpinelinux.org/alpine/aports/-/issues/13227 meta-homeassistant/meta-homeassistant#89 pypa/auditwheel#349 PyO3/maturin#1559 Signed-off-by: Khem Raj <raj.khem@gmail.com>
Currently, platform is based upon build_os detection which works ok for native builds and where build_os and host_os are same i.e. glibc based systems, but it fails for musl based systems to load correct modules which are shared libraries e.g. python3-pydantic-core This is already fixed upstream in 3.13+ but we need this backported at minimum to get 3.12 or 3.11 working with musl see https://gitlab.alpinelinux.org/alpine/aports/-/issues/13227 meta-homeassistant/meta-homeassistant#89 pypa/auditwheel#349 PyO3/maturin#1559 Signed-off-by: Khem Raj <raj.khem@gmail.com>
Currently, platform is based upon build_os detection which works ok for native builds and where build_os and host_os are same i.e. glibc based systems, but it fails for musl based systems to load correct modules which are shared libraries e.g. python3-pydantic-core This is already fixed upstream in 3.13+ but we need this backported at minimum to get 3.12 or 3.11 working with musl see https://gitlab.alpinelinux.org/alpine/aports/-/issues/13227 meta-homeassistant/meta-homeassistant#89 pypa/auditwheel#349 PyO3/maturin#1559 Signed-off-by: Khem Raj <raj.khem@gmail.com>
Currently, platform is based upon build_os detection which works ok for native builds and where build_os and host_os are same i.e. glibc based systems, but it fails for musl based systems to load correct modules which are shared libraries e.g. python3-pydantic-core This is already fixed upstream in 3.13+ but we need this backported at minimum to get 3.12 or 3.11 working with musl see https://gitlab.alpinelinux.org/alpine/aports/-/issues/13227 meta-homeassistant/meta-homeassistant#89 pypa/auditwheel#349 PyO3/maturin#1559 Signed-off-by: Khem Raj <raj.khem@gmail.com>
Currently, platform is based upon build_os detection which works ok for native builds and where build_os and host_os are same i.e. glibc based systems, but it fails for musl based systems to load correct modules which are shared libraries e.g. python3-pydantic-core This is already fixed upstream in 3.13+ but we need this backported at minimum to get 3.12 or 3.11 working with musl see https://gitlab.alpinelinux.org/alpine/aports/-/issues/13227 meta-homeassistant/meta-homeassistant#89 pypa/auditwheel#349 PyO3/maturin#1559 Signed-off-by: Khem Raj <raj.khem@gmail.com>
Currently, platform is based upon build_os detection which works ok for native builds and where build_os and host_os are same i.e. glibc based systems, but it fails for musl based systems to load correct modules which are shared libraries e.g. python3-pydantic-core This is already fixed upstream in 3.13+ but we need this backported at minimum to get 3.12 or 3.11 working with musl see https://gitlab.alpinelinux.org/alpine/aports/-/issues/13227 meta-homeassistant/meta-homeassistant#89 pypa/auditwheel#349 PyO3/maturin#1559 Signed-off-by: Khem Raj <raj.khem@gmail.com>
Currently, platform is based upon build_os detection which works ok for native builds and where build_os and host_os are same i.e. glibc based systems, but it fails for musl based systems to load correct modules which are shared libraries e.g. python3-pydantic-core This is already fixed upstream in 3.13+ but we need this backported at minimum to get 3.12 or 3.11 working with musl see https://gitlab.alpinelinux.org/alpine/aports/-/issues/13227 meta-homeassistant/meta-homeassistant#89 pypa/auditwheel#349 PyO3/maturin#1559 Signed-off-by: Khem Raj <raj.khem@gmail.com>
Currently, platform is based upon build_os detection which works ok for native builds and where build_os and host_os are same i.e. glibc based systems, but it fails for musl based systems to load correct modules which are shared libraries e.g. python3-pydantic-core This is already fixed upstream in 3.13+ but we need this backported at minimum to get 3.12 or 3.11 working with musl see https://gitlab.alpinelinux.org/alpine/aports/-/issues/13227 meta-homeassistant/meta-homeassistant#89 pypa/auditwheel#349 PyO3/maturin#1559 Signed-off-by: Khem Raj <raj.khem@gmail.com>
Currently, platform is based upon build_os detection which works ok for native builds and where build_os and host_os are same i.e. glibc based systems, but it fails for musl based systems to load correct modules which are shared libraries e.g. python3-pydantic-core This is already fixed upstream in 3.13+ but we need this backported at minimum to get 3.12 or 3.11 working with musl see https://gitlab.alpinelinux.org/alpine/aports/-/issues/13227 meta-homeassistant/meta-homeassistant#89 pypa/auditwheel#349 PyO3/maturin#1559 Signed-off-by: Khem Raj <raj.khem@gmail.com>
Currently, platform is based upon build_os detection which works ok for native builds and where build_os and host_os are same i.e. glibc based systems, but it fails for musl based systems to load correct modules which are shared libraries e.g. python3-pydantic-core This is already fixed upstream in 3.13+ but we need this backported at minimum to get 3.12 or 3.11 working with musl see https://gitlab.alpinelinux.org/alpine/aports/-/issues/13227 meta-homeassistant/meta-homeassistant#89 pypa/auditwheel#349 PyO3/maturin#1559 (From OE-Core rev: 346cce305dcffa98bfabf8b14e5015a80b5d21ab) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
See pypa/cibuildwheel#934 and pypa/manylinux#1225 and https://discuss.python.org/t/a-mess-with-soabi-tags-on-musllinux/11688 - all muslllinux wheels are broken; the version of Python used in
musllinux_1_1
makes and uses the wrong binary names inside the wheels (ending in-gnu
instead of-musl
) In Aline 3.14, they have a fixed version of Python that makes and only reads the new-musl
ending. So any wheels produced onmusllinux_1_1
do not work past Alpine 3.14.Current binaries produced:
What it should be (Alpine 3.14+ has the patched CPython):
I think auditwheel could produce the following workaround:
The solution I'm proposing is: if a wheel is musllinux_1_1, then see if the extension is
-gnu
. If so, move it to-musl
then add a symlink with the old name. For maximum compatibility, these could be split up so that adding a-gnu
symlink always happens, regardless of whether this gets fixed in Alpine 3.12 and therefore musllinux_1_1 or not.Thoughts?
The text was updated successfully, but these errors were encountered: