Subject: Re: bug#8508: 8 test failures on Fedora 15

From: Stefano Lattarini <[email-masked]>
Date: Sat, 16 Apr 2011 12:46:16 +0200

On Saturday 16 April 2011, Jim Meyering wrote:
> Hi,
Hi Jim, thanks for the report.

> I've just run "make check" on Fedora 15.
> Here's one problem, from the log below:
> 
>   sed: can't read /:$/d: No such file or directory
>
> Here's the obvious fix (though it does not make that
> particular test pass, because it has another problem):
> 
> From f74ec115dce4ae864b6a20606c75faa127b670cb Mon Sep 17 00:00:00 2001
> From: Jim Meyering <[email-masked]>
> Date: Sat, 16 Apr 2011 11:55:46 +0200
> Subject: [PATCH] depcomp: correct invalid sed invocation
> 
> * lib/depcomp: Insert missing -e before '/:$/d'.
> Otherwise, that use of sed would treat '/:$/d' as a file name.
> 
> Copyright (C) 2010, 2011  Free Software Foundation, Inc.
> ---
>  ChangeLog   |    8 +++++++-
>  lib/depcomp |    4 ++--
>  2 files changed, 9 insertions(+), 3 deletions(-)
> 
> diff --git a/ChangeLog b/ChangeLog
> index 1464f06..e9f9968 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,3 +1,9 @@
> +2011-04-16  Jim Meyering  <[email-masked]>
> +
> +	depcomp: correct invalid sed invocation
> +	* lib/depcomp: Insert missing -e before '/:$/d'.
> +	Otherwise, that use of sed would treat '/:$/d' as a file name.
> +
>  2011-04-14  Stefano Lattarini  <[email-masked]>
> 
>  	maintainer check: quote literal `$' in Makefile rule
> @@ -4475,7 +4481,7 @@
> 
>  -----
> 
> -Copyright (C) 2010  Free Software Foundation, Inc.
> +Copyright (C) 2010, 2011  Free Software Foundation, Inc.
> 
>  Copying and distribution of this file, with or without modification, are
>  permitted provided the copyright notice and this notice are preserved.
> diff --git a/lib/depcomp b/lib/depcomp
> index 6149451..9825d56 100755
> --- a/lib/depcomp
> +++ b/lib/depcomp
> @@ -1,7 +1,7 @@
>  #! /bin/sh
>  # depcomp - compile a program generating dependencies as side-effects
> 
> -scriptversion=2011-04-11-10; # UTC
> +scriptversion=2011-04-16.09; # UTC
> 
>  # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
>  # 2011 Free Software Foundation, Inc.
> @@ -170,7 +170,7 @@ gcc)
>  ## to the object.  Take care to not repeat it in the output.
>  ## Some versions of the HPUX 10.20 sed can't process this invocation
>  ## correctly.  Breaking it into two sed invocations is a workaround.
> -    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" '/:$/d' \
> +    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
>        | sed -e 's/$/ :/' >> "$depfile"
>    rm -f "$tmpdepfile"
>    ;;
> --
> 1.7.5.rc1.228.g86d60b
> 
>
The patch is fine IMHO, I'll apply it in your name ASAP (adding a
reference to this bug report).  Thanks.

> 
> ==============================================
>    GNU Automake 1.11a: tests/test-suite.log
> ==============================================
> 
> 8 of 1025 tests failed.  (24 tests were not run).
> 
> .. contents:: :depth: 2
> 
 
> FAIL: cond35.test (exit: 2)
> ===========================
> 
> ... [CUT] ...
>
> + ./configure
> checking for a BSD-compatible install... /p/bin/install -c
> checking whether build environment is sane... yes
> checking for a thread-safe mkdir -p... /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.out
> checking for suffix of executables...
> 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 for flex... flex
> checking lex output file root... lex.yy
> checking lex library... none needed
>
This seems like an autoconf bug: configure fails to determine the
required flag to link in the lex library ...

> checking whether yytext is a pointer... no
> checking for bison... bison -y
> checking that generated files are newer than configure... done
> configure: creating ./config.status
> config.status: creating Makefile
> config.status: executing depfiles commands
> + make
> /bin/sh ./ylwrap tparse.y y.tab.c tparse.c y.tab.h tparse.h y.output tparse.output -- bison -y -d
> updating tparse.h
> make  all-am
>
> ... [CUT] ...
>
> gcc  -g -O2   -o ta ta.o tscan.o tparse.o
> tscan.o: In function `yylex':
> /h/j/w/co/automake/tests/cond35.dir/tscan.c:805: undefined reference to `yywrap'
> collect2: ld returned 1 exit status
>
... so we get this link error.

Would you mind to report this bug to the autoconf mailing list?
Or I'll do that eventually if you don't have time. 

> make[1]: *** [ta] Error 1
> make[1]: Leaving directory `/h/j/w/co/automake/tests/cond35.dir'
> make: *** [all] Error 2
> + exit_status=2
> + set +e
> + cd /h/j/w/co/automake/tests
> + case $exit_status,$keep_testdirs in
> + test 0 '!=' 0
> + echo 'cond35: exit 2'
> cond35: exit 2
> + exit 2
> 

