From mboxrd@z Thu Jan 1 00:00:00 1970 From: taylanbayirli@gmail.com (Taylan Ulrich =?utf-8?Q?Bay=C4=B1rl=C4=B1?= =?utf-8?Q?=2FKammer?=) Subject: Re: [PATCH] gnu: Add ngircd. Date: Thu, 05 Feb 2015 15:32:02 +0100 Message-ID: <877fvw2zvh.fsf@taylan.uni.cx> References: <87sieqr574.fsf@taylan.uni.cx> <87k302qz8h.fsf@taylan.uni.cx> <874mr6f791.fsf@netris.org> <87fvapjjx9.fsf@taylan.uni.cx> <87twz034rf.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:57536) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YJNTV-0003Ma-Np for guix-devel@gnu.org; Thu, 05 Feb 2015 09:32:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YJNTS-0002gD-Ta for guix-devel@gnu.org; Thu, 05 Feb 2015 09:32:09 -0500 In-Reply-To: <87twz034rf.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Thu, 05 Feb 2015 13:46:28 +0100") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Ludovic =?utf-8?Q?Court=C3=A8s?= Cc: guix-devel@gnu.org --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable ludo@gnu.org (Ludovic Court=C3=A8s) writes: > taylanbayirli@gmail.com (Taylan Ulrich "Bay=C4=B1rl=C4=B1/Kammer") skribi= s: > >> From 34b2efd8244caf0cd16c1aa510209a54def148b7 Mon Sep 17 00:00:00 2001 >> From: =3D?UTF-8?q?Taylan=3D20Ulrich=3D20Bay=3DC4=3DB1rl=3DC4=3DB1/Kammer= ?=3D >> >> Date: Sat, 31 Jan 2015 22:03:25 +0100 >> Subject: [PATCH] gnu: Add ngircd. >> >> * gnu/packages/messaging.scm (ngircd): New variable. >> * gnu/packages/patches/ngircd-no-dns-in-tests.patch: New file. >> * gnu-system.am (dist_patch_DATA): Add it. > > Perhaps Mark should have the last say, but at least this looks good to me. > >> + ;; XXX Add more inputs to enable more features, e.g. IDENT, libicon= v. > > iconv is part of glibc, so you can remove it from here. > > Thanks, > Ludo=E2=80=99. I see; I just had to explicitly add --with-iconv. I also added PAM now. There's an ugly form with two layers of quasiquote and unquote though; tell me if there's a better way to do it. (And this is based on the version of this patch with the test-suite patch for zombie processes. Tell me if I should base it on the one without that patch.) --=-=-= Content-Type: text/x-diff; charset=utf-8 Content-Disposition: inline; filename=0001-gnu-Add-ngircd.patch Content-Transfer-Encoding: quoted-printable Content-Description: patch >From 00385310b307cc76fb0e4125a7013dbeb558691e Mon Sep 17 00:00:00 2001 From: =3D?UTF-8?q?Taylan=3D20Ulrich=3D20Bay=3DC4=3DB1rl=3DC4=3DB1/Kammer?=3D Date: Sat, 31 Jan 2015 22:03:25 +0100 Subject: [PATCH] gnu: Add ngircd. * gnu/packages/messaging.scm (ngircd): New variable. * gnu/packages/patches/ngircd-no-dns-in-tests.patch: New file. * gnu/packages/patches/ngircd-handle-zombies.patch: New file. * gnu-system.am (dist_patch_DATA): Add them. --- gnu-system.am | 3 + gnu/packages/messaging.scm | 56 +++- gnu/packages/patches/ngircd-handle-zombies.patch | 36 +++ gnu/packages/patches/ngircd-no-dns-in-tests.patch | 368 ++++++++++++++++++= ++++ 4 files changed, 462 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/ngircd-handle-zombies.patch create mode 100644 gnu/packages/patches/ngircd-no-dns-in-tests.patch diff --git a/gnu-system.am b/gnu-system.am index 706ad57..3daec97 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -197,6 +197,7 @@ GNU_SYSTEM_MODULES =3D \ gnu/packages/ncurses.scm \ gnu/packages/netpbm.scm \ gnu/packages/nettle.scm \ + gnu/packages/ngircd.scm \ gnu/packages/ninja.scm \ gnu/packages/node.scm \ gnu/packages/noweb.scm \ @@ -433,6 +434,8 @@ dist_patch_DATA =3D \ gnu/packages/patches/mupdf-buildsystem-fix.patch \ gnu/packages/patches/mutt-CVE-2014-9116.patch \ gnu/packages/patches/net-tools-bitrot.patch \ + gnu/packages/patches/ngircd-handle-zombies.patch \ + gnu/packages/patches/ngircd-no-dns-in-tests.patch \ gnu/packages/patches/ninja-tests.patch \ gnu/packages/patches/nss-pkgconfig.patch \ gnu/packages/patches/nvi-assume-preserve-path.patch \ diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index f6d0cf5..520746c 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright =C2=A9 2014 Mark H Weaver ;;; Copyright =C2=A9 2014 Julien Lepiller +;;; Copyright =C2=A9 2015 Taylan Ulrich Bay=C4=B1rl=C4=B1/Kammer ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,8 +37,11 @@ #:use-module (gnu packages gnutls) #:use-module (gnu packages python) #:use-module (gnu packages perl) + #:use-module (gnu packages tcl) #:use-module (gnu packages compression) - #:use-module (gnu packages check)) + #:use-module (gnu packages check) + #:use-module (gnu packages admin) + #:use-module (gnu packages linux)) =20 (define-public libotr (package @@ -159,4 +163,54 @@ dictionaries. HexChat can be extended with multiple a= ddons.") (home-page "http://hexchat.net/") (license gpl2+))) =20 +(define-public ngircd + (package + (name "ngircd") + (version "22") + (source (origin + (method url-fetch) + (uri (string-append "http://arthur.barton.de/pub/ngircd/ngir= cd-" + version ".tar.xz")) + (sha256 + (base32 + "17k3g9qd9d010czk5846qxvzkmw4fihv8l6m2a2287crbxm3xhd4")) + (patches (list (search-patch "ngircd-no-dns-in-tests.patch") + (search-patch "ngircd-handle-zombies.patch"))= ))) + (build-system gnu-build-system) + ;; Needed for the test suite. + (native-inputs `(("procps" ,procps) + ("expect" ,expect) + ("inetutils" ,inetutils))) + ;; XXX Add libident, libwrap. + (inputs `(("zlib" ,zlib) + ("gnutls" ,gnutls) + ,@(if (string-suffix? "-linux" + (or (%current-target-system) + (%current-system))) + `(("linux-pam" ,linux-pam)) + '()))) + (arguments + `(#:configure-flags + `("--with-gnutls" "--with-iconv" "--enable-ipv6" + ,,@(if (string-suffix? "-linux" + (or (%current-target-system) + (%current-system))) + '("--with-pam") + '())) + #:phases + ;; Necessary for the test suite, should it be enabled in the future. + (alist-cons-after + 'configure 'post-configure + (lambda _ + (substitute* "src/ngircd/Makefile" + (("/bin/sh") (which "sh")))) + %standard-phases))) + (home-page "http://ngircd.barton.de/") + (synopsis "Lightweight Internet Relay Chat server for small networks") + (description + "ngIRCd is a lightweight Internet Relay Chat server for small or priv= ate +networks. It is easy to configure, can cope with dynamic IP addresses, and +supports IPv6, SSL-protected connections as well as PAM for authentication= .") + (license gpl2+))) + ;;; messaging.scm ends here diff --git a/gnu/packages/patches/ngircd-handle-zombies.patch b/gnu/package= s/patches/ngircd-handle-zombies.patch new file mode 100644 index 0000000..99475ba --- /dev/null +++ b/gnu/packages/patches/ngircd-handle-zombies.patch @@ -0,0 +1,36 @@ +The Guile process taking the role of PID 1 during Guix builds does not reap +zombie processes, which makes them continue responding to "kill -0". + +--- a/src/testsuite/stop-server.sh 2015-02-05 11:24:00.535908842 +0100 ++++ b/src/testsuite/stop-server.sh 2015-02-05 11:25:00.264351349 +0100 +@@ -1,6 +1,21 @@ + #!/bin/sh + # ngIRCd Test Suite +=20 ++process_is_alive(){ ++ ! process_is_dead "$1" && ! process_is_undead "$1" ++} ++ ++process_is_dead(){ ++ ! kill -0 "$1" ++} ++ ++process_is_undead(){ ++ case $(ps -p "$1" -o state=3D) in ++ (Z*) true ;; ++ (*) false ;; ++ esac ++} ++ + [ -z "$srcdir" ] && srcdir=3D`dirname $0` +=20 + # read in functions +@@ -24,7 +40,7 @@ +=20 + # waiting ... + for i in 1 2 3 4 5; do +- kill -0 $pid > /dev/null 2>&1; r=3D$? ++ process_is_alive $pid > /dev/null 2>&1; r=3D$? + if [ $r -ne 0 ]; then + echo " ok". + exit 0 diff --git a/gnu/packages/patches/ngircd-no-dns-in-tests.patch b/gnu/packag= es/patches/ngircd-no-dns-in-tests.patch new file mode 100644 index 0000000..748661d --- /dev/null +++ b/gnu/packages/patches/ngircd-no-dns-in-tests.patch @@ -0,0 +1,368 @@ +From 3f807e104572b38143a1015be57d875088ceaebb Mon Sep 17 00:00:00 2001 +From: Alexander Barton +Date: Thu, 17 Apr 2014 23:57:38 +0200 +Subject: [PATCH] Test suite: Don't use DNS lookups + +Different operating systems do behave quite differently when doing DNS +lookups, for example "127.0.0.1" sometimes resolves to "localhost" and +sometimes to "localhost.localdomain" (for example OpenBSD). And other +systems resolve "localhost" to the real host name (for example Cygwin). + +So not using DNS at all makes the test site much more portable. +--- + src/testsuite/channel-test.e | 2 +- + src/testsuite/check-idle.e | 2 +- + src/testsuite/connect-test.e | 2 +- + src/testsuite/invite-test.e | 2 +- + src/testsuite/join-test.e | 2 +- + src/testsuite/kick-test.e | 2 +- + src/testsuite/message-test.e | 31 ++++++++++++------------------- + src/testsuite/misc-test.e | 8 ++++---- + src/testsuite/mode-test.e | 2 +- + src/testsuite/ngircd-test1.conf | 1 + + src/testsuite/ngircd-test2.conf | 1 + + src/testsuite/opless-channel-test.e | 2 +- + src/testsuite/server-link-test.e | 2 +- + src/testsuite/stress-A.e | 2 +- + src/testsuite/who-test.e | 6 +++--- + src/testsuite/whois-test.e | 14 +++++++------- + 16 files changed, 38 insertions(+), 43 deletions(-) + +diff --git a/src/testsuite/channel-test.e b/src/testsuite/channel-test.e +index dd7eb66..39ad16a 100644 +--- a/src/testsuite/channel-test.e ++++ b/src/testsuite/channel-test.e +@@ -1,7 +1,7 @@ + # ngIRCd test suite + # Channel test +=20 +-spawn telnet localhost 6789 ++spawn telnet 127.0.0.1 6789 + expect { + timeout { exit 1 } + "Connected" +diff --git a/src/testsuite/check-idle.e b/src/testsuite/check-idle.e +index 41b8eb4..ad112b2 100644 +--- a/src/testsuite/check-idle.e ++++ b/src/testsuite/check-idle.e +@@ -1,7 +1,7 @@ + # ngIRCd test suite + # Idle test +=20 +-spawn telnet localhost 6789 ++spawn telnet 127.0.0.1 6789 + expect { + timeout { exit 1 } + "Connected" +diff --git a/src/testsuite/connect-test.e b/src/testsuite/connect-test.e +index 662f5f7..b51be0d 100644 +--- a/src/testsuite/connect-test.e ++++ b/src/testsuite/connect-test.e +@@ -1,7 +1,7 @@ + # ngIRCd test suite + # Server connect test +=20 +-spawn telnet localhost 6789 ++spawn telnet 127.0.0.1 6789 + expect { + timeout { exit 1 } + "Connected" +diff --git a/src/testsuite/invite-test.e b/src/testsuite/invite-test.e +index 3716d19..5179d8a 100644 +--- a/src/testsuite/invite-test.e ++++ b/src/testsuite/invite-test.e +@@ -1,7 +1,7 @@ + # ngIRCd test suite + # INVITE test +=20 +-spawn telnet localhost 6789 ++spawn telnet 127.0.0.1 6789 + expect { + timeout { exit 1 } + "Connected" +diff --git a/src/testsuite/join-test.e b/src/testsuite/join-test.e +index 28b4c54..c088f5c 100644 +--- a/src/testsuite/join-test.e ++++ b/src/testsuite/join-test.e +@@ -1,7 +1,7 @@ + # ngIRCd test suite + # JOIN test +=20 +-spawn telnet localhost 6789 ++spawn telnet 127.0.0.1 6789 + expect { + timeout { exit 1 } + "Connected" +diff --git a/src/testsuite/kick-test.e b/src/testsuite/kick-test.e +index 3d3c1ee..89da611 100644 +--- a/src/testsuite/kick-test.e ++++ b/src/testsuite/kick-test.e +@@ -1,7 +1,7 @@ + # ngIRCd test suite + # KICK test +=20 +-spawn telnet localhost 6789 ++spawn telnet 127.0.0.1 6789 + expect { + timeout { exit 1 } + "Connected" +diff --git a/src/testsuite/message-test.e b/src/testsuite/message-test.e +index 0e70640..5dc325d 100644 +--- a/src/testsuite/message-test.e ++++ b/src/testsuite/message-test.e +@@ -1,7 +1,7 @@ + # ngIRCd test suite + # PRIVMSG and NOTICE test +=20 +-spawn telnet localhost 6789 ++spawn telnet 127.0.0.1 6789 + expect { + timeout { exit 1 } + "Connected" +@@ -72,24 +72,17 @@ expect { + "MODE nick :-b" + } +=20 +-# The following two tests using "localhost" as host name +-# had to be disabled, because there are operating systems +-# out there, that use "localhost." as host name +-# for 127.0.0.1 instead of just "localhost". +-# (for example OpenBSD 4, OpenSolaris, ...) +-# +-#send "privmsg ~user\%localhost :test\r" +-#expect { +-# timeout { exit 1 } +-# "@* PRIVMSG nick :test" +-#} +-# +-#send "privmsg Nick!~User@LocalHost :test\r" +-#expect { +-# timeout { exit 1 } +-# "@* PRIVMSG nick :test" +-# "401" +-#} ++send "privmsg ~user\%127.0.0.1 :test\r" ++expect { ++ timeout { exit 1 } ++ "@* PRIVMSG nick :test" ++} ++ ++send "privmsg Nick!~User@127.0.0.1 :test\r" ++expect { ++ timeout { exit 1 } ++ "@* PRIVMSG nick :test" ++} +=20 + send "away :away\r" + expect { +diff --git a/src/testsuite/misc-test.e b/src/testsuite/misc-test.e +index a83bc5b..f69e7c3 100644 +--- a/src/testsuite/misc-test.e ++++ b/src/testsuite/misc-test.e +@@ -1,7 +1,7 @@ + # ngIRCd test suite + # Misc test +=20 +-spawn telnet localhost 6789 ++spawn telnet 127.0.0.1 6789 + expect { + timeout { exit 1 } + "Connected" +@@ -130,7 +130,7 @@ expect { + send "userhost nick\r" + expect { + timeout { exit 1 } +- -re ":ngircd.test.server 302 nick :?nick=3D+.*@(localhos.*|127.0.0.1)" ++ -re ":ngircd.test.server 302 nick :?nick=3D+.*@127.0.0.1" + } +=20 + send "userhost doesnotexist\r" +@@ -142,7 +142,7 @@ expect { + send "userhost nick doesnotexist nick doesnotexist\r" + expect { + timeout { exit 1 } +- -re ":ngircd.test.server 302 nick :nick=3D+.*@(localhos.*|127.0.0.1) nic= k=3D+.*@(localhos.*|127.0.0.1)" ++ -re ":ngircd.test.server 302 nick :nick=3D+.*@127.0.0.1 nick=3D+.*@127.0= .0.1" + } +=20 + send "away :testing\r" +@@ -154,7 +154,7 @@ expect { + send "userhost nick nick nick nick nick nick\r" + expect { + timeout { exit 1 } +- -re ":ngircd.test.server 302 nick :nick=3D-.*@(localhos.*|127.0.0.1) nic= k=3D-.*@(localhos.*|127.0.0.1) nick=3D-.*@(localhos.*|127.0.0.1) nick=3D-.*= @(localhos.*|127.0.0.1) nick=3D-.*@(localhos.*|127.0.0.1)\r" ++ -re ":ngircd.test.server 302 nick :nick=3D-.*@127.0.0.1 nick=3D-.*@127.0= .0.1 nick=3D-.*@127.0.0.1 nick=3D-.*@127.0.0.1 nick=3D-.*@127.0.0.1\r" + } +=20 + send "quit\r" +diff --git a/src/testsuite/mode-test.e b/src/testsuite/mode-test.e +index d6726a4..86e4f2d 100644 +--- a/src/testsuite/mode-test.e ++++ b/src/testsuite/mode-test.e +@@ -1,7 +1,7 @@ + # ngIRCd test suite + # MODE test +=20 +-spawn telnet localhost 6789 ++spawn telnet 127.0.0.1 6789 + expect { + timeout { exit 1 } + "Connected" +diff --git a/src/testsuite/ngircd-test1.conf b/src/testsuite/ngircd-test1.= conf +index 0d0cccc..4dec533 100644 +--- a/src/testsuite/ngircd-test1.conf ++++ b/src/testsuite/ngircd-test1.conf +@@ -17,6 +17,7 @@ + OperCanUseMode =3D yes + Ident =3D no + IncludeDir =3D /var/empty ++ DNS =3D no + PAM =3D no +=20 + [Operator] +diff --git a/src/testsuite/ngircd-test2.conf b/src/testsuite/ngircd-test2.= conf +index c9d7f6c..0d24c4a 100644 +--- a/src/testsuite/ngircd-test2.conf ++++ b/src/testsuite/ngircd-test2.conf +@@ -17,6 +17,7 @@ + OperCanUseMode =3D yes + Ident =3D no + IncludeDir =3D /var/empty ++ DNS =3D no + PAM =3D no +=20 + [Operator] +diff --git a/src/testsuite/opless-channel-test.e b/src/testsuite/opless-ch= annel-test.e +index 7d94172..4611fe1 100644 +--- a/src/testsuite/opless-channel-test.e ++++ b/src/testsuite/opless-channel-test.e +@@ -1,7 +1,7 @@ + # ngIRCd test suite + # Op-less channel test +=20 +-spawn telnet localhost 6789 ++spawn telnet 127.0.0.1 6789 + expect { + timeout { exit 1 } + "Connected" +diff --git a/src/testsuite/server-link-test.e b/src/testsuite/server-link-= test.e +index cf3fae8..910f8c8 100644 +--- a/src/testsuite/server-link-test.e ++++ b/src/testsuite/server-link-test.e +@@ -1,7 +1,7 @@ + # ngIRCd test suite + # server-server link test +=20 +-spawn telnet localhost 6790 ++spawn telnet 127.0.0.1 6790 + expect { + timeout { exit 1 } + "Connected" +diff --git a/src/testsuite/stress-A.e b/src/testsuite/stress-A.e +index 256d5d1..d51adaa 100644 +--- a/src/testsuite/stress-A.e ++++ b/src/testsuite/stress-A.e +@@ -3,7 +3,7 @@ +=20 + set timeout 30 +=20 +-spawn telnet localhost 6789 ++spawn telnet 127.0.0.1 6789 + expect { + timeout { exit 1 } + "Connected" +diff --git a/src/testsuite/who-test.e b/src/testsuite/who-test.e +index a41e6b6..39d50ed 100644 +--- a/src/testsuite/who-test.e ++++ b/src/testsuite/who-test.e +@@ -1,7 +1,7 @@ + # ngIRCd test suite + # WHO test +=20 +-spawn telnet localhost 6789 ++spawn telnet 127.0.0.1 6789 + expect { + timeout { exit 1 } + "Connected" +@@ -62,7 +62,7 @@ expect { + ":ngircd.test.server 352 nick #channel * * ngircd.test.server nick G@ :0= Real Name" + } +=20 +-send "who localhos*\r" ++send "who 127.0.0.*\r" + expect { + timeout { exit 1 } + ":ngircd.test.server 352 nick \* * * ngircd.test.server nick G :0 Real N= ame" +@@ -120,7 +120,7 @@ expect { + "305 nick" + } +=20 +-send "who ??cal*ho*\r" ++send "who ??7.*0*\r" + expect { + timeout { exit 1 } + ":ngircd.test.server 352 nick \* * * ngircd.test.server nick H* :0 Real = Name" +diff --git a/src/testsuite/whois-test.e b/src/testsuite/whois-test.e +index 16b1184..44eee66 100644 +--- a/src/testsuite/whois-test.e ++++ b/src/testsuite/whois-test.e +@@ -1,7 +1,7 @@ + # ngIRCd test suite + # WHOIS test +=20 +-spawn telnet localhost 6789 ++spawn telnet 127.0.0.1 6789 + expect { + timeout { exit 1 } + "Connected" +@@ -17,7 +17,7 @@ expect { + send "whois nick\r" + expect { + timeout { exit 1 } +- "311 nick nick ~user localhost* \* :Real Name\r" ++ "311 nick nick ~user 127.0.0.1 \* :Real Name\r" + } + expect { + timeout { exit 1 } +@@ -27,25 +27,25 @@ expect { + send "whois *\r" + expect { + timeout { exit 1 } +- "311 nick nick ~user localhost* \* :Real Name\r" ++ "311 nick nick ~user 127.0.0.1* \* :Real Name\r" + } +=20 + send "whois n*\r" + expect { + timeout { exit 1 } +- "311 nick nick ~user localhost* \* :Real Name\r" ++ "311 nick nick ~user 127.0.0.1* \* :Real Name\r" + } +=20 + send "whois ?ick\r" + expect { + timeout { exit 1 } +- "311 nick nick ~user localhost* \* :Real Name\r" ++ "311 nick nick ~user 127.0.0.1* \* :Real Name\r" + } +=20 + send "whois ????,n?*k\r" + expect { + timeout { exit 1 } +- "311 nick nick ~user localhost* \* :Real Name\r" ++ "311 nick nick ~user 127.0.0.1* \* :Real Name\r" + } +=20 + send "whois unknown\r" +@@ -61,7 +61,7 @@ expect { + send "whois ngircd.test.server2 nick\r" + expect { + timeout { exit 1 } +- ":ngircd.test.server2 311 nick nick ~user localhost* \* :Real Name\r" ++ ":ngircd.test.server2 311 nick nick ~user 127.0.0.1* \* :Real Name\r" + } +=20 + send "whois nosuchserver unknown\r" +--=20 +1.9.1 + --=20 2.2.1 --=-=-=--