All, Here is a build log on hurd for all posix-modules including tests, plus autobuild minus the failing getcwd-tests (see other thread).
http://autobuild.josefsson.org/gnulib/log-201108040804185118000.txt There are only four failing tests, so we are in really good shape already. (Let's see how a build of all modules fare...) 1) test-linkat.c:193: assertion failed /bin/bash: line 5: 18402 Aborted EXEEXT='' srcdir='.' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_FR='none' LOCALE_TR_UTF8='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' LOCALE_FR_UTF8='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' MAKE='make' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' ${dir}$tst FAIL: test-linkat Modifying the code here like this: 191 errno = 0; 192 ASSERT (linkat (dfd, BASE "link1/", dfd, BASE "sub1", 0) == -1); 193 printf ("err %d str %s notdir %d\n", errno, strerror (errno), EISDIR); 194 ASSERT (errno == EEXIST || errno == EPERM || errno == EACCES); results in err 1073741845 str Is a directory notdir 1073741845 test-linkat.c:194: assertion failed Aborted I don't see EISDIR as a permitted return code for POSIX, so I'll report this to the hurd people. What is the "best" error code here? EEXIST? 2) test-nanosleep.c:64: assertion failed /bin/bash: line 5: 18559 Aborted EXEEXT='' srcdir='.' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_FR='none' LOCALE_TR_UTF8='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' LOCALE_FR_UTF8='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' MAKE='make' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' ${dir}$tst FAIL: test-nanosleep Modifying the code here like this: 57 ts.tv_sec = 0; 58 ts.tv_nsec = 1; 59 ASSERT (nanosleep (&ts, &ts) == 0); 60 /* Remaining time is only defined on EINTR failure; but on success, 61 it is typically either 0 or unchanged from input. At any rate, 62 it shouldn't be randomly changed to unrelated values. */ 63 ASSERT (ts.tv_sec == 0); 64 printf ("nsec %d\n", ts.tv_nsec); 65 ASSERT (ts.tv_nsec == 0 || ts.tv_nsec == 1); results in nsec 10000000 test-nanosleep.c:65: assertion failed Aborted Likely another hurd issue. Is there any reasonable reason it behaves like that? 3) main:1: spent_time = 0, data_block_size too small FAIL: test-nonblocking-pipe.sh I haven't had time to understand this self-test enough to modify it to print better debug info. Help? 4) test-ttyname_r.c:45: assertion failed /bin/bash: line 5: 19191 Aborted EXEEXT='' srcdir='.' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_FR='none' LOCALE_TR_UTF8='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' LOCALE_FR_UTF8='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' MAKE='make' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' LOCALE_FR='none' LOCALE_FR_UTF8='none' LOCALE_JA='none' LOCALE_ZH_CN='none' ${dir}$tst FAIL: test-ttyname_r Modyfing the code here like this: 46 ret = ttyname_r (fd, buf, 1); 47 printf ("ret %d ERANGE %d EINVAL %d\n", ret, ERANGE, EINVAL); prints ret 1073741846 ERANGE 1073741858 EINVAL 1073741846 so it returns EINVAL instead of ERANGE. I don't see EINVAL as a permitted error code, so likely another hurd issue that I'll report. /Simon