Re: if 'missing makeinfo' then pkg.info is zero sized

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Re: if 'missing makeinfo' then pkg.info is zero sized

Alexandre Duret-Lutz
>>> "Bob" == Bob Proulx <[hidden email]> writes:

 Bob> It seems that if 'makeinfo' is missing from the system but that the
 Bob> timestamp of the .texi file is newer than the .info file that the
 Bob> .info file is removed and replaced with a zero size file.  I tested
 Bob> this with automake 1.9.5.

Thanks for the report, and sorry for the delay.  Short of any better
fix, I'm installing the following on HEAD and branch-1-9.

 Bob> Of course patch does not preserve timestamps.

Do you know why Debian doesn't use the -Z option of patch?  
I always wondered.

2005-06-08  Alexandre Duret-Lutz  <[hidden email]>

        * lib/am/texibuild.am (?GENERIC_INFO?%SOURCE_SUFFIX%%DEST_SUFFIX%):
        Do not backup any file if makeinfo is not installed.
        * lib/missing (makeinfo): Do not touch a missing info file.
        * tests/txinfo30.test: New file.
        * tests/Makefile.am (TESTS): Add txinfo30.test.
        Report from Bob Proulx.

Index: lib/missing
===================================================================
RCS file: /cvs/automake/automake/lib/missing,v
retrieving revision 1.28
diff -u -r1.28 missing
--- lib/missing 14 May 2005 20:28:50 -0000 1.28
+++ lib/missing 8 Jun 2005 19:34:37 -0000
@@ -1,7 +1,7 @@
 #! /bin/sh
 # Common stub for a few missing GNU programs while installing.
 
-scriptversion=2005-05-14.22
+scriptversion=2005-06-08.21
 
 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
 #   Free Software Foundation, Inc.
@@ -297,6 +297,9 @@
       # ... or it is derived from the source name (dir/f.texi becomes f.info)
       test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
     fi
+    # If the file does not exist, the user really needs makeinfo;
+    # let's fail without touching anything.
+    test -f $file || exit 1
     touch $file
     ;;
 
Index: lib/am/texibuild.am
===================================================================
RCS file: /cvs/automake/automake/lib/am/texibuild.am,v
retrieving revision 1.24
diff -u -r1.24 texibuild.am
--- lib/am/texibuild.am 14 May 2005 20:28:53 -0000 1.24
+++ lib/am/texibuild.am 8 Jun 2005 19:34:37 -0000
@@ -1,6 +1,6 @@
 ## automake - create Makefile.in from Makefile.am
 ## Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-##   2003, 2004  Free Software Foundation, Inc.
+##   2003, 2004, 2005  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
@@ -37,9 +37,13 @@
  restore=: && backupdir="$(am__leading_dot)am$$$$" && \
 ?INSRC? am__cwd=`pwd` && cd $(srcdir) && \
  rm -rf $$backupdir && mkdir $$backupdir && \
- for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
-  if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
- done; \
+## If makeinfo is not installed we must not backup the files so
+##`missing' can do its job and touch $@ if it exists.
+ if ($(MAKEINFO) --version >/dev/null 2>&1); then \
+  for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+    if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+  done; \
+ else :; fi && \
 ?INSRC? cd "$$am__cwd"; \
  if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) %MAKEINFOFLAGS% \
 ?!INSRC? -o $@ `test -f '%SOURCE_INFO%' || echo '$(srcdir)/'`%SOURCE_INFO%; \
Index: tests/Makefile.am
===================================================================
RCS file: /cvs/automake/automake/tests/Makefile.am,v
retrieving revision 1.587
diff -u -r1.587 Makefile.am
--- tests/Makefile.am 14 May 2005 19:01:43 -0000 1.587
+++ tests/Makefile.am 8 Jun 2005 19:34:37 -0000
@@ -546,6 +546,7 @@
 txinfo27.test \
 txinfo28.test \
 txinfo29.test \
+txinfo30.test \
 transform.test \
 unused.test \
 vars.test \
Index: tests/txinfo30.test
===================================================================
RCS file: tests/txinfo30.test
diff -N tests/txinfo30.test
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ tests/txinfo30.test 8 Jun 2005 19:34:38 -0000
@@ -0,0 +1,63 @@
+#! /bin/sh
+# Copyright (C) 2005  Free Software Foundation, Inc.
+#
+# This file is part of GNU Automake.
+#
+# GNU Automake 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.
+#
+# GNU Automake 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 Automake; see the file COPYING.  If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+# Make sure `missing texinfo' does not create empty files.
+# Report from Bob Proulx.
+
+. ./defs || exit 1
+
+set -e
+
+echo info_TEXINFOS = bar.texi >Makefile.am
+echo grepme >bar.info
+$sleep
+cat >bar.texi <<EOF
+@setfilename bar.info
+EOF
+
+echo AC_OUTPUT >>configure.in
+
+cat >makeinfo <<\EOF
+#!/bin/sh
+# This script
+# 1. fails so `missing' can take over
+# 2. does not understand `--version' so `missing' thinks `makeinfo' isn't
+#    installed
+exec false
+EOF
+
+chmod +x makeinfo
+
+PATH=`pwd`:$PATH
+export PATH
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE --add-missing
+
+./configure
+$MAKE
+grep grepme bar.info
+test -f bar.info
+
+# We should not create a missing bar.info.
+rm -f bar.info
+$MAKE && exit 1
+test ! -f bar.info

--
Alexandre Duret-Lutz