diff options
author | Bernard Cafarelli <voyageur@gentoo.org> | 2008-08-25 18:36:06 +0000 |
---|---|---|
committer | Bernard Cafarelli <voyageur@gentoo.org> | 2008-08-25 18:36:06 +0000 |
commit | 9c413ce739e67585d538c536c4ff367616b43e91 (patch) | |
tree | 1127750c2074b810c700d86d732e9c19f14b8096 /net-misc/nxserver-freenx | |
parent | ppc stable, bug #235298 (diff) | |
download | gentoo-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/ChangeLog | 10 | ||||
-rw-r--r-- | net-misc/nxserver-freenx/files/nxserver-freenx-0.7.3-roundrobin.patch | 143 | ||||
-rw-r--r-- | net-misc/nxserver-freenx/nxserver-freenx-0.7.3-r1.ebuild | 121 |
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" +} |