You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We have a requirements file that we turn into a collection of wheels with pip wheel -r path/to/requirements.txt.
Then we run auditwheel repair on every wheel. This is useful for the wheels that pip compiled directly. But it appears to fail for wheels that pip downloaded from pypi that auditwheel has already repaired.
E.g.:
$ docker run --rm -it quay.io/pypa/manylinux_2_28_x86_64[root@81ceff989948 /]# curl -LO 'https://files.pythonhosted.org/packages/f8/ea/ff38168d6565a8549f819699cac4d89bbc38fc5b27fb94f8e92bcd713348/numpy-1.23.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl'[root@81ceff989948 /]# auditwheel repair --plat manylinux_2_28_x86_64 ./numpy-1.23.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whlINFO:auditwheel.main_repair:Repairing numpy-1.23.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whlINFO:auditwheel.main_repair:Wheel is eligible for a higher priority tag. You requested manylinux_2_28_x86_64 but I have found this wheel is eligible for manylinux_2_17_x86_64.Traceback (most recent call last): File "/usr/local/bin/auditwheel", line 8, in <module> sys.exit(main()) File "/opt/_internal/pipx/venvs/auditwheel/lib/python3.9/site-packages/auditwheel/main.py", line 59, in main rval = args.func(args, p) File "/opt/_internal/pipx/venvs/auditwheel/lib/python3.9/site-packages/auditwheel/main_repair.py", line 161, in execute out_wheel = repair_wheel( File "/opt/_internal/pipx/venvs/auditwheel/lib/python3.9/site-packages/auditwheel/repair.py", line 74, in repair_wheel raise ValueError(ValueError: Cannot repair wheel, because required library "libgfortran-040039e1.so.5.0.0" could not be located[root@81ceff989948 /]#
Is there a way to make auditwheel realize that it doesn't need to do any repairing here? Or is there another way to detect that auditwheel doesn't need to be run in this case?
I.e. it appears that auditwheel is not taking existing RPATH entries into account perhaps?
The intention was to avoid modifying already grafted libraries, but it seems this logic is broken: #389 (comment) To fix this, we need a way to mark already modified libraries.
Given that a wheel is repaired as a single unit, maybe it's enough to just mark the wheel itself as already repaired? For instance, delvewheel includes a marker file under dist-info that it uses to determine if a wheel has already been patched.
We have a requirements file that we turn into a collection of wheels with
pip wheel -r path/to/requirements.txt
.Then we run
auditwheel repair
on every wheel. This is useful for the wheels thatpip
compiled directly. But it appears to fail for wheels thatpip
downloaded from pypi that auditwheel has already repaired.E.g.:
Is there a way to make
auditwheel
realize that it doesn't need to do any repairing here? Or is there another way to detect thatauditwheel
doesn't need to be run in this case?I.e. it appears that
auditwheel
is not taking existing RPATH entries into account perhaps?The text was updated successfully, but these errors were encountered: