Blame missing

Packit eed199
#! /bin/sh
Packit eed199
# Common wrapper for a few potentially missing GNU programs.
Packit eed199
Packit eed199
scriptversion=2013-10-28.13; # UTC
Packit eed199
Packit eed199
# Copyright (C) 1996-2014 Free Software Foundation, Inc.
Packit eed199
# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
Packit eed199
Packit eed199
# This program is free software; you can redistribute it and/or modify
Packit eed199
# it under the terms of the GNU General Public License as published by
Packit eed199
# the Free Software Foundation; either version 2, or (at your option)
Packit eed199
# any later version.
Packit eed199
Packit eed199
# This program is distributed in the hope that it will be useful,
Packit eed199
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit eed199
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit eed199
# GNU General Public License for more details.
Packit eed199
Packit eed199
# You should have received a copy of the GNU General Public License
Packit eed199
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit eed199
Packit eed199
# As a special exception to the GNU General Public License, if you
Packit eed199
# distribute this file as part of a program that contains a
Packit eed199
# configuration script generated by Autoconf, you may include it under
Packit eed199
# the same distribution terms that you use for the rest of that program.
Packit eed199
Packit eed199
if test $# -eq 0; then
Packit eed199
  echo 1>&2 "Try '$0 --help' for more information"
Packit eed199
  exit 1
Packit eed199
fi
Packit eed199
Packit eed199
case $1 in
Packit eed199
Packit eed199
  --is-lightweight)
Packit eed199
    # Used by our autoconf macros to check whether the available missing
Packit eed199
    # script is modern enough.
Packit eed199
    exit 0
Packit eed199
    ;;
Packit eed199
Packit eed199
  --run)
Packit eed199
    # Back-compat with the calling convention used by older automake.
Packit eed199
    shift
Packit eed199
    ;;
Packit eed199
Packit eed199
  -h|--h|--he|--hel|--help)
Packit eed199
    echo "\
Packit eed199
$0 [OPTION]... PROGRAM [ARGUMENT]...
Packit eed199
Packit eed199
Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
Packit eed199
to PROGRAM being missing or too old.
Packit eed199
Packit eed199
Options:
Packit eed199
  -h, --help      display this help and exit
Packit eed199
  -v, --version   output version information and exit
Packit eed199
Packit eed199
Supported PROGRAM values:
Packit eed199
  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
Packit eed199
  bison     yacc      flex         lex       help2man
Packit eed199
Packit eed199
Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
Packit eed199
'g' are ignored when checking the name.
Packit eed199
Packit eed199
Send bug reports to <bug-automake@gnu.org>."
Packit eed199
    exit $?
Packit eed199
    ;;
Packit eed199
Packit eed199
  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
Packit eed199
    echo "missing $scriptversion (GNU Automake)"
Packit eed199
    exit $?
Packit eed199
    ;;
Packit eed199
Packit eed199
  -*)
Packit eed199
    echo 1>&2 "$0: unknown '$1' option"
Packit eed199
    echo 1>&2 "Try '$0 --help' for more information"
Packit eed199
    exit 1
Packit eed199
    ;;
Packit eed199
Packit eed199
esac
Packit eed199
Packit eed199
# Run the given program, remember its exit status.
Packit eed199
"$@"; st=$?
Packit eed199
Packit eed199
# If it succeeded, we are done.
Packit eed199
test $st -eq 0 && exit 0
Packit eed199
Packit eed199
# Also exit now if we it failed (or wasn't found), and '--version' was
Packit eed199
# passed; such an option is passed most likely to detect whether the
Packit eed199
# program is present and works.
Packit eed199
case $2 in --version|--help) exit $st;; esac
Packit eed199
Packit eed199
# Exit code 63 means version mismatch.  This often happens when the user
Packit eed199
# tries to use an ancient version of a tool on a file that requires a
Packit eed199
# minimum version.
Packit eed199
if test $st -eq 63; then
Packit eed199
  msg="probably too old"
Packit eed199
elif test $st -eq 127; then
Packit eed199
  # Program was missing.
Packit eed199
  msg="missing on your system"
Packit eed199
else
Packit eed199
  # Program was found and executed, but failed.  Give up.
Packit eed199
  exit $st
Packit eed199
fi
Packit eed199
Packit eed199
perl_URL=http://www.perl.org/
Packit eed199
flex_URL=http://flex.sourceforge.net/
Packit eed199
gnu_software_URL=http://www.gnu.org/software
Packit eed199
Packit eed199
program_details ()
Packit eed199
{
Packit eed199
  case $1 in
Packit eed199
    aclocal|automake)
Packit eed199
      echo "The '$1' program is part of the GNU Automake package:"
Packit eed199
      echo "<$gnu_software_URL/automake>"
Packit eed199
      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
Packit eed199
      echo "<$gnu_software_URL/autoconf>"
Packit eed199
      echo "<$gnu_software_URL/m4/>"
Packit eed199
      echo "<$perl_URL>"
Packit eed199
      ;;
Packit eed199
    autoconf|autom4te|autoheader)
Packit eed199
      echo "The '$1' program is part of the GNU Autoconf package:"
Packit eed199
      echo "<$gnu_software_URL/autoconf/>"
Packit eed199
      echo "It also requires GNU m4 and Perl in order to run:"
Packit eed199
      echo "<$gnu_software_URL/m4/>"
Packit eed199
      echo "<$perl_URL>"
Packit eed199
      ;;
Packit eed199
  esac
Packit eed199
}
Packit eed199
Packit eed199
give_advice ()
Packit eed199
{
Packit eed199
  # Normalize program name to check for.
Packit eed199
  normalized_program=`echo "$1" | sed '
Packit eed199
    s/^gnu-//; t
Packit eed199
    s/^gnu//; t
Packit eed199
    s/^g//; t'`
Packit eed199
Packit eed199
  printf '%s\n' "'$1' is $msg."
Packit eed199
Packit eed199
  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
Packit eed199
  case $normalized_program in
Packit eed199
    autoconf*)
Packit eed199
      echo "You should only need it if you modified 'configure.ac',"
Packit eed199
      echo "or m4 files included by it."
Packit eed199
      program_details 'autoconf'
Packit eed199
      ;;
Packit eed199
    autoheader*)
Packit eed199
      echo "You should only need it if you modified 'acconfig.h' or"
Packit eed199
      echo "$configure_deps."
Packit eed199
      program_details 'autoheader'
Packit eed199
      ;;
Packit eed199
    automake*)
Packit eed199
      echo "You should only need it if you modified 'Makefile.am' or"
Packit eed199
      echo "$configure_deps."
Packit eed199
      program_details 'automake'
Packit eed199
      ;;
Packit eed199
    aclocal*)
Packit eed199
      echo "You should only need it if you modified 'acinclude.m4' or"
Packit eed199
      echo "$configure_deps."
Packit eed199
      program_details 'aclocal'
Packit eed199
      ;;
Packit eed199
   autom4te*)
Packit eed199
      echo "You might have modified some maintainer files that require"
Packit eed199
      echo "the 'autom4te' program to be rebuilt."
Packit eed199
      program_details 'autom4te'
Packit eed199
      ;;
Packit eed199
    bison*|yacc*)
Packit eed199
      echo "You should only need it if you modified a '.y' file."
Packit eed199
      echo "You may want to install the GNU Bison package:"
Packit eed199
      echo "<$gnu_software_URL/bison/>"
Packit eed199
      ;;
Packit eed199
    lex*|flex*)
Packit eed199
      echo "You should only need it if you modified a '.l' file."
Packit eed199
      echo "You may want to install the Fast Lexical Analyzer package:"
Packit eed199
      echo "<$flex_URL>"
Packit eed199
      ;;
Packit eed199
    help2man*)
Packit eed199
      echo "You should only need it if you modified a dependency" \
Packit eed199
           "of a man page."
Packit eed199
      echo "You may want to install the GNU Help2man package:"
Packit eed199
      echo "<$gnu_software_URL/help2man/>"
Packit eed199
    ;;
Packit eed199
    makeinfo*)
Packit eed199
      echo "You should only need it if you modified a '.texi' file, or"
Packit eed199
      echo "any other file indirectly affecting the aspect of the manual."
Packit eed199
      echo "You might want to install the Texinfo package:"
Packit eed199
      echo "<$gnu_software_URL/texinfo/>"
Packit eed199
      echo "The spurious makeinfo call might also be the consequence of"
Packit eed199
      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
Packit eed199
      echo "want to install GNU make:"
Packit eed199
      echo "<$gnu_software_URL/make/>"
Packit eed199
      ;;
Packit eed199
    *)
Packit eed199
      echo "You might have modified some files without having the proper"
Packit eed199
      echo "tools for further handling them.  Check the 'README' file, it"
Packit eed199
      echo "often tells you about the needed prerequisites for installing"
Packit eed199
      echo "this package.  You may also peek at any GNU archive site, in"
Packit eed199
      echo "case some other package contains this missing '$1' program."
Packit eed199
      ;;
Packit eed199
  esac
Packit eed199
}
Packit eed199
Packit eed199
give_advice "$1" | sed -e '1s/^/WARNING: /' \
Packit eed199
                       -e '2,$s/^/         /' >&2
Packit eed199
Packit eed199
# Propagate the correct exit status (expected to be 127 for a program
Packit eed199
# not found, 63 for a program that failed due to version mismatch).
Packit eed199
exit $st
Packit eed199
Packit eed199
# Local variables:
Packit eed199
# eval: (add-hook 'write-file-hooks 'time-stamp)
Packit eed199
# time-stamp-start: "scriptversion="
Packit eed199
# time-stamp-format: "%:y-%02m-%02d.%02H"
Packit eed199
# time-stamp-time-zone: "UTC"
Packit eed199
# time-stamp-end: "; # UTC"
Packit eed199
# End: