summary refs log tree commit diff
path: root/pkgs/development/interpreters/guile
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2011-01-06 14:38:07 +0000
committerLudovic Courtès <ludo@gnu.org>2011-01-06 14:38:07 +0000
commitd4872127b513bba8a024465dafd7bdab7f8c3c10 (patch)
tree8a33740cf686538e7c941bb204cc94f4b55ecda3 /pkgs/development/interpreters/guile
parent346673605bfe5a42ab965505f490805c0824a482 (diff)
downloadnixlib-d4872127b513bba8a024465dafd7bdab7f8c3c10.tar
nixlib-d4872127b513bba8a024465dafd7bdab7f8c3c10.tar.gz
nixlib-d4872127b513bba8a024465dafd7bdab7f8c3c10.tar.bz2
nixlib-d4872127b513bba8a024465dafd7bdab7f8c3c10.tar.lz
nixlib-d4872127b513bba8a024465dafd7bdab7f8c3c10.tar.xz
nixlib-d4872127b513bba8a024465dafd7bdab7f8c3c10.tar.zst
nixlib-d4872127b513bba8a024465dafd7bdab7f8c3c10.zip
GNU Guile 1.9: Add patch.
svn path=/nixpkgs/trunk/; revision=25449
Diffstat (limited to 'pkgs/development/interpreters/guile')
-rw-r--r--pkgs/development/interpreters/guile/1.9.nix2
-rw-r--r--pkgs/development/interpreters/guile/net-db.patch97
2 files changed, 98 insertions, 1 deletions
diff --git a/pkgs/development/interpreters/guile/1.9.nix b/pkgs/development/interpreters/guile/1.9.nix
index 46cdf13787d7..24216e673658 100644
--- a/pkgs/development/interpreters/guile/1.9.nix
+++ b/pkgs/development/interpreters/guile/1.9.nix
@@ -26,7 +26,7 @@ rec {
     # see below.
     ++ [ libtool libunistring ];
 
-  patches =
+  patches = [ ./net-db.patch ] ++
     stdenv.lib.optionals (coverageAnalysis != null)
       [ ./gcov-file-name.patch ./disable-gc-sensitive-tests.patch ];
 
diff --git a/pkgs/development/interpreters/guile/net-db.patch b/pkgs/development/interpreters/guile/net-db.patch
new file mode 100644
index 000000000000..989f9e6f0437
--- /dev/null
+++ b/pkgs/development/interpreters/guile/net-db.patch
@@ -0,0 +1,97 @@
+commit 66d86131086d80356bfde1a9ea920f9bfb2b304c
+Author: Ludovic Courtès <ludo@gnu.org>
+Date:   Wed Jan 5 22:17:26 2011 +0100
+
+    Change `getaddrinfo' test to handle the GNU-specific `EAI_NODATA'.
+    
+    * doc/ref/posix.texi (Network Databases): Mention `EAI_NODATA'.
+    
+    * libguile/net_db.c (scm_getaddrinfo): Likewise for the docstring.
+    
+    * test-suite/tests/net-db.test ("getaddrinfo")["no name"]: Handle
+      `EAI_NODATA'.
+
+	Modified doc/ref/posix.texi
+diff --git a/doc/ref/posix.texi b/doc/ref/posix.texi
+index 468eaea..156ed5c 100644
+--- a/doc/ref/posix.texi
++++ b/doc/ref/posix.texi
+@@ -1,6 +1,6 @@
+ @c -*-texinfo-*-
+ @c This is part of the GNU Guile Reference Manual.
+-@c Copyright (C)  1996, 1997, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010
++@c Copyright (C)  1996, 1997, 2000, 2001, 2002, 2003, 2004, 2006, 2007, 2008, 2009, 2010, 2011
+ @c   Free Software Foundation, Inc.
+ @c See the file guile.texi for copying conditions.
+ 
+@@ -2497,6 +2497,12 @@ resolve the name.
+ Either @var{name} does not resolve for the supplied parameters,
+ or neither @var{name} nor @var{service} were supplied.
+ 
++@item EAI_NODATA
++This non-POSIX error code can be returned on GNU systems when a
++request was actually made but returned no data, meaning
++that no address is associated with @var{name}.  Error handling
++code should be prepared to handle it when it is defined.
++
+ @item EAI_SERVICE
+ @var{service} was not recognized for the specified socket type.
+ 
+	Modified libguile/net_db.c
+diff --git a/libguile/net_db.c b/libguile/net_db.c
+index bcba18e..14722d5 100644
+--- a/libguile/net_db.c
++++ b/libguile/net_db.c
+@@ -1,5 +1,5 @@
+ /* "net_db.c" network database support
+- * Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2006, 2009, 2010 Free Software Foundation, Inc.
++ * Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2006, 2009, 2010, 2011 Free Software Foundation, Inc.
+  * 
+  * This library is free software; you can redistribute it and/or
+  * modify it under the terms of the GNU Lesser General Public License
+@@ -590,6 +590,11 @@ SCM_DEFINE (scm_getaddrinfo, "getaddrinfo", 1, 5, 0,
+ 	    "@item EAI_NONAME\n"
+ 	    "Either @var{name} does not resolve for the supplied parameters, "
+ 	    "or neither @var{name} nor @var{service} were supplied.\n\n"
++	    "@item EAI_NODATA\n"
++	    "This non-POSIX error code can be returned on GNU systems when a\n"
++	    "request was actually made but returned no data, meaning\n"
++	    "that no address is associated with @var{name}.  Error handling\n"
++	    "code should be prepared to handle it when it is defined.\n\n"
+ 	    "@item EAI_SERVICE\n"
+ 	    "@var{service} was not recognized for the specified socket type.\n\n"
+ 	    "@item EAI_SOCKTYPE\n"
+	Modified test-suite/tests/net-db.test
+diff --git a/test-suite/tests/net-db.test b/test-suite/tests/net-db.test
+index 083cf5f..89ebb1b 100644
+--- a/test-suite/tests/net-db.test
++++ b/test-suite/tests/net-db.test
+@@ -1,7 +1,7 @@
+ ;;;; net-db.test --- Test suite for `net-db' -*- mode: scheme; coding: utf-8; -*-
+ ;;;; Ludovic Courtès <ludo@gnu.org>
+ ;;;;
+-;;;; 	Copyright (C) 2010 Free Software Foundation, Inc.
++;;;; 	Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+ ;;;;
+ ;;;; This library is free software; you can redistribute it and/or
+ ;;;; modify it under the terms of the GNU Lesser General Public
+@@ -73,9 +73,16 @@
+             (throw 'unresolved))
+           (lambda (key errcode)
+             ;; In some cases (e.g., in a chroot without
+-            ;; /etc/{hosts,resolv.conf}), this can result in `EAI_EAGAIN'.
++            ;; /etc/{hosts,resolv.conf}), this can result in
++            ;; `EAI_EAGAIN' (glibc 2.11), or `EAI_NODATA' (glibc 2.12).
+             (and (or (= errcode EAI_NONAME)
+-                     (= errcode EAI_AGAIN))
++                     (and (defined? 'EAI_NODATA)  ; GNU extension
++                          (= errcode EAI_NODATA))
++                     (= errcode EAI_AGAIN)
++                     (begin
++                       (format #t "unexpected error code: ~a ~s~%"
++                               errcode (gai-strerror errcode))
++                       #f))
+                  (string? (gai-strerror errcode))))))
+ 
+       (pass-if "wrong service name"
+