Merge branch 'maint'
authorStefano Lattarini <stefano.lattarini@gmail.com>
Tue, 3 Jan 2012 22:26:56 +0000 (23:26 +0100)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Tue, 3 Jan 2012 22:26:56 +0000 (23:26 +0100)
* maint:
  install: pkglibexec_SCRIPTS is a valid prefix/primary combination
  coverage: expose automake bug#10128
  progs, libs: implement EXTRA_foo_DEPENDENCIES
  tests: fix spurious failures in 'pr300*.test'

1  2 
NEWS
THANKS
automake.in
doc/automake.texi
tests/Makefile.am
tests/extradep.test
tests/extradep2.test
tests/pr300-lib.test
tests/pr300-ltlib.test
tests/primary-prefix-invalid-couples.tap
tests/primary-prefix-valid-couples.test

diff --cc NEWS
index 699f2af76e77d99b22e257306ed1118f0df8d5cd,2e572e43acae2c7d038abfd57a83ed1a5587e603..4f4f4bd46f7819fd07e0313e52c97cede11eb5a7
--- 1/NEWS
--- 2/NEWS
+++ b/NEWS
@@@ -261,15 -75,24 +261,20 @@@ New in 1.11.2
      the `${infodir}/dir' file, by exporting the new environment variable
      `AM_UPDATE_INFO_DIR' to the value "no".
  
 -  - For programs and libraries, automake now detects EXTRA_foo_DEPENDENCIES
 -    and adds them to the normal list of dependencies, but without
 -    overwriting the foo_DEPENDENCIES variable, which is normally computed
 -    by automake.
 -
 -Bugs fixed in 1.11.0a:
 +Bugs fixed in 1.11.2:
  
