automake-commit
[Top][All Lists]
Advanced

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

[Automake-commit] [SCM] GNU Automake branch, minor, updated. v1.14.1-76-


From: Stefano Lattarini
Subject: [Automake-commit] [SCM] GNU Automake branch, minor, updated. v1.14.1-76-g4cb0327
Date: Tue, 30 Dec 2014 21:52:54 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Automake".

http://git.sv.gnu.org/gitweb/?p=automake.git;a=commitdiff;h=4cb0327adc1f085f4b9bacd0e6e1c2d7a88b92f6

The branch, minor has been updated
       via  4cb0327adc1f085f4b9bacd0e6e1c2d7a88b92f6 (commit)
       via  86b397b6e4aa0dd5f29030dfb48e72afd7ae413a (commit)
       via  545e5740906595dff53c72af7153d4fa0392ccf8 (commit)
       via  b8aa9fc0ce8d411be4451022e4b14d0f4238a9d9 (commit)
       via  269893bbd44f3f7ece2d9fbdc6d2dddbec969e6d (commit)
       via  0fae5905f9b676725a7e82c7aa03e8e3cbf5008a (commit)
       via  047e0cf6a836fc83a5ba335bf8eebd4fe354af0b (commit)
       via  cd040965d51f9818c56a714efaaaa699eb93b503 (commit)
       via  b9303ccf7f3c13fd9422b3457f3ffd20ad300ce3 (commit)
       via  c3da5a74ffef3cb177270b021c34bd4cd2bb80f5 (commit)
      from  bd838a68d44a3adce9ae4b2c5e3e17b47eead7c1 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 NEWS                                  |   63 ++++++++++++-------
 doc/automake.texi                     |   15 ++++-
 t/ax/shell-no-trail-bslash.in         |  107 ++++++++++++++++++---------------
 t/instmany-mans.sh                    |   14 +++-
 t/instmany-python.sh                  |   14 +++-
 t/instmany.sh                         |   14 +++-
 t/lex-noyywrap.sh                     |    5 +-
 t/parallel-tests-concurrency.sh       |   13 +++-
 t/self-check-shell-no-trail-bslash.sh |   38 +++++++++++-
 t/txinfo-override-texinfo-tex.sh      |    6 +-
 10 files changed, 193 insertions(+), 96 deletions(-)

