Hash :
1ec16686
Author :
Date :
2011-10-23T13:19:21
info: allow user to inhibit creation/update of '${infodir}/dir'
With this change, we allow the user to request the install-info
rules not to update the `${infodir}/dir' file, by exporting the
environment variable `AM_UPDATE_INFO_DIR' to the value "no".
This is especially useful to distro packagers, and is a definite
improvement over our previous hack of looking whether the
`install-info' program was the Debian or GNU version -- hack
which had been silently broken with recent versions of debian
install-info BTW (probably since dpkg 1.15.4, 2009-09-06).
This change fixes automake bug#9773. See also Debian Bug#543992.
* lib/am/texinfos.am: Don't look anymore at the output of
`install-info --version' to decide whether to use it to update
the `${infodir}/dir' or not; instead, honour the environment
variable `AM_UPDATE_INFO_DIR'.
* tests/install-info-dir.test: New test.
* tests/Makefile.am (TESTS): Add it.
* tests/defs: Also unset `AM_UPDATE_INFO_DIR', to avoid unwanted
interferences from the environment.
* doc/automake.texi (Texinfo): Update.
* NEWS: Likewise.
* THANKS: Likewise.
Report by Jonathan Nieder.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
#! /bin/sh
# Copyright (C) 2011 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 2, 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/>.
# Checks on the `install-info' target.
# Details about the individual checks' purposes and motivations are
# inlined, below.
# FIXME: this test is a good candidate for a conversion to TAP,
# FIXME: and could be merged with `txinfo27.test'.
required=makeinfo
. ./defs || Exit 1
cwd=`pwd` || fatal_ "cannot get current working directory"
mkdir bin
saved_PATH=$PATH; export saved_PATH
PATH=$cwd/bin$PATH_SEPARATOR$PATH; export PATH
set -e
cat >> configure.in <<'END'
AC_OUTPUT
END
cat > Makefile.am << 'END'
info_TEXINFOS = foo.texi
END
cat > foo.texi << 'END'
\input texinfo
@setfilename foo.info
@node Top
Hello world!
@bye
END
$ACLOCAL
$AUTOMAKE -a
$AUTOCONF
instdir=_inst
destdir=_dest
./configure --prefix="$cwd/$instdir" --infodir="$cwd/$instdir/info"
$MAKE info
test -f foo.info
if install-info --version; then
have_installinfo=yes
else
have_installinfo=no
fi
# The `install-info' target updates the `${infodir}/dir' file
# by default (if the `install-info' program is available).
# This should happen in a normal as well as in a DESTDIR installation.
if test $have_installinfo = yes; then
$MAKE install-info
test -f $instdir/info/foo.info
test -f $instdir/info/dir
$MAKE DESTDIR="$cwd/$destdir" install-info
test -f "$destdir/$cwd/$instdir"/info/foo.info
test -f "$destdir/$cwd/$instdir"/info/dir
fi
rm -rf $instdir $destdir
# The `install-info' target doesn't fail if the `install-info'
# program is not available.
cat > bin/install-info <<'END'
#!/bin/sh
echo error from install-info >&2
exit 127
END
chmod a+x bin/install-info
$MAKE install-info >output 2>&1 || { cat output; Exit 1; }
cat output
test -f $instdir/info/foo.info
test ! -f $instdir/info/dir
grep 'error from install-info' output && Exit 1
rm -rf $instdir output
if test $have_installinfo = yes; then
# The `install-info' target doesn't try to guess whether the `install-info'
# is the GNU or debian version.
unindent > bin/install-info <<'END'
#!/bin/sh
set -e; set -u;
for fd in 1 2; do
for str in dpkg debian Debian; do
eval "echo This is $str install-info >&$fd"
done
done
PATH=$saved_PATH; export PATH
exec install-info ${1+"$@"}
END
$MAKE install-info
test -f $instdir/info/foo.info
test -f $instdir/info/dir
fi
rm -rf $instdir bin/install-info
# The `AM_UPDATE_INFO_DIR' environment variable can be used to
# prevent the creation or update of the `${infodir}/dir' file,
# if set to a "no" value.
for val in no NO n; do
rm -rf $instdir
env AM_UPDATE_INFO_DIR="$val" $MAKE install-info
test -f $instdir/info/foo.info
test ! -f $instdir/info/dir
done
if test $have_installinfo = yes; then
for val in 'yes' 'who cares!'; do
rm -rf $instdir
env AM_UPDATE_INFO_DIR="$val" $MAKE install-info
test -f $instdir/info/foo.info
test -f $instdir/info/dir
done
fi
rm -rf $instdir
: