automake-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] {maint} tests: fix spurious failure with FreeBSD make and Yacc i


From: Stefano Lattarini
Subject: [PATCH] {maint} tests: fix spurious failure with FreeBSD make and Yacc in VPATH
Date: Tue, 18 Oct 2011 20:16:40 +0200

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  <address@hidden>
+
+       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  <address@hidden>
 
        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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]