diff --git a/NEWS b/NEWS
index 2649698..dcbf657 100644
--- a/NEWS
+++ b/NEWS
@@ -97,16 +97,43 @@ New in 1.15:
     extra useless "make all" recursive invocation in some corner cases
     (automake bug#16302).
 
-* Bugs fixed:
+* Distribution:
 
-  - The expansion of AM_INIT_AUTOMAKE ends once again with a trailing
-    newline (bug#16841).  Regression introduced in Automake 1.14.
+  - Automake bug#18286: "make distcheck" could sometimes fail to detect
+    missing files in the distribution tarball, especially in those cases
+    where both the generated files and their dependencies are explicitly
+    in $(srcdir).  An important example of this are *generated* makefile
+    fragments included at Automake time in Makefile.am; e.g.:
 
-  - The user can now extend the special .PRECIOUS target, the same way
-    he could already do with the .MAKE .and .PHONY targets.
+        ...
+        $(srcdir)/fragment.am: $(srcdir)/data.txt $(srcdir)/preproc.sh
+            cd $(srcdir) && $(SHELL) preproc.sh <data.txt >fragment.am
+        include $(srcdir)/fragment.am
+        ...
 
-  - Fixed confusing typos in the manual and in some warning messages
-    (automake bug#16827 and bug#16997).
+    If the use forgot to add data.txt and/or preproc.sh in the distribution
+    tarball, "make distcheck" would have erroneously succeeded!  This issue
+    is now fixed.
+
+  - As a consequence of the previous change, "make distcheck" will run
+    using '$(distdir)/_build/sub' as the build directory, rather than
+    simply '$(distdir)/_build' (as it was with Automake 1.14 and earlier).
+    Consequently, the './configure' and 'make' invocations issued by the
+    distcheck recipe will have $(srcdir) equal to '../..', rather than to
+    just '..' (as it was with Automake 1.14 and earlier).  Dependent and
+    similar variables (e.g., top_srcdir) are also changed accordingly.
+
+    Thus, Makefiles that made assumptions about the exact values of the
+    build and source directories used by "make distcheck" will have to
+    be adjusted.  Notice that making such assumptions was a bad and
+    unsupported practice anyway, since the exact locations of those
+    directories should be considered implementation details, and we
+    reserve the right to change them at any time.
+
+* Miscellaneous bugs fixed:
+
+  - The expansion of AM_INIT_AUTOMAKE ends once again with a trailing
+    newline (bug#16841).  Regression introduced in Automake 1.14.
 
   - We no longer risk to use '$ac_aux_dir' before it's defined (see
     automake bug#15981). Bug introduced in Automake 1.14.
@@ -127,21 +154,11 @@ New in 1.15:
     something like "... overrides Automake target '$(srcdir)/foo.am".
     This bug is now fixed.
 
-  - Automake bug#18286: "make distcheck" could sometimes fail to detect
-    missing files in the distribution tarball, especially in those cases
-    where both the generated files and their dependencies are explicitly
-    in $(srcdir).  An important example of this are *generated* makefile
-    fragments included at Automake time in Makefile.am; e.g.:
-
-        ...
-        $(srcdir)/fragment.am: $(srcdir)/data.txt $(srcdir)/preproc.sh
-            cd $(srcdir) && $(SHELL) preproc.sh <data.txt >fragment.am
-        include $(srcdir)/fragment.am
-        ...
+  - The user can now extend the special .PRECIOUS target, the same way
+    he could already do with the .MAKE .and .PHONY targets.
 
-    If the use forgot to add data.txt and/or preproc.sh in the distribution
-    tarball, "make distcheck" would have erroneously succeeded!  This issue
-    is now fixed.
+  - Fixed confusing typos in the manual and in some warning messages
+    (automake bug#16827 and bug#16997).
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -249,8 +266,8 @@ New in 1.14:
 
     Now that we have the 'info-in-builddir' option that explicitly causes
     generated '.info' files to be placed in the builddir, this hack should
-    be longer necessary, so we deprecate it with runtime warnings.  It will
-    likely be removed altogether in Automake 2.0.
+    be longer necessary, so we deprecate it with runtime warnings.
+    It will be removed altogether in Automake 2.0.
 
 * Relative directory in Makefile fragments:
 
diff --git a/doc/automake.texi b/doc/automake.texi
index fb6c05f..383a811 100644
--- a/doc/automake.texi
+++ b/doc/automake.texi
@@ -1242,8 +1242,12 @@ uninstall} do not omit any file (@pxref{Standard 
Targets}),
 and it checks that @code{DESTDIR} installations work (@pxref{DESTDIR}).
 @end itemize
 
-All of these actions are performed in a temporary subdirectory, so
-that no root privileges are required.
+All of these actions are performed in a temporary directory, so that no
+root privileges are required.  Please note that the exact location and the
+exact structure of such a subdirectory (where the extracted sources are
+placed, how the temporary build and install directories are named and how
+deeply they are nested, etc.) is to be considered an implementation detail,
+which can change at any time; so do not rely on it.
 
 Releasing a package that fails @code{make distcheck} means that one of
 the scenarios we presented will not work and some users will be
@@ -8555,6 +8559,13 @@ finally, makes another tarball to ensure the 
distribution is
 self-contained.
 @end itemize
 
+All of these actions are performed in a temporary directory.  Please
+note that the exact location and the exact structure of such a directory
+(where the read-only sources are placed, how the temporary build and
+install directories are named and how deeply they are nested, etc.) is
+to be considered an implementation detail, which can change at any time;
+so do not reply on it.
+
 @vindex AM_DISTCHECK_CONFIGURE_FLAGS
 @vindex DISTCHECK_CONFIGURE_FLAGS
 @subheading DISTCHECK_CONFIGURE_FLAGS
diff --git a/t/ax/shell-no-trail-bslash.in b/t/ax/shell-no-trail-bslash.in
index 770dcde..26979b6 100644
--- a/t/ax/shell-no-trail-bslash.in
+++ b/t/ax/shell-no-trail-bslash.in
@@ -14,63 +14,72 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# A "shell" that chokes on '-c' commands having a trailing '\' character
-# (possibly followed by whitespace only).  This is to emulate problems
-# seen in older bash versions (e.g., bash 2.05b).
-# See also automake bug#10436.
+# A "shell" that chokes on '-c' commands and/or shell scripts having
+# a trailing '\' character (possibly followed by whitespace only).
+# This is to emulate problems seen in older bash versions (e.g., bash
+# 2.05b). See also automake bug#10436.
 
-set -e
 set -u
 
 am_SHELL=${AM_TESTSUITE_SHELL-'@SHELL@'}
 
-tab='  '
-nl='
+(
+  set -e
+  shell_command=; unset shell_command
+  shell_script=; unset shell_script
+  while test $# -gt 0; do
+    case $1 in
+      # The shell might be invoked by make e.g. as "sh -ec" or "sh -ce".
+      # Be liberal (in the spirit of defensive programming) and accept
+      # both forms.
+      -*c*) shell_command=$2; shift;;
+       -?*) ;;
+         *) break;;
+    esac
+    shift
+  done
+
+  if test x${shell_command+"set"} != x"set"; then
+    if test $# -gt 0; then
+      shell_script=$1
+      shell_command=$(cat <"$shell_script")
+    else
+      # Some make implementations, like *BSD's, pass the recipes to the
+      # shell through its standard input.  Trying to run our extra checks
+      # in this case would be too tricky, so we just skip them.
+      exit 0
+    fi
+  fi
+  original_shell_command=$shell_command
+
+  tab='        '
+  nl='
 '
-am_shell_flags=
-am_shell_command=; unset am_shell_command
-while test $# -gt 0; do
-  case $1 in
-    # If the shell is invoked by make e.g. as "sh -ec" (seen on
-    # GNU make in POSIX mode) or "sh -ce" (seen on Solaris make).
-    -*c*)
-        am_flg=$(printf '%s\n' "$1" | sed -e 's/^-//' -e 's/c//g')
-        if test x"$am_flg" != x; then
-          am_shell_flags="$am_shell_flags -$am_flg"
+  case "$shell_command" in
+    *" "|*"$tab"|*"$nl")
+      shell_command=$(printf '%s\n' "$shell_command" | tr -d " $tab$nl");;
+  esac
+
+  case "$shell_command" in
+    *\\)
+      {
+        printf '%s\n' "$0: recipe/script ends with backslash character"
+        printf '%s\n' "=== BEGIN recipe/script"
+        if test x${shell_script+"set"} = x"set"; then
+          cat <"$shell_script"
+        else
+          printf '%s\n' "$original_shell_command"
         fi
-        am_shell_command=$2
-        shift;;
-    -?*)
-        am_shell_flags="$am_shell_flags $1";;
-      *)
-        break;;
+        printf '%s\n' "=== END recipe/script"
+      } >&2
+      exit 1
+      ;;
   esac
