Home | History | Annotate | Line # | Download | only in dist
missing revision 1.1
      1  1.1  nia #! /bin/sh
      2  1.1  nia # Common wrapper for a few potentially missing GNU programs.
      3  1.1  nia 
      4  1.1  nia scriptversion=2013-10-28.13; # UTC
      5  1.1  nia 
      6  1.1  nia # Copyright (C) 1996-2014 Free Software Foundation, Inc.
      7  1.1  nia # Originally written by Fran,cois Pinard <pinard (at] iro.umontreal.ca>, 1996.
      8  1.1  nia 
      9  1.1  nia # This program is free software; you can redistribute it and/or modify
     10  1.1  nia # it under the terms of the GNU General Public License as published by
     11  1.1  nia # the Free Software Foundation; either version 2, or (at your option)
     12  1.1  nia # any later version.
     13  1.1  nia 
     14  1.1  nia # This program is distributed in the hope that it will be useful,
     15  1.1  nia # but WITHOUT ANY WARRANTY; without even the implied warranty of
     16  1.1  nia # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     17  1.1  nia # GNU General Public License for more details.
     18  1.1  nia 
     19  1.1  nia # You should have received a copy of the GNU General Public License
     20  1.1  nia # along with this program.  If not, see <http://www.gnu.org/licenses/>.
     21  1.1  nia 
     22  1.1  nia # As a special exception to the GNU General Public License, if you
     23  1.1  nia # distribute this file as part of a program that contains a
     24  1.1  nia # configuration script generated by Autoconf, you may include it under
     25  1.1  nia # the same distribution terms that you use for the rest of that program.
     26  1.1  nia 
     27  1.1  nia if test $# -eq 0; then
     28  1.1  nia   echo 1>&2 "Try '$0 --help' for more information"
     29  1.1  nia   exit 1
     30  1.1  nia fi
     31  1.1  nia 
     32  1.1  nia case $1 in
     33  1.1  nia 
     34  1.1  nia   --is-lightweight)
     35  1.1  nia     # Used by our autoconf macros to check whether the available missing
     36  1.1  nia     # script is modern enough.
     37  1.1  nia     exit 0
     38  1.1  nia     ;;
     39  1.1  nia 
     40  1.1  nia   --run)
     41  1.1  nia     # Back-compat with the calling convention used by older automake.
     42  1.1  nia     shift
     43  1.1  nia     ;;
     44  1.1  nia 
     45  1.1  nia   -h|--h|--he|--hel|--help)
     46  1.1  nia     echo "\
     47  1.1  nia $0 [OPTION]... PROGRAM [ARGUMENT]...
     48  1.1  nia 
     49  1.1  nia Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
     50  1.1  nia to PROGRAM being missing or too old.
     51  1.1  nia 
     52  1.1  nia Options:
     53  1.1  nia   -h, --help      display this help and exit
     54  1.1  nia   -v, --version   output version information and exit
     55  1.1  nia 
     56  1.1  nia Supported PROGRAM values:
     57  1.1  nia   aclocal   autoconf  autoheader   autom4te  automake  makeinfo
     58  1.1  nia   bison     yacc      flex         lex       help2man
     59  1.1  nia 
     60  1.1  nia Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
     61  1.1  nia 'g' are ignored when checking the name.
     62  1.1  nia 
     63  1.1  nia Send bug reports to <bug-automake (at] gnu.org>."
     64  1.1  nia     exit $?
     65  1.1  nia     ;;
     66  1.1  nia 
     67  1.1  nia   -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
     68  1.1  nia     echo "missing $scriptversion (GNU Automake)"
     69  1.1  nia     exit $?
     70  1.1  nia     ;;
     71  1.1  nia 
     72  1.1  nia   -*)
     73  1.1  nia     echo 1>&2 "$0: unknown '$1' option"
     74  1.1  nia     echo 1>&2 "Try '$0 --help' for more information"
     75  1.1  nia     exit 1
     76  1.1  nia     ;;
     77  1.1  nia 
     78  1.1  nia esac
     79  1.1  nia 
     80  1.1  nia # Run the given program, remember its exit status.
     81  1.1  nia "$@"; st=$?
     82  1.1  nia 
     83  1.1  nia # If it succeeded, we are done.
     84  1.1  nia test $st -eq 0 && exit 0
     85  1.1  nia 
     86  1.1  nia # Also exit now if we it failed (or wasn't found), and '--version' was
     87  1.1  nia # passed; such an option is passed most likely to detect whether the
     88  1.1  nia # program is present and works.
     89  1.1  nia case $2 in --version|--help) exit $st;; esac
     90  1.1  nia 
     91  1.1  nia # Exit code 63 means version mismatch.  This often happens when the user
     92  1.1  nia # tries to use an ancient version of a tool on a file that requires a
     93  1.1  nia # minimum version.
     94  1.1  nia if test $st -eq 63; then
     95  1.1  nia   msg="probably too old"
     96  1.1  nia elif test $st -eq 127; then
     97  1.1  nia   # Program was missing.
     98  1.1  nia   msg="missing on your system"
     99  1.1  nia else
    100  1.1  nia   # Program was found and executed, but failed.  Give up.
    101  1.1  nia   exit $st
    102  1.1  nia fi
    103  1.1  nia 
    104  1.1  nia perl_URL=http://www.perl.org/
    105  1.1  nia flex_URL=http://flex.sourceforge.net/
    106  1.1  nia gnu_software_URL=http://www.gnu.org/software
    107  1.1  nia 
    108  1.1  nia program_details ()
    109  1.1  nia {
    110  1.1  nia   case $1 in
    111  1.1  nia     aclocal|automake)
    112  1.1  nia       echo "The '$1' program is part of the GNU Automake package:"
    113  1.1  nia       echo "<$gnu_software_URL/automake>"
    114  1.1  nia       echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
    115  1.1  nia       echo "<$gnu_software_URL/autoconf>"
    116  1.1  nia       echo "<$gnu_software_URL/m4/>"
    117  1.1  nia       echo "<$perl_URL>"
    118  1.1  nia       ;;
    119  1.1  nia     autoconf|autom4te|autoheader)
    120  1.1  nia       echo "The '$1' program is part of the GNU Autoconf package:"
    121  1.1  nia       echo "<$gnu_software_URL/autoconf/>"
    122  1.1  nia       echo "It also requires GNU m4 and Perl in order to run:"
    123  1.1  nia       echo "<$gnu_software_URL/m4/>"
    124  1.1  nia       echo "<$perl_URL>"
    125  1.1  nia       ;;
    126  1.1  nia   esac
    127  1.1  nia }
    128  1.1  nia 
    129  1.1  nia give_advice ()
    130  1.1  nia {
    131  1.1  nia   # Normalize program name to check for.
    132  1.1  nia   normalized_program=`echo "$1" | sed '
    133  1.1  nia     s/^gnu-//; t
    134  1.1  nia     s/^gnu//; t
    135  1.1  nia     s/^g//; t'`
    136  1.1  nia 
    137  1.1  nia   printf '%s\n' "'$1' is $msg."
    138  1.1  nia 
    139  1.1  nia   configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
    140  1.1  nia   case $normalized_program in
    141  1.1  nia     autoconf*)
    142  1.1  nia       echo "You should only need it if you modified 'configure.ac',"
    143  1.1  nia       echo "or m4 files included by it."
    144  1.1  nia       program_details 'autoconf'
    145  1.1  nia       ;;
    146  1.1  nia     autoheader*)
    147  1.1  nia       echo "You should only need it if you modified 'acconfig.h' or"
    148  1.1  nia       echo "$configure_deps."
    149  1.1  nia       program_details 'autoheader'
    150  1.1  nia       ;;
    151  1.1  nia     automake*)
    152  1.1  nia       echo "You should only need it if you modified 'Makefile.am' or"
    153  1.1  nia       echo "$configure_deps."
    154  1.1  nia       program_details 'automake'
    155  1.1  nia       ;;
    156  1.1  nia     aclocal*)
    157  1.1  nia       echo "You should only need it if you modified 'acinclude.m4' or"
    158  1.1  nia       echo "$configure_deps."
    159  1.1  nia       program_details 'aclocal'
    160  1.1  nia       ;;
    161  1.1  nia    autom4te*)
    162  1.1  nia       echo "You might have modified some maintainer files that require"
    163  1.1  nia       echo "the 'autom4te' program to be rebuilt."
    164  1.1  nia       program_details 'autom4te'
    165  1.1  nia       ;;
    166  1.1  nia     bison*|yacc*)
    167  1.1  nia       echo "You should only need it if you modified a '.y' file."
    168  1.1  nia       echo "You may want to install the GNU Bison package:"
    169  1.1  nia       echo "<$gnu_software_URL/bison/>"
    170  1.1  nia       ;;
    171  1.1  nia     lex*|flex*)
    172  1.1  nia       echo "You should only need it if you modified a '.l' file."
    173  1.1  nia       echo "You may want to install the Fast Lexical Analyzer package:"
    174  1.1  nia       echo "<$flex_URL>"
    175  1.1  nia       ;;
    176  1.1  nia     help2man*)
    177  1.1  nia       echo "You should only need it if you modified a dependency" \
    178  1.1  nia            "of a man page."
    179  1.1  nia       echo "You may want to install the GNU Help2man package:"
    180  1.1  nia       echo "<$gnu_software_URL/help2man/>"
    181  1.1  nia     ;;
    182  1.1  nia     makeinfo*)
    183  1.1  nia       echo "You should only need it if you modified a '.texi' file, or"
    184  1.1  nia       echo "any other file indirectly affecting the aspect of the manual."
    185  1.1  nia       echo "You might want to install the Texinfo package:"
    186  1.1  nia       echo "<$gnu_software_URL/texinfo/>"
    187  1.1  nia       echo "The spurious makeinfo call might also be the consequence of"
    188  1.1  nia       echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
    189  1.1  nia       echo "want to install GNU make:"
    190  1.1  nia       echo "<$gnu_software_URL/make/>"
    191  1.1  nia       ;;
    192  1.1  nia     *)
    193  1.1  nia       echo "You might have modified some files without having the proper"
    194  1.1  nia       echo "tools for further handling them.  Check the 'README' file, it"
    195  1.1  nia       echo "often tells you about the needed prerequisites for installing"
    196  1.1  nia       echo "this package.  You may also peek at any GNU archive site, in"
    197  1.1  nia       echo "case some other package contains this missing '$1' program."
    198  1.1  nia       ;;
    199  1.1  nia   esac
    200  1.1  nia }
    201  1.1  nia 
    202  1.1  nia give_advice "$1" | sed -e '1s/^/WARNING: /' \
    203  1.1  nia                        -e '2,$s/^/         /' >&2
    204  1.1  nia 
    205  1.1  nia # Propagate the correct exit status (expected to be 127 for a program
    206  1.1  nia # not found, 63 for a program that failed due to version mismatch).
    207  1.1  nia exit $st
    208  1.1  nia 
    209  1.1  nia # Local variables:
    210  1.1  nia # eval: (add-hook 'write-file-hooks 'time-stamp)
    211  1.1  nia # time-stamp-start: "scriptversion="
    212  1.1  nia # time-stamp-format: "%:y-%02m-%02d.%02H"
    213  1.1  nia # time-stamp-time-zone: "UTC"
    214  1.1  nia # time-stamp-end: "; # UTC"
    215  1.1  nia # End:
    216