[X2Go-Commits] x2goserver.git - master (branch) updated: 3.1.1.3-300-g937723e

X2Go dev team git-admin at x2go.org
Tue Dec 17 11:02:09 CET 2013


The branch, master has been updated
       via  937723e0a9c2461d94fb9acfefc38a9d24b0efb4 (commit)
      from  8438c1ec5b2b021ad535ac1d493279d9e5a983e8 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 937723e0a9c2461d94fb9acfefc38a9d24b0efb4
Author: Mike Gabriel <mike.gabriel at das-netzwerkteam.de>
Date:   Tue Dec 17 10:55:06 2013 +0100

    Provide RHEL/Fedora support in x2goserver-xsession.

-----------------------------------------------------------------------

Summary of changes:
 debian/changelog                 |    1 +
 x2goserver-xsession/Makefile     |    8 +-
 x2goserver-xsession/etc/Xsession |  207 +++++++++++++++++++++++++++-----------
 x2goserver/bin/x2goruncommand    |    2 +-
 4 files changed, 154 insertions(+), 64 deletions(-)

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index 6bdb2ae..fc443f8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -92,6 +92,7 @@ x2goserver (4.0.1.10-0x2go1) UNRELEASED; urgency=low
     - Use xkb ruleset 'base' rather than xfree86 as on RHEL systems the
       xfree86 symlink to base rulset does not exist.
     - Grab systemd service file from Fedora and ship it upstream.
+    - Provide RHEL/Fedora support in x2goserver-xsession.
   * x2goserver.spec:
     + Ship x2goserver.spec (RPM package definitions) in upstream project.
       (Thanks to the Fedora package maintainers).
diff --git a/x2goserver-xsession/Makefile b/x2goserver-xsession/Makefile
index 14bad33..bfb0f6d 100755
--- a/x2goserver-xsession/Makefile
+++ b/x2goserver-xsession/Makefile
@@ -22,6 +22,8 @@ SHAREDIR=$(PREFIX)/share/x2go
 
 XSESSIONDIR ?= /etc/X11/Xsession.d
 XSESSIONOPTIONFILE ?= /etc/X11/Xsession.options
+XINITRCDIR ?= /etc/X11/xinit/xinitrc.d
+XCLIENTSDIR ?= /etc/X11/xinit/Xclients.d
 
 ETC_FILES=$(shell cd etc && echo *)
 FEATURE_SCRIPTS=$(shell cd share/x2gofeature.d && echo *.features)
@@ -52,8 +54,10 @@ install_config:
 #       provide target dirs for X11 related symlinks
 	$(INSTALL_PROGRAM) etc/Xsession                 $(DESTDIR)$(ETCDIR)/
 	$(INSTALL_SYMLINK) /etc/X11/Xresources          $(DESTDIR)$(ETCDIR)/
-	if [ -e $(XSESSIONOPTIONFILE) ]; then $(INSTALL_SYMLINK) $(XSESSIONOPTIONFILE) $(DESTDIR)$(ETCDIR)/Xsession.options; else touch $(DESTDIR)$(ETCDIR)/Xsession.options; fi
-	if [ -d $(XSESSIONDIR) ]; then $(INSTALL_SYMLINK) $(XSESSIONDIR) $(DESTDIR)$(ETCDIR)/Xsession.d; else $(INSTALL_DIR) $(DESTDIR)$(ETCDIR)/Xsession.d; fi
+	if [ -e /etc/debian_version ]; if [ -e $(XSESSIONOPTIONFILE) ]; then $(INSTALL_SYMLINK) $(XSESSIONOPTIONFILE) $(DESTDIR)$(ETCDIR)/Xsession.options; else touch $(DESTDIR)$(ETCDIR)/Xsession.options; fi; fi
+	if [ -e /etc/debian_version ]; if [ -d $(XSESSIONDIR) ]; then $(INSTALL_SYMLINK) $(XSESSIONDIR) $(DESTDIR)$(ETCDIR)/Xsession.d; else $(INSTALL_DIR) $(DESTDIR)$(ETCDIR)/Xsession.d; fi; fi
+	if [ -e /etc/redhat-release ]; if [ -d $(XINITRCDIR) ]; then $(INSTALL_SYMLINK) $(XINITRCDIR) $(DESTDIR)$(ETCDIR)/xinitrc.d; else $(INSTALL_DIR) $(DESTDIR)$(ETCDIR)/xinitrc.d; fi; fi
+	if [ -e /etc/redhat-release ]; if [ -d $(XCLIENTSDIR) ]; then $(INSTALL_SYMLINK) $(XCLIENTSDIR) $(DESTDIR)$(ETCDIR)/Xclients.d; else $(INSTALL_DIR) $(DESTDIR)$(ETCDIR)/Xclients.d; fi; fi
 
 install_man:
 
diff --git a/x2goserver-xsession/etc/Xsession b/x2goserver-xsession/etc/Xsession
index 47ec40e..243be76 100755
--- a/x2goserver-xsession/etc/Xsession
+++ b/x2goserver-xsession/etc/Xsession
@@ -13,48 +13,48 @@ X2GO_LIBEXEC_PATH="$(x2gopath libexec)";
 PROGNAME=XSession-x2go
 
 message () {
-  # pretty-print messages of arbitrary length; use xmessage if it
-  # is available and $DISPLAY is set
-  MESSAGE="$PROGNAME: $*"
-  echo "$MESSAGE" | fold -s -w ${COLUMNS:-80} >&2
-  if [ -n "$DISPLAY" ] && which xmessage > /dev/null 2>&1; then
-    echo "$MESSAGE" | fold -s -w ${COLUMNS:-80} | xmessage -center -file -
-  fi
+	# pretty-print messages of arbitrary length; use xmessage if it
+	# is available and $DISPLAY is set
+	MESSAGE="$PROGNAME: $*"
+	echo "$MESSAGE" | fold -s -w ${COLUMNS:-80} >&2
+	if [ -n "$DISPLAY" ] && which xmessage > /dev/null 2>&1; then
+		echo "$MESSAGE" | fold -s -w ${COLUMNS:-80} | xmessage -center -file -
+	fi
 }
 
 message_nonl () {
-  # pretty-print messages of arbitrary length (no trailing newline); use
-  # xmessage if it is available and $DISPLAY is set
-  MESSAGE="$PROGNAME: $*"
-  echo -n "$MESSAGE" | fold -s -w ${COLUMNS:-80} >&2;
-  if [ -n "$DISPLAY" ] && which xmessage > /dev/null 2>&1; then
-    echo -n "$MESSAGE" | fold -s -w ${COLUMNS:-80} | xmessage -center -file -
-  fi
+	# pretty-print messages of arbitrary length (no trailing newline); use
+	# xmessage if it is available and $DISPLAY is set
+	MESSAGE="$PROGNAME: $*"
+	echo -n "$MESSAGE" | fold -s -w ${COLUMNS:-80} >&2;
+	if [ -n "$DISPLAY" ] && which xmessage > /dev/null 2>&1; then
+		echo -n "$MESSAGE" | fold -s -w ${COLUMNS:-80} | xmessage -center -file -
+	fi
 }
 
 errormsg () {
-  # exit script with error
-  message "$*"
-  exit 1
+	# exit script with error
+	message "$*"
+	exit 1
 }
 
 internal_errormsg () {
-  # exit script with error; essentially a "THIS SHOULD NEVER HAPPEN" message
-  # One big call to message() for the sake of xmessage; if we had two then
-  # the user would have dismissed the error we want reported before seeing the
-  # request to report it.
-  errormsg "$*" \
-           "Please report the installed version of the \"x2goserver\"" \
-           "package and the complete text of this error message to" \
-           "<x2go-dev at lists.x2go.org>."
+	# exit script with error; essentially a "THIS SHOULD NEVER HAPPEN" message
+	# One big call to message() for the sake of xmessage; if we had two then
+	# the user would have dismissed the error we want reported before seeing the
+	# request to report it.
+	errormsg "$*" \
+	   "Please report the installed version of the \"X2Go Server\"" \
+	   "package and the complete text of this error message to" \
+	   "<x2go-dev at lists.x2go.org>."
 }
 
 # Load profile
 for file in "/etc/profile" "$HOME/.profile" "/etc/xprofile" "$HOME/.xprofile"; do
-    if [ -f "$file" ]; then
-        echo "Loading profile from $file";
-        . "$file"
-    fi
+	if [ -f "$file" ]; then
+		echo "Loading profile from $file";
+		. "$file"
+	fi
 done
 
 # initialize variables for use by all session scripts
@@ -71,17 +71,16 @@ ALTUSERXSESSION=$HOME/.Xsession-x2go
 ERRFILE=$HOME/.xsession-x2go-errors
 
 # attempt to create an error file; abort if we cannot
-if (umask 077 && touch "$ERRFILE") 2> /dev/null && [ -w "$ERRFILE" ] &&
-  [ ! -L "$ERRFILE" ]; then
-  chmod 600 "$ERRFILE"
+if (umask 077 && touch "$ERRFILE") 2> /dev/null && [ -w "$ERRFILE" ] && [ ! -L "$ERRFILE" ]; then
+	chmod 600 "$ERRFILE"
 elif ERRFILE=$(mktemp 2> /dev/null); then
-  if ! ln -sf "$ERRFILE" "${TMPDIR:=/tmp}/xsession-x2go-$USER"; then
-    message "warning: unable to symlink \"$TMPDIR/xsession-x2go-$USER\" to" \
-             "\"$ERRFILE\"; look for session log/errors in" \
-             "\"$TMPDIR/xsession-x2go-$USER\"."
-  fi
+	if ! ln -sf "$ERRFILE" "${TMPDIR:=/tmp}/xsession-x2go-$USER"; then
+		message "warning: unable to symlink \"$TMPDIR/xsession-x2go-$USER\" to" \
+		        "\"$ERRFILE\"; look for session log/errors in" \
+		        "\"$TMPDIR/xsession-x2go-$USER\"."
+	fi
 else
-  errormsg "unable to create X session (X2Go) log/error file; aborting."
+	errormsg "unable to create X session (X2Go) log/error file; aborting."
 fi
 
 exec >>"$ERRFILE" 2>&1
@@ -90,7 +89,7 @@ echo "$PROGNAME: X session started for $LOGNAME at $(date)"
 
 # sanity check; is our session script directory present?
 if [ ! -d "$SYSSESSIONDIR" ]; then
-  errormsg "no \"$SYSSESSIONDIR\" directory found; aborting."
+	errormsg "no \"$SYSSESSIONDIR\" directory found; aborting."
 fi
 
 # Attempt to create a file of non-zero length in /tmp; a full filesystem can
@@ -100,32 +99,118 @@ fi
 # determining what went wrong.
 WRITE_TEST=$(mktemp)
 if ! echo "*" >>"$WRITE_TEST"; then
-  message "warning: unable to write to ${WRITE_TEST%/*}; X session (X2Go) may" \
-          "exit with an error"
+	message "warning: unable to write to ${WRITE_TEST%/*}; X session (X2Go) may" \
+	        "exit with an error"
 fi
 rm -f "$WRITE_TEST"
 
-# use run-parts to source every file in the session directory; we source
-# instead of executing so that the variables and functions defined above
-# are available to the scripts, and so that they can pass variables to each
-# other
 