-  shift
-done
+)
 
-if test x${am_shell_command+"set"} != x"set"; then
-  # Some make implementations, like *BSD's, pass the recipes to the shell
-  # through its standard input.  Trying to run our extra checks in this
-  # case would be too tricky, so we just skip them.
-  exec $am_SHELL $am_shell_flags ${1+"$@"}
+if test $? -gt 0; then
+  # Some of our scripts or makefile recipes had invalid contents.
+  exit 3
 fi
 
-case $am_shell_command in
-  *" "|*"$tab"|*"$nl")
-    am_tweaked_shell_command=$(printf '%s\n' "$am_shell_command" \
-                                 | tr -d " $tab$nl");;
-  *)
-    am_tweaked_shell_command=$am_shell_command;;
-esac
-
-case $am_tweaked_shell_command in
-  *\\)
-    printf '%s\n' "$0: recipe ends with backslash character" >&2
-    printf '%s\n' "=== BEGIN recipe" >&2
-    printf '%s\n' "${am_shell_command-}" >&2
-    printf '%s\n' "=== END recipe" >&2
-    exit 1
-    ;;
-esac
-
-exec $am_SHELL $am_shell_flags -c "$am_shell_command" ${1+"$@"}
+exec ${AM_TESTSUITE_SHELL-'@SHELL@'} ${1+"$@"}
diff --git a/t/instmany-mans.sh b/t/instmany-mans.sh
index be33a02..0ed2348 100644
--- a/t/instmany-mans.sh
+++ b/t/instmany-mans.sh
@@ -37,8 +37,6 @@ mkdir x-bin
 
 sed "s|@limit@|$limit|g" >x-bin/my-install <<'END'
 #! /bin/sh
