• Mihai Moldovan's avatar
    nxagent: implement RPATH/RUNPATH override for libX11. · 26ab7b8a
    Mihai Moldovan authored
    As discussed in ArcticaProject/nx-libs#610, we need a way to load
    libNX_X11 as a fake version of libX11 into nxagent's address space.
    
    For doing so, we have to link against libX11 at build-time and specify
    a(n) RPATH/RUNPATH to our libX11 -> libNX_X11 compat symlinks.
    
    This commit is essentially doing a cross between options 3 and 4
    discussed in the provided GH issue.
    
    We link libX11 early (before specifying -Lcompat_symlinks_dir), so that
    the linker finds the "real" libX11 version with the libX11 SONAME. This
    leads to our binary depending upon both libX11 and libNX_X11 SONAMEs. We
    already always added RPATH/RUNPATH, but these values are not passed down
    to dependent libraries.
    
    What happens at run-time is that the loader searches for a libX11
    SONAME, takes RPATH/RUNPATH into account and loads our libNX_X11 library
    instead via the compat symlinks. This satisfies the libX11 SONAME and
    dependent libraries will *not* load the system libX11 version again.
    
    Debian's dpkg-shlibdeps isn't quite happy about this mismatching SONAME
    situation, so instruct to look the other way while we're minding our
    business.
    
    Fixes: ArcticaProject/nx-libs#610
    26ab7b8a
Name
Last commit
Last update
debian Loading commit data...
doc Loading commit data...
etc Loading commit data...
m4 Loading commit data...
nx-X11 Loading commit data...
nxcomp Loading commit data...
nxcompshad Loading commit data...
nxproxy Loading commit data...
testscripts Loading commit data...
.gitignore Loading commit data...
COPYING Loading commit data...
ChangeLog Loading commit data...
LICENSE Loading commit data...
LICENSE.nxcomp Loading commit data...
Makefile Loading commit data...
README.NX-development Loading commit data...
README.md Loading commit data...
VERSION Loading commit data...
fix-patch-whitespace Loading commit data...
make-changelog.sh Loading commit data...
mesa-quilt Loading commit data...
nx-libs.spec Loading commit data...
regenerate-symbol-docs.sh Loading commit data...
replace.sh Loading commit data...
roll-tarballs.sh Loading commit data...
version.sh Loading commit data...