aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/Xserver
diff options
context:
space:
mode:
authorMihai Moldovan <ionic@ionic.de>2017-12-26 04:06:40 +0100
committerMihai Moldovan <ionic@ionic.de>2017-12-30 03:36:11 +0100
commit26ab7b8a79e6c901518d9136d00b79e2905dab58 (patch)
tree5325ef20b6561773c9983a4866f4913eeb25b95d /nx-X11/programs/Xserver
parente13e31f752c0b204f964ee1df272a6b31ce51189 (diff)
downloadnx-libs-26ab7b8a79e6c901518d9136d00b79e2905dab58.tar.gz
nx-libs-26ab7b8a79e6c901518d9136d00b79e2905dab58.tar.bz2
nx-libs-26ab7b8a79e6c901518d9136d00b79e2905dab58.zip
nxagent: implement RPATH/RUNPATH override for libX11.
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
Diffstat (limited to 'nx-X11/programs/Xserver')
-rw-r--r--nx-X11/programs/Xserver/Imakefile4
1 files changed, 4 insertions, 0 deletions
diff --git a/nx-X11/programs/Xserver/Imakefile b/nx-X11/programs/Xserver/Imakefile
index 25ebd73b9..efab0de85 100644
--- a/nx-X11/programs/Xserver/Imakefile
+++ b/nx-X11/programs/Xserver/Imakefile
@@ -319,6 +319,7 @@ NXAGENTNXLIBS = -L/usr/sfw/lib \
-L../../../nxcompshad/src/.libs \
-L../../lib/src/.libs \
-lrt \
+ -lX11 \
-lXcomp \
-lXcompshad \
-lXrender \
@@ -334,6 +335,7 @@ NXAGENTNXLIBS = -L/usr/sfw/lib \
NXAGENTNXLIBS = -L../../../nxcomp/src/.libs \
-L../../../nxcompshad/src/.libs \
-L../../lib/src/.libs \
+ -lX11 \
-lXcomp \
-lXcompshad \
-lXrender \
@@ -349,6 +351,7 @@ NXAGENTNXLIBS = -L../../../nxcomp/src/.libs \
-L../../../nxcompshad/src/.libs \
-L../../lib/src/.libs \
-lkvm \
+ -lX11 \
-lXcomp \
-lXcompshad \
-lXrender \
@@ -364,6 +367,7 @@ NXAGENTNXLIBS = -L../../../nxcomp/src/.libs \
NXAGENTNXLIBS = -L../../../nxcomp/src/.libs \
-L../../../nxcompshad/src/.libs \
-L../../lib/src/.libs \
+ -lX11 \
-lXcomp \
-lXcompshad \
-lXrender \