[X2Go-Commits] [nx-libs] 01/05: nxagent: implement RPATH/RUNPATH override for libX11.

git-admin at x2go.org git-admin at x2go.org
Thu Dec 28 23:23:25 CET 2017


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch 3.6.x-rpm-debug
in repository nx-libs.

commit d2ff04c0b64cc9c2701aabfab2f8eff4a2756369
Author: Mihai Moldovan <ionic at ionic.de>
Date:   Tue Dec 26 04:06:40 2017 +0100

    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
---
 debian/rules                      | 8 ++++++++
 nx-X11/config/cf/Imake.rules      | 4 ++--
 nx-X11/config/cf/Imake.tmpl       | 1 +
 nx-X11/programs/Xserver/Imakefile | 4 ++++
 4 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/debian/rules b/debian/rules
index 90234c5..b2258cd 100755
--- a/debian/rules
+++ b/debian/rules
@@ -124,5 +124,13 @@ override_dh_strip:
 override_dh_makeshlibs:
 	dh_makeshlibs -n
 
+# Needed for the libX11 RUNPATH/RPATH link-time hack.
+# dh_shlibdeps will follow dependencies within binaries and choke
+# on the libX11 dependency, since the SONAME (libX11.*) used while linking
+# does not match the later detected SONAME (libNX_X11.*) obtained through
+# the libX11 -> libNX_X11 compat symlink.
+override_dh_shlibdeps:
+	dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
+
 get-orig-source:
 	uscan --noconf --force-download --rename --download-current-version --destdir=..
diff --git a/nx-X11/config/cf/Imake.rules b/nx-X11/config/cf/Imake.rules
index 06b7899..f53a15b 100644
--- a/nx-X11/config/cf/Imake.rules
+++ b/nx-X11/config/cf/Imake.rules
@@ -1103,11 +1103,11 @@ CplusplusProgramTargetHelper(program,SRCS10,OBJS10,DEPLIBS10,locallib,syslib)
 AllTarget(ProgramTargetName(server))					@@\
 ProgramTargetName(server): subdirs objects libs				@@\
 	MoveToBakFile($@)						@@\
-	LinkRule($@,$(LDOPTIONS),objects,libs $(LDLIBS) syslibs) @@\
+	LinkRule($@,$(SERVERLDOPTIONS),objects,libs $(LDLIBS) syslibs)	@@\
 									@@\
 Concat(load,server):							@@\
 	MoveToBakFile(ProgramTargetName(server))			@@\
-	LinkRule(ProgramTargetName(server),$(LDOPTIONS),objects,libs $(LDLIBS) syslibs) @@\
+	LinkRule(ProgramTargetName(server),$(SERVERLDOPTIONS),objects,libs $(LDLIBS) syslibs) @@\
 									@@\
 loadX:: Concat(load,server)						@@\
 									@@\
diff --git a/nx-X11/config/cf/Imake.tmpl b/nx-X11/config/cf/Imake.tmpl
index 5d989d1..307d00d 100644
--- a/nx-X11/config/cf/Imake.tmpl
+++ b/nx-X11/config/cf/Imake.tmpl
@@ -1995,6 +1995,7 @@ XEXT_EXTRA_DEFINES =
          LDPRELIB = LdPreLib $(INSTALLED_LIBS)
         LDPOSTLIB = LdPostLib
         LDOPTIONS = $(CDEBUGFLAGS) $(CCOPTIONS)  $(EXTRA_LDOPTIONS) $(THREADS_LDFLAGS) $(LOCAL_LDFLAGS) $(LDPRELIBS)
+  SERVERLDOPTIONS = $(CDEBUGFLAGS) $(CCOPTIONS)  $(EXTRA_LDOPTIONS) $(THREADS_LDFLAGS) $(LOCAL_LDFLAGS)
      CXXLDOPTIONS = $(CXXDEBUGFLAGS) $(CXXOPTIONS) $(EXTRA_LDOPTIONS) $(THREADS_CXXLDFLAGS) $(LOCAL_LDFLAGS) $(LDPRELIBS)
 
            LDLIBS = $(LDPOSTLIBS) $(THREADS_LIBS) $(SYS_LIBRARIES) $(EXTRA_LIBRARIES)
diff --git a/nx-X11/programs/Xserver/Imakefile b/nx-X11/programs/Xserver/Imakefile
index 25ebd73..efab0de 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 \

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/nx-libs.git


More information about the x2go-commits mailing list