I have managed to get a relatively successful build: gmake check-TESTS gmake[4]: Entering directory `/export/home/Scratch/hgs/guile-1.8.1/test-suite/standalone' PASS: test-system-cmds PASS: test-require-extension PASS: test-num2integral PASS: test-round PASS: test-gh PASS: test-asmobs PASS: test-list PASS: test-unwind PASS: test-conversion ================== All 9 tests passed ================== gmake[4]: Leaving directory `/export/home/Scratch/hgs/guile-1.8.1/test-suite/standalone' gmake[3]: Leaving directory `/export/home/Scratch/hgs/guile-1.8.1/test-suite/standalone' gmake[2]: Leaving directory `/export/home/Scratch/hgs/guile-1.8.1/test-suite/standalone' gmake[2]: Entering directory `/export/home/Scratch/hgs/guile-1.8.1/test-suite' gmake[2]: Nothing to be done for `check-am'. gmake[2]: Leaving directory `/export/home/Scratch/hgs/guile-1.8.1/test-suite' gmake[1]: Leaving directory `/export/home/Scratch/hgs/guile-1.8.1/test-suite' Making check in benchmark-suite gmake[1]: Entering directory `/export/home/Scratch/hgs/guile-1.8.1/benchmark-suite' gmake[1]: Nothing to be done for `check'. gmake[1]: Leaving directory `/export/home/Scratch/hgs/guile-1.8.1/benchmark-suite' Making check in lang gmake[1]: Entering directory `/export/home/Scratch/hgs/guile-1.8.1/lang' Making check in elisp gmake[2]: Entering directory `/export/home/Scratch/hgs/guile-1.8.1/lang/elisp' Making check in internals gmake[3]: Entering directory `/export/home/Scratch/hgs/guile-1.8.1/lang/elisp/internals' gmake[3]: Nothing to be done for `check'. gmake[3]: Leaving directory `/export/home/Scratch/hgs/guile-1.8.1/lang/elisp/internals' Making check in primitives gmake[3]: Entering directory `/export/home/Scratch/hgs/guile-1.8.1/lang/elisp/primitives' gmake[3]: Nothing to be done for `check'. gmake[3]: Leaving directory `/export/home/Scratch/hgs/guile-1.8.1/lang/elisp/primitives' gmake[3]: Entering directory `/export/home/Scratch/hgs/guile-1.8.1/lang/elisp' gmake[3]: Nothing to be done for `check-am'. gmake[3]: Leaving directory `/export/home/Scratch/hgs/guile-1.8.1/lang/elisp' gmake[2]: Leaving directory `/export/home/Scratch/hgs/guile-1.8.1/lang/elisp' gmake[2]: Entering directory `/export/home/Scratch/hgs/guile-1.8.1/lang' gmake[2]: Nothing to be done for `check-am'. gmake[2]: Leaving directory `/export/home/Scratch/hgs/guile-1.8.1/lang' gmake[1]: Leaving directory `/export/home/Scratch/hgs/guile-1.8.1/lang' Making check in am gmake[1]: Entering directory `/export/home/Scratch/hgs/guile-1.8.1/am' gmake[1]: Nothing to be done for `check'. gmake[1]: Leaving directory `/export/home/Scratch/hgs/guile-1.8.1/am' gmake[1]: Entering directory `/export/home/Scratch/hgs/guile-1.8.1' gmake check-TESTS gmake[2]: Entering directory `/export/home/Scratch/hgs/guile-1.8.1' Testing /scratch/hgs/guile-1.8.1/pre-inst-guile ... with GUILE_LOAD_PATH=/scratch/hgs/guile-1.8.1/test-suite Running alist.test Running and-let-star.test Running arbiters.test Running bit-operations.test Running c-api.test Running chars.test Running common-list.test Running continuations.test Running elisp.test Running environments.test Running eval.test UNRESOLVED: eval.test: promises: basic promise behaviour: a forced promise does not reference its environment Running exceptions.test Running filesys.test Running format.test Running fractions.test Running ftw.test Running gc.test Running getopt-long.test Running goops.test Running guardians.test UNRESOLVED: guardians.test: standard guardian functionality: guarding independent objects: re-guarding non-immediates UNRESOLVED: guardians.test: standard guardian functionality: guarding weakly referenced objects: guarded element of weak vector gets eventually removed from weak vector Running hash.test Running hooks.test Running import.test Running interp.test Running list.test Running load.test Running modules.test Running numbers.test Running optargs.test Running options.test Running poe.test Running popen.test Running ports.test Running posix.test FAIL: posix.test: putenv: removing FAIL: posix.test: setenv: removing FAIL: posix.test: unsetenv: something FAIL: posix.test: unsetenv: empty Running q.test Running r4rs.test Running r5rs_pitfall.test Running ramap.test Running reader.test Running receive.test Running regexp.test Running socket.test Running srcprop.test Running srfi-1.test Running srfi-10.test Running srfi-11.test Running srfi-13.test Running srfi-14.test UNRESOLVED: srfi-14.test: Latin-1 (8-bit charset): char-set:letter (membership) UNRESOLVED: srfi-14.test: Latin-1 (8-bit charset): char-set:letter (size) UNRESOLVED: srfi-14.test: Latin-1 (8-bit charset): char-set:lower-case (size) UNRESOLVED: srfi-14.test: Latin-1 (8-bit charset): char-set:upper-case (size) ERROR: srfi-14.test: Latin-1 (8-bit charset): char-set:punctuation (membership) - arguments: ((unbound-variable #f "Unbound variable: ~S" (thrown) #f)) Running srfi-19.test Running srfi-26.test Running srfi-31.test Running srfi-34.test Running srfi-39.test Running srfi-4.test Running srfi-6.test Running srfi-60.test Running srfi-9.test Running strings.test Running structs.test Running symbols.test Running syncase.test Running syntax.test UNRESOLVED: syntax.test: while: in empty environment: empty body UNRESOLVED: syntax.test: while: in empty environment: initially false UNRESOLVED: syntax.test: while: in empty environment: iterating Running threads.test Running time.test Running unif.test Running version.test Running weaks.test
Totals for this test run: passes: 11744 failures: 4 unexpected passes: 0 expected failures: 25 unresolved test cases: 10 untested test cases: 0 unsupported test cases: 13 errors: 1 FAIL: check-guile =================== 1 of 1 tests failed =================== gmake[2]: *** [check-TESTS] Error 1 gmake[2]: Leaving directory `/export/home/Scratch/hgs/guile-1.8.1' gmake[1]: *** [check-am] Error 2 gmake[1]: Leaving directory `/export/home/Scratch/hgs/guile-1.8.1' gmake: *** [check-recursive] Error 1 You have new mail in /var/mail/hgs bash-2.05$ So the failure is that putenv test where there seems to be no way to remove an environment variable using C under Solaris. Which seems bizarre. I have looked through `man -s 3 intro` and can see the putenv() & getenv() functions, but nothing to remove an environment variable. We are not the only ones banging into this problem: http://gollem.science.uva.nl/SWI-Prolog/mailinglist/archive/2006/q1/0155.html makes pretty disturbing reading. Given this a basic requirement of shells, I don't understand this lack of an unsetenv() function. And there's this: http://www.gnu.org/software/autoconf/manual/html_node/Function-Portability.html which doesn't really give a solution either. Despite: http://bugs.netmrg.net/view.php?id=400 I find bash-2.05$ man clearenv No manual entry for clearenv. You have new mail in /var/mail/hgs bash-2.05$ man -s 3 clearenv No entry for clearenv in section(s) 3 of the manual. bash-2.05$ How did I get to a relatively successful build? Well, I applied the patches: --- /scratch/hgs/guile-1.8.1/libguile/posix.c 2006-10-04 04:35:07.000000000 +0100 +++ /scratch/hgs/guile-1.8.1/libguile/posix.c 2007-01-16 12:04:53.481602000 +0000 @@ -1315,6 +1315,11 @@ #ifdef __MINGW32__ size_t len = strlen (c_str); #endif +#ifndef HAVE_UNSETENV +# ifndef __MINGW32__ + size_t len = strlen (c_str); +# endif +#endif if (strchr (c_str, '=') == NULL) { and --- guile-1.8.1/libguile/c-tokenize.c.orig 2003-08-23 18:35:14.000000000 +0100 +++ guile-1.8.1/libguile/c-tokenize.c 2007-01-18 11:20:43.256310000 +0000 @@ -20,7 +20,12 @@ #include <string.h> #include <errno.h> #include <stdlib.h> +#ifdef HAVE_STDINT_H #include <stdint.h> /* May break IA64 test-noansi-r */ +#endif +#ifdef HAVE_INTTYPES_H +#include <inttypes.h> +#endif /* end standard C headers. */ And I used gcc (GCC) 3.4.6 Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Which I built after all the hassles with gcc-4. And I used --disable-error-on-warning OK, so what about gcc-4? gcc (GCC) 4.1.0 Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. gives me, using the same build script: (cd .libs && gcc -g -O2 -c -fno-builtin "guileS.c") rm -f .libs/guileS.c .libs/guile.nm .libs/guile.nmS .libs/guile.nmT gcc -g -O2 -Wall -Wmissing-prototypes -o .libs/guile .libs/guileS.o -D_REENTRANT -pthreads guile-guile.o -Wl,--export-dynamic ./.libs/libguile.so -lrt /usr/local/lib/libgmp.so -lsocket -lnsl -lm /usr/local/lib/libltdl.so -ldl -Wl,--rpath -Wl,/usr/local/lib ./.libs/libguile.so: undefined reference to `isinf' collect2: ld returned 1 exit status gmake[3]: *** [guile] Error 1 gmake[3]: Leaving directory `/export/home/Scratch/hgs/guile-1.8.1/libguile' gmake[2]: *** [all] Error 2 gmake[2]: Leaving directory `/export/home/Scratch/hgs/guile-1.8.1/libguile' gmake[1]: *** [all-recursive] Error 1 gmake[1]: Leaving directory `/export/home/Scratch/hgs/guile-1.8.1' gmake: *** [all] Error 2 I'm not sure what to make of this difference in behaviour. So, is there anything else you would find it helpful to know? And have you any advice about my GCC-4.1.0 (which would be off-topic, but you can just say "no". :-)) Hugh _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://lists.gnu.org/mailman/listinfo/guile-user