> FAIL: lex3.test (exit: 2)
> FAIL: lexvpath.test (exit: 2)
> FAIL: silent-lex-gcc.test (exit: 1)
> FAIL: silent-lex-generic.test (exit: 1)
>
These tests fail for the same reason.

> FAIL: self-check-cleanup.test (exit: 1)
> =======================================
> 
> ... [CUT] ...
>
> + ls -l
> total 84
> -rw-------. 1 meyering meyering    82 Apr 16 11:42 configure.in
>
Why this trailing dot in the permission string?
>
> -rw-------. 1 meyering meyering 18583 Apr 16 11:42 defs
> -rw-------. 1 meyering meyering  5972 Apr 16 11:42 defs-static
> -rwx------. 1 meyering meyering 20330 Apr 16 11:42 depcomp
> d---------. 2 meyering meyering  4096 Apr 16 11:42 dir
> ----------. 1 meyering meyering     0 Apr 16 11:42 file
> lrwxrwxrwx. 1 meyering meyering     4 Apr 16 11:42 foo -> defs
> -rwx------. 1 meyering meyering 13998 Apr 16 11:42 install-sh
> -rwx------. 1 meyering meyering 11419 Apr 16 11:42 missing
> + grep '^---------- .*file'
>
OK, spurious failure caused by the trailing dot in the permission
string.  I'll fix it by relaxing the regexp.
>
> + ls -l file
> + exit_status=1
> + set +e
> + cd /h/j/w/co/automake/tests
> + case $exit_status,$keep_testdirs in
> + test 0 '!=' 0
> + echo 'self-check-cleanup: exit 1'
> self-check-cleanup: exit 1
> + exit 1
>

> FAIL: self-check-dir.test (exit: 1)
> ===================================
> 
> + this=S_dir
> + outcome=:
> + pwd
> /h/j/w/co/automake/tests
> + rm -f S_dir.tmp
> ++ pwd
> + /bin/zsh -c '
>   . ./defs || Exit 1
>   : > S_dir.tmp
>   case `pwd` in '\''/h/j/w/co/automake/tests'\''/S_dir.dir);; *) Exit 1;; esac
> ' S_dir.test
> /h/j/w/co/automake/tests:/h/j/bin/perl:/h/j/bin:/p/p/git/bin:/p/bin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/local:/usr/local/bin
> +./defs:567> set -e
> +./defs:569> pwd
> /h/j/w/co/automake/tests/zsh.dir
> +zsh:3> :
> +zsh:4> pwd
> +zsh:4> case /h/j/w/co/automake/tests/zsh.dir (/h/j/w/co/automake/tests/S_dir.dir)
> +zsh:4> case /h/j/w/co/automake/tests/zsh.dir (*)
> +zsh:4> Exit 1
> +Exit:2> set +e
> +Exit:3> exit 1
> +Exit:4> exit 1
> +zsh:4> exit_status=1
> +zsh:4> set +e
> +zsh:4> cd /h/j/w/co/automake/tests
> +zsh:4> case 1, (0,)
> +zsh:4> test 0 '!=' 0
> +zsh:4> echo 'zsh: exit 1'
> zsh: exit 1
> +zsh:4> exit 1
> + outcome=false
> + test -f S_dir.tmp
> + false
>
> FAIL: self-check-me.test (exit: 1)
> ==================================
> 
> + : /bin/zsh
> + /bin/zsh -c '. ./defs && echo me=$me' foo-bar-.test
> + grep '^me=foo-bar-$'
> +./defs:567> set -e
> +./defs:569> pwd
> +zsh:1> echo 'me=zsh'
> +zsh:1> exit_status=0
> +zsh:1> set +e
> +zsh:1> cd /h/j/w/co/automake/tests
> +zsh:1> case 0, (0,)
> +zsh:1> find zsh.dir -type d ! -perm -700 -exec chmod u+rwx '{}' ';'
> +zsh:1> rm -rf zsh.dir
> +zsh:1> test 0 '!=' 0
> +zsh:1> echo 'zsh: exit 0'
> +zsh:1> exit 0
> 
These failures are due to a known incompatibity in how Zsh handles $0.
Anyway, currenty the automake testsuite does not support being run by
Zsh, so these failures is not worth worrying about yet.

Thanks,
  Stefano