bug-autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: zsh fails the Autoconf test suite on Solaris 8


From: Paul Eggert
Subject: Re: zsh fails the Autoconf test suite on Solaris 8
Date: Mon, 25 Mar 2002 14:15:56 -0800 (PST)

> From: Alexandre Duret-Lutz <address@hidden>
> Date: Mon, 25 Mar 2002 18:30:41 +0100

> http://www.zsh.org/mla/workers/2001/msg00253.html

Thanks for the URL.  As it happens, that bug doesn't break "make
check" on Solaris 8; it just causes it to be slow.  It's not
_ridiculously_ slow, just _very_ slow, so I'd rather not install a
hacky workaround for it.

However, Solaris Zsh has has a different bug that actually breaks
"make check", so this is higher priority.  The problem is that

  PATH=test:$PATH test-1

does not look for "test/test-1".  I guess Zsh exports the new value of
PATH to "test-1" but uses the old value of PATH to find "test-1".
This is contrary to POSIX, so it must be a bug.  I don't know if the
bug is fixed in the latest Zsh, as I don't use Zsh much.  Can you
please report the problem to the Zsh folks if the problem still occurs
with the latest Zsh?

Anyway, I just installed the following patch to Autoconf to work
around this Zsh bug.  With this patch, Solaris 8 Zsh passes the
Autoconf test suite (very slowly :-).


2002-03-25  Paul Eggert  <address@hidden>

        * tests/m4sh.at: Don't rely on "PATH=test:$PATH test-1" working
        as POSIX requires, as it doesn't work with Zsh.
        * doc/autoconf.texi (Assignments): Document the problem.

Index: doc/autoconf.texi
===================================================================
RCS file: /cvsroot/autoconf/autoconf/doc/autoconf.texi,v
retrieving revision 1.601
diff -p -u -r1.601 autoconf.texi
--- doc/autoconf.texi   22 Mar 2002 06:21:01 -0000      1.601
+++ doc/autoconf.texi   25 Mar 2002 21:57:59 -0000
@@ -8611,6 +8611,20 @@ evaluation is undefined.  For instance @
 gives @samp{1} with sh on Solaris, but @samp{2} with Bash.  You must use
 @samp{;} to enforce the order: @samp{foo=1; foo=2; echo $foo}.
 
+Don't rely on the following to find @file{subdir/program}:
+
address@hidden
+PATH=subdir$PATH_SEPARATOR$PATH program
address@hidden example
+
address@hidden
+as this does not work with Zsh 3.0.6.  Use something like this
+instead:
+
address@hidden
+(PATH=subdir$PATH_SEPARATOR$PATH; export PATH; exec program)
address@hidden example
+
 Don't rely on the exit status of an assignment: Ash 0.2 does not change
 the status and propagates that of the last statement:
 
Index: tests/m4sh.at
===================================================================
RCS file: /cvsroot/autoconf/autoconf/tests/m4sh.at,v
retrieving revision 1.27
diff -p -u -r1.27 m4sh.at
--- tests/m4sh.at       28 Jan 2002 10:46:00 -0000      1.27
+++ tests/m4sh.at       25 Mar 2002 21:57:59 -0000
@@ -72,14 +72,16 @@ AT_CHECK([mkdir test || exit 77])
 AT_DATA_LINENO([test/test-1.as], [false], [$@&address@hidden, [LINENO])
 AT_CHECK([autom4te -l m4sh test/test-1.as -o test/test-1])
 AT_CHECK([./test/test-1],                          0, [expout])
-AT_CHECK([PATH=test$PATH_SEPARATOR$PATH test-1],   0, [expout])
+AT_CHECK([(PATH=test$PATH_SEPARATOR$PATH; export PATH; exec test-1)],
+                                                  0, [expout])
 AT_CHECK([sh ./test/test-1],                       0, [expout])
 
 # Now using a disabled LINENO, with different call conventions.
 AT_DATA_LINENO([test/test-2.as], [true], [$@&address@hidden, [LINENO])
 AT_CHECK([autom4te -l m4sh test/test-2.as -o test/test-2])
 AT_CHECK([./test/test-2],                          0, [expout])
-AT_CHECK([PATH=test$PATH_SEPARATOR$PATH test-2],   0, [expout])
+AT_CHECK([(PATH=test$PATH_SEPARATOR$PATH; export PATH; exec test-2)],
+                                                  0, [expout])
 AT_CHECK([sh ./test/test-2],                       0, [expout])
 
 # Beware that *.lineno scripts can be *here* while the masters are in test/.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]