Subject: bug#10684: guile-2.0.5 test failures on powerpc-darwin8

From: [email-masked] (Ludovic Courtès)
Date: Thu, 02 Feb 2012 22:58:19 +0100

Hi David,

David Fang <[email-masked]> skribis:

>> Can you try this (in a UTF-8 terminal):
>>
>>  (use-modules (ice-9 i18n))
>>  (setlocale LC_ALL "tr_TR.UTF-8")
>>  (char-locale-upcase #\i)

[...]

> scheme@(guile-user)> (use-modules (ice-9 i18n))
> scheme@(guile-user)> (setlocale LC_ALL "tr_TR.UTF-8")
> $1 = "tr_TR.UTF-8"
> scheme@(guile-user)> (char-locale-upcase #\i)
> $2 = #\I
> scheme@(guile-user)>
>
> Does that look right?

No, it should be İ, so it means that this version of Darwin has invalid
Turkish locale data.

Can show what %host-type is on your system?  I’ll add an exception to
skip these tests on this platform.

>>> FAIL: net-db.test: getaddrinfo: wrong service name
>>
>> Can you try this:
>>
>>  (getaddrinfo "127.0.0.1" "does-not-exist" AI_NUMERICHOST)
>
> scheme@(guile-user)> (getaddrinfo "127.0.0.1" "does-not-exist"
> AI_NUMERICHOST)
> ERROR: In procedure getaddrinfo:
> ERROR: In procedure getaddrinfo: No address associated with nodename

Can you apply this patch, run ‘./check-guile net-db.test’, and report
back?

diff --git a/test-suite/tests/net-db.test b/test-suite/tests/net-db.test
index 89ebb1b..8b14a92 100644
--- a/test-suite/tests/net-db.test
+++ b/test-suite/tests/net-db.test
@@ -102,5 +102,7 @@
             ;; According to POSIX, both error codes are valid (glibc 2.11
             ;; chooses `EAI_SERVICE'; Darwin chooses `EAI_NONAME'.)
             (and (or (= errcode EAI_SERVICE)
-                     (= errcode EAI_NONAME))
+                     (= errcode EAI_NONAME)
+                     (and (defined? 'EAI_NODATA)
+                          (= errcode EAI_NODATA)))
                  (string? (gai-strerror errcode))))))))

> Entering a new prompt.  Type `,bt' for a backtrace or `,q' to continue.
>
>
>>> ERROR: regexp.test: regexp-quote: regexp/extended: (char 254 #\Ã¾
>>> "Ã¾") -
>>> arguments: ((regular-expression-syntax "make-regexp" "empty
>>> (sub)expression" #f ("Ã¾")))
>>
>> Hm?
>>
>>> FAIL: regexp.test: regexp-quote: regexp/extended: (string "aX" 254
>>> #\Ã¾ "aÃ¾" "aÃ¾")
>>> FAIL: regexp.test: regexp-quote: regexp/extended: string of all chars
>>
>> Can you try:
>>
>>  (setlocale LC_ALL "en_US.ISO-8859-1") ;; or some other ISO-8859-1 locale
>>  (let* ((s (string (integer->char 254)))
>>         (q (regexp-quote s)))
>>    (regexp-exec (make-regexp q regexp/extended) s))

[...]

> scheme@(guile-user)> (setlocale LC_ALL "en_US.ISO8859-1")
> $1 = "en_US.ISO8859-1"
> scheme@(guile-user)> (let* ((s (string (integer->char 254))) (q
> (regexp-quote s))) (regexp-exec (make-regexp q regexp/extended) s))
> ERROR: In procedure make-regexp:
> ERROR: In procedure make-regexp: empty (sub)expression

This looks like a bug of Darwin’s regcomp that’s likely to be solved by
using Gnulib’s ‘regex’ module.  If you don’t mind, I’ll provide you
with a new tarball to test when we’re done with the other issues.

Thanks for your patient investigation!

Ludo’.