From 203d97147623b97a48c0f6456cc1de9d8364db03 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Mon, 16 Feb 2015 15:11:02 +0100 Subject: 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. --- Makefile | 19 ++++++++++++++++ nx-X11/config/cf/Imakefile | 3 ++- nx-X11/config/cf/nxversion.def.in | 4 ++++ nx-X11/config/cf/xorg.cf | 26 ++++++++++++++++++++- nx-X11/programs/Xserver/hw/nxagent/Imakefile | 7 +++++- nx-X11/programs/Xserver/hw/nxagent/Init.c | 5 ++-- version.sh | 34 ++++++++++++++++++++++++++++ 7 files changed, 93 insertions(+), 5 deletions(-) create mode 100644 nx-X11/config/cf/nxversion.def.in create mode 100755 version.sh 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 #endif #include - 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 +# Copyright (C) 2015 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 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}) " >&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}" -- cgit v1.2.3