For PR automake/317:
authorAlexandre Duret-Lutz <adl@gnu.org>
Sat, 8 Jun 2002 16:56:11 +0000 (16:56 +0000)
committerAlexandre Duret-Lutz <adl@gnu.org>
Sat, 8 Jun 2002 16:56:11 +0000 (16:56 +0000)
* Makefile.am (maintainer-check): Disallow `for f in $(FILES)',
suggest `list='$(FILES)'; for f in $$list' instead.
* lib/am/distdir.am (distdir): Adjust `for' usage.
* lib/am/texinfos.am (maintainer-clean-aminfo): Likewise.
* tests/dollar.test: New file.
* tests/Makefile.am (TESTS): Add dollar.test.
Reported by Eric Siegerman and Philip Fong.

13 files changed:
ChangeLog
Makefile.am
Makefile.in
THANKS
lib/Automake/Makefile.in
lib/Makefile.in
lib/am/Makefile.in
lib/am/distdir.am
lib/am/texinfos.am
m4/Makefile.in
tests/Makefile.am
tests/Makefile.in
tests/dollar.test [new file with mode: 0755]

index 69a66b9..3dda149 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2002-06-08  Alexandre Duret-Lutz  <duret_g@epita.fr>
+
+       For PR automake/317:
+       * Makefile.am (maintainer-check): Disallow `for f in $(FILES)',
+       suggest `list='$(FILES)'; for f in $$list' instead.
+       * lib/am/distdir.am (distdir): Adjust `for' usage.
+       * lib/am/texinfos.am (maintainer-clean-aminfo): Likewise.
+       * tests/dollar.test: New file.
+       * tests/Makefile.am (TESTS): Add dollar.test.
+       Reported by Eric Siegerman and Philip Fong.
+
 2002-06-06  Alexandre Duret-Lutz  <duret_g@epita.fr>
 
        For PR automake/47 (fixed a long time ago):
index 1b47d27..c468525 100644 (file)
@@ -91,6 +91,13 @@ maintainer-check: automake aclocal
          echo "Suspicious 'rm' invocation." 1>&2; \
          exit 1;                               \
        else :; fi
+## Never use something like `for file in $(FILES)', this doesn't work
+## if FILES is empty or if it contains shell meta characters (e.g. $ is
+## commonly used in Java filenames).
+       @if egrep 'for .* in \$$\(' $(srcdir)/lib/am/[a-z]*.am; then \
+         echo 'Use "list=$$(mumble); for var in $$$$list".' 1>&2 ; \
+         exit 1; \
+       else :; fi
 ## Make sure all invocations of mkinstalldirs are correct.
        @if grep -n 'mkinstalldirs' $(srcdir)/lib/am/[a-z]*.am | \
              grep -F -v '$$(mkinstalldirs)'; then \
index 8878d45..67c220c 100644 (file)
@@ -250,7 +250,7 @@ mostlyclean-aminfo:
 
 maintainer-clean-aminfo:
        cd $(srcdir) && \
-       for i in $(INFO_DEPS); do \
+       list='$(INFO_DEPS)'; for i in $$list; do \
          rm -f $$i; \
          if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \
            rm -f $$i-[0-9]*; \
@@ -369,7 +369,7 @@ distdir: $(DISTFILES)
        $(am__remove_distdir)
        mkdir $(distdir)
        $(mkinstalldirs) $(distdir)/. $(distdir)/m4
-       @for file in $(DISTFILES); do \
+       @list='$(DISTFILES)'; for file in $$list; do \
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
          if test "$$dir" != "$$file" && test "$$dir" != "."; then \
@@ -629,6 +629,10 @@ maintainer-check: automake aclocal
          echo "Suspicious 'rm' invocation." 1>&2; \
          exit 1;                               \
        else :; fi
+       @if egrep 'for .* in \$$\(' $(srcdir)/lib/am/[a-z]*.am; then \
+         echo 'Use "list=$$(mumble); for var in $$$$list".' 1>&2 ; \
+         exit 1; \
+       else :; fi
        @if grep -n 'mkinstalldirs' $(srcdir)/lib/am/[a-z]*.am | \
              grep -F -v '$$(mkinstalldirs)'; then \
          echo "Found incorrect use of mkinstalldirs in the lines above" 1>&2; \
diff --git a/THANKS b/THANKS
index 1ac8359..44952f9 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -48,6 +48,7 @@ Elrond                        Elrond@Wunder-Nett.org
 Enrico Scholz          enrico.scholz@informatik.tu-chemnitz.de
 Erez Zadok             ezk@cs.columbia.edu
 Eric Magnien           emagnien@club-internet.fr
+Eric Siegerman         erics_97@pobox.com
 Erick Branderhorst     branderh@iaehv.nl
 Erik Lindahl           E.Lindahl@chem.rug.nl
 François Pinard                pinard@iro.umontreal.ca
@@ -148,6 +149,7 @@ Peter Mattis                petm@scam.XCF.Berkeley.EDU
 Peter Muir             iyhi@yahoo.com
 Petter Reinholdtsen    pere@hungry.com
 Phil Nelson            phil@cs.wwu.edu
+Philip Fong            pwlfong@users.sourceforge.net
 Rainer Orth            ro@techfak.uni-bielefeld.de
 Raja R Harinath                harinath@cs.umn.edu
 Ralf Corsepius         corsepiu@faw.uni-ulm.de
index 0490fc8..19d3f62 100644 (file)
@@ -129,7 +129,7 @@ top_distdir = ../..
 distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
 
 distdir: $(DISTFILES)
-       @for file in $(DISTFILES); do \
+       @list='$(DISTFILES)'; for file in $$list; do \
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
          if test "$$dir" != "$$file" && test "$$dir" != "."; then \
@@ -175,7 +175,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-       -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
index 6311a5c..9721c4c 100644 (file)
@@ -255,7 +255,7 @@ top_distdir = ..
 distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
 
 distdir: $(DISTFILES)
-       @for file in $(DISTFILES); do \
+       @list='$(DISTFILES)'; for file in $$list; do \
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
          if test "$$dir" != "$$file" && test "$$dir" != "."; then \
@@ -314,7 +314,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-       -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
index fc4db27..d2b0ba5 100644 (file)
@@ -137,7 +137,7 @@ top_distdir = ../..
 distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
 
 distdir: $(DISTFILES)
-       @for file in $(DISTFILES); do \
+       @list='$(DISTFILES)'; for file in $$list; do \
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
          if test "$$dir" != "$$file" && test "$$dir" != "."; then \
@@ -183,7 +183,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-       -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
 
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
index 4fec72a..e93da62 100644 (file)
@@ -62,7 +62,7 @@ endif %?TOPDIR_P%
 ?DISTDIRS?     $(mkinstalldirs) %DISTDIRS%
 ##
 ##
-       @for file in $(DISTFILES); do \
+       @list='$(DISTFILES)'; for file in $$list; do \
 ##
 ## Always look for the file in the build directory first.  That way
 ## for something like yacc output we will correctly pick up the latest
index 4bbdf30..59230d3 100644 (file)
@@ -226,7 +226,7 @@ maintainer-clean-am: maintainer-clean-aminfo
 maintainer-clean-aminfo:
 ## Eww.  But how else can we find all the output files from makeinfo?
 ?!CYGNUS?      cd $(srcdir) && \
-       for i in $(INFO_DEPS); do \
+       list='$(INFO_DEPS)'; for i in $$list; do \
          rm -f $$i; \
          if test "`echo $$i-[0-9]*`" != "$$i-[0-9]*"; then \
            rm -f $$i-[0-9]*; \
index e131139..324fb5a 100644 (file)
@@ -158,7 +158,7 @@ top_distdir = ..
 distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
 
 distdir: $(DISTFILES)
-       @for file in $(DISTFILES); do \
+       @list='$(DISTFILES)'; for file in $$list; do \
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
          if test "$$dir" != "$$file" && test "$$dir" != "."; then \
@@ -204,7 +204,7 @@ mostlyclean-generic:
 clean-generic:
 
 distclean-generic:
-       -rm -f Makefile $(CONFIG_CLEAN_FILES) stamp-h stamp-h[0-9]*
+       -rm -f Makefile $(CONFIG_CLEAN_FILES)
        -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
index 57c335e..a80d326 100644 (file)
@@ -134,6 +134,7 @@ distcommon2.test \
 distcommon3.test \
 distdir.test \
 distname.test \
+dollar.test \
 double.test \
 dup2.test \
 dup3.test \
index d49919e..13fc72d 100644 (file)
@@ -218,6 +218,7 @@ distcommon2.test \
 distcommon3.test \
 distdir.test \
 distname.test \
+dollar.test \
 double.test \
 dup2.test \
 dup3.test \
@@ -567,7 +568,7 @@ top_distdir = ..
 distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
 
 distdir: $(DISTFILES)
-       @for file in $(DISTFILES); do \
+       @list='$(DISTFILES)'; for file in $$list; do \
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
          if test "$$dir" != "$$file" && test "$$dir" != "."; then \
diff --git a/tests/dollar.test b/tests/dollar.test
new file mode 100755 (executable)
index 0000000..80af468
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+# We should support files with `$' characters in their names.
+# Java people need this.
+# PR/317, reported by Eric Siegerman and Philip Fong.
+
+. $srcdir/defs
+
+set -e
+
+echo AC_OUTPUT >> configure.in
+
+cat > Makefile.am <<'EOF'
+mydir = $(prefix)/my
+dist_my_DATA = hello$$world
+
+hello$$world:
+       touch '$@'
+
+check-dist: distdir
+       test -f '$(distdir)/hello$$world'
+EOF
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure --prefix `pwd`/inst
+$MAKE install
+test -f 'inst/my/hello$world'
+$MAKE check-dist