Blame missing

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