summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Cafarelli <voyageur@gentoo.org>2015-03-26 17:09:10 +0100
committerBernard Cafarelli <voyageur@gentoo.org>2015-03-26 17:09:10 +0100
commit6f4ac0dccdc732f67c1a393ca26c24c67dcb5f94 (patch)
tree317f2623cf99c87e37008c05da78799dbeecc4d9 /net-misc/nxcl
parentnxplayer is in portage now (diff)
downloadnx-6f4ac0dccdc732f67c1a393ca26c24c67dcb5f94.tar.gz
nx-6f4ac0dccdc732f67c1a393ca26c24c67dcb5f94.tar.bz2
nx-6f4ac0dccdc732f67c1a393ca26c24c67dcb5f94.zip
Add old NX packages in the overlay
Last rites in progress in main tree, bug #537774
Diffstat (limited to 'net-misc/nxcl')
-rw-r--r--net-misc/nxcl/ChangeLog55
-rw-r--r--net-misc/nxcl/Manifest7
-rw-r--r--net-misc/nxcl/files/nxcl-0.9-gcc43.patch37
-rw-r--r--net-misc/nxcl/files/nxcl-0.9-gcc47.patch10
-rw-r--r--net-misc/nxcl/files/nxcl-0.9-no_nxssh.patch372
-rw-r--r--net-misc/nxcl/metadata.xml9
-rw-r--r--net-misc/nxcl/nxcl-0.9-r2.ebuild47
7 files changed, 537 insertions, 0 deletions
diff --git a/net-misc/nxcl/ChangeLog b/net-misc/nxcl/ChangeLog
new file mode 100644
index 0000000..1a25042
--- /dev/null
+++ b/net-misc/nxcl/ChangeLog
@@ -0,0 +1,55 @@
+# ChangeLog for net-misc/nxcl
+# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/nxcl/ChangeLog,v 1.14 2013/08/07 13:29:05 ago Exp $
+
+ 07 Aug 2013; Agostino Sarubbo <ago@gentoo.org> nxcl-0.9-r2.ebuild:
+ Stable for x86, wrt bug #477132
+
+ 03 Aug 2013; Agostino Sarubbo <ago@gentoo.org> nxcl-0.9-r2.ebuild:
+ Stable for amd64, wrt bug #477132
+
+ 18 Jun 2012; Bernard Cafarelli <voyageur@gentoo.org> nxcl-0.9-r2.ebuild,
+ +files/nxcl-0.9-gcc47.patch:
+ Fix compilation with GCC 4.7, bug #421731
+
+ 21 May 2012; Kacper Kowalik <xarthisius@gentoo.org> nxcl-0.9-r1.ebuild,
+ nxcl-0.9-r2.ebuild:
+ Add missing inheritance of eutils.eclass
+
+*nxcl-0.9-r2 (19 Feb 2010)
+
+ 19 Feb 2010; Bernard Cafarelli <voyageur@gentoo.org> -nxcl-0.9.ebuild,
+ +nxcl-0.9-r2.ebuild:
+ Fix documentation install path, bug #305579, EAPI2, and remove old
+
+ 08 Mar 2009; Markus Meier <maekke@gentoo.org> nxcl-0.9-r1.ebuild:
+ amd64/x86 stable, bug #256414
+
+*nxcl-0.9-r1 (15 Sep 2008)
+
+ 15 Sep 2008; Bernard Cafarelli <voyageur@gentoo.org>
+ +files/nxcl-0.9-no_nxssh.patch, metadata.xml, +nxcl-0.9-r1.ebuild:
+ Upstream patch to allow nxcl to work without net-misc/nxclient, bug
+ #235023
+
+ 10 Sep 2008; Bernard Cafarelli <voyageur@gentoo.org>
+ +files/nxcl-0.9-gcc43.patch, nxcl-0.9.ebuild:
+ Fix compilation with gcc-4.3, closes bug #235018
+
+ 05 Jun 2008; Peter Volkov <pva@gentoo.org> nxcl-0.9.ebuild:
+ amd64 stable, bug #222967.
+
+ 29 May 2008; Christian Faulhammer <opfer@gentoo.org> nxcl-0.9.ebuild:
+ x86 stable, bug #222967
+
+ 26 May 2008; Bernard Cafarelli <voyageur@gentoo.org> nxcl-0.9.ebuild:
+ Needs nxssh, currently provided by net-misc/nxclient. Spotted by pva
+
+ 13 May 2008; Bernard Cafarelli <voyageur@gentoo.org> nxcl-0.9.ebuild:
+ Do not runtime-depend on doxygen, thanks flameeyes in bug #221683
+
+*nxcl-0.9 (14 Mar 2008)
+
+ 14 Mar 2008; Bernard Cafarelli <voyageur@gentoo.org> +metadata.xml,
+ +nxcl-0.9.ebuild:
+ Initial version, from NX overlay and bug #213208
diff --git a/net-misc/nxcl/Manifest b/net-misc/nxcl/Manifest
new file mode 100644
index 0000000..03697ac
--- /dev/null
+++ b/net-misc/nxcl/Manifest
@@ -0,0 +1,7 @@
+AUX nxcl-0.9-gcc43.patch 931 SHA256 f07141589114982e4aec77dce92971037f57bf6cf8f56c481e978795c4d44bd3 SHA512 f9b1ab67e0d66d84765814322b30b6374c56aaefb9b303ff7cebfecae6a8eccf963cbc2126a33a54973c08abe38245d671d421aaca648c963a21571d056729b5 WHIRLPOOL 8fee98f7cf190a74e4d40d7c0d5e21137bec26fa11d537f38efdc83e79ebc45cebd5f82d7f5b9f9601ac61a00d7366ff0eed27a6c0f2e66994fa52f503ed7c21
+AUX nxcl-0.9-gcc47.patch 274 SHA256 5bb35a95b937d327ccbe66abcfe059a071959a498304427cff658bdcda951eed SHA512 0d3bbc658aeb118658d13fcf0bd81f7116c6ef55bf6d4d21f0a04364fd56be6d63f442f907f1d3fd06d338674f1fe0f518a8d1a2687fbaf790ee6b8b2510f663 WHIRLPOOL ac3d17add1cfc1ddd2dae01af95b0cc05157016d5fe10f76a9794506c6cbcafaca4b864cdf9aa107002a2ce8c08868bdfd62cf72755557acf5951d1916c24498
+AUX nxcl-0.9-no_nxssh.patch 11470 SHA256 a15875efae333eec432765ee4edb0d3cabfaf0d8130cd19d2ab5255cb6e9a687 SHA512 03fcc82364b6d5b6f7b1f21451456abf217c4f7b98e14418bd7ba41cc5941a1af1c1d231e164261a632f9c1a09c618ef4c545bd0c06b017cfc26d5b4d762bb57 WHIRLPOOL 0aab743ca4a38cca32b3e7c9e8bf216de0d6c586598e97e883e795504189638d789bf0745d1d6c65a78b55c5432d926acd9d57ed4da93c88086014e3fe703325
+DIST freenx-client-0.9.tar.bz2 46240 SHA256 dfc6c8dd89c26171411d8f7fa92613004eb8947ff509459151fdb03de7fe9608 SHA512 be56f594f13d0362c41391396db7d8a4807887622658c9e4a59e33e793625574dbc2a088b0c1ea28dfaa572f2d539d2a0a898459bd080609e120257845583df0 WHIRLPOOL fd15633bcf4128e89c0d74c2f94e62e13b0efbbc091407472609dff6bb7aad7183003a59272d1d0bda368374c2a7968d1b8efbba8900005e66a703a66c6e15fc
+EBUILD nxcl-0.9-r2.ebuild 1227 SHA256 89caefc1c39055d5247f036474b9ebfbdebeac2e8d51ed2e0bfb6f0614c3e294 SHA512 cfce9a0b13bb7b28d4af27ebfdec77dcbe38e2c3283a56c2fa55d521363455089e5bc9ff1c2bd400cfb1310bcce6f0106a31724bb10818e45a3971f5e8ddfacb WHIRLPOOL 8a25e1e736a67622812b2492f5e2a139dc7a60f5c6db23a925157924465ca46cd289e68b61b3f67b1796e15bd59ff8963c32dda03682731b0c70c6d88c14acbb
+MISC ChangeLog 2023 SHA256 93b07559008fff84bd000f162c6610f73fd0da9b89d3d7952395c2cac3ffcf0e SHA512 940e442246b6e1f46b90b3f398fd134e98dcff8ef3068f32b20f46c53a68c40102a18a162d1f539180fa55df17c47c41a514ca30c9f2ebe5d5c68eb1207392f0 WHIRLPOOL b3702d2a8dbe59755a50b8cb5cf8ba56b7cf68e2da5a6e682644d7871d5858874e5f846d3cd75516eab510a45e01766c97dda396a73ecdfa3747312b7ad2fdde
+MISC metadata.xml 340 SHA256 afdb0242dc9daf0db276be4f69861fde54eeca28395b2eab8def563cef228b74 SHA512 6436629db3535ebc16e51417e583bfd100f5291388793eea57faa18ea7fdd734b342e5e5f8276190eeaaa71b4e7279b2097e8a6c12786bb4bd449e2301bb3433 WHIRLPOOL 3be8e881b6c579a7ebd3957a65a1e4ee57b65bfdd5d6c1790d6efdc264a1fa4e8bb27343e48f56d6e7956b90df9755474b7e7d3955b9493b4054a73a40fbbbf8
diff --git a/net-misc/nxcl/files/nxcl-0.9-gcc43.patch b/net-misc/nxcl/files/nxcl-0.9-gcc43.patch
new file mode 100644
index 0000000..1961e26
--- /dev/null
+++ b/net-misc/nxcl/files/nxcl-0.9-gcc43.patch
@@ -0,0 +1,37 @@
+Index: nxcl/nxcl.cpp
+===================================================================
+--- nxcl/nxcl.cpp (révision 520)
++++ nxcl/nxcl.cpp (révision 545)
+@@ -30,6 +30,7 @@
+ #include <dbus/dbus.h>
+ #include <X11/Xlib.h>
+ }
++#include <stdlib.h>
+
+ using namespace nxcl;
+ using namespace std;
+Index: lib/notQt.cpp
+===================================================================
+--- lib/notQt.cpp (révision 520)
++++ lib/notQt.cpp (révision 545)
+@@ -29,6 +29,7 @@
+ #include <sys/socket.h>
+ #include <signal.h>
+ }
++#include <stdlib.h>
+
+ #include "../config.h"
+ #include "notQt.h"
+Index: lib/nxclientlib.cpp
+===================================================================
+--- lib/nxclientlib.cpp (révision 520)
++++ lib/nxclientlib.cpp (révision 545)
+@@ -43,6 +43,8 @@
+ #include <sys/stat.h>
+ #include <unistd.h>
+ }
++#include <stdlib.h>
++#include <string.h>
+
+ /*
+ * On the location of nxproxy and nxssh binaries
diff --git a/net-misc/nxcl/files/nxcl-0.9-gcc47.patch b/net-misc/nxcl/files/nxcl-0.9-gcc47.patch
new file mode 100644
index 0000000..d14c25e
--- /dev/null
+++ b/net-misc/nxcl/files/nxcl-0.9-gcc47.patch
@@ -0,0 +1,10 @@
+--- lib/notQt.h.orig 2012-06-18 17:15:02.139055813 +0200
++++ lib/notQt.h 2012-06-18 17:15:23.424070974 +0200
+@@ -34,6 +34,7 @@
+ #include <fstream>
+ extern "C" {
+ #include <sys/poll.h>
++#include <unistd.h>
+ }
+ #define NOTQTPROCESS_MAIN_APP 0
+ #define NOTQTPROCESS_FAILURE -1
diff --git a/net-misc/nxcl/files/nxcl-0.9-no_nxssh.patch b/net-misc/nxcl/files/nxcl-0.9-no_nxssh.patch
new file mode 100644
index 0000000..4142a0b
--- /dev/null
+++ b/net-misc/nxcl/files/nxcl-0.9-no_nxssh.patch
@@ -0,0 +1,372 @@
+Index: lib/notQt.cpp
+===================================================================
+--- lib/notQt.cpp (révision 519)
++++ lib/notQt.cpp (révision 520)
+@@ -26,6 +26,7 @@
+ #include <sys/wait.h>
+ #include <sys/stat.h>
+ #include <sys/poll.h>
++#include <sys/socket.h>
+ #include <signal.h>
+ }
+
+@@ -52,7 +53,8 @@
+ progName("unknown"),
+ error (NOTQPROCNOERROR),
+ pid(0),
+- signalledStart(false)
++ signalledStart(false),
++ parentFD(-1)
+ {
+ // Set up the polling structs
+ this->p = static_cast<struct pollfd*>(malloc (2*sizeof (struct pollfd)));
+@@ -62,6 +64,15 @@
+ notQProcess::~notQProcess ()
+ {
+ free (this->p);
++ if (parentFD != -1)
++ {
++ close(parentFD);
++ parentFD=-1;
++ }
++ // FIXME: this should be closed here
++ // close (parentToChild[READING_END]);
++ // close (childToParent[WRITING_END]);
++ // close (childErrToParent[WRITING_END]);
+ }
+
+ void
+@@ -84,10 +95,18 @@
+ // NB: The first item in the args list should be the program name.
+ this->progName = program;
+
++#ifdef NXCL_USE_NXSSH
+ // Set up our pipes
+ if (pipe(parentToChild) == -1 || pipe(childToParent) == -1 || pipe(childErrToParent) == -1) {
+ return NOTQTPROCESS_FAILURE;
+ }
++#else /* We need a socketpair for that to work */
++ if (socketpair(AF_UNIX, SOCK_STREAM, 0, parentToChild) == -1 || pipe(childErrToParent) == -1)
++ return NOTQTPROCESS_FAILURE;
++
++ childToParent[READING_END]=dup(parentToChild[WRITING_END]);
++ childToParent[WRITING_END]=dup(parentToChild[READING_END]);
++#endif
+
+ this->pid = fork();
+
+Index: lib/nxsession.cpp
+===================================================================
+--- lib/nxsession.cpp (révision 519)
++++ lib/nxsession.cpp (révision 520)
+@@ -69,6 +69,7 @@
+ int response = parseResponse (message);
+ string returnMessage;
+
++#ifdef NXCL_USE_NXSSH
+ if (response == 211) {
+ if (doSSH == true) {
+ returnMessage = "yes";
+@@ -80,6 +81,7 @@
+ if (response == 204) { // Authentication failed
+ returnMessage = "204";
+ }
++#endif
+
+ if (response == 147) { // Server capacity reached
+ returnMessage = "147";
+@@ -90,6 +92,17 @@
+ case HELLO_NXCLIENT:
+ dbgln ("HELLO_NXCLIENT stage");
+
++ if (message.find("Are you sure you want to continue connecting (yes/no)?") != string::npos)
++ returnMessage = "yes"; // FF-FIXME: Or 211?
++
++ if (message.find("assword") != string::npos)
++ returnMessage = nxPassword; // FF-FIXME: -> What to do? What to do?
++
++ if (message.find("Permission denied") != string::npos ||
++ message.find("su: Authentication failure") != string::npos ||
++ message.find("Unknown id:") != string::npos)
++ returnMessage = "204"; // Authentication failed
++
+ if (message.find("HELLO NXSERVER - Version") != string::npos) {
+ this->callbacks->authenticatedSignal();
+ returnMessage = "hello NXCLIENT - Version ";
+Index: lib/notQt.h
+===================================================================
+--- lib/notQt.h (révision 519)
++++ lib/notQt.h (révision 520)
+@@ -117,7 +117,19 @@
+ pid_t getPid (void) { return this->pid; }
+ int getError (void) { return this->error; }
+ void setError (int e) { this->error = e; }
++
++ int getParentFD()
++ {
++ this->parentFD = this->parentToChild[1];
++ close(this->childToParent[0]);
+
++ // Create new pipes
++ pipe(this->parentToChild);
++ pipe(this->childToParent);
++
++ return this->parentFD;
++ }
++
+ /*!
+ * Setter for the callbacks.
+ */
+@@ -180,6 +192,11 @@
+ * Pointer to a callback object
+ */
+ notQProcessCallbacks * callbacks;
++
++ /*!
++ * old parent FD for comm with child
++ */
++ int parentFD;
+ };
+
+ /*!
+Index: lib/nxclientlib.cpp
+===================================================================
+--- lib/nxclientlib.cpp (révision 519)
++++ lib/nxclientlib.cpp (révision 520)
+@@ -8,7 +8,8 @@
+ : Author: Sebastian James
+ : (C) 2008 Defuturo Ltd
+ : Author: George Wright
+- email : seb@esfnet.co.uk, gwright@kde.org
++ : (C) 2008 Fabian Franz
++ email : seb@esfnet.co.uk, gwright@kde.org, freenx@fabian-franz.de
+ ***************************************************************************/
+
+ /***************************************************************************
+@@ -28,6 +29,14 @@
+
+ #include <fstream>
+
++// Define to use nxssh
++#if defined(NXCL_CYGWIN) || defined(NXCL_DARWIN)
++
++// FF-FIXME That does not work.
++//#define NXCL_USE_NXSSH 1
++
++#endif
++
+ extern "C" {
+ #include <errno.h>
+ #include <sys/types.h>
+@@ -186,10 +195,14 @@
+
+ // Start to build the arguments for the nxssh command.
+ // notQProcess requires that argv[0] contains the program name
++#ifdef NXCL_USE_NXSSH
+ arguments.push_back ("nxssh");
+
+ argtmp << "-nx";
+ arguments.push_back (argtmp.str());
++#else
++ arguments.push_back ("ssh");
++#endif
+
+ argtmp.str("");
+ argtmp << "-p" << port;
+@@ -215,6 +228,7 @@
+ }
+
+ argtmp.str("");
++ // FF-FIXME: Perhaps the user wants to login as user directly
+ argtmp << "nx@" << serverHost;
+ arguments.push_back (argtmp.str());
+
+@@ -227,9 +241,13 @@
+ arguments.push_back ("-oRSAAuthentication no");
+ arguments.push_back ("-oRhostsRSAAuthentication no");
+ arguments.push_back ("-oPubkeyAuthentication yes");
++ // FF-FIXME: Perhaps the user wants to login as user directly
++ //arguments.push_back ("-c nxserver");
+
+ if (encryption == true) {
++#ifdef NXCL_USE_NXSSH
+ arguments.push_back("-B");
++#endif
+ session.setEncryption (true);
+ } else {
+ session.setEncryption (false);
+@@ -240,10 +258,16 @@
+ // nxssh -E gives this message when called:
+ // NX> 285 Enabling skip of SSH config files
+ // ...so there you have the meaning.
++#ifdef NXCL_USE_NXSSH
+ arguments.push_back ("-E");
++#endif
+
+ // Find a path for the nxssh process using getPath()
++#ifdef NXCL_USE_NXSSH
+ string nxsshPath = this->getPath ("nxssh");
++#else
++ string nxsshPath = this->getPath ("ssh");
++#endif
+
+ this->nxsshProcess->start(nxsshPath, arguments);
+
+@@ -365,8 +389,9 @@
+
+ // On some connections this is sent via stdout instead of stderr?
+ if (proxyData.encrypted && readyForProxy &&
+- ((*msgiter).find("NX> 999 Bye")!=string::npos)) {
+-
++ ((*msgiter).find("NX> 999 Bye")!=string::npos))
++#ifdef NXCL_USE_NXSSH
++ {
+ // This is "NX> 299 Switching connection to: " in
+ // version 1.5.0. This was changed in nxssh version
+ // 2.0.0-8 (see the nxssh CHANGELOG).
+@@ -388,6 +413,11 @@
+ this->externalCallbacks->connectedSuccessfullySignal();
+ this->sessionRunning = true;
+ }
++#else /* don't use nxssh, start nxproxy -stdin */
++ {
++ invokeProxy();
++ }
++#endif
+
+ if ((*msgiter).find("Password") != string::npos) {
+ this->externalCallbacks->write
+@@ -402,6 +432,9 @@
+ dbgln ("NXClientLib::processParseStdout: Got auth failed"
+ " or capacity reached, calling this->parseSSH.");
+ msg = this->parseSSH (*msgiter);
++#ifndef NXCL_USE_NXSSH
++ this->isFinished = true;
++#endif
+ }
+ if (msg.size() > 0) {
+ this->write (msg);
+@@ -436,7 +469,9 @@
+ + (*msgiter) + "'(end msg)");
+
+ if (proxyData.encrypted && readyForProxy &&
+- ((*msgiter).find("NX> 999 Bye") != string::npos)) {
++ ((*msgiter).find("NX> 999 Bye") != string::npos))
++#ifdef NXCL_USE_NXSSH
++ {
+
+ string switchCommand = "NX> 299 Switch connection to: ";
+ stringstream ss;
+@@ -478,6 +513,11 @@
+ _("SSH host key verification failed"));
+ this->isFinished = true;
+ }
++#else /* don't use nxssh, use nxproxy -stdin */
++ {
++ invokeProxy();
++ }
++#endif
+ }
+ }
+
+@@ -580,21 +620,41 @@
+ this->externalCallbacks->serverCapacitySignal();
+ this->isFinished = true;
+
+- } else if
++ }
++#ifdef NXCL_USE_NXSSH
++ else if
+ (message.find ("NX> 204 Authentication failed.") != string::npos) {
+
+ this->externalCallbacks->write
+ (204, _("NX SSH Authentication Failed, finishing"));
+ this->isFinished = true;
+ }
++#endif
+
+ if (message.find("NX> 710 Session status: running") != string::npos) {
+
+ this->externalCallbacks->write
+ (710, _("Session status is \"running\""));
++ }
++
++ // FF-FIXME: This is technically incorrect as the proxy is just ready once 1002 and 1006 have
++ // been sent.
++ if (message.find("NX> 710 Session status: running") != string::npos) {
++
++ //this->externalCallbacks->write
++ // (1006, _("Session status is \"running\""));
++
++#ifdef NXCL_USE_NXSSH
+ invokeProxy();
++#else
++ if (!proxyData.encrypted)
++ invokeProxy();
++#endif
+ session.wipeSessions();
+- rMessage = "bye\n";
++ if (proxyData.encrypted)
++ rMessage = "bye\n";
++ else
++ rMessage = "quit\n";
+ }
+
+ return rMessage;
+@@ -700,18 +760,24 @@
+ stringstream data;
+
+ if (proxyData.encrypted) {
++#ifdef NXCL_USE_NXSSH
+ data << "nx/nx" << x11Display << ",session=session,encryption=1,cookie="
+ << proxyData.cookie
+ << ",id=" << proxyData.id << ",listen="
+ << proxyData.port << ":" << proxyData.display << "\n";
+ // may also need shmem=1,shpix=1,font=1,product=...
++#else
++ data << "nx/nx" << x11Display << ",session=session,encryption=1,cookie="
++ << proxyData.cookie
++ << ",id=" << proxyData.id << ":" << proxyData.display << "\n";
++#endif
+
+ } else {
+- // Not tested yet
++ // Not tested yet, FF-FIXME: Test
+ data << "nx/nx" << x11Display << ",session=session,cookie=" << proxyData.cookie
+- << ",id=" << proxyData.id
+- // << ",connect=" << proxyData.server << ":" << proxyData.display
+- << ",listen=" << proxyData.port << ":" << proxyData.display
++ << ",connect=" << proxyData.server << ":" << proxyData.port
++ << ",id=" << proxyData.id << ":" << proxyData.display
++ //<< ",listen=" << proxyData.port << ":" << proxyData.display
+ << "\n";
+ }
+
+@@ -726,11 +792,24 @@
+ list<string> arguments;
+ arguments.push_back("nxproxy"); // argv[0] has to be the program name
+ arguments.push_back("-S");
++
+ ss.str("");
+- ss << "options=" << nxdir;
+- ss << ":" << proxyData.display;
+- arguments.push_back(ss.str());
++ ss << "nx/nx,options=" << nxdir << ":" << proxyData.display;
+
++ setenv("NX_DISPLAY", ss.str().c_str(), 1);
++
++#ifndef NXCL_USE_NXSSH
++ if (proxyData.encrypted)
++ {
++ ss.str("");
++ ss << this->nxsshProcess->getParentFD();
++ fprintf(stderr, "NX_COMMFD=%d", this->nxsshProcess->getParentFD());
++ setenv("NX_COMMFD", ss.str().c_str(), 1);
++ // FF-FIXME: need to wait for 2 secs due to race condition with "bye" in buffer
++ sleep(2);
++ }
++#endif
++
+ // Find a path for the nxproxy process using getPath()
+ string nxproxyPath = this->getPath ("nxproxy");
+ this->nxproxyProcess->start(nxproxyPath, arguments);
diff --git a/net-misc/nxcl/metadata.xml b/net-misc/nxcl/metadata.xml
new file mode 100644
index 0000000..8a376a9
--- /dev/null
+++ b/net-misc/nxcl/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>nx</herd>
+ <longdescription>A library for building NX clients</longdescription>
+ <use>
+ <flag name="nxclient">Use nxssh from <pkg>net-misc/nxclient</pkg> instead of standard ssh</flag>
+ </use>
+</pkgmetadata>
diff --git a/net-misc/nxcl/nxcl-0.9-r2.ebuild b/net-misc/nxcl/nxcl-0.9-r2.ebuild
new file mode 100644
index 0000000..3e876e6
--- /dev/null
+++ b/net-misc/nxcl/nxcl-0.9-r2.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-misc/nxcl/nxcl-0.9-r2.ebuild,v 1.5 2013/08/07 13:29:05 ago Exp $
+
+EAPI=4
+
+inherit autotools eutils
+
+MY_P="freenx-client-${PV}"
+DESCRIPTION="A library for building NX clients"
+HOMEPAGE="http://developer.berlios.de/projects/freenx/"
+SRC_URI="http://dev.gentoo.org/~voyageur/distfiles/${MY_P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE="dbus doc nxclient"
+
+RDEPEND=">=net-misc/nx-3.2.0-r5
+ dbus? ( sys-apps/dbus )
+ nxclient? ( net-misc/nxclient )"
+DEPEND="${RDEPEND}
+ doc? ( app-doc/doxygen )"
+S="${WORKDIR}/${MY_P}/${PN}"
+
+src_prepare() {
+ # Incorrect version
+ sed -i -e "s#1.0#0.9#" configure.ac || die "version sed failed"
+ # And doc path
+ sed -i -e "/^docdir =/s#doc/.*#share/doc/${PF}#" doc/Makefile.am ||
+ die "doc path sed failed"
+ if ! use nxclient; then
+ # Patch to use standard ssh instead of nxssh from nxclient
+ epatch "${FILESDIR}"/${P}-no_nxssh.patch
+ fi
+ epatch "${FILESDIR}"/${P}-gcc43.patch
+ epatch "${FILESDIR}"/${P}-gcc47.patch
+ eautoreconf
+}
+
+src_configure() {
+ econf $(use_with doc doxygen)
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+}