
On Wed, Aug 19, 2020 at 01:16:17PM +0100, Daniel P. Berrangé wrote:
On Wed, Aug 19, 2020 at 02:10:53PM +0200, Pavel Hrdina wrote:
On Wed, Aug 19, 2020 at 01:22:58PM +0200, Pavel Hrdina wrote:
On Wed, Aug 19, 2020 at 12:47:40PM +0200, Andrea Bolognani wrote:
Right now we're unconditionally adding RPATH information to the installed binaries and libraries, but that's not always desired.
Debian explicitly passes --disable-rpath to configure, and while I haven't been able to find the same option in the spec file for either Fedora or RHEL, by running
$ readelf -d /usr/bin/virsh | grep PATH
I can see that the information is not present, so I assume they also strip it somehow.
Both Debian and Fedora have wiki pages encouraging packagers to avoid setting RPATH:
https://wiki.debian.org/RpathIssue https://fedoraproject.org/wiki/RPath_Packaging_Draft
Given the above, it looks like it's actually better to not go out of our way to include that information in the first place.
I need to look into this because I remember adding the rpath there as a result that something was not working correctly but now I don't remember what was it. Originally I did not have it there.
Pavel
So I managed to remember what was the issue. If you run install libvirt into custom directory like this:
meson build --prefix /my/custom/dir ninja -C build install
and after that running:
/my/custom/dir/bin/virsh
will fail with:
/lib64/libvirt.so.0: version `LIBVIRT_PRIVATE_6.7.0' not found (required by ./bin/bin/virsh)
This is what autotools did by default as well and I did not know that there is an option --disable-rpath as it's not in output of `./configure --help`.
If we don't care about the use case of installing libvirt into custom prefix and breaking it it should be OK to remove this from meson but my guess is that we should not do it.
So it is only broken if you failed to set LD_LIBRARY_PATH.
rpath is basically hardcoding the association between the virsh binary and the library so that it doesn't need LD_LIBRARY_PATH.
I'm ambivalent on whether that's important or not, though admittedly it can avoid surprises for users not used to LD_LIBRARY_PATH type issues.
IIUC, meson sets rpath automatically for the binaries so you can run from the non-installed build dir. When you run install, it then strips the rpath for the build dir, optionally replacing it with the "install_rpath" value.
Agreed and since the fix is fairly simple I guess we can keep using RPATH to not surprise and break some users. Otherwise I would also say that these users should start using LD_LIBRARY_PATH. Pavel