source: git/libthread/tools/install.sh @ 54b24c

spielwiese
Last change on this file since 54b24c was 54b24c, checked in by Reimer Behrends <behrends@…>, 5 years ago
Finalizing thread support.
  • Property mode set to 100755
File size: 5.2 KB
Line 
1#!/bin/sh
2#
3# install - install a program, script, or datafile
4# This comes from X11R5.
5#
6# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $
7#
8# Copyright 1991 by the Massachusetts Institute of Technology
9#
10# Permission to use, copy, modify, distribute, and sell this software and its
11# documentation for any purpose is hereby granted without fee, provided that
12# the above copyright notice appear in all copies and that both that
13# copyright notice and this permission notice appear in supporting
14# documentation, and that the name of M.I.T. not be used in advertising or
15# publicity pertaining to distribution of the software without specific,
16# written prior permission.  M.I.T. makes no representations about the
17# suitability of this software for any purpose.  It is provided "as is"
18# without express or implied warranty.
19#
20# This script is compatible with the BSD install script, but was written
21# from scratch.
22#
23
24# set DOITPROG to echo to test this script
25
26# Don't use :- since 4.3BSD and earlier shells don't like it.
27doit="${DOITPROG-}"
28
29
30# put in absolute paths if you don't have them in your path; or use env. vars.
31
32mvprog="${MVPROG-mv}"
33cpprog="${CPPROG-cp}"
34chmodprog="${CHMODPROG-chmod}"
35chownprog="${CHOWNPROG-chown}"
36chgrpprog="${CHGRPPROG-chgrp}"
37stripprog="${STRIPPROG-strip}"
38rmprog="${RMPROG-rm}"
39mkdirprog="${MKDIRPROG-mkdir}"
40
41tranformbasename=""
42transform_arg=""
43instcmd="$mvprog"
44chmodcmd="$chmodprog 0755"
45chowncmd=""
46chgrpcmd=""
47stripcmd=""
48rmcmd="$rmprog -f"
49mvcmd="$mvprog"
50src=""
51dst=""
52dir_arg=""
53
54while [ x"$1" != x ]; do
55    case $1 in
56        -c) instcmd="$cpprog"
57            shift
58            continue;;
59
60        -d) dir_arg=true
61            shift
62            continue;;
63
64        -m) chmodcmd="$chmodprog $2"
65            shift
66            shift
67            continue;;
68
69        -o) chowncmd="$chownprog $2"
70            shift
71            shift
72            continue;;
73
74        -g) chgrpcmd="$chgrpprog $2"
75            shift
76            shift
77            continue;;
78
79        -s) stripcmd="$stripprog"
80            shift
81            continue;;
82
83        -t=*) transformarg=`echo $1 | sed 's/-t=//'`
84            shift
85            continue;;
86
87        -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
88            shift
89            continue;;
90
91        *)  if [ x"$src" = x ]
92            then
93                src=$1
94            else
95                # this colon is to work around a 386BSD /bin/sh bug
96                :
97                dst=$1
98            fi
99            shift
100            continue;;
101    esac
102done
103
104if [ x"$src" = x ]
105then
106        echo "install:  no input file specified"
107        exit 1
108else
109        true
110fi
111
112if [ x"$dir_arg" != x ]; then
113        dst=$src
114        src=""
115       
116        if [ -d $dst ]; then
117                instcmd=:
118        else
119                instcmd=mkdir
120        fi
121else
122
123# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
124# might cause directories to be created, which would be especially bad
125# if $src (and thus $dsttmp) contains '*'.
126
127        if [ -f $src -o -d $src ]
128        then
129                true
130        else
131                echo "install:  $src does not exist"
132                exit 1
133        fi
134       
135        if [ x"$dst" = x ]
136        then
137                echo "install:  no destination specified"
138                exit 1
139        else
140                true
141        fi
142
143# If destination is a directory, append the input filename; if your system
144# does not like double slashes in filenames, you may need to add some logic
145
146        if [ -d $dst ]
147        then
148                dst="$dst"/`basename $src`
149        else
150                true
151        fi
152fi
153
154## this sed command emulates the dirname command
155dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
156
157# Make sure that the destination directory exists.
158#  this part is taken from Noah Friedman's mkinstalldirs script
159
160# Skip lots of stat calls in the usual case.
161if [ ! -d "$dstdir" ]; then
162defaultIFS='   
163'
164IFS="${IFS-${defaultIFS}}"
165
166oIFS="${IFS}"
167# Some sh's can't handle IFS=/ for some reason.
168IFS='%'
169set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
170IFS="${oIFS}"
171
172pathcomp=''
173
174while [ $# -ne 0 ] ; do
175        pathcomp="${pathcomp}${1}"
176        shift
177
178        if [ ! -d "${pathcomp}" ] ;
179        then
180                $mkdirprog "${pathcomp}"
181        else
182                true
183        fi
184
185        pathcomp="${pathcomp}/"
186done
187fi
188
189if [ x"$dir_arg" != x ]
190then
191        $doit $instcmd $dst &&
192
193        if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
194        if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
195        if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
196        if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
197else
198
199# If we're going to rename the final executable, determine the name now.
200
201        if [ x"$transformarg" = x ] 
202        then
203                dstfile=`basename $dst`
204        else
205                dstfile=`basename $dst $transformbasename | 
206                        sed $transformarg`$transformbasename
207        fi
208
209# don't allow the sed command to completely eliminate the filename
210
211        if [ x"$dstfile" = x ] 
212        then
213                dstfile=`basename $dst`
214        else
215                true
216        fi
217
218# Make a temp file name in the proper directory.
219
220        dsttmp=$dstdir/#inst.$$#
221
222# Move or copy the file name to the temp name
223
224        $doit $instcmd $src $dsttmp &&
225
226        trap "rm -f ${dsttmp}" 0 &&
227
228# and set any options; do chmod last to preserve setuid bits
229
230# If any of these fail, we abort the whole thing.  If we want to
231# ignore errors from any of these, just make sure not to ignore
232# errors from the above "$doit $instcmd $src $dsttmp" command.
233
234        if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
235        if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
236        if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
237        if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
238
239# Now rename the file to the real destination.
240
241        $doit $rmcmd -f $dstdir/$dstfile &&
242        $doit $mvcmd $dsttmp $dstdir/$dstfile 
243
244fi &&
245
246
247exit 0
Note: See TracBrowser for help on using the repository browser.