Blame missing

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