Open takluyver opened 8 years ago
In this case it seems to have been caused by leftover config from one Python build to the next, and I have fixed it. But I still think that it would be useful for this error to give more information.
I started to get the mentioned error, only for the Python 3.6 wheel though. Previous builds completed without error, but latest changes to the source (I used a few abstract APIs like PyMapping_Check
and PyObject_SetItem
...) triggered the problem.
Is there some way to investigate the issue, or any workaround?
Seconded. I can't understand any of this. For example auditwheel tells me this:
DEBUG:auditwheel.policy.versioned_symbols:Package requires GLIBCXX_3.4.21, incompatible with policy manylinux1_x86_64 which requires {'GLIBCXX_3.4.8', 'GLIBCXX_3.4.6', 'GLIBCXX_3.4.4', 'GLIBCXX_3.4.1', 'GLIBCXX_3.4.7', 'GLIBCXX_3.4.5', 'GLIBCXX_3.4.3', 'GLIBCXX_3.4.2', 'GLIBCXX_3.4'}
But when looking at the detailed log, the only component with that symbol is... libstdc++.so.6
.
Here is the example of such build.
Here is another example on ppc64le (using the quay.io/pypa/manylinux2014_ppc64le
build chain and glibc-static
version 2.17-292.el7
): https://travis-ci.com/github/openPMD/openPMD-api/jobs/319416158
$ sh -c 'auditwheel repair -w /tmp/repaired_wheels "$1"' repair_command /tmp/built_wheel/openPMD_api-0.11.1a0-cp35-cp35m-linux_ppc64le.whl
INFO:auditwheel.main_repair:Repairing openPMD_api-0.11.1a0-cp35-cp35m-linux_ppc64le.whl
usage: auditwheel [-h] [-V] [-v] command ...
auditwheel: error: cannot repair "/tmp/built_wheel/openPMD_api-0.11.1a0-cp35-cp35m-linux_ppc64le.whl"
to "manylinux2014_ppc64le" ABI because of the presence of too-recent versioned symbols.
You'll need to compile the wheel on an older toolchain.
@mayeut do you have an idea how to fix this? :)
@ax3l,
unfortunately I don't.
you can try to run auditwheel show
or run in verbose mode to see if this helps.
PR are welcomed for this issue.
auditwheel: error: cannot repair "dist/pyhtnorm-0.1.0-cp37-cp37m-manylinux2014_x86_64.whl" to "manylinux1_x86_64" ABI because of the presence of too-recent versioned symbols. You'll need to compile the wheel on an older toolchain.
Im also getting this error when using auditwheel on a whl build using poetry for a package that uses GLIBC, BLAS and LAPACK. anyone knows a workaround?
The only way it works is if I add --plat linux_x86_64
. The other manylinux versions give an error
I've made a tool for this today: https://github.com/messense/auditwheel-symbols
pip install auditwheel-symbols
❯ auditwheel-symbols --manylinux 2014 ~/Downloads/rjieba-0.1.5-cp36-abi3-manylinux2010_x86_64.whl
rjieba/rjieba.abi3.so is manylinux2014 compliant.
❯ auditwheel-symbols --manylinux 1 ~/Downloads/rjieba-0.1.5-cp36-abi3-manylinux2010_x86_64.whl
rjieba/rjieba.abi3.so is not manylinux1 compliant because it links the following forbidden libraries:
libc.so.6 offending symbols: memcpy@@GLIBC_2.14
Using the manylinux docker image, I get this error message:
It would be helpful to know which symbols it doesn't like!