GNU bug report logs - #10466
MSYS problem with redirects

Previous Next

Package: automake;

Reported by: Peter Rosin <peda <at> lysator.liu.se>

Date: Mon, 9 Jan 2012 11:31:01 UTC

Severity: minor

Tags: patch

Done: Stefano Lattarini <stefano.lattarini <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Peter Rosin <peda <at> lysator.liu.se>
Subject: bug#10466: closed (Re: bug#10466: MSYS problem with redirects)
Date: Fri, 27 Jan 2012 16:09:03 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#10466: MSYS problem with redirects

which was filed against the automake package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 10466 <at> debbugs.gnu.org.

-- 
10466: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10466
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Stefano Lattarini <stefano.lattarini <at> gmail.com>
To: Peter Rosin <peda <at> lysator.liu.se>
Cc: 10466-done <at> debbugs.gnu.org, automake-patches <at> gnu.org
Subject: Re: bug#10466: MSYS problem with redirects
Date: Fri, 27 Jan 2012 17:08:02 +0100
On 01/27/2012 03:37 PM, Peter Rosin wrote:
>
> So, the patch is good. Thanks for fixing!
> 
Thanks for confirming.  I've pushed the patch, and I'm thus closing
this report.

Regards,
  Stefano

[Message part 3 (message/rfc822, inline)]
From: Peter Rosin <peda <at> lysator.liu.se>
To: bug-automake <at> gnu.org
Subject: MSYS problem with redirects
Date: Mon, 09 Jan 2012 12:29:42 +0100
Hi!

