xref: /freebsd/contrib/openpam/missing (revision f0adf7f5cdd241db2f2c817683191a6ef64a4e95)
1#! /bin/sh
2# Common stub for a few missing GNU programs while installing.
3# Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
4# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
5
6# This program is free software; you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation; either version 2, or (at your option)
9# any later version.
10
11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14# GNU General Public License for more details.
15
16# You should have received a copy of the GNU General Public License
17# along with this program; if not, write to the Free Software
18# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19# 02111-1307, USA.
20
21# As a special exception to the GNU General Public License, if you
22# distribute this file as part of a program that contains a
23# configuration script generated by Autoconf, you may include it under
24# the same distribution terms that you use for the rest of that program.
25
26if test $# -eq 0; then
27  echo 1>&2 "Try \`$0 --help' for more information"
28  exit 1
29fi
30
31run=:
32
33# In the cases where this matters, `missing' is being run in the
34# srcdir already.
35if test -f configure.ac; then
36  configure_ac=configure.ac
37else
38  configure_ac=configure.in
39fi
40
41case "$1" in
42--run)
43  # Try to run requested program, and just exit if it succeeds.
44  run=
45  shift
46  "$@" && exit 0
47  ;;
48esac
49
50# If it does not exist, or fails to run (possibly an outdated version),
51# try to emulate it.
52case "$1" in
53
54  -h|--h|--he|--hel|--help)
55    echo "\
56$0 [OPTION]... PROGRAM [ARGUMENT]...
57
58Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
59error status if there is no known handling for PROGRAM.
60
61Options:
62  -h, --help      display this help and exit
63  -v, --version   output version information and exit
64  --run           try to run the given command, and emulate it if it fails
65
66Supported PROGRAM values:
67  aclocal      touch file \`aclocal.m4'
68  autoconf     touch file \`configure'
69  autoheader   touch file \`config.h.in'
70  automake     touch all \`Makefile.in' files
71  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
72  flex         create \`lex.yy.c', if possible, from existing .c
73  help2man     touch the output file
74  lex          create \`lex.yy.c', if possible, from existing .c
75  makeinfo     touch the output file
76  tar          try tar, gnutar, gtar, then tar without non-portable flags
77  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
78    ;;
79
80  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
81    echo "missing 0.3 - GNU automake"
82    ;;
83
84  -*)
85    echo 1>&2 "$0: Unknown \`$1' option"
86    echo 1>&2 "Try \`$0 --help' for more information"
87    exit 1
88    ;;
89
90  aclocal)
91    echo 1>&2 "\
92WARNING: \`$1' is missing on your system.  You should only need it if
93         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
94         to install the \`Automake' and \`Perl' packages.  Grab them from
95         any GNU archive site."
96    touch aclocal.m4
97    ;;
98
99  autoconf)
100    echo 1>&2 "\
101WARNING: \`$1' is missing on your system.  You should only need it if
102         you modified \`${configure_ac}'.  You might want to install the
103         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
104         archive site."
105    touch configure
106    ;;
107
108  autoheader)
109    echo 1>&2 "\
110WARNING: \`$1' is missing on your system.  You should only need it if
111         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
112         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
113         from any GNU archive site."
114    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
115    test -z "$files" && files="config.h"
116    touch_files=
117    for f in $files; do
118      case "$f" in
119      *:*) touch_files="$touch_files "`echo "$f" |
120				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
121      *) touch_files="$touch_files $f.in";;
122      esac
123    done
124    touch $touch_files
125    ;;
126
127  automake)
128    echo 1>&2 "\
129WARNING: \`$1' is missing on your system.  You should only need it if
130         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
131         You might want to install the \`Automake' and \`Perl' packages.
132         Grab them from any GNU archive site."
133    find . -type f -name Makefile.am -print |
134	   sed 's/\.am$/.in/' |
135	   while read f; do touch "$f"; done
136    ;;
137
138  bison|yacc)
139    echo 1>&2 "\
140WARNING: \`$1' is missing on your system.  You should only need it if
141         you modified a \`.y' file.  You may need the \`Bison' package
142         in order for those modifications to take effect.  You can get
143         \`Bison' from any GNU archive site."
144    rm -f y.tab.c y.tab.h
145    if [ $# -ne 1 ]; then
146        eval LASTARG="\${$#}"
147	case "$LASTARG" in
148	*.y)
149	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
150	    if [ -f "$SRCFILE" ]; then
151	         cp "$SRCFILE" y.tab.c
152	    fi
153	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
154	    if [ -f "$SRCFILE" ]; then
155	         cp "$SRCFILE" y.tab.h
156	    fi
157	  ;;
158	esac
159    fi
160    if [ ! -f y.tab.h ]; then
161	echo >y.tab.h
162    fi
163    if [ ! -f y.tab.c ]; then
164	echo 'main() { return 0; }' >y.tab.c
165    fi
166    ;;
167
168  lex|flex)
169    echo 1>&2 "\
170WARNING: \`$1' is missing on your system.  You should only need it if
171         you modified a \`.l' file.  You may need the \`Flex' package
172         in order for those modifications to take effect.  You can get
173         \`Flex' from any GNU archive site."
174    rm -f lex.yy.c
175    if [ $# -ne 1 ]; then
176        eval LASTARG="\${$#}"
177	case "$LASTARG" in
178	*.l)
179	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
180	    if [ -f "$SRCFILE" ]; then
181	         cp "$SRCFILE" lex.yy.c
182	    fi
183	  ;;
184	esac
185    fi
186    if [ ! -f lex.yy.c ]; then
187	echo 'main() { return 0; }' >lex.yy.c
188    fi
189    ;;
190
191  help2man)
192    echo 1>&2 "\
193WARNING: \`$1' is missing on your system.  You should only need it if
194	 you modified a dependency of a manual page.  You may need the
195	 \`Help2man' package in order for those modifications to take
196	 effect.  You can get \`Help2man' from any GNU archive site."
197
198    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
199    if test -z "$file"; then
200	file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
201    fi
202    if [ -f "$file" ]; then
203	touch $file
204    else
205	test -z "$file" || exec >$file
206	echo ".ab help2man is required to generate this page"
207	exit 1
208    fi
209    ;;
210
211  makeinfo)
212    if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
213       # We have makeinfo, but it failed.
214       exit 1
215    fi
216
217    echo 1>&2 "\
218WARNING: \`$1' is missing on your system.  You should only need it if
219         you modified a \`.texi' or \`.texinfo' file, or any other file
220         indirectly affecting the aspect of the manual.  The spurious
221         call might also be the consequence of using a buggy \`make' (AIX,
222         DU, IRIX).  You might want to install the \`Texinfo' package or
223         the \`GNU make' package.  Grab either from any GNU archive site."
224    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
225    if test -z "$file"; then
226      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
227      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
228    fi
229    touch $file
230    ;;
231
232  tar)
233    shift
234    if test -n "$run"; then
235      echo 1>&2 "ERROR: \`tar' requires --run"
236      exit 1
237    fi
238
239    # We have already tried tar in the generic part.
240    # Look for gnutar/gtar before invocation to avoid ugly error
241    # messages.
242    if (gnutar --version > /dev/null 2>&1); then
243       gnutar ${1+"$@"} && exit 0
244    fi
245    if (gtar --version > /dev/null 2>&1); then
246       gtar ${1+"$@"} && exit 0
247    fi
248    firstarg="$1"
249    if shift; then
250	case "$firstarg" in
251	*o*)
252	    firstarg=`echo "$firstarg" | sed s/o//`
253	    tar "$firstarg" ${1+"$@"} && exit 0
254	    ;;
255	esac
256	case "$firstarg" in
257	*h*)
258	    firstarg=`echo "$firstarg" | sed s/h//`
259	    tar "$firstarg" ${1+"$@"} && exit 0
260	    ;;
261	esac
262    fi
263
264    echo 1>&2 "\
265WARNING: I can't seem to be able to run \`tar' with the given arguments.
266         You may want to install GNU tar or Free paxutils, or check the
267         command line arguments."
268    exit 1
269    ;;
270
271  *)
272    echo 1>&2 "\
273WARNING: \`$1' is needed, and you do not seem to have it handy on your
274         system.  You might have modified some files without having the
275         proper tools for further handling them.  Check the \`README' file,
276         it often tells you about the needed prerequirements for installing
277         this package.  You may also peek at any GNU archive site, in case
278         some other package would contain this missing \`$1' program."
279    exit 1
280    ;;
281esac
282
283exit 0
284