-SESSIONFILES=$(run-parts --list $SYSSESSIONDIR)
-SYSSESSIONDIR=/etc/x2go/Xsession.d
-
-SESSIONFILES=$(run-parts --list $SYSSESSIONDIR)
-
-### source Xsession files
-if [ -n "$SESSIONFILES" ]; then
-
-    set +e
-    for SESSIONFILE in $SESSIONFILES; do
-        "$X2GO_LIBEXEC_PATH/x2gosyslog" "$0" "info" "executing $SESSIONFILE"
-        . $SESSIONFILE
-    done
-    set -e
+if [ -f /etc/debian_version ]; then
+
+	# use run-parts to source every file in the session directory; we source
+	# instead of executing so that the variables and functions defined above
+	# are available to the scripts, and so that they can pass variables to each
+	# other
+
+	SESSIONFILES=$(run-parts --list $SYSSESSIONDIR)
+	SYSSESSIONDIR=/etc/x2go/Xsession.d
+
+	SESSIONFILES=$(run-parts --list $SYSSESSIONDIR)
+
+	### source Xsession files
+	if [ -n "$SESSIONFILES" ]; then
+
+		set +e
+		for SESSIONFILE in $SESSIONFILES; do
+			"$X2GO_LIBEXEC_PATH/x2gosyslog" "$0" "info" "executing $SESSIONFILE"
+			. $SESSIONFILE
+		done
+		set -e
+	fi
+elif [ -f /etc/redhat-release ]; then
+
+	# define a fallback... (should never be needed). The XSESSION_EXEC var gets set in
+	# X2Go's x2goruncommand script and can be used with obsolete switchdesk or with
+	# Xclients.d scripts (also rarely used, see below...).
+	XSESSION_EXEC=${XSESSION_EXEC:-xterm}
+
+	# Set up i18n environment
+	if [ -r /etc/profile.d/lang.sh ]; then
+		. /etc/profile.d/lang.sh
+	fi
+
+	# merge in defaults
+	[ -r "$SYSRESOURCES" ] && xrdb -nocpp -merge "$SYSRESOURCES"
+	[ -r "$USRRESOURCES" ] && xrdb -merge "$USRRESOURCES"
+
+	# RHEL's Xsession file for X11 allows playing with setxkbmap / xmodmap
+	# We provide this for compat, but disrecommend using it. Make sure to
+	# disable any Keyboard setup in X2Go Client / PyHoca-GUI if you want to
+	# use server-side key mappings.
+	USRMODMAP=$HOME/.Xmodmap-x2go
+	USRXKBMAP=$HOME/.Xkbmap-x2go
+
+	SYSMODMAP=/etc/x2go/Xmodmap
+	SYSXKBMAP=/etc/x2go/Xkbmap
+
+	# merge in keymaps
+	if [ -r "$SYSXKBMAP" ]; then
+		setxkbmap $(cat "$SYSXKBMAP")
+		XKB_IN_USE=yes
+	fi
+
+	if [ -r "$USRXKBMAP" ]; then
+		setxkbmap $(cat "$USRXKBMAP")
+		XKB_IN_USE=yes
+	fi
+
+	# xkb and xmodmap don't play nice together
+	if [ -z "$XKB_IN_USE" ]; then
+		[ -r "$SYSMODMAP" ] && xmodmap "$SYSMODMAP"
+		[ -r "$USRMODMAP" ] && xmodmap "$USRMODMAP"
+	fi
+
+	unset XKB_IN_USE
+
+	# run all system xinitrc shell scripts.
+	for file in /etc/x2go/xinit/xinitrc.d/* ; do
+		. $file
+	done
+
+	# Prefix launch of session with ssh-agent if available and not already running.
+	SSH_AGENT=
+	if [ -x /usr/bin/ssh-agent -a -z "$SSH_AGENT_PID" ]; then
+		if [ "x$TMPDIR" != "x" ]; then
+			SSH_AGENT="/usr/bin/ssh-agent /bin/env TMPDIR=$TMPDIR"
+		else
+			SSH_AGENT="/usr/bin/ssh-agent"
+		fi
+	fi
+
+	CK_XINIT_SESSION=
+	if [ -x /usr/bin/ck-xinit-session -a -z "$XDG_SESSION_COOKIE" ]; then
+		CK_XINIT_SESSION="/usr/bin/ck-xinit-session"
+	fi
+
+	# At the time of integrating X2Go Xsession support for RHEL6 / Fedora
+	# the Xsession stuff in Fedora/RHEL6 seems to be a little mess.
+	# The proposed strategy is to have Xclients.$WM.sh files in 
+	# /etc/X11/xinit/Xclients.d. Currently, only wmx uses this mechanism.
+	# As it is a described but rather unused ,,standard'' we will not support it
+	# in X2Go for now, but leave it here as a reminder...
+
+	# XCLIENTS_D=/etc/x2go/Xclients.d
+	#if [ -d "$XCLIENTS_D" -a -x "$XCLIENTS_D/Xclients.${XSESSION_EXEC}.sh" ]; then
+	#	exec -l $SHELL -c "$CK_XINIT_SESSION $SSH_AGENT $XCLIENTS_D/Xclients.$1.sh"
+	#fi
+
+	# switchdesk support is also totally deprecated in RHEL, but we leave it here
+	# as a reminder, as well, in case we need it in the future for special setups...
+	#if [ -x "$SWITCHDESKPATH/Xclients.${XSESSION_EXEC}" ]; then
+	#	exec -l "$SHELL" -c "$SWITCHDESKPATH/Xclients.${XSESSION_EXEC}";
+	#fi
+
+	exec $CK_XINIT_SESSION $SSH_AGENT /bin/sh -c "exec -l $SHELL -c \"$STARTUP\""
 fi
 
 exit 0
-
-# vim:set ai et sts=2 sw=2 tw=80:
diff --git a/x2goserver/bin/x2goruncommand b/x2goserver/bin/x2goruncommand
index d5f39d2..5d5113c 100755
--- a/x2goserver/bin/x2goruncommand
+++ b/x2goserver/bin/x2goruncommand
@@ -230,7 +230,7 @@ if [ "$EXEC" != "" ] && [ -x $EXEC ]; then
 	x2gofeature X2GO_XSESSION &>/dev/null && [ "x$X2GO_SESS_TYPE" = "xD" ] && {
 		STARTUP="$cmd$args"
 		$X2GO_LIB_PATH/x2gosyslog "$0" "notice" "launching session with Xsession-x2go mechanism, using STARTUP=\"$STARTUP\""
-		STARTUP="/usr/bin/env LD_LIBRARY_PATH=${LD_LIBRARY_PATH} ${STARTUP}" /etc/x2go/Xsession
+		XSESSION_EXEC="$cmd" STARTUP="/usr/bin/env LD_LIBRARY_PATH=${LD_LIBRARY_PATH} ${STARTUP}" /etc/x2go/Xsession
 	} || {
 		$X2GO_LIB_PATH/x2gosyslog "$0" "debug" "executing command \"$cmd$args\"..."
 		$EXEC_WRAPPER $cmd$args


hooks/post-receive
-- 
x2goserver.git (X2Go Server)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "x2goserver.git" (X2Go Server).




More information about the x2go-commits mailing list