From 5934d03efdcf32e8ecdf61cc29a80b2088e6de9c Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Thu, 30 Jun 2016 23:50:12 +0200 Subject: Rework nxagent and nxproxy wrapper scripts. o Install nxagent/nxproxy executables into multi-arch path. o Fake libNX_X11.so* as $LIBDIR/nx-X11/libX11.so*. o Allow injecting different $NXAPP containing the executable name. o For e.g. x2goagent this requires the following changes: - Move x2goagent symlink from /usr/lib/x2go/bin/x2goagent to $LIBDIR/nx/bin/x2goagent - Replace /usr/bin/x2goagent by a two-liner... ``` #!/bin/sh export NXAPP=x2goagent nxagent ``` --- Makefile | 15 ++++++++++++--- bin/nxagent | 29 ----------------------------- bin/nxagent.in | 25 +++++++++++++++++++++++++ bin/nxproxy | 29 ----------------------------- bin/nxproxy.in | 24 ++++++++++++++++++++++++ debian/nxagent.install | 3 ++- debian/nxproxy.install | 2 +- nx-libs.spec | 3 +-- 8 files changed, 65 insertions(+), 65 deletions(-) delete mode 100644 bin/nxagent create mode 100644 bin/nxagent.in delete mode 100644 bin/nxproxy create mode 100644 bin/nxproxy.in diff --git a/Makefile b/Makefile index 47ac50fe9..470a46d6e 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ BINDIR ?= $(PREFIX)/bin LIBDIR ?= $(PREFIX)/lib USRLIBDIR ?= $(LIBDIR) INCLUDEDIR ?= $(PREFIX)/include -NXLIBDIR ?= $(PREFIX)/lib/nx +NXLIBDIR ?= $(LIBDIR)/nx CONFIGURE ?= ./configure NX_VERSION_MAJOR=$(shell ./version.sh 1) @@ -36,6 +36,8 @@ SHELL:=/bin/bash # clean auto-generated nxversion.def file \ if [ "x$@" == "xclean" ] || [ "x$@" = "xdistclean" ]; then \ rm -f nx-X11/config/cf/nxversion.def; \ + rm -f bin/nxagent; \ + rm -f bin/nxproxy; \ fi all: build @@ -91,6 +93,7 @@ install-lite: # install nxproxy wrapper script $(INSTALL_DIR) $(DESTDIR)$(BINDIR) + sed -e 's|@@NXLIBDIR@@|$(NXLIBDIR)|g' bin/nxproxy.in > bin/nxproxy $(INSTALL_PROGRAM) bin/nxproxy $(DESTDIR)$(BINDIR) # FIXME: the below install logic should work via nxproxy/Makefile.in @@ -103,8 +106,11 @@ install-lite: gzip $(DESTDIR)$(PREFIX)/share/man/man1/*.1 install-full: - for f in nxagent; do \ - $(INSTALL_PROGRAM) bin/$$f $(DESTDIR)$(BINDIR); done + # install nxagent wrapper script + $(INSTALL_DIR) $(DESTDIR)$(BINDIR) + sed -e 's|@@NXLIBDIR@@|$(NXLIBDIR)|g' bin/nxagent.in > bin/nxagent + $(INSTALL_PROGRAM) bin/nxagent $(DESTDIR)$(BINDIR) + for d in nxcompext nxcompshad; do \ $(MAKE) -C $$d install; done @@ -141,6 +147,9 @@ install-full: $(INSTALL_DIR) $(DESTDIR)$(USRLIBDIR) $(COPY_SYMLINK) nx-X11/.build-exports/lib/*.so* $(DESTDIR)$(USRLIBDIR)/ + $(INSTALL_DIR) $(DESTDIR)$(USRLIBDIR)/nx-X11 + $(INSTALL_SYMLINK) ../libNX_X11.so $(DESTDIR)$(USRLIBDIR)/nx-X11/libX11.so + $(INSTALL_SYMLINK) ../libNX_X11.so.6.2 $(DESTDIR)$(USRLIBDIR)/nx-X11/libX11.so.6.2 . replace.sh; set -x; find nx-X11/.build-exports/include/ -type d | \ while read dirname; do \ diff --git a/bin/nxagent b/bin/nxagent deleted file mode 100644 index 6306ed069..000000000 --- a/bin/nxagent +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -# Copyright (C) 2012 Mike Gabriel -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. - -NXAPP=nxagent -NX_LIBS=/usr/lib/nx -NX_LOCAL_LIBS=/usr/local/lib/nx - -# make sure nxagent starts properly with pam_tmpdir.so being in use -NX_TEMP=${NX_TEMP:-/tmp} -export NX_TEMP - -test -x $NX_LOCAL_LIBS/bin/$NXAPP && export NX_LIBS=$NX_LOCAL_LIBS -test -x $NX_LIBS/bin/$NXAPP && export NX_LIBS=$NX_LIBS - -exec $NX_LIBS/bin/$NXAPP "$@" diff --git a/bin/nxagent.in b/bin/nxagent.in new file mode 100644 index 000000000..86603d549 --- /dev/null +++ b/bin/nxagent.in @@ -0,0 +1,25 @@ +#!/bin/bash + +# Copyright (C) 2012 Mike Gabriel +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. + +NX_LIBS=@@NXLIBDIR@@ + +# make sure nxagent starts properly with pam_tmpdir.so being in use +NX_TEMP=${NX_TEMP:-/tmp} +export NX_TEMP +export LD_LIBRARY_PATH=@@NXLIBDIR@@-X11/ + +exec $NX_LIBS/bin/${NXAPP:-"nxagent"} "$@" diff --git a/bin/nxproxy b/bin/nxproxy deleted file mode 100644 index 23e7109e3..000000000 --- a/bin/nxproxy +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -# Copyright (C) 2012 Mike Gabriel -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. - -NXAPP=nxproxy -NX_LIBS=/usr/lib/nx -NX_LOCAL_LIBS=/usr/local/lib/nx - -# make sure nxagent starts properly with pam_tmpdir.so being in use -NX_TEMP=${NX_TEMP:-/tmp} -export NX_TEMP - -test -x $NX_LOCAL_LIBS/bin/$NXAPP && export NX_LIBS=$NX_LOCAL_LIBS -test -x $NX_LIBS/bin/$NXAPP && export NX_LIBS=$NX_LIBS - -exec $NX_LIBS/bin/$NXAPP "$@" \ No newline at end of file diff --git a/bin/nxproxy.in b/bin/nxproxy.in new file mode 100644 index 000000000..d21388d18 --- /dev/null +++ b/bin/nxproxy.in @@ -0,0 +1,24 @@ +#!/bin/bash + +# Copyright (C) 2012 Mike Gabriel +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. + +NX_LIBS=@@NXLIBDIR@@ + +# make sure nxagent starts properly with pam_tmpdir.so being in use +NX_TEMP=${NX_TEMP:-/tmp} +export NX_TEMP + +exec $NX_LIBS/bin/${NXAPP:="nxproxy"} "$@" diff --git a/debian/nxagent.install b/debian/nxagent.install index 123971a7c..75e72fcde 100644 --- a/debian/nxagent.install +++ b/debian/nxagent.install @@ -3,7 +3,8 @@ etc/nxagent/rgb usr/share/nx/rgb usr/share/nx/VERSION.nxagent usr/share/man/man1/nxagent.1* -usr/lib/nx/bin/nxagent +usr/lib/*/nx/bin/nxagent +usr/lib/*/nx-X11/ usr/bin/nxagent usr/share/pixmaps/nxagent.xpm etc/nxagent/nxagent.keyboard diff --git a/debian/nxproxy.install b/debian/nxproxy.install index ab7c97d58..8ade77d6d 100644 --- a/debian/nxproxy.install +++ b/debian/nxproxy.install @@ -1,4 +1,4 @@ -usr/lib/nx/bin/nxproxy +usr/lib/*/nx/bin/nxproxy usr/bin/nxproxy usr/share/man/man1/nxproxy.1* usr/share/nx/VERSION.nxproxy diff --git a/nx-libs.spec b/nx-libs.spec index 5adb42ca2..418a83bdd 100644 --- a/nx-libs.spec +++ b/nx-libs.spec @@ -329,8 +329,7 @@ sed -i -e 's#-O3#%{optflags}#' nx-X11/config/cf/host.def # Use multilib dirs # We're installing binaries into %%{_libdir}/nx/bin rather than %%{_libexedir}/nx # because upstream expects libraries and binaries in the same directory -sed -i -e 's,/lib/nx,/%{_lib}/nx,' Makefile nx-X11/config/cf/X11.tmpl -sed -i -e 's,/usr/lib/,/usr/%{_lib}/,' bin/* +sed -i -e 's,/lib/nx,/%{_lib}/nx,' nx-X11/config/cf/X11.tmpl # Fix FSF address find -name LICENSE | xargs sed -i \ -e 's/59 Temple Place/51 Franklin Street/' -e 's/Suite 330/Fifth Floor/' \ -- cgit v1.2.3