Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
c62e0efa
Commit
c62e0efa
authored
Feb 10, 2001
by
Neil Schemenauer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Update install-sh using version from automake 1.4. Closes patch #103657
and #103717.
parent
ef0a0328
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
157 additions
and
26 deletions
+157
-26
install-sh
install-sh
+157
-26
No files found.
install-sh
View file @
c62e0efa
#!/bin/sh
#
# install - install a program, script, or datafile
# This comes from X11R5
; it is not part of GNU
.
# This comes from X11R5
(mit/util/scripts/install.sh)
.
#
#
$XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $
#
Copyright 1991 by the Massachusetts Institute of Technology
#
# This script is compatible with the BSD install script, but was written
# from scratch.
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
# the above copyright notice appear in all copies and that both that
# copyright notice and this permission notice appear in supporting
# documentation, and that the name of M.I.T. not be used in advertising or
# publicity pertaining to distribution of the software without specific,
# written prior permission. M.I.T. makes no representations about the
# suitability of this software for any purpose. It is provided "as is"
# without express or implied warranty.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch. It can only install one file at a time, a restriction
# shared with many OS's install programs.
# set DOITPROG to echo to test this script
...
...
@@ -26,9 +39,12 @@ chownprog="${CHOWNPROG-chown}"
chgrpprog
=
"
${
CHGRPPROG
-chgrp
}
"
stripprog
=
"
${
STRIPPROG
-strip
}
"
rmprog
=
"
${
RMPROG
-rm
}
"
mkdirprog
=
"
${
MKDIRPROG
-mkdir
}
"
transformbasename
=
""
transform_arg
=
""
instcmd
=
"
$mvprog
"
chmodcmd
=
""
chmodcmd
=
"
$chmodprog
0755
"
chowncmd
=
""
chgrpcmd
=
""
stripcmd
=
""
...
...
@@ -36,6 +52,7 @@ rmcmd="$rmprog -f"
mvcmd
=
"
$mvprog
"
src
=
""
dst
=
""
dir_arg
=
""
while
[
x
"
$1
"
!=
x
]
;
do
case
$1
in
...
...
@@ -43,6 +60,10 @@ while [ x"$1" != x ]; do
shift
continue
;;
-d
)
dir_arg
=
true
shift
continue
;;
-m
)
chmodcmd
=
"
$chmodprog
$2
"
shift
shift
...
...
@@ -62,10 +83,20 @@ while [ x"$1" != x ]; do
shift
continue
;;
-t
=
*
)
transformarg
=
`
echo
$1
|
sed
's/-t=//'
`
shift
continue
;;
-b
=
*
)
transformbasename
=
`
echo
$1
|
sed
's/-b=//'
`
shift
continue
;;
*
)
if
[
x
"
$src
"
=
x
]
then
src
=
$1
else
# this colon is to work around a 386BSD /bin/sh bug
:
dst
=
$1
fi
shift
...
...
@@ -75,46 +106,146 @@ done
if
[
x
"
$src
"
=
x
]
then
echo
"install: no input file specified"
exit
1
fi
if
[
x
"
$dst
"
=
x
]
then
echo
"install: no destination specified"
echo
"install: no input file specified"
exit
1
else
true
fi
if
[
x
"
$dir_arg
"
!=
x
]
;
then
dst
=
$src
src
=
""
if
[
-d
$dst
]
;
then
instcmd
=
:
chmodcmd
=
""
else
instcmd
=
mkdir
fi
else
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if
[
-f
$src
-o
-d
$src
]
then
true
else
echo
"install:
$src
does not exist"
exit
1
fi
if
[
x
"
$dst
"
=
x
]
then
echo
"install: no destination specified"
exit
1
else
true
fi
# If destination is a directory, append the input filename; if your system
# does not like double slashes in filenames, you may need to add some logic
if
[
-d
$dst
]
then
dst
=
"
$dst
"
/
`
basename
$src
`
if
[
-d
$dst
]
then
dst
=
"
$dst
"
/
`
basename
$src
`
else
true
fi
fi
## this sed command emulates the dirname command
dstdir
=
`
echo
$dst
|
sed
-e
's,[^/]*$,,;s,/$,,;s,^$,.,'
`
# Make sure that the destination directory exists.
# this part is taken from Noah Friedman's mkinstalldirs script
# Skip lots of stat calls in the usual case.
if
[
!
-d
"
$dstdir
"
]
;
then
defaultIFS
=
'
'
IFS
=
"
${
IFS
-
${
defaultIFS
}}
"
oIFS
=
"
${
IFS
}
"
# Some sh's can't handle IFS=/ for some reason.
IFS
=
'%'
set
-
`
echo
${
dstdir
}
|
sed
-e
's@/@%@g'
-e
's@^%@/@'
`
IFS
=
"
${
oIFS
}
"
pathcomp
=
''
while
[
$#
-ne
0
]
;
do
pathcomp
=
"
${
pathcomp
}${
1
}
"
shift
if
[
!
-d
"
${
pathcomp
}
"
]
;
then
$mkdirprog
"
${
pathcomp
}
"
else
true
fi
pathcomp
=
"
${
pathcomp
}
/"
done
fi
if
[
x
"
$dir_arg
"
!=
x
]
then
$doit
$instcmd
$dst
&&
if
[
x
"
$chowncmd
"
!=
x
]
;
then
$doit
$chowncmd
$dst
;
else
true
;
fi
&&
if
[
x
"
$chgrpcmd
"
!=
x
]
;
then
$doit
$chgrpcmd
$dst
;
else
true
;
fi
&&
if
[
x
"
$stripcmd
"
!=
x
]
;
then
$doit
$stripcmd
$dst
;
else
true
;
fi
&&
if
[
x
"
$chmodcmd
"
!=
x
]
;
then
$doit
$chmodcmd
$dst
;
else
true
;
fi
else
# If we're going to rename the final executable, determine the name now.
if
[
x
"
$transformarg
"
=
x
]
then
dstfile
=
`
basename
$dst
`
else
dstfile
=
`
basename
$dst
$transformbasename
|
sed
$transformarg
`
$transformbasename
fi
# don't allow the sed command to completely eliminate the filename
if
[
x
"
$dstfile
"
=
x
]
then
dstfile
=
`
basename
$dst
`
else
true
fi
# Make a temp file name in the proper directory.
# Avoid dirname, which doesn't exist everywhere...
dstdir
=
`
echo
$dst
|
sed
's,/[^/]*$,,'
`
dsttmp
=
$dstdir
/#inst.
$$
#
dsttmp
=
$dstdir
/#inst.
$$
#
# Move or copy the file name to the temp name
$doit
$instcmd
$src
$dsttmp
||
exit
$?
$doit
$instcmd
$src
$dsttmp
&&
trap
"rm -f
${
dsttmp
}
"
0
&&
# and set any options; do chmod last to preserve setuid bits
if
[
x
"
$chowncmd
"
!=
x
]
;
then
$doit
$chowncmd
$dsttmp
;
fi
if
[
x
"
$chgrpcmd
"
!=
x
]
;
then
$doit
$chgrpcmd
$dsttmp
;
fi
if
[
x
"
$stripcmd
"
!=
x
]
;
then
$doit
$stripcmd
$dsttmp
;
fi
if
[
x
"
$chmodcmd
"
!=
x
]
;
then
$doit
$chmodcmd
$dsttmp
;
fi
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $instcmd $src $dsttmp" command.
if
[
x
"
$chowncmd
"
!=
x
]
;
then
$doit
$chowncmd
$dsttmp
;
else
true
;
fi
&&
if
[
x
"
$chgrpcmd
"
!=
x
]
;
then
$doit
$chgrpcmd
$dsttmp
;
else
true
;
fi
&&
if
[
x
"
$stripcmd
"
!=
x
]
;
then
$doit
$stripcmd
$dsttmp
;
else
true
;
fi
&&
if
[
x
"
$chmodcmd
"
!=
x
]
;
then
$doit
$chmodcmd
$dsttmp
;
else
true
;
fi
&&
# Now rename the file to the real destination.
$doit
$rmcmd
$dst
$doit
$mvcmd
$dsttmp
$dst
||
exit
$?
$doit
$rmcmd
-f
$dstdir
/
$dstfile
&&
$doit
$mvcmd
$dsttmp
$dstdir
/
$dstfile
fi
&&
exit
0
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment