>>> "Bob" == Bob Proulx <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> * 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 $@ [EMAIL PROTECTED] [EMAIL PROTECTED] $(@:.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 $@ [EMAIL PROTECTED] [EMAIL PROTECTED] $(@:.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 [EMAIL PROTECTED] 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