123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- #! /bin/sh
- # Copyright (C) 2011-2017 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.sh'.
- required=makeinfo
- . test-init.sh
- cwd=$(pwd) || fatal_ "cannot get current working directory"
- mkdir bin
- saved_PATH=$PATH; export saved_PATH
- PATH=$cwd/bin$PATH_SEPARATOR$PATH; export PATH
- cat >> configure.ac <<'END'
- AC_OUTPUT
- END
- cat > Makefile.am << 'END'
- info_TEXINFOS = foo.texi
- END
- cat > foo.texi << 'END'
- \input texinfo
- @setfilename foo.info
- @c All the following directives might be required to allow older
- @c versions of the 'install-info' program (e.g., version 4.8) to
- @c create the 'dir' index file in ${infodir}. Don't remove them.
- @settitle foo
- @dircategory Dummy utilities
- @direntry
- * Foo: (foo). Does nothing at all, but has a nice name.
- @end direntry
- @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
- # Skip some checks even if 'install-info' is the one from dpkg, not
- # the one from GNU info, as the former might try to create files in
- # '/var/backups/', causing spurious failures like this for non-root
- # users.
- if install-info --version | $EGREP -i '(dpkg|debian) install-info'; then
- have_installinfo=no
- else
- have_installinfo=yes
- fi
- 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
- cat $instdir/info/dir
- $FGREP 'Does nothing at all, but has a nice name' $instdir/info/dir
- $MAKE uninstall
- test ! -e $instdir/info/foo.info
- cat $instdir/info/dir
- $FGREP 'but has a nice name' $instdir/info/dir && exit 1
- dir="$destdir/$cwd/$instdir/info"
- $MAKE DESTDIR="$cwd/$destdir" install-info
- test -f "$dir"/foo.info
- cat "$dir"/dir
- $FGREP 'Does nothing at all, but has a nice name' "$dir"/dir
- $MAKE DESTDIR="$cwd/$destdir" uninstall
- test ! -e "$dir"/foo.info
- $FGREP 'but has a nice name' "$dir"/dir && exit 1
- unset 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
- run_make -M install-info
- test -f $instdir/info/foo.info
- test ! -e $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
- cat $instdir/info/dir
- $MAKE uninstall
- test ! -e $instdir/info/foo.info
- cat $instdir/info/dir
- $FGREP 'but has a nice name' $instdir/info/dir && exit 1
- : For shells with busted 'set -e'.
- 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 ! -e $instdir/info/dir
- done
- $MAKE install-info
- if test $have_installinfo != yes; then
- echo 'Does nothing at all, but has a nice name' > $instdir/info/dir
- fi
- chmod a-w $instdir/info/dir
- for val in no NO n; do
- env AM_UPDATE_INFO_DIR="$val" $MAKE uninstall
- cat $instdir/info/dir
- $FGREP 'Does nothing at all, but has a nice name' $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
- cat $instdir/info/dir
- env AM_UPDATE_INFO_DIR="$val" $MAKE uninstall
- test ! -e $instdir/info/foo.info
- $FGREP 'but has a nice name' $instdir/info/dir && exit 1
- : For shells with busted 'set -e'.
- done
- fi
- :
|