Blame missing

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