cibuildwheel icon indicating copy to clipboard operation
cibuildwheel copied to clipboard

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

Open LecrisUT opened this issue 1 year ago • 4 comments

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

LecrisUT avatar Aug 23 '24 14:08 LecrisUT

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 avatar Aug 23 '24 18:08 henryiii

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.

henryiii avatar Aug 23 '24 18:08 henryiii

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.

LecrisUT avatar Aug 23 '24 19:08 LecrisUT

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.

mayeut avatar Aug 24 '24 10:08 mayeut

Resolved, it was the pre-built stuff

LecrisUT avatar Sep 16 '24 05:09 LecrisUT