automake-patches
[Top][All Lists]
Advanced

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

Re: cannot recreate gllib


From: Ralf Wildenhues
Subject: Re: cannot recreate gllib
Date: Sun, 26 Oct 2008 16:11:29 +0100
User-agent: Mutt/1.5.18 (2008-05-17)

[ adding automake-patches ]

> * Sam Steingold wrote on Sun, Oct 26, 2008 at 02:54:42PM CET:
> [...]
> > + CONFIG_FILES= 'gllib/Makefile'
> [...]
> > + printf %s\n config.status:59338: executing depfiles commands
> > + printf %s\n config.status: executing depfiles commands
> > + test x != x
> > + echo 'gllib/Makefile'
> > + sed -e s/:.*$//
> > + mf='gllib/Makefile'
> > + sed -n s,^#.*generated by automake.*,X,p 'gllib/Makefile'
> > sed: can't read 'gllib/Makefile': No such file or directory

Fixed in Automake with the patch below against master, and similarly for
branch-1-10; except, since the branch doesn't require Autoconf 2.62 yet,
I omitted the weird file name part of the test there.

Thanks again for the report (I put you in automake/THANKS).

I'll push the changes when the testsuite has finished.

Cheers,
Ralf

2008-10-26  Ralf Wildenhues  <address@hidden>

        Fix 'config.status --file=... depfiles' with new Autoconf.
        * m4/depout.m4 (_AM_OUTPUT_DEPENDENCY_COMMANDS): Eval
        $CONFIG_STATUS contents if we detect the quoting used by
        Autoconf 2.62 and newer for --file=.
        * tests/depend5.test: New test.
        * tests/Makefile.am: Update.
        * NEWS, THANKS: Update.
        Report by Sam Steingold against gnulib.

diff --git a/NEWS b/NEWS
index 42107a2..dce4bbd 100644
--- a/NEWS
+++ b/NEWS
@@ -115,6 +115,10 @@ Bugs fixed in 1.10a:
   - For nobase_*_LTLIBRARIES with nonempty directory components, the
     correct `-rpath' argument is used now.
 
+  - `config.status --file=Makefile depfiles' now also works with the
+    extra quoting used internally used by Autoconf 2.62 and newer
+    (it used to work only without the `--file=' bit).
+
 * Bugs introduced by 1.10:
 
   - Fix output of dummy dependency files in presence of post-processed
diff --git a/m4/depout.m4 b/m4/depout.m4
index a7cc30a..3f5d6cf 100644
--- a/m4/depout.m4
+++ b/m4/depout.m4
@@ -1,18 +1,27 @@
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
 # Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-#serial 3
+#serial 4
 
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
-[for mf in $CONFIG_FILES; do
+[# Autoconf 2.62 quotes --file arguments for eval, but not when files
+# are listed without --file.  Let's play safe and only enable the eval
+# if we detect the quoting.
+case $CONFIG_FILES in
+*\'*) eval set x "$CONFIG_FILES" ;;
+*)   set x $CONFIG_FILES ;;
+esac
+shift
+for mf
+do
   # Strip MF so we end up with the name of the file.
   mf=`echo "$mf" | sed -e 's/:.*$//'`
   # Check whether this is an Automake generated Makefile or not.
diff --git a/tests/Makefile.am b/tests/Makefile.am
index cc95743..77dd1f1 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -222,6 +222,7 @@ depend.test \
 depend2.test \
 depend3.test \
 depend4.test \
+depend5.test \
 destdir.test \
 dirforbid.test \
 dirlist.test \
diff --git a/tests/depend5.test b/tests/depend5.test
new file mode 100755
index 0000000..5644933
--- /dev/null
+++ b/tests/depend5.test
@@ -0,0 +1,71 @@
+#! /bin/sh
+# Copyright (C) 2008  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 3, 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 _AM_OUTPUT_DEPENDENCY_COMMANDS works with eval-style
+# quoting in $CONFIG_FILES, done by newer Autoconf.
+
+. ./defs || Exit 1
+
+set -e
+
+cat >>configure.in << END
+AC_PROG_CC
+AC_OUTPUT
+END
+
+cat > Makefile.am << END
+bin_PROGRAMS = foo
+foo_SOURCES = foo.c foo.h
+END
+
+cat >foo.c << END
+#include "foo.h"
+END
+: >foo.h
+
+$ACLOCAL
+$AUTOMAKE
+$AUTOCONF
+./configure --enable-dependency-tracking
+if test -d .deps; then
+  depdir=.deps
+elif test -d _deps; then
+  depdir=_deps
+else
+  depdir=
+fi
+
+# For the fun of it, we should also cope with makefile
+# names that contain weird characters, with Autoconf 2.62
+# and newer.
+name='weird  name with $ `#() &! characters"'
+cp Makefile.in "$name.in"
+
+for arg in Makefile \
+  --file=Makefile \
+  "--file=$name"
+do
+  rm -rf .deps _deps
+  ./config.status "$arg" depfiles >stdout 2>stderr
+  cat stdout
+  cat stderr >&2
+  grep '[Nn]o such file' stderr && Exit 1
+
+  if test -n "$depdir"; then
+    test -d $depdir || Exit 1
+  fi
+done
+:




reply via email to

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