-# Fake install script.  This doesn't really install
-# (the INSTALL path below would be wrong outside this directory).
 address@hidden@
 PATH=$oPATH; export PATH
 if test -z "$orig_INSTALL"; then
@@ -72,8 +70,16 @@ END
 # Creative quoting in the next line to please maintainer-check.
 chmod +x x-bin/'rm' x-bin/my-install
 
-cat > setenv.in <<'END'
-orig_INSTALL='@INSTALL@'; export orig_INSTALL
+cat >setenv.in <<'END'
+orig_INSTALL='@INSTALL@'
+# In case we've falled back on the install-sh script (seen e.g.,
+# on AIX 7.1), we need to make sure we use its absolute path,
+# as we don't know from which directory we'll be run.
+case "$orig_INSTALL" in
+   /*) ;;
+  */*) orig_INSTALL=$(pwd)/$orig_INSTALL;;
+esac
+export orig_INSTALL
 END
 
 cat >>configure.ac <<END
diff --git a/t/instmany-python.sh b/t/instmany-python.sh
index 40c8502..0088b2d 100644
--- a/t/instmany-python.sh
+++ b/t/instmany-python.sh
@@ -33,8 +33,6 @@ mkdir x-bin
 
 sed "s|@limit@|$limit|g" >x-bin/my-install <<'END'
 #! /bin/sh
-# Fake install script.  This doesn't really install
-# (the INSTALL path below would be wrong outside this directory).
 address@hidden@
 PATH=$oPATH; export PATH
 if test -z "$orig_INSTALL"; then
@@ -68,8 +66,16 @@ END
 # Creative quoting in the next line to please maintainer-check.
 chmod +x x-bin/'rm' x-bin/my-install
 
-cat > setenv.in <<'END'
-orig_INSTALL='@INSTALL@'; export orig_INSTALL
+cat >setenv.in <<'END'
+orig_INSTALL='@INSTALL@'
+# In case we've falled back on the install-sh script (seen e.g.,
+# on AIX 7.1), we need to make sure we use its absolute path,
+# as we don't know from which directory we'll be run.
+case "$orig_INSTALL" in
+   /*) ;;
+  */*) orig_INSTALL=$(pwd)/$orig_INSTALL;;
+esac
+export orig_INSTALL
 END
 
 cat >>configure.ac <<END
diff --git a/t/instmany.sh b/t/instmany.sh
index 94a8053..126c93f 100644
--- a/t/instmany.sh
+++ b/t/instmany.sh
@@ -45,8 +45,6 @@ mkdir x-bin
 
 sed "s|@limit@|$limit|g" >x-bin/my-install <<'END'
 #! /bin/sh
-# Fake install script.  This doesn't really install
-# (the INSTALL path below would be wrong outside this directory).
 address@hidden@
 PATH=$oPATH; export PATH
 if test -z "$orig_INSTALL"; then
@@ -80,8 +78,16 @@ END
 # Creative quoting in the next line to please maintainer-check.
 chmod +x x-bin/'rm' x-bin/my-install
 
-cat > setenv.in <<'END'
-orig_INSTALL='@INSTALL@'; export orig_INSTALL
+cat >setenv.in <<'END'
+orig_INSTALL='@INSTALL@'
+# In case we've falled back on the install-sh script (seen e.g.,
+# on AIX 7.1), we need to make sure we use its absolute path,
+# as we don't know from which directory we'll be run.
+case "$orig_INSTALL" in
+   /*) ;;
+  */*) orig_INSTALL=$(pwd)/$orig_INSTALL;;
+esac
+export orig_INSTALL
 END
 
 cat >>configure.ac <<END
diff --git a/t/lex-noyywrap.sh b/t/lex-noyywrap.sh
index 4fe85e5..750f322 100644
--- a/t/lex-noyywrap.sh
+++ b/t/lex-noyywrap.sh
@@ -69,7 +69,8 @@ if ! cross_compiling; then
   : For shells with busted 'set -e'.
 fi
 
-# Sanity check on distribution.
-yl_distcheck DISTCHECK_CONFIGURE_FLAGS='LEXLIB="none needed"'
+# Sanity check on distribution.  Escape in LEXLIB must use backspace,
+# not double-quotes, to avoid a spurious failure with AIX make.
+yl_distcheck DISTCHECK_CONFIGURE_FLAGS='LEXLIB=none\ needed'
 
 :