parallel-tests-fd-redirect.test fails on MSYS, and I think
the cause is that the write (9, ...) simply doesn't work for
MinGW programs (baz.exe and qux.test.exe).  It works for the
shell scripts (foo.sh and bar) since /bin/sh is an MSYS
program and thus is a lot more POSIXy.  But redirecting from
the MinGW world to the MSYS world in this maner is simply
not possible, I think.  I think that will only work for
fd 0,1 and 2 (but I'm not 100% sure).

Also, including unistd.h will not work for non-ANSI systems,
MinGW provides a half-baked unistd.h but MSVC does not.
MSVC has its write() in io.h, but it will probably suffer
from the same problem with a dysfunctional fd 9.

With this diff:

diff --git a/tests/parallel-tests-fd-redirect.test b/tests/parallel-tests-fd-red
index 73a134e..5728014 100755
--- a/tests/parallel-tests-fd-redirect.test
+++ b/tests/parallel-tests-fd-redirect.test
@@ -65,20 +65,26 @@ END
 chmod a+x foo.sh bar

 cat > baz.c <<'END'
+#include <stdio.h>
 #include <unistd.h>
 int main (void)
 {
-  write (9, " bazbazbaz\n", 11);
-  return 0;
+  ssize_t res = write (9, " bazbazbaz\n", 11);
+  if (res < 0)
+    perror("write failed");
+  return res != 11;
 }
 END

 cat > zardoz.c <<'END'
+#include <stdio.h>
 #include <unistd.h>
 int main (void)
 {
-  write (9, " quxquxqux\n", 11);
-  return 0;
+  ssize_t res = write (9, " quxquxqux\n", 11);
+  if (res < 0)
+    perror("write failed");
+  return res != 11;
 }
 END

the embedded test suite goes from 4 PASS to 2 PASS / 2 FAIL,
and this in the log files:

+ cat foo.log
+ cat bar.log
+ cat baz.log
write failed: Bad file descriptor
+ cat qux.log
write failed: Bad file descriptor

supporting the above beliefs.

Cheers,
Peter

For reference, the original parallel-tests-fd-redirect.log:

Running from installcheck: no
Using TAP: no
PATH = /home/peda/automake/tests:/c/Program Files (x86)/Microsoft F#/v4.0/:/c/Program Files (x86)/Microsoft Visual Studio 10.0/VSTSDB/Deploy:/c/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/IDE/:/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/BIN:/c/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/Tools/:/c/Windows/Microsoft.NET/Framework/v4.0.30319:/c/Windows/Microsoft.NET/Framework/v3.5:/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/VCPackages:/c/Program Files (x86)/HTML Help Workshop:/c/Program Files (x86)/Microsoft Visual Studio 10.0/Team Tools/Performance Tools:/c/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/bin/NETFX 4.0 Tools:.:/usr/local/bin:/mingw/bin:/bin:/c/Program Files/Common Files/Microsoft Shared/Windows Live:/c/Program Files (x86)/Common Files/Microsoft Shared/Windows Live:/c/Windows/system32:/c/Windows:/c/Windows/System32/Wbem:/c/Windows/System32/WindowsPowerShell/v1.0/
++ pwd
/home/peda/automake/tests/parallel-tests-fd-redirect.dir
+ cat
+ cat
+ aclocal-1.11a -Werror
+ autoconf -B /no/such/dir
+ automake-1.11a --foreign -Werror -Wall -a
configure.in:2: installing `./test-driver'
+ cat
+ chmod a+x foo.sh
+ cat
+ chmod a+x foo.sh bar
+ cat
+ cat
+ ./configure
checking for a BSD-compatible install... /bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: executing depfiles commands
+ st=0
+ grep '^bar\.log:.*bar' Makefile
bar.log: bar
+ grep '^baz\.log:.*baz\$(EXEEXT)' Makefile
baz.log: baz$(EXEEXT)
+ grep '^\.test\$(EXEEXT)\.log:' Makefile
.test$(EXEEXT).log:
+ /bin/grep -E '^(foo|qux)\.log:' Makefile
+ test 0 -eq 0
+ st=0
+ make check
+ cat stdout
make  baz.exe qux.test.exe
make[1]: Entering directory `/home/peda/automake/tests/parallel-tests-fd-redirect.dir'
gcc -DPACKAGE_NAME=\"parallel-tests-fd-redirect\" -DPACKAGE_TARNAME=\"parallel-tests-fd-redirect\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"parallel-tests-fd-redirect\ 1.0\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"parallel-tests-fd-redirect\" -DVERSION=\"1.0\" -I.     -g -O2 -MT baz.o -MD -MP -MF .deps/baz.Tpo -c -o baz.o baz.c
mv -f .deps/baz.Tpo .deps/baz.Po
gcc  -g -O2   -o baz.exe baz.o  
gcc -DPACKAGE_NAME=\"parallel-tests-fd-redirect\" -DPACKAGE_TARNAME=\"parallel-tests-fd-redirect\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"parallel-tests-fd-redirect\ 1.0\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"parallel-tests-fd-redirect\" -DVERSION=\"1.0\" -I.     -g -O2 -MT zardoz.o -MD -MP -MF .deps/zardoz.Tpo -c -o zardoz.o zardoz.c
mv -f .deps/zardoz.Tpo .deps/zardoz.Po
gcc  -g -O2   -o qux.test.exe zardoz.o  
make[1]: Leaving directory `/home/peda/automake/tests/parallel-tests-fd-redirect.dir'
make  check-TESTS check-local
make[1]: Entering directory `/home/peda/automake/tests/parallel-tests-fd-redirect.dir'
make[2]: Entering directory `/home/peda/automake/tests/parallel-tests-fd-redirect.dir'
 foofoofoo
PASS: foo.sh
 barbarbar
PASS: bar
PASS: baz.exe
PASS: qux.test.exe
============================================================================
Testsuite summary for parallel-tests-fd-redirect 1.0
============================================================================
# TOTAL: 4
# PASS:  4
# SKIP:  0
# XFAIL: 0
# FAIL:  0
# XPASS: 0
# ERROR: 0
============================================================================
make[2]: Leaving directory `/home/peda/automake/tests/parallel-tests-fd-redirect.dir'
make[1]: Nothing to be done for `check-local'.
make[1]: Leaving directory `/home/peda/automake/tests/parallel-tests-fd-redirect.dir'
+ cat foo.log
+ cat bar.log
+ cat baz.log
+ cat qux.log
+ test 0 -eq 0
+ grep '^ foofoofoo$' stdout
 foofoofoo
+ grep '^ barbarbar$' stdout
 barbarbar
+ grep '^ bazbazbaz$' stdout
+ exit_status=1
+ set +e
+ cd /home/peda/automake/tests
+ test no = yes
+ case $am_explicit_skips in
+ test 1 -eq 0
+ keep_testdirs=yes
+ am_keeping_testdirs
+ case $keep_testdirs in
+ return 0
+ set +x
parallel-tests-fd-redirect: exit 1



This bug report was last modified 13 years and 174 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.