• 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
..
.gitignore Loading commit data...
Imake.cf Loading commit data...
Imake.rules Loading commit data...
Imake.tmpl Loading commit data...
Imakefile Loading commit data...
Library.tmpl Loading commit data...
README Loading commit data...
Server.tmpl Loading commit data...
ServerLib.tmpl Loading commit data...
Threads.tmpl Loading commit data...
X11.rules Loading commit data...
X11.tmpl Loading commit data...
cross.def Loading commit data...
cross.rules Loading commit data...
gnu.cf Loading commit data...
gnuLib.rules Loading commit data...
gnuLib.tmpl Loading commit data...
host.def Loading commit data...
linux.cf Loading commit data...
lnxLib.rules Loading commit data...
lnxLib.tmpl Loading commit data...
noop.rules Loading commit data...
nxversion.def.in Loading commit data...
site.def Loading commit data...
xf86.rules Loading commit data...
xorg.cf Loading commit data...
xorg.tmpl Loading commit data...
xorgsite.def Loading commit data...
xorgversion.def Loading commit data...