+ * Bugs introduced by 1.11.2:
+   - Automake now correctly recognizes the prefix/primary combination
+    `pkglibexec_SCRIPTS' as valid.
  * Bugs introduced by 1.11:
  
 -  - The `parallel-tests' test driver works around a GNU make 3.80 bug with
 -    trailing white space in the test list (`TESTS = foo $(EMPTY)'), and
 -    does not report spurious successes when used with concurrent FreeBSD
 -    make (e.g., "make check -j3").
 +  - The parallel-tests driver no longer produces erroneous results with
 +    Tru64/OSF 5.1 sh upon unreadable log files.
 +
 +  - The `parallel-tests' test driver does not report spurious successes
 +    when used with concurrent FreeBSD make (e.g., "make check -j3").
  
    - When the parallel-tests driver is in use, automake now explicitly
      rejects invalid entries and conditional contents in TEST_EXTENSIONS,
diff --cc THANKS
Simple merge
diff --cc automake.in
Simple merge
Simple merge
index 78312a604bc3ca7b9230a230a4210921fd05acdf,ff564427102a78e359412b4fc46090d1706d7b68..9c95e29d4313fd3a545a332e4da89d09becc435e
  # You should have received a copy of the GNU General Public License
  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
  
 +# Run the tests with the shell detected at configure time.
 +LOG_COMPILER = $(SHELL)
 +
 +TEST_EXTENSIONS = .test .tap
 +TEST_LOG_COMPILER = $(LOG_COMPILER)
 +TAP_LOG_COMPILER = $(LOG_COMPILER)
 +
 +TAP_LOG_DRIVER = AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/lib/tap-driver.sh
 +
 +AM_TAP_LOG_DRIVER_FLAGS = --merge --comments
 +## Avoid spurious TAP diagnostic.  We use an awful indirection with a
 +## shell command substitution here, since the string needs to contain
 +## `#' characters, and these can't be escaped portably in a make macro
 +## definition.
 +## FIXME: this is quite inefficient though, as it adds one extra fork
 +## FIXME: per TAP test script; this is OK for the moment, since we have
 +## FIXME: few such scripts, but might become an issue in the future.
 +## Keep this in sync with the definition of $diag_string_ in tests/defs.
 +AM_TAP_LOG_DRIVER_FLAGS += --diagnostic-string `printf '\043%%\043\n'`
 +
 +EXTRA_DIST = ChangeLog-old
 +
 +TESTS = ## Will be updated later.
 +
  XFAIL_TESTS = \
  all.test \
 -auxdir2.test \
  cond17.test \
 -dist-auxfile.test \
 -dist-auxfile-2.test \
  gcj6.test \
 +override-conditional-2.test \
  java-nobase.test \
+ objext-pr10128.test \
  pr8365-remake-timing.test \
  lex-subobj-nodep.test \
  remake-am-pr10111.test \
Simple merge
Simple merge
index 53dae5effd8b391512a5d00e93f9117660eac43b,8f96db11a4fe9c8b5fad4ed2067e49297023217e..673845e9ab23151554f212a5136766437122985f
@@@ -1,5 -1,5 +1,6 @@@
  #! /bin/sh
- # Copyright (C) 2002, 2007, 2010, 2011 Free Software Foundation, Inc.
 -# Copyright (C) 2002, 2007, 2010, 2012 Free Software Foundation, Inc.
++# Copyright (C) 2002, 2007, 2010, 2011, 2012 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
@@@ -43,9 -45,14 +44,14 @@@ EN
  
  $ACLOCAL
  $AUTOCONF
 -$AUTOMAKE --copy --add-missing
 +$AUTOMAKE -Wno-extra-portability --copy --add-missing
  
- ./configure --prefix "`pwd`/inst"
+ # We pass '--libdir' explicitly, to avoid spurious failures due to users
+ # or distributions possibly overriding '${libdir}' in their $CONFIG_SITE
+ # file (for example, defining it to '${prefix}/lib64' on 64-bit systems,
+ # as is the case with openSUSE 12.1).  See automake bug#10426.
+ cwd=`pwd` || Exit 99
+ ./configure --prefix "$cwd/inst" --libdir "$cwd/inst/lib"
  
  $MAKE
  
index 18201e6a1a0e09d31dc378bb4bcf69a1d27f771a,06d3c32b88fc7c6ca7f9aca3b28ad7701b1fb4c3..24584e3e2c4a314958e51fafd1b3f44147286ef1
@@@ -1,5 -1,5 +1,5 @@@
  #! /bin/sh
- # Copyright (C) 2002, 2007, 2008, 2009, 2010, 2011 Free Software
 -# Copyright (C) 2002, 2007, 2008, 2009, 2010, 2012 Free Software
++# Copyright (C) 2002, 2007, 2008, 2009, 2010, 2011, 2012 Free Software
  # Foundation, Inc.
  #
  # This program is free software; you can redistribute it and/or modify
@@@ -42,15 -44,20 +42,20 @@@ EN
  libtoolize
  $ACLOCAL
  $AUTOCONF
 -$AUTOMAKE --copy --add-missing
 +$AUTOMAKE -Wno-extra-portability --copy --add-missing
  
- ./configure --prefix "`pwd`/inst"
+ # We pass '--libdir' explicitly, to avoid spurious failures due to users
+ # or distributions possibly overriding '${libdir}' in their $CONFIG_SITE
+ # file (for example, defining it to '${prefix}/lib64' on 64-bit systems,
+ # as is the case with openSUSE 12.1).  See automake bug#10426.
+ cwd=`pwd` || Exit 99
+ ./configure --prefix "$cwd/inst" --libdir "$cwd/inst/lib"
  
 -$MAKE V=1 >stdout || { cat stdout; Exit 1; }
 +# A rule in the Makefile should create subdir.
 +test ! -d subdir
 +$MAKE >stdout || { cat stdout; Exit 1; }
  cat stdout
 +test -d subdir
  
  grep 'liba.la .*-rpath .*lib' stdout
  grep 'liba.la .*-rpath .*lib/subdir' stdout && Exit 1
index 297d55918bfc6212fc69204a4c38d5b53b9d04d5,0000000000000000000000000000000000000000..5f6ccb495e2099cf4b6f720215648efa6dc39377
mode 100755,000000..100755
--- /dev/null
@@@ -1,194 -1,0 +1,194 @@@
-       prefixes_ok='bin sbin libexec pkgdata'
 +#! /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
 +
 +plan_ "later"
 +
 +oIFS=$IFS # Saved for later.
 +
 +: > ar-lib
 +: > ltmain.sh
 +: > texinfo.tex
 +: > elisp-comp
 +: > py-compile
 +: > config.guess
 +: > config.sub
 +
 +cat >> configure.in <<'END'
 +AC_PROG_CC
 +AM_PROG_AR
 +AC_PROG_RANLIB
 +AC_SUBST([LIBTOOL], [:]) dnl So that we don't have to require Libtool.
 +AM_PROG_GCJ
 +AM_PATH_PYTHON
 +AM_PATH_LISPDIR
 +END
 +
 +$ACLOCAL || fatal_ "aclocal failure"
 +
 +# 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 pkglibexec 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 use of
 +      # `foo_TEXINFOS' to declare extra Texinfo sources for the `foo'
 +      # Texinfo manual, as in e.g.:
 +      #   info_TEXINFOS = foo.texi
 +      #   foo_TEXINFOS = gpl.texi
 +      # See also Automake bug#7657.
 +      prefixes_ok=$prefixes
 +      ;;
 +    *)
 +      fatal_ "unrecognized primary '$primary'"
 +      ;;
 +  esac
 +  for prefix in $prefixes_ok; do
 +    echo ${prefix}_${primary}
 +  done
 +done >allow.list
 +
 +# `html_TEXINFOS' is not yet supported, and might never be.
 +grep -v '^html TEXINFOS$' all.list | awk '{print NR, $0}' > t
 +mv -f t all.list
 +
 +# For debugging.
 +echo '=== all.list ==='
 +cat all.list
 +echo '=== allow.list ==='
 +cat allow.list
 +
 +# Create the Makefile.am.
 +while read lineno prefix primary; do
 +  test -n "$prefix" && test -n "$primary" && test 0 -lt $lineno \
 +    || fatal_ "internal error in 'all.list'"
 +  pfx='' ext=''
 +  case $primary in
 +    LTLIBRARIES) pfx=lib ext=la;;
 +    LIBRARIES) pfx=lib ext=a;;
 +    MANS) ext=man;;
 +    HEADERS) ext=h;;
 +    JAVA) ext=java;;
 +    PYTHON) ext=py;;
 +    LISP) ext=el;;
 +    TEXINFOS) ext=texi;;
 +  esac
 +  test -z "$ext" || ext=.$ext
 +  if test $primary = TEXINFOS; then
 +    echo @setfilename foo$lineno.info > foo$lineno.texi
 +  fi
 +  echo ${prefix}_${primary} = ${pfx}foo${lineno}${ext}
 +done <all.list >Makefile.am
 +
 +# For debugging.
 +echo '=== Makefile.am ==='
 +cat Makefile.am
 +
 +set -x # Restore shell xtraces from now on.
 +
 +AUTOMAKE_fails \
 +  -d "'automake -a' error out on mismatched prefix/primary couples" \
 +  -- --add-missing
 +
 +while read lineno prefix primary; do
 +  test -n "$prefix" && test -n "$primary" && test 0 -lt $lineno \
 +    || fatal_ "internal error in 'all.list'"
 +  grep "^${prefix}_${primary}$" allow.list >/dev/null && continue
 +  errmsg_rx=".*${prefix}dir.* not a legitimate directory .*$primary"
 +  command_ok_ \
 +    "mismatched prefix/primary in ${prefix}_${primary}" \
 +    grep "^Makefile\\.am:$lineno: $errmsg_rx" stderr
 +done <all.list
 +
 +# Check that automake really failed only for the expected reason(s).
 +grep -v 'dir.* not a legitimate directory' stderr && Exit 1
 +
 +# Check that the same failures are present without the `--add-missing'
 +# option.
 +mv stderr stderr.old
 +AUTOMAKE_fails -d "automake error out on mismatched prefix/primary couples"
 +command_ok_ "... and with the same diagnostic of 'automake -a'" \
 +            diff stderr.old stderr
 +
 +: