Blame missing

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