Description
What's the problem this feature will solve?
In this moment, because of BPO-43112, we are distributing broken musllinux_1_1 wheel packages for Python 3.9 and 3.10, which work on Docker images such as python:3.9-alpine
but will not work on the alpine
using the system Python.
When BPO-43112 will be solved, there will be a situation of incompatibility, resulting in newly built packages not working on the python-alpine
image, for some time, and not working for current images.
Describe the solution you'd like
Pip is in the right place to save the day 🙂 because it could easily rename the broken file on install, if it detects the right conditions (tag musllinux_1_1
, .so
file suffix mismatching the sysconfig.get_config_vars("SOABI")
) it might simply rename the wrongly named library. It has the file system permission to do so and it would work both to make broken wheels work on new images and fixed wheels to work on old images.
Alternative Solutions
A workaround bridge solution of distributing a compatibility symlink (see psycopg/psycopg#161) is hampered by the fact that symlinks in zip files are not handled by the zipfile
module (https://bugs.python.org/issue18595, https://bugs.python.org/issue27318).
Additional context
- https://bugs.python.org/issue43112
- https://discuss.python.org/t/a-mess-with-soabi-tags-on-musllinux/11688
- Add image for musllinux_1_2 policy manylinux#1225
- bpo-43112: detect musl as a separate SOABI python/cpython#24502
- musllinux mess potential solution auditwheel#349
- Tracking issue for broken musllinux wheels cibuildwheel#934
- Some musllinux binary package not correctly working psycopg/psycopg#161
Code of Conduct
- I agree to follow the PSF Code of Conduct.