[Top][All Lists]
[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
- [PATCH] {maint} tests: fix spurious failure with FreeBSD make and Yacc in VPATH,
Stefano Lattarini <=