-
Notifications
You must be signed in to change notification settings - Fork 160
Description
For google/or-tools we are migrating from manylinux2014 to quay.io/pypa/manylinux_2_28_x86_64 to generate our python native library (framework)
Here the wheel generated inside the docker image against the /opt/python/cp312-cp312/bin/python inside a virtualenv.
ortools-9.12.4478-cp312-cp312-linux_x86_64.whl.zip (ed to remove .zip extension needed to upload on github)
General Layout of the wheel package:
* ortools/ # root module containing each component
* .libs/
* libortools.so # our main C++ solver everything in a big fat dynamic library # RUNPATH $ORIGIN
* libxxx.so # various third party needed by libortools.so (e.g abseil-cpp, protobuf, etc..)
* graph/ # module
* python/ # pybind11 wrapper
* /max_flow.cpython-312-x86_64-linux-gnu.so # RUNPATH $ORIGIN:$ORIGIN/../../../ortools/.libs
* algorithms/ # an other module etc...
note: take a look at the ortools/graph/python/max_flow.cpython-312-x86_64-linux-gnu.so
and objdump -p ...
Protocol
note: I'm using a python 3.12 venv on a x86_64 linux
$ python --version
Python 3.12.8
$ pip show auditwheel
Name: auditwheel
Version: 6.2.0
Summary: Cross-distribution Linux wheels
Home-page: https://github.com/pypa/auditwheel
Author: Robert T. McGibbon
Author-email: [email protected]
License: MIT
Location: /tmp/py12/lib/python3.12/site-packages
Requires: packaging, pyelftools
$ auditwheel -v repair --plat "manylinux_2_28_x86_64" ortools-9.12.4478-cp312-cp312-linux_x86_64.whlExpected
A ortools-9.12.4478-cp312-cp312-manylinux_2_28_x86_64.whl generated file
Observed
auditwheel failed...
...
DEBUG:auditwheel.policy:Package requires GLIBC_2.26, incompatible with policy manylinux_2_24_x86_64 which requires {'GLIBC_2.3.3', 'GLIBC_2.7', 'GLIBC_2.13', 'GLIBC_2.8', 'GLIBC_2.11', 'GLIBC_2.4', 'GLIBC_2.2.6', 'GLIBC_2.24', 'GLIBC_2.3', 'GLIBC_2.15', 'GLIBC_2.9', 'GLIBC_2.2.5', 'GLIBC_2.3.4', 'GLIBC_2.23', 'GLIBC_2.17', 'GLIBC_2.12', 'GLIBC_2.10', 'GLIBC_2.5', 'GLIBC_2.6', 'GLIBC_2.22', 'GLIBC_2.14', 'GLIBC_2.3.2', 'GLIBC_2.16', 'GLIBC_2.18'}
DEBUG:auditwheel.policy:Package requires GLIBC_2.25, incompatible with policy manylinux_2_24_x86_64 which requires {'GLIBC_2.3.3', 'GLIBC_2.7', 'GLIBC_2.13', 'GLIBC_2.8', 'GLIBC_2.11', 'GLIBC_2.4', 'GLIBC_2.2.6', 'GLIBC_2.24', 'GLIBC_2.3', 'GLIBC_2.15', 'GLIBC_2.9', 'GLIBC_2.2.5', 'GLIBC_2.3.4', 'GLIBC_2.23', 'GLIBC_2.17', 'GLIBC_2.12', 'GLIBC_2.10', 'GLIBC_2.5', 'GLIBC_2.6', 'GLIBC_2.22', 'GLIBC_2.14', 'GLIBC_2.3.2', 'GLIBC_2.16', 'GLIBC_2.18'}
DEBUG:auditwheel.policy:Package requires GCC_7.0.0, incompatible with policy manylinux_2_24_x86_64 which requires {'GCC_3.4.2', 'GCC_4.7.0', 'GCC_3.3.1', 'GCC_4.3.0', 'GCC_3.4', 'GCC_4.8.0', 'GCC_3.3', 'GCC_4.0.0', 'GCC_4.2.0', 'GCC_3.4.4', 'GCC_3.0'}
DEBUG:auditwheel.policy:Package requires CXXABI_1.3.11, incompatible with policy manylinux_2_24_x86_64 which requires {'CXXABI_1.3.10', 'CXXABI_1.3.6', 'CXXABI_FLOAT128', 'CXXABI_1.3.8', 'CXXABI_1.3.3', 'CXXABI_1.3.1', 'CXXABI_1.3.4', 'CXXABI_TM_1', 'CXXABI_1.3', 'CXXABI_1.3.9', 'CXXABI_1.3.7', 'CXXABI_1.3.2', 'CXXABI_1.3.5'}
Traceback (most recent call last):
File "/tmp/py12/bin/auditwheel", line 8, in <module>
sys.exit(main())
^^^^^^
File "/tmp/py12/lib/python3.12/site-packages/auditwheel/main.py", line 54, in main
return args.func(args, p)
^^^^^^^^^^^^^^^^^^
File "/tmp/py12/lib/python3.12/site-packages/auditwheel/main_repair.py", line 178, in execute
out_wheel = repair_wheel(
^^^^^^^^^^^^^
File "/tmp/py12/lib/python3.12/site-packages/auditwheel/repair.py", line 82, in repair_wheel
raise ValueError(msg)
ValueError: Cannot repair wheel, because required library "libabsl_spinlock_wait.so.2407.0.0" could not be locatednote: Using the same "workflow" but with quay.io/pypa/musllinux_1_2_x86_64:latest works as expected i.e.
auditwheel repair it as ortools-9.12.4466-cp39-cp39-musllinux_1_2_x86_64.whl
note: On my way to perform some test, hack my local auditwheel install to add some logs etc...