aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2015-02-16 15:11:02 +0100
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2015-02-17 09:26:54 +0100
commit203d97147623b97a48c0f6456cc1de9d8364db03 (patch)
tree4f6b6a523afa97e065c3c786e2c6d4ae3a00893f
parenteb49d408c6a67d99ebd2771a8ed53b4da5926f7b (diff)
downloadnx-libs-203d97147623b97a48c0f6456cc1de9d8364db03.tar.gz
nx-libs-203d97147623b97a48c0f6456cc1de9d8364db03.tar.bz2
nx-libs-203d97147623b97a48c0f6456cc1de9d8364db03.zip
Make nxagent process aware of its current NX'ish version.
This feature copies the way how X.Org version string and number are propagated at build time. First use case: if people start nxagent, it reports its version number on stderr. This is about being human-friendly. Second use case: None, so far. But it will now be easy to use the NXAGENT_VERSION_STRING in later feature add-ons.
-rw-r--r--Makefile19
-rw-r--r--nx-X11/config/cf/Imakefile3
-rw-r--r--nx-X11/config/cf/nxversion.def.in4
-rw-r--r--nx-X11/config/cf/xorg.cf26
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Imakefile7
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Init.c5
-rwxr-xr-xversion.sh34
7 files changed, 93 insertions, 5 deletions
diff --git a/Makefile b/Makefile
index f0c8a978b..2f8dda83a 100644
--- a/Makefile
+++ b/Makefile
@@ -19,6 +19,11 @@ NXLIBDIR ?= $(PREFIX)/lib/nx
X2GOLIBDIR ?= $(PREFIX)/lib/x2go
CONFIGURE ?= ./configure
+NX_VERSION_MAJOR=$(shell ./version.sh 1)
+NX_VERSION_MINOR=$(shell ./version.sh 2)
+NX_VERSION_MICRO=$(shell ./version.sh 3)
+NX_VERSION_PATCH=$(shell ./version.sh 4)
+
SHELL:=/bin/bash
%:
@@ -44,7 +49,21 @@ build-full:
cd nxcomp && autoconf
cd nxcompext && autoconf
cd nxcompshad && autoconf
+
+ # prepare nx-X11/config/cf/nxversion.def
+ sed \
+ -e 's/###NX_VERSION_MAJOR###/$(NX_VERSION_MAJOR)/' \
+ -e 's/###NX_VERSION_MINOR###/$(NX_VERSION_MINOR)/' \
+ -e 's/###NX_VERSION_MICRO###/$(NX_VERSION_MICRO)/' \
+ -e 's/###NX_VERSION_PATCH###/$(NX_VERSION_PATCH)/' \
+ nx-X11/config/cf/nxversion.def.in \
+ > nx-X11/config/cf/nxversion.def
+
cd nx-X11 && ${MAKE} World
+
+ # clean directly after build
+ rm -f nx-X11/config/cf/nxversion.def
+
cd nxproxy && autoconf && (${CONFIGURE}) && ${MAKE}
build:
diff --git a/nx-X11/config/cf/Imakefile b/nx-X11/config/cf/Imakefile
index 2eb7e995c..cbcec409e 100644
--- a/nx-X11/config/cf/Imakefile
+++ b/nx-X11/config/cf/Imakefile
@@ -27,7 +27,8 @@ xorgsite.def \
$(VERSIONDEFFILES) \
$(HOSTDEFFILES) \
site.def \
-xorgversion.def
+xorgversion.def \
+nxversion.def
RULEFILES = \
Imake.rules \
diff --git a/nx-X11/config/cf/nxversion.def.in b/nx-X11/config/cf/nxversion.def.in
new file mode 100644
index 000000000..03ac921f4
--- /dev/null
+++ b/nx-X11/config/cf/nxversion.def.in
@@ -0,0 +1,4 @@
+#define NX_VERSION_MAJOR ###NX_VERSION_MAJOR###
+#define NX_VERSION_MINOR ###NX_VERSION_MINOR###
+#define NX_VERSION_MICRO ###NX_VERSION_MICRO###
+#define NX_VERSION_PATCH ###NX_VERSION_PATCH###
diff --git a/nx-X11/config/cf/xorg.cf b/nx-X11/config/cf/xorg.cf
index 6c42574aa..71dab5631 100644
--- a/nx-X11/config/cf/xorg.cf
+++ b/nx-X11/config/cf/xorg.cf
@@ -54,6 +54,31 @@ XCOMM $Xorg: xfree86.cf,v 1.4 2000/08/17 19:41:49 cpqbld Exp $
XORG_VERSION_CURRENT = XorgVersion
RELEASE_VERSION = ReleaseVersion
+#if NXAgentServer
+#include "nxversion.def"
+
+#if !defined(nxVersionString) && \
+ defined(NX_VERSION_MAJOR) && defined(NX_VERSION_MINOR) && \
+ defined(NX_VERSION_MICRO) && defined(NX_VERSION_PATCH)
+# define nxVersionString `echo NX_VERSION_MAJOR NX_VERSION_MINOR NX_VERSION_MICRO NX_VERSION_PATCH | sed 's/ /./g'`
+#endif
+
+/*
+ * NX versions are M.m.µ.p, and NXVersion is:
+ *
+ * M * 10000000 + m * 100000 + µ * 1000 + p
+ *
+ */
+
+#if !defined(nxVersion) && defined(nxVersionString)
+# define nxVersion (((NX_VERSION_MAJOR) * 10000000) + ((NX_VERSION_MINOR) * 100000) + ((NX_VERSION_MICRO) * 1000) + NX_VERSION_PATCH)
+
+NX_VERSION_CURRENT = nxVersion
+NX_VERSION_CURRENT_STRING = nxVersionString
+
+#endif
+#endif /* NXAgentServer */
+
#if !defined(XorgManVersionString) && \
defined(XORG_VERSION_MAJOR) && defined(XORG_VERSION_MINOR) && \
defined(XORG_VERSION_PATCH) && defined(XORG_VERSION_SNAP)
@@ -1686,4 +1711,3 @@ XFREE86JAPANESEDOCDIR = $(DOCDIR)/Japanese
#include <cross.def>
#endif
#include <xf86.rules>
-
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Imakefile b/nx-X11/programs/Xserver/hw/nxagent/Imakefile
index d812c7f70..6c075fa9f 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Imakefile
+++ b/nx-X11/programs/Xserver/hw/nxagent/Imakefile
@@ -189,7 +189,12 @@ UPG_DEFINES=-DNXAGENT_UPGRADE
UPG_DEFINES=
#endif
-DEFINES = -g $(OS_DEFINES) $(EXT_DEFINES) $(UPG_DEFINES) \
+#if nxVersion
+NX_DEFINES=-DNX_VERSION_CURRENT="$(NX_VERSION_CURRENT)" \
+ -DNX_VERSION_CURRENT_STRING="\"$(NX_VERSION_CURRENT_STRING)\""
+#endif
+
+DEFINES = -g $(OS_DEFINES) $(EXT_DEFINES) $(UPG_DEFINES) $(NX_DEFINES) \
-UXF86VIDMODE -UXFreeXDGA -UXF86MISC -UXF86DRI -UXFree86LOADER \
-DNXAGENT_SERVER \
-DNXAGENT_CONSTRAINCURSOR \
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Init.c b/nx-X11/programs/Xserver/hw/nxagent/Init.c
index 8d4eed2b6..dbc706cfe 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Init.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Init.c
@@ -74,7 +74,8 @@ is" without express or implied warranty.
#undef DEBUG
#undef DUMP
-#define NXAGENT_VERSION "3.5.0"
+#define NXAGENT_VERSION NX_VERSION_CURRENT
+#define NXAGENT_VERSION_STRING NX_VERSION_CURRENT_STRING
/*
* ProcVector array defined in tables.c.
@@ -226,7 +227,7 @@ void InitOutput(ScreenInfo *screenInfo, int argc, char *argv[])
if (serverGeneration <= 1)
{
- fprintf(stderr, "\nNXAGENT - Version " NXAGENT_VERSION "\n\n");
+ fprintf(stderr, "\nNXAGENT - Version " NXAGENT_VERSION_STRING "\n\n");
fprintf(stderr, "Copyright (C) 2001, 2011 NoMachine.\n");
fprintf(stderr, "See http://www.nomachine.com/ for more information.\n\n");
diff --git a/version.sh b/version.sh
new file mode 100755
index 000000000..891536890
--- /dev/null
+++ b/version.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+# Copyright (C) 2015 Mihai Moldovan <ionic@ionic.de>
+# Copyright (C) 2015 Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
+#
+# 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 2 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, write to the
+# Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+COMPONENT="$1"
+VERSION_FILE="VERSION"
+
+case "${COMPONENT}" in
+ (1|2|3|4) :;;
+ (*) echo "usage: $(basename ${0}) <position-in-version-number>" >&2; exit 1;;
+esac
+
+# More than one line is not supported.
+VER="$(head -n "1" "${VERSION_FILE}" | cut -d"." -f"${COMPONENT}")"
+
+[ "x${VER}" = "x" ] && VER="0"
+
+printf "${VER}"