summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Cafarelli <voyageur@gentoo.org>2008-08-25 18:36:06 +0000
committerBernard Cafarelli <voyageur@gentoo.org>2008-08-25 18:36:06 +0000
commit9c413ce739e67585d538c536c4ff367616b43e91 (patch)
tree1127750c2074b810c700d86d732e9c19f14b8096 /net-misc/nxserver-freenx
parentppc stable, bug #235298 (diff)
downloadgentoo-2-9c413ce739e67585d538c536c4ff367616b43e91.tar.gz
gentoo-2-9c413ce739e67585d538c536c4ff367616b43e91.tar.bz2
gentoo-2-9c413ce739e67585d538c536c4ff367616b43e91.zip
Fix round-robin loadbalance, patch from upstream SVN, thanks to Simon Gao <gao@schrodinger.com> in bug #235204
(Portage version: 2.2_rc8/cvs/Linux 2.6.26-gentoo x86_64)
Diffstat (limited to 'net-misc/nxserver-freenx')
-rw-r--r--net-misc/nxserver-freenx/ChangeLog10
-rw-r--r--net-misc/nxserver-freenx/files/nxserver-freenx-0.7.3-roundrobin.patch143
-rw-r--r--net-misc/nxserver-freenx/nxserver-freenx-0.7.3-r1.ebuild121
3 files changed, 273 insertions, 1 deletions
diff --git a/net-misc/nxserver-freenx/ChangeLog b/net-misc/nxserver-freenx/ChangeLog
index 14cdc95895fd..df3d1e54be83 100644
--- a/net-misc/nxserver-freenx/ChangeLog
+++ b/net-misc/nxserver-freenx/ChangeLog
@@ -1,6 +1,14 @@
# ChangeLog for net-misc/nxserver-freenx
# Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-misc/nxserver-freenx/ChangeLog,v 1.52 2008/08/22 13:04:53 voyageur Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-misc/nxserver-freenx/ChangeLog,v 1.53 2008/08/25 18:36:05 voyageur Exp $
+
+*nxserver-freenx-0.7.3-r1 (25 Aug 2008)
+
+ 25 Aug 2008; Bernard Cafarelli <voyageur@gentoo.org>
+ +files/nxserver-freenx-0.7.3-roundrobin.patch,
+ +nxserver-freenx-0.7.3-r1.ebuild:
+ Fix round-robin loadbalance, patch from upstream SVN, thanks to Simon Gao
+ <gao@schrodinger.com> in bug #235204
*nxserver-freenx-0.7.3 (22 Aug 2008)
diff --git a/net-misc/nxserver-freenx/files/nxserver-freenx-0.7.3-roundrobin.patch b/net-misc/nxserver-freenx/files/nxserver-freenx-0.7.3-roundrobin.patch
new file mode 100644
index 000000000000..b584f33df0ed
--- /dev/null
+++ b/net-misc/nxserver-freenx/files/nxserver-freenx-0.7.3-roundrobin.patch
@@ -0,0 +1,143 @@
+--- trunk/freenx-server/nxserver 2008/08/22 00:44:43 580
++++ trunk/freenx-server/nxserver 2008/08/25 03:28:15 612
+@@ -1192,7 +1192,7 @@
+ # Lock held
+
+ SERVER_LB_NR=$(cat $NX_SESS_DIR/round-robin 2>/dev/null)
+- let SERVER_LB_NR=(SERVER_LB_NR+1) % SERVER_LB_NR_OF_HOSTS
++ let SERVER_LB_NR=(SERVER_LB_NR+1)%SERVER_LB_NR_OF_HOSTS
+ echo $SERVER_LB_NR >$NX_SESS_DIR/round-robin
+
+ # Exit critical section
+@@ -1961,71 +1961,71 @@
+ session_history "$user" "$sessid"
+ }
+
+-cmd_terminate()
++cmd_execute()
+ {
+- CMD_PARAMS=$(cmd_parse_3_params "$2")
+- [ -z "$CMD_PARAMS" ] && exit 1
+- for i in $CMD_PARAMS;
++ cmd_host="$1"
++ cmd_user="$2"
++ cmd_cmd="$3"
++
++ if [ "$ENABLE_USERMODE_AUTHENTICATION" = "1" ]
++ then
++ sh -c "$cmd_cmd"
++ elif [ "$cmd_host" = "127.0.0.1" -o "$cmd_host" = "localhost" ]
++ then
++ su - "$cmd_user" -c "$cmd_cmd"
++ else
++ ssh "$cmd_host" su - "$cmd_user" -c "'$cmd_cmd'"
++ fi
++}
++
++cmd_terminate_or_send()
++{
++ CMD="$1"
++
++ if [ "$CMD" = "--broadcast" ]
++ then
++ CMD_PARAMS=$(session_find_all)
++ [ -z "$CMD_PARAMS" ] && cmd_abort "Error: No running session could be found."
++ else
++ CMD_PARAMS=$(cmd_parse_3_params "$2")
++ [ -z "$CMD_PARAMS" ] && exit 1
++ shift
++ fi
++ shift
++
++ for i in $CMD_PARAMS
+ do
+ CMDLINE=$(session_get_cmdline $i)
+ cmd_sessionid=$(getparam sessionId)
++ cmd_display=$(getparam display)
+ cmd_user=$(getparam userName)
+ cmd_type=$(getparam type)
+ cmd_status=$(getparam status)
++ cmd_host=$(getparam host)
+
+ # is it a "good" session?
+- case "$1" in
++ case "$CMD" in
+ --suspend)
+ if [ "$cmd_status" = "Running" ] && stringinstring "unix-" "$cmd_type"
+ then
+- echo "sessionid=$cmd_sessionid" | su - "$cmd_user" -c "$PATH_BIN/nxnode --suspend"
++ echo "sessionid=$cmd_sessionid" | cmd_execute "$cmd_host" "$cmd_user" "$PATH_BIN/nxnode --suspend"
+ fi
+ ;;
+ --terminate)
+- echo "sessionid=$cmd_sessionid" | su - "$cmd_user" -c "$PATH_BIN/nxnode --terminate"
++ echo "sessionid=$cmd_sessionid" | cmd_execute "$cmd_host" "$cmd_user" "$PATH_BIN/nxnode --terminate"
+ ;;
+ --force-terminate)
+- echo "sessionid=$cmd_sessionid" | su - "$cmd_user" -c "$PATH_BIN/nxnode --terminate"
++ echo "sessionid=$cmd_sessionid" | cmd_execute "$cmd_host" "$cmd_user" "$PATH_BIN/nxnode --terminate"
+ session_close $cmd_sessionid
+ ;;
+- esac
+- done
+-
+-}
+-
+-cmd_send()
+-{
+- if [ "$1" = "--broadcast" ]
+- then
+- CMD_PARAMS=$(session_find_all)
+- [ -z "$CMD_PARAMS" ] && cmd_abort "Error: No running session could be found."
+- else
+- CMD_PARAMS=$(cmd_parse_3_params "$2")
+- [ -z "$CMD_PARAMS" ] && exit 1
+- shift
+- fi
+- shift
+- for i in $CMD_PARAMS;
+- do
+- CMDLINE=$(session_get_cmdline $i)
+- cmd_display=$(getparam display)
+- cmd_user=$(getparam userName)
+- cmd_type=$(getparam type)
+- cmd_status=$(getparam status)
+- cmd_host=$(getparam host)
+-
+- # is it a "good" session?
+- if [ "$cmd_status" = "Running" ] && stringinstring "unix-" "$cmd_type"
+- then
+- if [ "$cmd_host" = "127.0.0.1" -o "$cmd_host" = "localhost" ]
++ --send|--broadcast)
++ # is it a "good" session?
++ if [ "$cmd_status" = "Running" ] && stringinstring "unix-" "$cmd_type"
+ then
+- su - "$cmd_user" -c "$PATH_BIN/nxdialog --dialog ok --caption \"NX Administrator Message\" --message \"$@\" -display \":$cmd_display\" &"
+- else
+- ssh $cmd_host su - "$cmd_user" -c "'$PATH_BIN/nxdialog --dialog ok --caption \"NX Administrator Message\" --message \"$@\" -display \":$cmd_display\" &'"
++ cmd_execute "$cmd_host" "$cmd_user" "$PATH_BIN/nxdialog --dialog ok --caption \"NX Administrator Message\" --message \"$@\" -display \":$cmd_display\" &"
+ fi
+- fi
++ esac
+ done
+- #nxnode_start --send "$CMD_PARAMS"
+ }
+
+ #
+@@ -2099,13 +2099,13 @@
+ cmd_history "$@"
+ ;;
+ --terminate|--suspend|--force-terminate)
+- cmd_terminate "$@"
++ cmd_terminate_or_send "$@"
+ ;;
+ --cleanup)
+- cmd_terminate "--force-terminate" "*"
++ cmd_terminate_or_send "--force-terminate" "*"
+ ;;
+ --send|--broadcast)
+- cmd_send "$@"
++ cmd_terminate_or_send "$@"
+ ;;
+ *)
+ cmd_abort "Error: Function $CMD not implemented yet."
diff --git a/net-misc/nxserver-freenx/nxserver-freenx-0.7.3-r1.ebuild b/net-misc/nxserver-freenx/nxserver-freenx-0.7.3-r1.ebuild
new file mode 100644
index 000000000000..7a1ff342b767
--- /dev/null
+++ b/net-misc/nxserver-freenx/nxserver-freenx-0.7.3-r1.ebuild
@@ -0,0 +1,121 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/nxserver-freenx/nxserver-freenx-0.7.3-r1.ebuild,v 1.1 2008/08/25 18:36:05 voyageur Exp $
+
+inherit multilib eutils
+
+MY_PN="freenx-server"
+DESCRIPTION="Free Software Implementation of the NX Server"
+HOMEPAGE="http://freenx.berlios.de/"
+SRC_URI="mirror://berlios/freenx/${MY_PN}-${PV}.tar.gz"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+RESTRICT="strip"
+IUSE="arts cups esd nxclient"
+DEPEND="virtual/ssh
+ dev-tcltk/expect
+ sys-apps/gawk
+ net-analyzer/gnu-netcat
+ nxclient? ( net-misc/nxclient )
+ !nxclient? ( !net-misc/nxclient
+ || ( x11-misc/xdialog
+ x11-apps/xmessage ) )
+ >=net-misc/nx-2.1.0
+ arts? ( kde-base/arts )
+ cups? ( net-print/cups )
+ esd? ( media-sound/esound )
+ !net-misc/nxserver-freeedition
+ !net-misc/nxserver-2xterminalserver"
+
+RDEPEND="${DEPEND}
+ media-fonts/font-misc-misc
+ media-fonts/font-cursor-misc
+ x11-apps/xauth
+ x11-apps/xrdb
+ x11-apps/sessreg"
+
+S=${WORKDIR}/${MY_PN}-${PV}
+
+export NX_HOME_DIR=/var/lib/nxserver/home
+
+pkg_setup () {
+ enewuser nx -1 -1 ${NX_HOME_DIR}
+}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+
+ epatch "${FILESDIR}"/${P}-nxloadconfig.patch
+ epatch "${FILESDIR}"/${P}-roundrobin.patch
+ epatch "${FILESDIR}"/${PN}-0.7.2-cups.patch
+
+ sed -i "/PATH_LIB=/s/lib/$(get_libdir)/g" nxloadconfig || die
+ sed -i "/REAL_PATH_BIN=/s/lib/$(get_libdir)/g" nxloadconfig || die
+
+ # Change the defaults in nxloadconfig to meet the users needs.
+ if use arts ; then
+ einfo "Enabling arts support."
+ sed -i '/ENABLE_ARTSD_PRELOAD=/s/"0"/"1"/' nxloadconfig || die
+ sed -i '/ENABLE_ARTSD_PRELOAD=/s/"0"/"1"/' node.conf.sample || die
+ fi
+ if use esd ; then
+ einfo "Enabling esd support."
+ sed -i '/ENABLE_ESD_PRELOAD=/s/"0"/"1"/' nxloadconfig || die
+ sed -i '/ENABLE_ESD_PRELOAD=/s/"0"/"1"/' node.conf.sample || die
+ fi
+ if use cups ; then
+ einfo "Enabling cups support."
+ sed -i '/ENABLE_KDE_CUPS=/s/"0"/"1"/' nxloadconfig || die
+ sed -i '/ENABLE_KDE_CUPS=/s/"0"/"1"/' node.conf.sample || die
+ fi
+}
+
+src_install() {
+ export NX_ETC_DIR=/etc/nxserver
+ export NX_SESS_DIR=/var/lib/nxserver/db
+
+ emake DESTDIR="${D}" install || die "install failed"
+
+ # This should be renamed to remove the blocker on net-misc/nxclient
+ use nxclient && rm "${D}"/usr/bin/nxprint
+
+ mv "${D}"/etc/nxserver/node.conf.sample "${D}"/etc/nxserver/node.conf ||
+ die "cannot find default configuration file"
+
+ dodir ${NX_ETC_DIR}
+ for x in passwords passwords.orig ; do
+ touch "${D}"${NX_ETC_DIR}/$x
+ chmod 600 "${D}"${NX_ETC_DIR}/$x
+ done
+
+ dodir ${NX_HOME_DIR}
+
+ for x in closed running failed ; do
+ keepdir ${NX_SESS_DIR}/$x
+ fperms 0700 ${NX_SESS_DIR}/$x
+ done
+
+ newinitd "${FILESDIR}"/nxserver.init nxserver
+}
+
+pkg_postinst () {
+ # Other NX servers ebuilds may have already created the nx account
+ # However they use different login shell/home directory paths
+ if [[ ${ROOT} == "/" ]]; then
+ usermod -s /usr/bin/nxserver nx || die "Unable to set login shell of nx user!!"
+ usermod -d ${NX_HOME_DIR} nx || die "Unable to set home directory of nx user!!"
+ usermod -G utmp nx || die "Unable to add nx user to utmp group!!"
+ else
+ elog "If you had another NX server installed before, please make sure"
+ elog "the nx user account is correctly set to:"
+ elog " * login shell: /usr/bin/nxserver"
+ elog " * home directory: ${NX_HOME_DIR}"
+ elog " * supplementary groups: utmp"
+ fi
+
+ elog "To complete the installation, run:"
+ elog " nxsetup --install --setup-nomachine-key --clean --purge"
+ elog "This will use the default Nomachine SSH key"
+}