From: Stefano Lattarini Date: Tue, 18 Oct 2011 15:53:21 +0000 (+0200) Subject: tests: fix spurious failure with FreeBSD make and Yacc in VPATH X-Git-Tag: v1.11.1b~16^2^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7e5ae808d830c9319a4dd3d357b10dcf4315f529;p=thirdparty%2Fautomake.git 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. --- diff --git a/ChangeLog b/ChangeLog index a2ecefcae..d428dfc57 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2011-10-18 Stefano Lattarini + + 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 tests: fix spurious failure with autoconf 2.62 diff --git a/tests/Makefile.am b/tests/Makefile.am index 884ea65a9..36ac88e08 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 f1bfcddef..8bdd1075c 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 000000000..ee8af66f3 --- /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 . + +# 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 +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 366293726..f197ad45e 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 -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 + +: