]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
* lib/autoconf/general.m4 (AC_CACHE_SAVE): Don't use cmp.
authorAkim Demaille <akim@epita.fr>
Thu, 17 Oct 2002 10:34:09 +0000 (10:34 +0000)
committerAkim Demaille <akim@epita.fr>
Thu, 17 Oct 2002 10:34:09 +0000 (10:34 +0000)
Fixes the `AC_ARG_VAR' test failures.
* lib/autoconf/status.m4 (_AC_OUTPUT_FILES): Don't use cmp.
* lib/freeze.mk (check-forbidden-patterns): New.
* lib/autoconf/Makefile.am, lib/autotest/Makefile.am
* lib/m4sugar/Makefile.am (check-local): Use it to catch `cmp'.
* doc/autoconf.texi (Limitations of Usual Tools): HP-UX' cmp and
/dev/null.
Reported months ago by H. Merijn Brand.

15 files changed:
ChangeLog
NEWS
THANKS
doc/autoconf.texi
lib/autoconf/Makefile.am
lib/autoconf/Makefile.in
lib/autoconf/general.m4
lib/autoconf/status.m4
lib/autoscan/Makefile.in
lib/autotest/Makefile.am
lib/autotest/Makefile.in
lib/freeze.mk
lib/m4sugar/Makefile.am
lib/m4sugar/Makefile.in
tests/Makefile.in

index 5c661f1673f8d83a0ee1a636a10635445c3186fe..6007a8733bd929672635e4008a6e7e770a1b802d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2002-10-17  Akim Demaille  <akim@epita.fr>
+
+       * lib/autoconf/general.m4 (AC_CACHE_SAVE): Don't use cmp.
+       Fixes the `AC_ARG_VAR' test failures.
+       * lib/autoconf/status.m4 (_AC_OUTPUT_FILES): Don't use cmp.
+       * lib/freeze.mk (check-forbidden-patterns): New.
+       * lib/autoconf/Makefile.am, lib/autotest/Makefile.am
+       * lib/m4sugar/Makefile.am (check-local): Use it to catch `cmp'.
+       * doc/autoconf.texi (Limitations of Usual Tools): HP-UX' cmp and
+       /dev/null.
+       Reported months ago by H. Merijn Brand.
+
 2002-10-17  Akim Demaille  <akim@epita.fr>
 
        * tests/tools.at (autoheader): Put randoms `@' to stress Perl.
diff --git a/NEWS b/NEWS
index 6eb43217dbba7005bc189b4c1d30d5e1ebf989d5..df37b42a16d1ea9446eef50d10e5e1ce0c79f61f 100644 (file)
--- a/NEWS
+++ b/NEWS
 
 - Portability of the Autoconf package to Solaris.
 
+- Cache files and HP-UX
+  Because of HP-UX' cmp, cache files probably never worked properly.
+  Autoconf no longer uses cmp at all.
+
 - Spurious warnings caused by config.status.
   This bug is benign, but painful: on some systems (typically
   FreeBSD), warnings such as:
diff --git a/THANKS b/THANKS
index 97d4ad18d2e8c768223ad46d41e8817e09b8d432..ec878fbd09951ed2dee87c03a9d1c8931803cfdc 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -75,6 +75,7 @@ Guillermo Gomez             gomez@mi.uni-erlangen.de
 Hans Olsson                 Hans.Olsson@dna.lth.se
 Harlan Stenn                stenn@whimsy.udel.edu
 H.J. Lu                     hjl@gnu.org
+H. Merijn Brand             h.m.brand@hccnet.nl
 Ian Lance Taylor            ian@cygnus.com
 James A. Lupo               lupoja@feynman.ml.wpafb.af.mil
 Jason Molenda               jsm@cygnus.com
index a57c41f10cb71689de96bde2c3de2b304d020b23..d63aa75d30401d810f94d88e93ff4cf6a51961ba 100644 (file)
@@ -9860,6 +9860,17 @@ DOS files, even if only checking whether two files are different, use
 @command{diff} to avoid spurious differences due to differences of
 newline encoding.
 
+Under HP-UX 11, @command{cmp} is unable to process @file{/dev/null}, and
+even exits with success:
+
+@example
+$ @kbd{cmp /dev/null configure}
+@error{}Premature end of file /dev/null at -1
+$ @kbd{echo $?}
+0
+@end example
+
+For all these reasons, it seems safer to always use @command{diff}.
 
 @item @command{cp}
 @c ---------------
index 9d2c36da48d425b336c150a1c482fa34f1bf296e..c1d74caedcca40f76371cdf7ea10a0a7ce58e064 100644 (file)
@@ -42,16 +42,9 @@ ETAGS_ARGS = $(ETAGS_FOR_AUTOCONF)
 ## Checks.  ##
 ## -------- ##
 
-check-local:
-       if (cd $(srcdir) && \
-           grep '^_*EOF' $(dist_autoconflib_DATA)) >eof.log; then \
-         echo "ERROR: user EOF tags were used:" >&2; \
-         sed "s,^,$*.m4: ," <eof.log >&2; \
-         echo >&2; \
-         exit 1; \
-       else \
-         rm -f eof.log; \
-       fi
+check-local: check-forbidden-patterns
+forbidden_patterns = -e '^_*EOF' -e ' cmp '
+forbidden_patterns_files = $(dist_autoconflib_DATA)
 
 
 ## ------------------ ##
index e639ac1fa4491cc93692a259343c7cb16f8746d7..d2c72ee21707c717ee456ad21404139325a51643 100644 (file)
@@ -106,6 +106,8 @@ CLEANFILES = $(nodist_autoconflib_DATA)
 TAGS_FILES = $(dist_autoconflib_DATA)
 
 ETAGS_ARGS = $(ETAGS_FOR_AUTOCONF)
+forbidden_patterns = -e '^_*EOF' -e ' cmp '
+forbidden_patterns_files = $(dist_autoconflib_DATA)
 
 SUFFIXES = .m4 .m4f
 
@@ -292,11 +294,13 @@ top_distdir = ../..
 distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
 
 distdir: $(DISTFILES)
-       $(mkinstalldirs) $(distdir)/$(srcdir)/..
+       $(mkinstalldirs) $(distdir)/./..
        @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
        list='$(DISTFILES)'; for file in $$list; do \
          case $$file in \
            $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
          esac; \
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
@@ -409,16 +413,7 @@ uninstall-am: uninstall-dist_autoconflibDATA uninstall-info-am \
        uninstall-nodist_autoconflibDATA
 
 
-check-local:
-       if (cd $(srcdir) && \
-           grep '^_*EOF' $(dist_autoconflib_DATA)) >eof.log; then \
-         echo "ERROR: user EOF tags were used:" >&2; \
-         sed "s,^,$*.m4: ," <eof.log >&2; \
-         echo >&2; \
-         exit 1; \
-       else \
-         rm -f eof.log; \
-       fi
+check-local: check-forbidden-patterns
 
 autoconf.m4f: $(autoconf_m4f_dependencies)
 $(MY_AUTOM4TE):
@@ -441,6 +436,18 @@ $(AUTOM4TE_CFG):
 # For parallel builds.
 $(build_libdir)/m4sugar/version.m4:
        cd $(build_libdir)/m4sugar && $(MAKE) $(AM_MAKEFLAGS) version.m4
+
+check-forbidden-patterns:
+       if (cd $(srcdir) && \
+           grep $(forbidden_patterns) $(forbidden_patterns_files)) \
+           >forbidden.log; then \
+         echo "ERROR: forbidden patterns were found:" >&2; \
+         sed "s,^,$*.m4: ," <forbidden.log >&2; \
+         echo >&2; \
+         exit 1; \
+       else \
+         rm -f forbidden.log; \
+       fi
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
index 005ade105737c508c94a8f686a071df37f940d8a..cdbb85c14618033253a69a9f013bf3f152f12b52 100644 (file)
@@ -1771,7 +1771,7 @@ _AC_CACHE_DUMP() |
      t end
      /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
      : end'] >>confcache
-if cmp -s $cache_file confcache; then :; else
+if diff $cache_file confcache >/dev/null 2>&1; then :; else
   if test -w $cache_file; then
     test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
     cat confcache >$cache_file
index 61d97b53ab64fc593f6446bb67fc75f6f092fe18..bf322339a95e5382b2a70ba82ef61b1ffccc3355 100644 (file)
@@ -649,7 +649,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF
   cat $tmp/in >>$tmp/config.h
   rm -f $tmp/in
   if test x"$ac_file" != x-; then
-    if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
+    if diff $ac_file $tmp/config.h >/dev/null 2>&1; then
       AC_MSG_NOTICE([$ac_file is unchanged])
     else
       ac_dir=`AS_DIRNAME(["$ac_file"])`
@@ -1019,7 +1019,7 @@ dnl The parens around the eval prevent an "illegal io" in Ultrix sh.
 " $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
   rm -f $tmp/stdin
 dnl This would break Makefile dependencies.
-dnl  if cmp -s $ac_file $tmp/out 2>/dev/null; then
+dnl  if diff $ac_file $tmp/out >/dev/null 2>&1; then
 dnl    echo "$ac_file is unchanged"
 dnl   else
 dnl     rm -f $ac_file
index aaeeea84ab0b6c1db0de195bc8a69cd90fbaeb1b..89839dc9f356e93cd46e561cafb83633fb408a6b 100644 (file)
@@ -214,11 +214,13 @@ top_distdir = ../..
 distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
 
 distdir: $(DISTFILES)
-       $(mkinstalldirs) $(distdir)/$(srcdir)/..
+       $(mkinstalldirs) $(distdir)/./..
        @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
        list='$(DISTFILES)'; for file in $$list; do \
          case $$file in \
            $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
          esac; \
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
@@ -345,6 +347,18 @@ $(AUTOM4TE_CFG):
 $(build_libdir)/m4sugar/version.m4:
        cd $(build_libdir)/m4sugar && $(MAKE) $(AM_MAKEFLAGS) version.m4
 
+check-forbidden-patterns:
+       if (cd $(srcdir) && \
+           grep $(forbidden_patterns) $(forbidden_patterns_files)) \
+           >forbidden.log; then \
+         echo "ERROR: forbidden patterns were found:" >&2; \
+         sed "s,^,$*.m4: ," <forbidden.log >&2; \
+         echo >&2; \
+         exit 1; \
+       else \
+         rm -f forbidden.log; \
+       fi
+
 autoscan.list: $(srcdir)/autoscan.pre $(autoconf_m4f_dependencies) Makefile.am
        echo '# Automatically Generated: do not edit this file' > autoscan.list
        sed '/^[#]/!q' $(srcdir)/autoscan.pre >>autoscan.list
index 369c4456a5d1236dd9c56c4a23f419d70deedf26..de3203a7658bca740848acf70e554a587acb981d 100644 (file)
@@ -35,16 +35,9 @@ ETAGS_ARGS = $(ETAGS_FOR_AUTOCONF)
 ## Checks.  ##
 ## -------- ##
 
-check-local:
-       if (cd $(srcdir) && \
-           grep '^_*EOF' $(dist_autotestlib_DATA)) >eof.log; then \
-         echo "ERROR: user EOF tags were used:" >&2; \
-         sed "s,^,$*.m4: ," <eof.log >&2; \
-         echo >&2; \
-         exit 1; \
-       else \
-         rm -f eof.log; \
-       fi
+check-local: check-forbidden-patterns
+forbidden_patterns = -e '^_*EOF' -e ' cmp '
+forbidden_patterns_files = $(dist_autotestlib_DATA)
 
 
 ## ------------------ ##
index de87bd90735fc7da291756ab16346c38183d269b..2d5929fc92e6a763392edaf1e28d3ac7a0c4f7fd 100644 (file)
@@ -99,6 +99,8 @@ CLEANFILES = $(nodist_autotestlib_DATA)
 TAGS_FILES = $(dist_autotestlib_DATA)
 
 ETAGS_ARGS = $(ETAGS_FOR_AUTOCONF)
+forbidden_patterns = -e '^_*EOF' -e ' cmp '
+forbidden_patterns_files = $(dist_autotestlib_DATA)
 
 SUFFIXES = .m4 .m4f
 
@@ -285,11 +287,13 @@ top_distdir = ../..
 distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
 
 distdir: $(DISTFILES)
-       $(mkinstalldirs) $(distdir)/$(srcdir)/..
+       $(mkinstalldirs) $(distdir)/./..
        @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
        list='$(DISTFILES)'; for file in $$list; do \
          case $$file in \
            $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
          esac; \
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
@@ -402,16 +406,7 @@ uninstall-am: uninstall-dist_autotestlibDATA uninstall-info-am \
        uninstall-nodist_autotestlibDATA
 
 
-check-local:
-       if (cd $(srcdir) && \
-           grep '^_*EOF' $(dist_autotestlib_DATA)) >eof.log; then \
-         echo "ERROR: user EOF tags were used:" >&2; \
-         sed "s,^,$*.m4: ," <eof.log >&2; \
-         echo >&2; \
-         exit 1; \
-       else \
-         rm -f eof.log; \
-       fi
+check-local: check-forbidden-patterns
 
 autotest.m4f: $(autotest_m4f_dependencies)
 $(MY_AUTOM4TE):
@@ -434,6 +429,18 @@ $(AUTOM4TE_CFG):
 # For parallel builds.
 $(build_libdir)/m4sugar/version.m4:
        cd $(build_libdir)/m4sugar && $(MAKE) $(AM_MAKEFLAGS) version.m4
+
+check-forbidden-patterns:
+       if (cd $(srcdir) && \
+           grep $(forbidden_patterns) $(forbidden_patterns_files)) \
+           >forbidden.log; then \
+         echo "ERROR: forbidden patterns were found:" >&2; \
+         sed "s,^,$*.m4: ," <forbidden.log >&2; \
+         echo >&2; \
+         exit 1; \
+       else \
+         rm -f forbidden.log; \
+       fi
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
index 8b66e21253563c812afb2bf24d54911eab386387..ec765d2b1a14f841caf5a6c31af0852c1bf33ee4 100644 (file)
@@ -111,3 +111,20 @@ ETAGS_FOR_AUTOCONF = \
   $(ETAGS_FOR_M4SUGAR) \
   --regex='/\(A[CU]_DEFUN\|AU_ALIAS\)(\[\([^]]*\)\]/\2/' \
   --regex='/AN_\(FUNCTION\|HEADER\|IDENTIFIER\|LIBRARY\|MAKEVAR\|PROGRAM\)(\[\([^]]*\)\]/\2/'
+
+
+## -------------------------------- ##
+## Looking for forbidden patterns.  ##
+## -------------------------------- ##
+
+check-forbidden-patterns:
+       if (cd $(srcdir) && \
+           grep $(forbidden_patterns) $(forbidden_patterns_files)) \
+           >forbidden.log; then \
+         echo "ERROR: forbidden patterns were found:" >&2; \
+         sed "s,^,$*.m4: ," <forbidden.log >&2; \
+         echo >&2; \
+         exit 1; \
+       else \
+         rm -f forbidden.log; \
+       fi
index 50481e7c157fa64508a4002dffaff7974e86407b..caf3c1e68fc4bf4c6a07d67bfa11e754f5c4c2cd 100644 (file)
@@ -54,16 +54,10 @@ ETAGS_ARGS = $(ETAGS_FOR_AUTOCONF)
 ## Checks.  ##
 ## -------- ##
 
-check-local:
-       if (cd $(srcdir) && \
-           grep '^_*EOF' $(dist_m4sugarlib_DATA)) >eof.log; then \
-         echo "ERROR: user EOF tags were used:" >&2; \
-         sed "s,^,$*.m4: ," <eof.log >&2; \
-         echo >&2; \
-         exit 1; \
-       else \
-         rm -f eof.log; \
-       fi
+check-local: check-forbidden-patterns
+forbidden_patterns = -e '^_*EOF' -e ' cmp '
+forbidden_patterns_files = $(dist_m4sugarlib_DATA)
+
 
 
 ## ------------------ ##
index a5ef655e4cad3e52df4ea84653942e3aa8ee7b9a..059e572f7fdbb821c5e3a588e2b0bcc6d35f94bb 100644 (file)
@@ -99,6 +99,8 @@ CLEANFILES = $(nodist_m4sugarlib_DATA)
 TAGS_FILES = $(dist_m4sugarlib_DATA)
 
 ETAGS_ARGS = $(ETAGS_FOR_AUTOCONF)
+forbidden_patterns = -e '^_*EOF' -e ' cmp '
+forbidden_patterns_files = $(dist_m4sugarlib_DATA)
 
 SUFFIXES = .m4 .m4f
 
@@ -285,11 +287,13 @@ top_distdir = ../..
 distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
 
 distdir: $(DISTFILES)
-       $(mkinstalldirs) $(distdir)/$(srcdir)/..
+       $(mkinstalldirs) $(distdir)/./..
        @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
        list='$(DISTFILES)'; for file in $$list; do \
          case $$file in \
            $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
          esac; \
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
@@ -416,16 +420,7 @@ version.m4: $(top_srcdir)/configure.ac
          echo 'm4_define([m4_PACKAGE_BUGREPORT], [@PACKAGE_BUGREPORT@])'; \
        } >version.m4
 
-check-local:
-       if (cd $(srcdir) && \
-           grep '^_*EOF' $(dist_m4sugarlib_DATA)) >eof.log; then \
-         echo "ERROR: user EOF tags were used:" >&2; \
-         sed "s,^,$*.m4: ," <eof.log >&2; \
-         echo >&2; \
-         exit 1; \
-       else \
-         rm -f eof.log; \
-       fi
+check-local: check-forbidden-patterns
 
 m4sugar.m4f: $(m4sugar_m4f_dependencies)
 m4sh.m4f: $(m4sh_m4f_dependencies)
@@ -449,6 +444,18 @@ $(AUTOM4TE_CFG):
 # For parallel builds.
 $(build_libdir)/m4sugar/version.m4:
        cd $(build_libdir)/m4sugar && $(MAKE) $(AM_MAKEFLAGS) version.m4
+
+check-forbidden-patterns:
+       if (cd $(srcdir) && \
+           grep $(forbidden_patterns) $(forbidden_patterns_files)) \
+           >forbidden.log; then \
+         echo "ERROR: forbidden patterns were found:" >&2; \
+         sed "s,^,$*.m4: ," <forbidden.log >&2; \
+         echo >&2; \
+         exit 1; \
+       else \
+         rm -f forbidden.log; \
+       fi
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
index e2713303fcc12c6aedda7885eadaae2a3f83c967..ca1e3642ef43825b119830fdcf5f6236181fd0cb 100644 (file)
@@ -267,11 +267,13 @@ top_distdir = ..
 distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
 
 distdir: $(DISTFILES)
-       $(mkinstalldirs) $(distdir)/$(srcdir)/../lib
+       $(mkinstalldirs) $(distdir)/./../lib
        @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
        list='$(DISTFILES)'; for file in $$list; do \
          case $$file in \
            $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+           $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
          esac; \
          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
          dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
@@ -401,6 +403,18 @@ $(AUTOM4TE_CFG):
 $(build_libdir)/m4sugar/version.m4:
        cd $(build_libdir)/m4sugar && $(MAKE) $(AM_MAKEFLAGS) version.m4
 
+check-forbidden-patterns:
+       if (cd $(srcdir) && \
+           grep $(forbidden_patterns) $(forbidden_patterns_files)) \
+           >forbidden.log; then \
+         echo "ERROR: forbidden patterns were found:" >&2; \
+         sed "s,^,$*.m4: ," <forbidden.log >&2; \
+         echo >&2; \
+         exit 1; \
+       else \
+         rm -f forbidden.log; \
+       fi
+
 # Import the dependencies on Autotest and M4sh.
 
 $(srcdir)/package.m4: $(top_srcdir)/configure.ac