pypa / cibuildwheel

🎡 Build Python wheels for all the platforms with minimal configuration.
https://cibuildwheel.pypa.io
Other
1.83k stars 233 forks source link

`auditwheel` failing because of `ABI because of the presence of too-recent versioned symbols` #1982

Closed LecrisUT closed 1 day ago

LecrisUT commented 3 weeks ago

Description

I didn't see any special setup in the project where this occurred, both scikit-build-core and cibuildwheel configurations were the default ones. The full error is

       + sh -c 'auditwheel repair -w /tmp/cibuildwheel/repaired_wheel /tmp/cibuildwheel/built_wheel/blosc2-3.0.0b2.dev0-cp310-cp310-linux_aarch64.whl'
  INFO:auditwheel.main_repair:Repairing blosc2-3.0.0b2.dev0-cp310-cp310-linux_aarch64.whl
  usage: auditwheel [-h] [-V] [-v] command ...
  auditwheel: error: cannot repair "/tmp/cibuildwheel/built_wheel/blosc2-3.0.0b2.dev0-cp310-cp310-linux_aarch64.whl" to "manylinux2014_aarch64" ABI because of the presence of too-recent versioned symbols. You'll need to compile the wheel on an older toolchain.

Build log

https://github.com/Blosc/python-blosc2/actions/runs/10526606116/job/29167828152

CI config

No response

henryiii commented 3 weeks ago

cibuildwheel is not default config:

https://github.com/Blosc/python-blosc2/blob/99525d3141ac802e60b3d7bea4dabd1f2ae92b8f/pyproject.toml#L54-L55

Though I'm not sure why auditwheel is trying to go to 2014 when run on 2_28...

henryiii commented 3 weeks ago

Also, you don't need most of the skips, cibuildwheel respects your project.requires-python setting. I'd also move almost all or all of the CIBW_* variables into your pyproject.toml, since things like what is required for testing is static, it doesn't depend on running on GHA.

LecrisUT commented 3 weeks ago

cibuildwheel is not default config:

Ak didn't see the images there

Also, you don't need most of the skips

Yeah there's a bunch of stuff to go through in that review.

mayeut commented 3 weeks ago

Though I'm not sure why auditwheel is trying to go to 2014 when run on 2_28...

The container used in the linked build is manylinux2014.

Running auditwheel with -v flag, we can see the symbol version string that leads to the issue: GLIBC_2.4. This symbol version will never exist on aarch64 (It's not too recent, kind of "too old").

The issue comes from the blosc2/c-blosc2/contrib/bitshuffle_neon/bitshuffle2_neon/bitshuffle2_neon_bucle binary embedded in the wheel. It targets armhf. auditwheel shall probably error out on that target mismatch (or just warn but not analyze).

If you remove that binary, the wheel gets repaired properly.

LecrisUT commented 1 day ago

Resolved, it was the pre-built stuff