Blame missing

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