diff --git a/t/parallel-tests-concurrency.sh b/t/parallel-tests-concurrency.sh
index e2c622b..4a70e23 100644
--- a/t/parallel-tests-concurrency.sh
+++ b/t/parallel-tests-concurrency.sh
@@ -17,8 +17,8 @@
 # Check parallel-tests features:
 # - concurrent parallel execution
 
-# FIXME: we should factorize the code to determine how to run
-#        make in parallel out in am-test-lib.sh ...
+# FIXME: we should factor out (into am-test-lib.sh?) the code to determine
+#        how to run make in parallel mode ...
 
 . test-init.sh
 
@@ -89,11 +89,16 @@ for build in serial parallel; do
 done
 
 cd serial
-$MAKE ${j}1 check &
-cd ../parallel
+# Do *not* use "make -j1" here; apparently, some make implementations
+# (e.g., AIX 7.1) interpret it as a synonym of "make -j" :-(
+$MAKE check &
+cd ..
+
+cd parallel
 $sleep
 run_make -O -- ${j}4 check
 cd ..
+
 # Ensure the tests are really being run in parallel mode: if this is
 # the case, the serial run of the dummy testsuite started above should
 # still be ongoing when the parallel one has terminated.
diff --git a/t/self-check-shell-no-trail-bslash.sh 
b/t/self-check-shell-no-trail-bslash.sh
index 8c9d38e..8b7afa5 100644
--- a/t/self-check-shell-no-trail-bslash.sh
+++ b/t/self-check-shell-no-trail-bslash.sh
@@ -34,12 +34,48 @@ bad:
 END
 
 SHELL=$am_testaux_builddir/shell-no-trail-bslash
+
 $SHELL -c 'exit 0'
 test "$($SHELL -c 'echo is  o\k')" = "is ok"
 
+echo 'echo is  ok\"' > ok.sh
+$SHELL ./ok.sh
+test "$($SHELL ./ok.sh)" = "is ok\""
+
+tab='  '
+nl='
+'
+for sfx in \
+  '\' \
+  '\\' \
+  '\\\\\' \
+  '\ ' \
+  "\\$tab" \
+  "\\ $tab$tab   " \
+  "\\$nl" \
+  "\\ $nl " \
+  "\\$nl$nl$nl" \
+; do
+  for pfx in "" "echo bad" ": a${nl}# multine${nl}: text"; do
+    cmd=${pfx}${sfx}
+    printf '%s' "$cmd" > bad.sh
+    for args in '-c "$cmd"' './bad.sh'; do
+      eval "\$SHELL $args 2>stderr && { cat stderr >&2; exit 1; }; :"
+      cat stderr >&2
+      $FGREP "recipe/script ends with backslash character" stderr
+      cmd="$cmd" $PERL -w -e '
+        undef $/;
+        $_ = <>;
+        index($_, $ENV{cmd}) >= 0 or exit 1;
+      ' <stderr
+      $FGREP "$cmd" stderr
+    done
+  done
+done
+
 $MAKE good
 
 run_make -E -e FAIL bad SHELL="$SHELL"
-$FGREP "recipe ends with backslash character" stderr
+$FGREP "recipe/script ends with backslash character" stderr
 
 :
diff --git a/t/txinfo-override-texinfo-tex.sh b/t/txinfo-override-texinfo-tex.sh
index fc2fcc7..60be43d 100644
--- a/t/txinfo-override-texinfo-tex.sh
+++ b/t/txinfo-override-texinfo-tex.sh
@@ -30,12 +30,13 @@ AC_OUTPUT
 END
 
 cat > Makefile.am << 'END'
-TEXINFO_TEX = $(srcdir)/tex/texinfo.tex
+TEXINFO_TEX = ../tex/texinfo.tex
 info_TEXINFOS = main.texi
 sure_it_exists:
-       test -f $(TEXINFO_TEX)
+       test -f $(srcdir)/$(TEXINFO_TEX)
 sure_it_is_not_distributed: distdir
        test ! -f $(distdir)/tex/texinfo.tex
+check-local: sure_it_exists
 END
 
 cat > main.texi << 'END'
@@ -61,7 +62,6 @@ test -f tex/texinfo.tex
 
 ./configure
 
-$MAKE sure_it_exists
 $MAKE distcheck
 $MAKE sure_it_is_not_distributed
 


hooks/post-receive
-- 
GNU Automake



reply via email to

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