Blame missing

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