RPATH goes missing when using both install_rpath
and an internal shared library dependency
#711
Labels
bug
Something isn't working
This is a case that probably hasn't been exercised before: a Python extension module that links against both a shared library that's part of the package and a shared library built in a subproject that's folded into the wheel by
meson-python
.I ran into this in SciPy when adding a subproject. This worked as advertised, except for this
scipy.special._ufuncs
extension module, which depends on thislibsf_error
shared library as well as on the library in the subproject.What one sees then is that the installed wheel can no longer find
libsf_error.so
, because the RPATH entry forinstall_rpath: '$ORIGIN'
goes missing.With a default SciPy build (no subproject), the
Library rpath|runpath
entries on the_ufuncs
target in the build and install directories looks like this (has$ORIGIN
as it should):On the branch with the subproject, we see this instead:
The duplication of the
.scipy.mesonpy.libs
entries is a minor stylistic issue, we may be able to de-duplicate but it doesn't matter. What does matter is that$ORIGIN
is no longer present.This looks like a bug in the
fix_rpath
implementation at:meson-python/mesonpy/_rpath.py
Lines 28 to 36 in 91d64d1
The problem seems clear: all RPATH entries are cleared, and the ones that are added back all get
libs_relative_path
appended (i.e. to the subproject-relocated location). Any existing RPATHs within the package, like'$ORIGIN'
, will get lost.The text was updated successfully, but these errors were encountered: