From: Stefano Lattarini Date: Tue, 12 Apr 2011 13:11:04 +0000 (+0200) Subject: coverage: test for automake bug#8485 (known regression) X-Git-Tag: ylwrap-refactor-abandoned-branch~52 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7ad822a39190682bc159c2f9c21c25a4273d037c;p=thirdparty%2Fautomake.git coverage: test for automake bug#8485 (known regression) * tests/yacc-dist-nobuild-subdir.test: New test. * tests/Makefile.am (TESTS, XFAIL_TESTS): Update. --- diff --git a/ChangeLog b/ChangeLog index c0495d5ad..d1ebf21e5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2011-04-12 Stefano Lattarini + + coverage: test for automake bug#8485 (known regression) + * tests/yacc-dist-nobuild-subdir.test: New test. + * tests/Makefile.am (TESTS, XFAIL_TESTS): Update. + 2011-04-10 Stefano Lattarini coverage: test mixed C/C++ yacc-generated parsers in the same dir diff --git a/tests/Makefile.am b/tests/Makefile.am index 3878ac91d..3191922d5 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -22,6 +22,7 @@ auxdir2.test \ cond17.test \ gcj6.test \ pr8365-remake-timing.test \ +yacc-dist-nobuild-subdir.test \ txinfo5.test include $(srcdir)/parallel-tests.am @@ -836,6 +837,7 @@ yacc8.test \ yaccdry.test \ yacc-deleted-headers.test \ yacc-dist-nobuild.test \ +yacc-dist-nobuild-subdir.test \ yacc-nodist.test \ yaccpp.test \ yaccvpath.test \ diff --git a/tests/Makefile.in b/tests/Makefile.in index ab0b4ee3b..f06f1f751 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -278,6 +278,7 @@ auxdir2.test \ cond17.test \ gcj6.test \ pr8365-remake-timing.test \ +yacc-dist-nobuild-subdir.test \ txinfo5.test parallel_tests = \ @@ -1106,6 +1107,7 @@ yacc8.test \ yaccdry.test \ yacc-deleted-headers.test \ yacc-dist-nobuild.test \ +yacc-dist-nobuild-subdir.test \ yacc-nodist.test \ yaccpp.test \ yaccvpath.test \ diff --git a/tests/yacc-dist-nobuild-subdir.test b/tests/yacc-dist-nobuild-subdir.test new file mode 100755 index 000000000..b6811d7b9 --- /dev/null +++ b/tests/yacc-dist-nobuild-subdir.test @@ -0,0 +1,93 @@ +#! /bin/sh +# Copyright (C) 2011 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Check that VPATH builds and "make distcheck" works with packages +# using yacc and the automake 'subdir-objects' option. +# Exposes automake bug#8485. + +required=yacc +. ./defs || Exit 1 + +set -e + +distdir=$me-1.0 + +cat >> configure.in << 'END' +AC_PROG_CC +AM_PROG_CC_C_O +AC_PROG_YACC +AC_OUTPUT +END + +mkdir sub + +cat > sub/parse.y << 'END' +%{ +int yylex () { return 0; } +void yyerror (char *s) { return; } +%} +%% +x : 'x' {}; +%% +int main (void) +{ + return yyparse (); +} +END + +cat > Makefile.am <<'END' +AUTOMAKE_OPTIONS = subdir-objects +noinst_PROGRAMS = foo bar +foo_SOURCES = sub/parse.y +bar_SOURCES = $(foo_SOURCES) +AM_YFLAGS = -d +bar_YFLAGS = +END + +$ACLOCAL +$AUTOCONF +$AUTOMAKE -a + +./configure +$MAKE distdir + +# Yacc-derived C source and header files must be built and distributed + +test -f sub/parse.c +test -f sub/parse.h +test -f sub/bar-parse.c +test ! -r sub/bar-parse.h + +test -f $distdir/sub/parse.c +test -f $distdir/sub/parse.h +test -f $distdir/sub/bar-parse.c +test ! -r $distdir/sub/bar-parse.h + +# But they shouldn't be rebuilt in VPATH builds. + +mkdir $distdir/build +chmod -R a-w $distdir +cd $distdir/build +chmod u+w . +# Try to enable dependency tracking even with slow dependency +# extractors, to improve coverage. +../configure --enable-dependency-tracking YACC=false +YACC=false $MAKE -e +ls -l sub/*.[ch] && Exit 1 + +env YACC=false DISTCHECK_CONFIGURE_FLAGS='YACC=false' $MAKE -e distcheck + +: