This patch removes a spurious failure experienced with FreeBSD make. The failure is in fact due to the real bug <http://debbugs.gnu.org/7884>; but that bug is not a regression, and is already exposed by the test `yacc-dist-nobuild.test' in the `yacc-work' branch (that I plan to merge to master in a not-so-distant future); so there's little point in letting a basically-unrelated test fail because of it.
I'll push the patch below in 48 hours if there is no objection. Regards, Stefano -*-*-*- * tests/subpkg.test: Some cosmetic adjustments. Move the tests checking that $(YLWRAP) is defined and installed properly when ylwrap is in a default auxdir found in a parent package ... * tests/subpkg-yacc.test: ... into this new test, which carefully avoids to trigger the known bug#7884 (combo FreeBSD make plus Yacc plus VPATH build). * tests/Makefile.am (TESTS): Update. --- ChangeLog | 11 ++++ tests/Makefile.am | 1 + tests/Makefile.in | 1 + tests/subpkg-yacc.test | 150 ++++++++++++++++++++++++++++++++++++++++++++++++ tests/subpkg.test | 28 ++------- 5 files changed, 170 insertions(+), 21 deletions(-) create mode 100755 tests/subpkg-yacc.test diff --git a/ChangeLog b/ChangeLog index a2ecefc..d428dfc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2011-10-18 Stefano Lattarini <stefano.lattar...@gmail.com> + + tests: fix spurious failure with FreeBSD make and Yacc in VPATH + * tests/subpkg.test: Some cosmetic adjustments. Move the tests + checking that $(YLWRAP) is defined and installed properly when + ylwrap is in a default auxdir found in a parent package ... + * tests/subpkg-yacc.test: ... into this new test, which carefully + avoids to trigger the known bug#7884 (combo FreeBSD make plus Yacc + plus VPATH build). + * tests/Makefile.am (TESTS): Update. + 2011-10-17 Stefano Lattarini <stefano.lattar...@gmail.com> tests: fix spurious failure with autoconf 2.62 diff --git a/tests/Makefile.am b/tests/Makefile.am index 884ea65..36ac88e 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -798,6 +798,7 @@ subpkg.test \ subpkg2.test \ subpkg3.test \ subpkg4.test \ +subpkg-yacc.test \ subst.test \ subst2.test \ subst3.test \ diff --git a/tests/Makefile.in b/tests/Makefile.in index f1bfcdd..8bdd107 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -1082,6 +1082,7 @@ subpkg.test \ subpkg2.test \ subpkg3.test \ subpkg4.test \ +subpkg-yacc.test \ subst.test \ subst2.test \ subst3.test \ diff --git a/tests/subpkg-yacc.test b/tests/subpkg-yacc.test new file mode 100755 index 0000000..ee8af66 --- /dev/null +++ b/tests/subpkg-yacc.test @@ -0,0 +1,150 @@ +#! /bin/sh +# Copyright (C) 2002, 2003, 2004, 2006, 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 ylwrap is installed properly, and $(YLWRAP) us defined +# properly, when a subpackage is involved. + +required='cc yacc' +. ./defs || Exit 1 + +set -e + +cat >>configure.in <<'END' +AC_PROG_CC +AC_CONFIG_SUBDIRS([lib]) +AC_OUTPUT +END + +cat >Makefile.am <<'EOF' +SUBDIRS = lib +bin_PROGRAMS = MU +MU_LDADD = lib/liblib.a +# It's ok to override distdir. +distdir = subpack-1 +# Remove a file created by rules in subdir lib. +CLEANFILES = lib-dist-hook-has-run +EOF + +cat >MU.c <<'EOF' +int lib (void); +int main (void) +{ + return lib (); +} +EOF + +mkdir lib +mkdir lib/src + +cat >lib/configure.ac <<'EOF' +AC_INIT([lib], [2.3]) +AM_INIT_AUTOMAKE +AC_PROG_RANLIB +AC_PROG_YACC +dnl This comes after YACC and RANLIB checks, deliberately. +AC_PROG_CC +AC_CONFIG_HEADERS([config.h:config.hin]) +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT +EOF + +cat >lib/Makefile.am <<'EOF' +noinst_LIBRARIES = liblib.a +liblib_a_SOURCES = src/x.c foo.y +EXTRA_liblib_a_SOURCES = bar.y + +dist-hook: + test -d $(top_distdir) + test -d $(distdir) + find $(top_distdir) $(distdir) ;: For debugging. + test -f $(top_distdir)/MU.c + test ! -f $(distdir)/MU.c + for suf in y c; do \ + for name in foo bar; do \ + test -f $(distdir)/$$name.$$suf || exit 1; \ + test ! -f $(top_distdir)/$$name.$$suf || exit 1; \ + done; \ + done + test -f $(distdir)/foo.y + test ! -f $(top_distdir)/foo.y + test -f $(distdir)/src/x.c + test ! -f $(top_distdir)/src/x.c + test -f $(YLWRAP) + : > $(top_builddir)/../lib-dist-hook-has-run +EOF + +cat > lib/foo.y << 'END' +%{ +int yylex (void) { return 0; } +void yyerror (char *s) {} +%} +%% +foobar : 'f' 'o' 'o' 'b' 'a' 'r' {}; +END + +cp lib/foo.y lib/bar.y + +cat >lib/src/x.c <<'EOF' +#include <config.h> +int lib (void) +{ + return 0; +} +EOF + +$ACLOCAL +$AUTOCONF +$AUTOMAKE -Wno-override + +cd lib +$ACLOCAL +$AUTOCONF +$AUTOHEADER +$AUTOMAKE -Wno-override --add-missing +cd .. + +# Some checks here are slightly more tricky than we'd like, but we cannot +# simply use "make distcheck", to avoid triggering a spurious failure due +# to issues with FreeBSD make and VPATH builds (see automake bug#7884). + +./configure +$MAKE +$MAKE dist +test -f lib-dist-hook-has-run +test -f subpack-1.tar.gz +test ! -d subpack-1 # Make sure "dist" cleans up after itself. + +mkdir workdir +cd workdir +gzip -c -d ../subpack-1.tar.gz | tar xf - +test -d subpack-1 +mkdir build +cd build +../subpack-1/configure +$MAKE +$MAKE dist +test -f lib-dist-hook-has-run +test -f subpack-1.tar.gz +test ! -d subpack-1 # Make sure "dist" cleans up after itself. + +# Don't trust non-GNU makes to do distcheck with a Yacc-using +# package (see bug referenced above). +if using_gmake; then + $MAKE distcheck || Exit 1 +fi + +: diff --git a/tests/subpkg.test b/tests/subpkg.test index 3662937..f197ad4 100755 --- a/tests/subpkg.test +++ b/tests/subpkg.test @@ -53,10 +53,8 @@ ACLOCAL_AMFLAGS = -I m4 EOF cat >LDADD.c <<'EOF' -int lib (); - -int -main () +int lib (void); +int main (void) { return lib (); } @@ -69,7 +67,6 @@ cat >lib/configure.ac <<'EOF' AC_INIT([lib], [2.3]) AM_INIT_AUTOMAKE AC_PROG_RANLIB -AC_PROG_YACC AC_CONFIG_HEADERS([config.h:config.hin]) AC_CONFIG_FILES([Makefile]) FOO @@ -77,33 +74,20 @@ EOF cat >lib/Makefile.am <<'EOF' noinst_LIBRARIES = liblib.a -liblib_a_SOURCES = src/x.c foo.y -EXTRA_liblib_a_SOURCES = bar.y +liblib_a_SOURCES = src/x.c dist-hook: test ! -f $(distdir)/LDADD.c test -f $(top_distdir)/LDADD.c test -f $(distdir)/src/x.c test ! -f $(top_distdir)/src/x.c - test -f $(YLWRAP) ACLOCAL_AMFLAGS = -I ../m4 EOF -cat > lib/foo.y << 'END' -%{ -int yylex () {return 0;} -void yyerror (char *s) {} -%} -%% -foobar : 'f' 'o' 'o' 'b' 'a' 'r' {}; -END - -cp lib/foo.y lib/bar.y - cat >lib/src/x.c <<'EOF' #include <config.h> -int lib () +int lib (void) { return 0; } @@ -124,5 +108,7 @@ cd .. ./configure $MAKE $MAKE distcheck -test ! -d subpack-1 # make sure distcheck cleans up after itself +test ! -d subpack-1 # Make sure distcheck cleans up after itself. test -f subpack-1.tar.gz + +: -- 1.7.3.5