[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] {maint} Warnings about primary/prefix mismatch fixed and extende
From: |
Stefano Lattarini |
Subject: |
[PATCH] {maint} Warnings about primary/prefix mismatch fixed and extended. (was: Re: bug#7647: Diagnose invalid primary/directory combinations) |
Date: |
Mon, 3 Jan 2011 15:32:00 +0100 |
User-agent: |
KMail/1.13.3 (Linux/2.6.30-2-686; KDE/4.4.4; i686; ; ) |
References:
<http://lists.gnu.org/archive/html/automake-patches/2010-12/msg00106.html>
<http://debbugs.gnu.org/cgi/bugreport.cgi?bug=7647>
-*-*-
Hello automakers.
I've rebased the patch on latest maint, removed trailing whitespaces,
fixed the copyright years, and extended the new testcase
`primary-prefix-documented-valid.test' to cover the new examples
added in the manual with commit `v1.11-261-gd5a408d' -- reference:
<http://lists.gnu.org/archive/html/automake-patches/2011-01/msg00008.html>
Below is what I've squashed into the rebased patch; the whole
amended patch is attached.
OK for maint?
Regards,
Stefano
-*-*-
diff --git a/ChangeLog b/ChangeLog
index 08403ef..625d580 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,4 @@
-2010-12-17 Stefano Lattarini <address@hidden>
+2011-01-03 Stefano Lattarini <address@hidden>
Warnings about primary/prefix mismatch fixed and extended.
* automake.in (%standard_prefix): Add `doc' and `locale'.
diff --git a/tests/primary-prefix-couples-documented-valid.test
b/tests/primary-prefix-couples-documented-valid.test
index 893704f..5bc851c 100755
--- a/tests/primary-prefix-couples-documented-valid.test
+++ b/tests/primary-prefix-couples-documented-valid.test
@@ -1,5 +1,5 @@
#! /bin/sh
-# Copyright (C) 2010 Free Software Foundation, Inc.
+# 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
@@ -25,6 +25,7 @@ set -e
cat >> configure.in <<'END'
AC_PROG_CC
AC_PROG_CC
+AC_PROG_RANLIB
AC_PROG_LIBTOOL
AM_PROG_GCJ
AM_PATH_PYTHON
@@ -65,12 +65,17 @@ quaternion_la_SOURCES = quaternion.c support.c support.h
quaternion_la_LDFLAGS = -avoid-version -module
myexecbindir = /exec
-myexecbin_PROGRAMS = foo
+myexecbin_PROGRAMS = zardoz
foodir = $(prefix)/foo
barexecdir = $(prefix)/bar/binaries
foo_SCRIPTS = foo.sh
barexec_SCRIPTS = quux.pl
+
+my_execbindir = $(pkglibdir)
+my_doclibdir = $(docdir)
+my_execbin_PROGRAMS = foo
+my_doclib_LIBRARIES = libquux.a
END
$ACLOCAL
diff --git a/tests/primary-prefix-couples-force-valid.test
b/tests/primary-prefix-couples-force-valid.test
index 02728b9..159f297 100755
--- a/tests/primary-prefix-couples-force-valid.test
+++ b/tests/primary-prefix-couples-force-valid.test
@@ -1,5 +1,5 @@
#! /bin/sh
-# Copyright (C) 2010 Free Software Foundation, Inc.
+# 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
diff --git a/tests/primary-prefix-invalid-couples.test
b/tests/primary-prefix-invalid-couples.test
index 1a3d4e0..bd7a346 100755
--- a/tests/primary-prefix-invalid-couples.test
+++ b/tests/primary-prefix-invalid-couples.test
@@ -1,5 +1,5 @@
#! /bin/sh
-# Copyright (C) 2010 Free Software Foundation, Inc.
+# 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
diff --git a/tests/primary-prefix-valid-couples.test
b/tests/primary-prefix-valid-couples.test
index 8acb32e..b6b53dc 100755
--- a/tests/primary-prefix-valid-couples.test
+++ b/tests/primary-prefix-valid-couples.test
@@ -1,5 +1,5 @@
#! /bin/sh
-# Copyright (C) 2010 Free Software Foundation, Inc.
+# 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
@@ -50,8 +50,8 @@ echo '@setfilename foo' > foo.texi
: > Makefile.am
for p in bin sbin libexec pkglibexec; do
- echo "${p}_PROGRAMS = prog-$p" >> Makefile.am
-done
+ echo "${p}_PROGRAMS = prog-$p" >> Makefile.am
+done
for p in lib pkglib; do
echo "${p}_LIBRARIES = libs-$p.a" >> Makefile.am
@@ -74,7 +74,7 @@ done
for p in man man1 man2 man3 man4 man5 man6 man7 man8 man9; do
echo "${p}_MANS = bar.$p"
done
-
+
echo "info_TEXINFOS = foo.texi" >> Makefile.am
echo "lisp_LISP = foo.el" >> Makefile.am
echo "python_PYTHON = foo.py" >> Makefile.am
From 5ef86e55c8a500798b86d536f9daf8aeaef540b3 Mon Sep 17 00:00:00 2001
From: Stefano Lattarini <address@hidden>
Date: Thu, 16 Dec 2010 19:23:06 +0100
Subject: [PATCH] Warnings about primary/prefix mismatch fixed and extended.
* automake.in (%standard_prefix): Add `doc' and `locale'.
Rename `pkgdatadir' to `pkgdata'. Similarly for`pkglibdir',
`pkgincludedir' and `pkglibexecdir'.
(handle_programs): List `pkglibexec', not `pkglib', among the
prefixes valid for the `PROGRAMS' primary.
(handle_data): List also `doc' among the prefixes valid for
the `DATA' primary. This is required by automake's own build
system.
* tests/dirforbid.test: Test removed, superseded by ...
* tests/primary-prefix-invalid-couples.test: ... this new test.
* tests/primary-prefix-valid-couples.test: New test.
* tests/primary-prefix-documented-valid.test: Likewise.
* tests/primary-prefix-force-valid.test: Likewise.
* tests/java3.test: Adjusted, and extended a bit.
* tests/Makefile.am (TESTS): Updated.
* NEWS: Updated.
From a report by Eric Blake.
---
ChangeLog | 21 +++
NEWS | 3 +
automake.in | 16 +-
tests/Makefile.am | 5 +-
tests/Makefile.in | 5 +-
tests/dirforbid.test | 38 -----
tests/java3.test | 14 ++-
tests/primary-prefix-couples-documented-valid.test | 89 ++++++++++++
tests/primary-prefix-couples-force-valid.test | 87 ++++++++++++
tests/primary-prefix-invalid-couples.test | 142 ++++++++++++++++++++
tests/primary-prefix-valid-couples.test | 90 ++++++++++++
11 files changed, 459 insertions(+), 51 deletions(-)
delete mode 100755 tests/dirforbid.test
create mode 100755 tests/primary-prefix-couples-documented-valid.test
create mode 100755 tests/primary-prefix-couples-force-valid.test
create mode 100755 tests/primary-prefix-invalid-couples.test
create mode 100755 tests/primary-prefix-valid-couples.test
diff --git a/ChangeLog b/ChangeLog
index bf44677..625d580 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+2011-01-03 Stefano Lattarini <address@hidden>
+
+ Warnings about primary/prefix mismatch fixed and extended.
+ * automake.in (%standard_prefix): Add `doc' and `locale'.
+ Rename `pkgdatadir' to `pkgdata'. Similarly for`pkglibdir',
+ `pkgincludedir' and `pkglibexecdir'.
+ (handle_programs): List `pkglibexec', not `pkglib', among the
+ prefixes valid for the `PROGRAMS' primary.
+ (handle_data): List also `doc' among the prefixes valid for
+ the `DATA' primary. This is required by automake's own build
+ system.
+ * tests/dirforbid.test: Test removed, superseded by ...
+ * tests/primary-prefix-invalid-couples.test: ... this new test.
+ * tests/primary-prefix-valid-couples.test: New test.
+ * tests/primary-prefix-couples-documented-valid.test: Likewise.
+ * tests/primary-prefix-couples-force-valid.test: Likewise.
+ * tests/java3.test: Adjusted, and extended a bit.
+ * tests/Makefile.am (TESTS): Updated.
+ * NEWS: Updated.
+ From a report by Eric Blake.
+
2011-01-02 Stefano Lattarini <address@hidden>
* NEWS: Fix typo (forgotten word).
diff --git a/NEWS b/NEWS
index eb31266..b147e48 100644
--- a/NEWS
+++ b/NEWS
@@ -24,6 +24,9 @@ Bugs fixed in 1.11.0a:
* Long standing bugs:
+ - Automake now warns about more primary/directory invalid combinations,
+ such as "doc_LIBRARIES" or "pkglib_PROGRAMS".
+
- On Darwin 9, `pythondir' and `pyexecdir' pointed below `/Library/Python'
even if the `--prefix' argument pointed outside of a system directory.
AM_PATH_PYTHON has been fixed to ignore the value returned from python's
diff --git a/automake.in b/automake.in
index fa110a5..9879b93 100755
--- a/automake.in
+++ b/automake.in
@@ -249,11 +249,11 @@ my @common_sometimes =
# Standard directories from the GNU Coding Standards, and additional
# pkg* directories from Automake. Stored in a hash for fast member check.
my %standard_prefix =
- map { $_ => 1 } (qw(bin data dataroot dvi exec html include info
- lib libexec lisp localstate man man1 man2 man3
- man4 man5 man6 man7 man8 man9 oldinclude pdf
- pkgdatadir pkgincludedir pkglibdir pkglibexecdir
- ps sbin sharedstate sysconf));
+ map { $_ => 1 } (qw(bin data dataroot doc dvi exec html include info
+ lib libexec lisp locale localstate man man1 man2
+ man3 man4 man5 man6 man7 man8 man9 oldinclude pdf
+ pkgdata pkginclude pkglib pkglibexec ps sbin
+ sharedstate sysconf));
# Copyright on generated Makefile.ins.
my $gen_copyright = "\
@@ -2626,7 +2626,7 @@ sub handle_libtool
sub handle_programs
{
my @proglist = &am_install_var ('progs', 'PROGRAMS',
- 'bin', 'sbin', 'libexec', 'pkglib',
+ 'bin', 'sbin', 'libexec', 'pkglibexec',
'noinst', 'check');
return if ! @proglist;
@@ -3736,8 +3736,8 @@ sub handle_man_pages
sub handle_data
{
&am_install_var ('-noextra', '-candist', 'data', 'DATA',
- 'data', 'dataroot', 'dvi', 'html', 'pdf', 'ps',
- 'sysconf', 'sharedstate', 'localstate',
+ 'data', 'dataroot', 'doc', 'dvi', 'html', 'pdf',
+ 'ps', 'sysconf', 'sharedstate', 'localstate',
'pkgdata', 'lisp', 'noinst', 'check');
}
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 8842be3..00f8c9f 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -272,7 +272,6 @@ depend4.test \
depend5.test \
depend6.test \
destdir.test \
-dirforbid.test \
dirlist.test \
dirlist2.test \
discover.test \
@@ -600,6 +599,10 @@ prefix.test \
primary.test \
primary2.test \
primary3.test \
+primary-prefix-invalid-couples.test \
+primary-prefix-valid-couples.test \
+primary-prefix-couples-force-valid.test \
+primary-prefix-couples-documented-valid.test \
proginst.test \
python.test \
python2.test \
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 3bc4415..d6302b4 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -539,7 +539,6 @@ depend4.test \
depend5.test \
depend6.test \
destdir.test \
-dirforbid.test \
dirlist.test \
dirlist2.test \
discover.test \
@@ -867,6 +866,10 @@ prefix.test \
primary.test \
primary2.test \
primary3.test \
+primary-prefix-invalid-couples.test \
+primary-prefix-valid-couples.test \
+primary-prefix-couples-force-valid.test \
+primary-prefix-couples-documented-valid.test \
proginst.test \
python.test \
python2.test \
diff --git a/tests/dirforbid.test b/tests/dirforbid.test
deleted file mode 100755
index 3ab319d..0000000
--- a/tests/dirforbid.test
+++ /dev/null
@@ -1,38 +0,0 @@
-#! /bin/sh
-# Copyright (C) 2002, 2003 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/>.
-
-# All primaries cannot be used with all directories.
-# Automake should flag them as errors.
-# For PR/294
-
-. ./defs || Exit 1
-
-set -e
-
-cat >> configure.in <<'END'
-AC_PROG_CC
-END
-
-# Try some (not all) disallowed variables
-for i in data_PROGRAMS lib_HEADERS ; do
- cat > Makefile.am << END
-$i = foo
-END
- $ACLOCAL
- AUTOMAKE_fails -a
- grep 'Makefile.am:1:.*directory' stderr
-done
-:
diff --git a/tests/java3.test b/tests/java3.test
index 7895769..41dbb71 100755
--- a/tests/java3.test
+++ b/tests/java3.test
@@ -23,7 +23,7 @@
set -e
cat >> configure.in << 'END'
-AM_CONDITIONAL([WHO_CARES], false)
+AM_CONDITIONAL([WHO_CARES], [false])
AC_OUTPUT
END
@@ -32,7 +32,7 @@ if WHO_CARES
JAVA_FILES = MyClass1.java
endif
-dist_pkgdata_JAVA = $(JAVA_FILES)
+dist_java_JAVA = $(JAVA_FILES)
END
: >MyClass1.java
@@ -40,5 +40,13 @@ END
$ACLOCAL
$AUTOCONF
$AUTOMAKE
-./configure
+
+cwd=`pwd` || Exit 1
+./configure --prefix="$cwd/_inst"
+$MAKE install
+test ! -d _inst
+test ! -r _inst
+$MAKE uninstall
$MAKE distcheck
+
+:
diff --git a/tests/primary-prefix-couples-documented-valid.test
b/tests/primary-prefix-couples-documented-valid.test
new file mode 100755
index 0000000..c52e40f
--- /dev/null
+++ b/tests/primary-prefix-couples-documented-valid.test
@@ -0,0 +1,89 @@
+#! /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 the "uncommon" prefix/primary combinations used in
+# examples in the Automake manual do not cause obvious errors.
+# Please keep this test in sync with the automake manual.
+
+. ./defs || Exit 1
+
+set -e
+
+cat >> configure.in <<'END'
+AC_PROG_CC
+AC_PROG_CC
+AC_PROG_RANLIB
+AC_PROG_LIBTOOL
+AM_PROG_GCJ
+AM_PATH_PYTHON
+END
+
+# Fake libtool availability.
+: > ltmain.sh
+cat > acinclude.m4 <<'END'
+AC_DEFUN([AC_PROG_LIBTOOL],
+ [AC_SUBST([LIBTOOL], [:])])
+END
+
+cat > Makefile.am <<'END'
+xmldir = $(datadir)/xml
+xml_DATA = file.xml
+
+data_DATA = file1 file2 file3
+data2dir = $(datadir)
+data2_DATA = file4 file5 file6
+
+aclocaldir = $(datadir)/aclocal
+aclocal_DATA = mymacro.m4 myothermacro.m4
+
+imagesdir = $(pkgdatadir)/images
+soundsdir = $(pkgdatadir)/sounds
+dist_images_DATA = images/vortex.pgm
+dist_sounds_DATA = sounds/whirl.ogg
+
+lisp_DATA = file1.el file2.el
+
+javadir = $(datadir)/java
+dist_java_JAVA = a.java b.java c.java
+
+pkgpython_PYTHON = foo.py
+
+pyexec_LTLIBRARIES = quaternion.la
+quaternion_la_SOURCES = quaternion.c support.c support.h
+quaternion_la_LDFLAGS = -avoid-version -module
+
+myexecbindir = /exec
+myexecbin_PROGRAMS = zardoz
+
+foodir = $(prefix)/foo
+barexecdir = $(prefix)/bar/binaries
+foo_SCRIPTS = foo.sh
+barexec_SCRIPTS = quux.pl
+
+my_execbindir = $(pkglibdir)
+my_doclibdir = $(docdir)
+my_execbin_PROGRAMS = foo
+my_doclib_LIBRARIES = libquux.a
+END
+
+$ACLOCAL
+
+# Both these two invocations are meant.
+# They exercise both code paths concerning auxiliary files.
+$AUTOMAKE -a
+$AUTOMAKE
+
+:
diff --git a/tests/primary-prefix-couples-force-valid.test
b/tests/primary-prefix-couples-force-valid.test
new file mode 100755
index 0000000..159f297
--- /dev/null
+++ b/tests/primary-prefix-couples-force-valid.test
@@ -0,0 +1,87 @@
+#! /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 a user who wants to use an invalid prefix/primary
+# combination can do so with a proper workaround.
+# For example, this:
+# lib_PROGRAMS = foo
+# is expected to cause an automake error, but this:
+# bardir = $(libdir)
+# bar_PROGRAMS = foo
+# should work.
+
+. ./defs || Exit 1
+
+set -e
+
+cat >> configure.in <<'END'
+AC_PROG_CC
+AC_PROG_RANLIB
+AC_OUTPUT
+END
+
+cat > Makefile.am <<'END'
+my_libdir = $(libdir)
+my_lib_PROGRAMS = foo
+
+foodir = $(bindir)
+foo_LIBRARIES = libquux.a
+
+xdir = $(libexecdir)
+x_HEADERS = bar.h
+
+installcheck-local: test
+.PHONY: test
+test:
+ (cd '$(prefix)' && find .);: for debugging
+ ls -l '$(libdir)/foo'
+ test -f '$(libdir)/foo'
+ test -x '$(libdir)/foo'
+ ls -l '$(bindir)/libquux.a'
+ test -f '$(bindir)/libquux.a'
+ ls -l '$(libexecdir)/bar.h'
+ test -f '$(libexecdir)/bar.h'
+ test ! -x '$(libexecdir)/bar.h'
+END
+
+cat > foo.c <<'END'
+int main (void)
+{
+ return 0;
+}
+END
+
+cat > libquux.c <<'END'
+int quux(void)
+{
+ return 1;
+}
+END
+
+: > bar.h
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+
+cwd=`pwd` || Exit 1
+./configure --prefix="$cwd/_inst"
+
+$MAKE install
+$MAKE installcheck
+$MAKE distcheck
+
+:
diff --git a/tests/primary-prefix-invalid-couples.test
b/tests/primary-prefix-invalid-couples.test
new file mode 100755
index 0000000..bd7a346
--- /dev/null
+++ b/tests/primary-prefix-invalid-couples.test
@@ -0,0 +1,142 @@
+#! /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/>.
+
+# Not all primaries/directories combinations are valid.
+# Automake should flag them as errors.
+# Originated from PR/294, extended later (following bug #7647) to
+# cover more cases.
+# See also test `primary-prefix-valid-couples.test'.
+
+. ./defs || Exit 1
+
+set -e
+
+oIFS=$IFS # saved for later
+
+cat >> configure.in <<'END'
+AC_PROG_CC
+AC_PROG_RANLIB
+AC_PROG_LIBTOOL
+AM_PROG_GCJ
+AM_PATH_PYTHON
+AM_PATH_LISPDIR
+END
+
+$ACLOCAL
+
+# Please keep this list in sync with the list of "Directory Variables"
+# in the GNU Coding Standards and with the list additional directory
+# variables provided by autoconf and/or automake (pkgdatadir, pkglibdir,
+# ...). See also the hash `%standard_prefix' in the automake script.
+prefixes='bin data dataroot doc dvi exec html include info lib libexec
+ lisp locale localstate man man1 man2 man3 man4 man5 man6 man7
+ man8 man9 oldinclude pdf pkgdata pkginclude pkglib pkglibexec
+ ps sbin sharedstate sysconf'
+# Please keep this list in sync with the list of primaries documented in
+# the Automake manual (see the "The Uniform Naming Scheme" section).
+primaries='PROGRAMS LIBRARIES LTLIBRARIES LISP PYTHON JAVA SCRIPTS DATA
+ HEADERS MANS TEXINFOS'
+
+# Use files, not variables, to hold the list of all the possible
+# prefix_PRIMARY couples and the list of those couples valid for
+# automake, to avoid having unreadable very verbose traces.
+
+set +x # don't be overly verbose
+
+for prefix in $prefixes; do
+ for primary in $primaries; do
+ echo ${prefix}_${primary}
+ done
+done >all.list
+
+for primary in $primaries; do
+ prefixes_ok=''
+ case $primary in
+ LIBRARIES|LTLIBRARIES)
+ prefixes_ok='lib pkglib'
+ ;;
+ PROGRAMS)
+ prefixes_ok='bin sbin libexec pkglibexec'
+ ;;
+ SCRIPTS)
+ prefixes_ok='bin sbin libexec pkgdata'
+ ;;
+ DATA)
+ prefixes_ok='data dataroot pkgdata doc html dvi pdf ps
+ sysconf sharedstate localstate lisp'
+ ;;
+ HEADERS)
+ prefixes_ok='include oldinclude pkginclude'
+ ;;
+ LISP)
+ prefixes_ok='lisp'
+ ;;
+ PYTHON)
+ prefixes_ok='python'
+ ;;
+ JAVA)
+ prefixes_ok='java'
+ ;;
+ MANS)
+ # FIXME: Here we'd like to have:
+ # prefixes_ok='man man1 man2 man3 man4 man5 man6 man7 man8 man9'
+ # but Automake currently fails on that, as it allows the MANS
+ # primary to be coupled to any prefix.
+ # See also Automake bug#7656.
+ # We should dig out how automake had come to behave this way, and
+ # if such a behaviour can be safely changed.
+ prefixes_ok=$prefixes
+ ;;
+ TEXINFOS)
+ # FIXME: Here we'd like to have:
+ # prefixes_ok='info'
+ # but Automake currently fails on that, as it allows the TEXINFOS
+ # primary to be coupled to any prefix.
+ # See also Automake bug#7657.
+ # We should dig out how automake had come to behave this way, and
+ # if such a behaviour can be safely changed.
+ prefixes_ok=$prefixes
+ ;;
+ *)
+ echo "$me: internal error: unrecognized primary '$primary'" >&2
+ Exit 99
+ ;;
+ esac
+ for prefix in $prefixes_ok; do
+ echo ${prefix}_${primary}
+ done
+done >allow.list
+
+set -x
+
+cat all.list
+cat allow.list
+
+while read x; do
+ grep "^$x$" allow.list >/dev/null && continue
+ # To get the expected error message more in detail.
+ IFS=_; set $x; IFS=$oIFS
+ test $# -eq 2 || Exit 99 # sanity check
+ prefix=$1
+ primary=$2
+ errmsg_rx=".*${prefix}dir.* not a legitimate directory .*$primary"
+ # Now do the test for this prefix/primary combination.
+ echo "$x = foo" > Makefile.am
+ AUTOMAKE_fails -a
+ grep "^Makefile\\.am:1:$errmsg_rx" stderr
+done <all.list
+
+:
diff --git a/tests/primary-prefix-valid-couples.test
b/tests/primary-prefix-valid-couples.test
new file mode 100755
index 0000000..b6b53dc
--- /dev/null
+++ b/tests/primary-prefix-valid-couples.test
@@ -0,0 +1,90 @@
+#! /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/>.
+
+# Test for valid prefix/primary combinations.
+# See also test `primary-prefix-invalid-couples.test'.
+
+. ./defs || Exit 1
+
+set -e
+
+cat >> configure.in <<'END'
+AC_PROG_CC
+AC_PROG_RANLIB
+AC_PROG_LIBTOOL
+AM_PROG_GCJ
+AM_PATH_PYTHON
+AM_PATH_LISPDIR
+END
+
+# Fake libtool availability.
+: > ltmain.sh
+: > config.sub
+: > config.guess
+cat > acinclude.m4 <<'END'
+AC_DEFUN([AC_PROG_LIBTOOL],
+ [AC_SUBST([LIBTOOL], [:])])
+END
+
+# Other required files.
+echo '@setfilename foo' > foo.texi
+: > texinfo.tex
+: > py-compile
+: > elisp-comp
+
+# Setup Makefile.am.
+
+: > Makefile.am
+
+for p in bin sbin libexec pkglibexec; do
+ echo "${p}_PROGRAMS = prog-$p" >> Makefile.am
+done
+
+for p in lib pkglib; do
+ echo "${p}_LIBRARIES = libs-$p.a" >> Makefile.am
+ echo "${p}_LTLIBRARIES = libd-$p.la" >> Makefile.am
+done
+
+for p in bin sbin libexec pkgdata; do
+ echo "${p}_SCRIPTS = $p.sh" >> Makefile.am
+done
+
+for p in data dataroot pkgdata doc html dvi pdf ps sysconf \
+ sharedstate localstate lisp; do
+ echo "${p}_DATA = $p.dat" >> Makefile.am
+done
+
+for p in include oldinclude pkginclude; do
+ echo "${p}_HEADERS = $p.h" >> Makefile.am
+done
+
+for p in man man1 man2 man3 man4 man5 man6 man7 man8 man9; do
+ echo "${p}_MANS = bar.$p"
+done
+
+echo "info_TEXINFOS = foo.texi" >> Makefile.am
+echo "lisp_LISP = foo.el" >> Makefile.am
+echo "python_PYTHON = foo.py" >> Makefile.am
+echo "java_JAVA = foo.java" >> Makefile.am
+
+awk '{print NR ":" $0}' Makefile.am # for debugging
+
+# Go with the tests.
+
+$ACLOCAL
+$AUTOMAKE
+
+:
--
1.7.2.3
- [PATCH] {maint} Warnings about primary/prefix mismatch fixed and extended. (was: Re: bug#7647: Diagnose invalid primary/directory combinations),
Stefano Lattarini <=