Skip to content

Can't repair wheel archive on manylinux_2_28 #531

@Mizux

Description

@Mizux

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.whl

Expected

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 located

note: 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...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions