I've pushed the attached patch to yacc-work. The new testcase should correctly capture and expose the regression, as it passes with automake 1.11 and fails with developement (maint, master and yacc-work) versions of automake.
Regards, Stefano
From b3c8fd538d3ddaaaed9081d78aedcd16e0f75bf3 Mon Sep 17 00:00:00 2001 From: Stefano Lattarini <stefano.lattar...@gmail.com> Date: Tue, 12 Apr 2011 15:11:04 +0200 Subject: [PATCH] coverage: test for automake bug#8485 (known regression) * tests/yacc-dist-nobuild-subdir.test: New test. * tests/Makefile.am (TESTS, XFAIL_TESTS): Update. --- ChangeLog | 6 ++ tests/Makefile.am | 2 + tests/Makefile.in | 1 + tests/yacc-dist-nobuild-subdir.test | 93 +++++++++++++++++++++++++++++++++++ 4 files changed, 102 insertions(+), 0 deletions(-) create mode 100755 tests/yacc-dist-nobuild-subdir.test diff --git a/ChangeLog b/ChangeLog index c0495d5..d1ebf21 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2011-04-12 Stefano Lattarini <stefano.lattar...@gmail.com> + + 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 <stefano.lattar...@gmail.com> coverage: test mixed C/C++ yacc-generated parsers in the same dir diff --git a/tests/Makefile.am b/tests/Makefile.am index 3878ac9..3191922 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 ab0b4ee..0711b03 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -1106,6 +1106,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 0000000..b6811d7 --- /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 <http://www.gnu.org/licenses/>. + +# 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 + +: -- 1.7.2.3