Blame missing

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