missing revision 9d0ccd10
17914d74bSmrg#! /bin/sh 2e6d5e4e0Smrg# Common wrapper for a few potentially missing GNU programs. 37914d74bSmrg 49d0ccd10Smrgscriptversion=2013-10-28.13; # UTC 57914d74bSmrg 69d0ccd10Smrg# Copyright (C) 1996-2014 Free Software Foundation, Inc. 7e6d5e4e0Smrg# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. 87914d74bSmrg 97914d74bSmrg# This program is free software; you can redistribute it and/or modify 107914d74bSmrg# it under the terms of the GNU General Public License as published by 117914d74bSmrg# the Free Software Foundation; either version 2, or (at your option) 127914d74bSmrg# any later version. 137914d74bSmrg 147914d74bSmrg# This program is distributed in the hope that it will be useful, 157914d74bSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 167914d74bSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 177914d74bSmrg# GNU General Public License for more details. 187914d74bSmrg 197914d74bSmrg# You should have received a copy of the GNU General Public License 20e8ead290Smrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 217914d74bSmrg 227914d74bSmrg# As a special exception to the GNU General Public License, if you 237914d74bSmrg# distribute this file as part of a program that contains a 247914d74bSmrg# configuration script generated by Autoconf, you may include it under 257914d74bSmrg# the same distribution terms that you use for the rest of that program. 267914d74bSmrg 277914d74bSmrgif test $# -eq 0; then 28e6d5e4e0Smrg echo 1>&2 "Try '$0 --help' for more information" 297914d74bSmrg exit 1 307914d74bSmrgfi 317914d74bSmrg 32e6d5e4e0Smrgcase $1 in 337914d74bSmrg 34e6d5e4e0Smrg --is-lightweight) 35e6d5e4e0Smrg # Used by our autoconf macros to check whether the available missing 36e6d5e4e0Smrg # script is modern enough. 37e6d5e4e0Smrg exit 0 38e6d5e4e0Smrg ;; 397914d74bSmrg 40e6d5e4e0Smrg --run) 41e6d5e4e0Smrg # Back-compat with the calling convention used by older automake. 42e6d5e4e0Smrg shift 43e6d5e4e0Smrg ;; 447914d74bSmrg 457914d74bSmrg -h|--h|--he|--hel|--help) 467914d74bSmrg echo "\ 477914d74bSmrg$0 [OPTION]... PROGRAM [ARGUMENT]... 487914d74bSmrg 49e6d5e4e0SmrgRun 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due 50e6d5e4e0Smrgto PROGRAM being missing or too old. 517914d74bSmrg 527914d74bSmrgOptions: 537914d74bSmrg -h, --help display this help and exit 547914d74bSmrg -v, --version output version information and exit 557914d74bSmrg 567914d74bSmrgSupported PROGRAM values: 57e6d5e4e0Smrg aclocal autoconf autoheader autom4te automake makeinfo 58e6d5e4e0Smrg bison yacc flex lex help2man 597914d74bSmrg 60e6d5e4e0SmrgVersion suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 61e6d5e4e0Smrg'g' are ignored when checking the name. 62e8ead290Smrg 637914d74bSmrgSend bug reports to <bug-automake@gnu.org>." 647914d74bSmrg exit $? 657914d74bSmrg ;; 667914d74bSmrg 677914d74bSmrg -v|--v|--ve|--ver|--vers|--versi|--versio|--version) 687914d74bSmrg echo "missing $scriptversion (GNU Automake)" 697914d74bSmrg exit $? 707914d74bSmrg ;; 717914d74bSmrg 727914d74bSmrg -*) 73e6d5e4e0Smrg echo 1>&2 "$0: unknown '$1' option" 74e6d5e4e0Smrg echo 1>&2 "Try '$0 --help' for more information" 757914d74bSmrg exit 1 767914d74bSmrg ;; 777914d74bSmrg 787914d74bSmrgesac 797914d74bSmrg 80e6d5e4e0Smrg# Run the given program, remember its exit status. 81e6d5e4e0Smrg"$@"; st=$? 82e6d5e4e0Smrg 83e6d5e4e0Smrg# If it succeeded, we are done. 84e6d5e4e0Smrgtest $st -eq 0 && exit 0 85e6d5e4e0Smrg 86e6d5e4e0Smrg# Also exit now if we it failed (or wasn't found), and '--version' was 87e6d5e4e0Smrg# passed; such an option is passed most likely to detect whether the 88e6d5e4e0Smrg# program is present and works. 89e6d5e4e0Smrgcase $2 in --version|--help) exit $st;; esac 90e6d5e4e0Smrg 91e6d5e4e0Smrg# Exit code 63 means version mismatch. This often happens when the user 92e6d5e4e0Smrg# tries to use an ancient version of a tool on a file that requires a 93e6d5e4e0Smrg# minimum version. 94e6d5e4e0Smrgif test $st -eq 63; then 95e6d5e4e0Smrg msg="probably too old" 96e6d5e4e0Smrgelif test $st -eq 127; then 97e6d5e4e0Smrg # Program was missing. 98e6d5e4e0Smrg msg="missing on your system" 99e6d5e4e0Smrgelse 100e6d5e4e0Smrg # Program was found and executed, but failed. Give up. 101e6d5e4e0Smrg exit $st 102e6d5e4e0Smrgfi 1037914d74bSmrg 104e6d5e4e0Smrgperl_URL=http://www.perl.org/ 105e6d5e4e0Smrgflex_URL=http://flex.sourceforge.net/ 106e6d5e4e0Smrggnu_software_URL=http://www.gnu.org/software 107e6d5e4e0Smrg 108e6d5e4e0Smrgprogram_details () 109e6d5e4e0Smrg{ 110e6d5e4e0Smrg case $1 in 111e6d5e4e0Smrg aclocal|automake) 112e6d5e4e0Smrg echo "The '$1' program is part of the GNU Automake package:" 113e6d5e4e0Smrg echo "<$gnu_software_URL/automake>" 114e6d5e4e0Smrg echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" 115e6d5e4e0Smrg echo "<$gnu_software_URL/autoconf>" 116e6d5e4e0Smrg echo "<$gnu_software_URL/m4/>" 117e6d5e4e0Smrg echo "<$perl_URL>" 118e6d5e4e0Smrg ;; 119e6d5e4e0Smrg autoconf|autom4te|autoheader) 120e6d5e4e0Smrg echo "The '$1' program is part of the GNU Autoconf package:" 121e6d5e4e0Smrg echo "<$gnu_software_URL/autoconf/>" 122e6d5e4e0Smrg echo "It also requires GNU m4 and Perl in order to run:" 123e6d5e4e0Smrg echo "<$gnu_software_URL/m4/>" 124e6d5e4e0Smrg echo "<$perl_URL>" 125e6d5e4e0Smrg ;; 126e6d5e4e0Smrg esac 127e6d5e4e0Smrg} 128e6d5e4e0Smrg 129e6d5e4e0Smrggive_advice () 130e6d5e4e0Smrg{ 131e6d5e4e0Smrg # Normalize program name to check for. 132e6d5e4e0Smrg normalized_program=`echo "$1" | sed ' 133e6d5e4e0Smrg s/^gnu-//; t 134e6d5e4e0Smrg s/^gnu//; t 135e6d5e4e0Smrg s/^g//; t'` 136e6d5e4e0Smrg 137e6d5e4e0Smrg printf '%s\n' "'$1' is $msg." 138e6d5e4e0Smrg 139e6d5e4e0Smrg configure_deps="'configure.ac' or m4 files included by 'configure.ac'" 140e6d5e4e0Smrg case $normalized_program in 141e6d5e4e0Smrg autoconf*) 142e6d5e4e0Smrg echo "You should only need it if you modified 'configure.ac'," 143e6d5e4e0Smrg echo "or m4 files included by it." 144e6d5e4e0Smrg program_details 'autoconf' 145e6d5e4e0Smrg ;; 146e6d5e4e0Smrg autoheader*) 147e6d5e4e0Smrg echo "You should only need it if you modified 'acconfig.h' or" 148e6d5e4e0Smrg echo "$configure_deps." 149e6d5e4e0Smrg program_details 'autoheader' 150e6d5e4e0Smrg ;; 151e6d5e4e0Smrg automake*) 152e6d5e4e0Smrg echo "You should only need it if you modified 'Makefile.am' or" 153e6d5e4e0Smrg echo "$configure_deps." 154e6d5e4e0Smrg program_details 'automake' 155e6d5e4e0Smrg ;; 156e6d5e4e0Smrg aclocal*) 157e6d5e4e0Smrg echo "You should only need it if you modified 'acinclude.m4' or" 158e6d5e4e0Smrg echo "$configure_deps." 159e6d5e4e0Smrg program_details 'aclocal' 160e6d5e4e0Smrg ;; 161e6d5e4e0Smrg autom4te*) 162e6d5e4e0Smrg echo "You might have modified some maintainer files that require" 1639d0ccd10Smrg echo "the 'autom4te' program to be rebuilt." 164e6d5e4e0Smrg program_details 'autom4te' 165e6d5e4e0Smrg ;; 166e6d5e4e0Smrg bison*|yacc*) 167e6d5e4e0Smrg echo "You should only need it if you modified a '.y' file." 168e6d5e4e0Smrg echo "You may want to install the GNU Bison package:" 169e6d5e4e0Smrg echo "<$gnu_software_URL/bison/>" 170e6d5e4e0Smrg ;; 171e6d5e4e0Smrg lex*|flex*) 172e6d5e4e0Smrg echo "You should only need it if you modified a '.l' file." 173e6d5e4e0Smrg echo "You may want to install the Fast Lexical Analyzer package:" 174e6d5e4e0Smrg echo "<$flex_URL>" 175e6d5e4e0Smrg ;; 176e6d5e4e0Smrg help2man*) 177e6d5e4e0Smrg echo "You should only need it if you modified a dependency" \ 178e6d5e4e0Smrg "of a man page." 179e6d5e4e0Smrg echo "You may want to install the GNU Help2man package:" 180e6d5e4e0Smrg echo "<$gnu_software_URL/help2man/>" 181e6d5e4e0Smrg ;; 182e6d5e4e0Smrg makeinfo*) 183e6d5e4e0Smrg echo "You should only need it if you modified a '.texi' file, or" 184e6d5e4e0Smrg echo "any other file indirectly affecting the aspect of the manual." 185e6d5e4e0Smrg echo "You might want to install the Texinfo package:" 186e6d5e4e0Smrg echo "<$gnu_software_URL/texinfo/>" 187e6d5e4e0Smrg echo "The spurious makeinfo call might also be the consequence of" 188e6d5e4e0Smrg echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" 189e6d5e4e0Smrg echo "want to install GNU make:" 190e6d5e4e0Smrg echo "<$gnu_software_URL/make/>" 191e6d5e4e0Smrg ;; 192e6d5e4e0Smrg *) 193e6d5e4e0Smrg echo "You might have modified some files without having the proper" 194e6d5e4e0Smrg echo "tools for further handling them. Check the 'README' file, it" 195e6d5e4e0Smrg echo "often tells you about the needed prerequisites for installing" 196e6d5e4e0Smrg echo "this package. You may also peek at any GNU archive site, in" 197e6d5e4e0Smrg echo "case some other package contains this missing '$1' program." 198e6d5e4e0Smrg ;; 199e6d5e4e0Smrg esac 200e6d5e4e0Smrg} 201e6d5e4e0Smrg 202e6d5e4e0Smrggive_advice "$1" | sed -e '1s/^/WARNING: /' \ 203e6d5e4e0Smrg -e '2,$s/^/ /' >&2 204e6d5e4e0Smrg 205e6d5e4e0Smrg# Propagate the correct exit status (expected to be 127 for a program 206e6d5e4e0Smrg# not found, 63 for a program that failed due to version mismatch). 207e6d5e4e0Smrgexit $st 2087914d74bSmrg 2097914d74bSmrg# Local variables: 2107914d74bSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 2117914d74bSmrg# time-stamp-start: "scriptversion=" 2127914d74bSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 213e8ead290Smrg# time-stamp-time-zone: "UTC" 214e8ead290Smrg# time-stamp-end: "; # UTC" 2157914d74bSmrg# End: 216