annotate src/install-sh @ 32894:5c72cda80e1c v9.0.1756

patch 9.0.1756: failing cursorline sign test Commit: https://github.com/vim/vim/commit/e1eaae27f4f2d2522e45397756f3bca42be50988 Author: Christian Brabandt <cb@256bit.org> Date: Sat Aug 19 22:36:12 2023 +0200 patch 9.0.1756: failing cursorline sign test Problem: failing cursorline sign test Solution: only reset char attr, if cursorline option is not set Unfortunately, commit dbeadf05b6a152e7d9c5cc23d9202057f8e99884 causes a failure with the sign test Test_sign_cursor_position() The root cause is, that resetting the character attribute will also reset the existing cursor line highlighting and this breaks the test, that expects the cursor line highlighting to overrule the sign line highlighting. So change the condition to reset the character attribute by making sure that this only happens, if the 'cursorline' option is not active and the cursor is not at the same line as the line to be drawn closes: #12854 closes: #12859 Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Sat, 19 Aug 2023 22:45:03 +0200
parents 3276298c67c5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11370
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
1 #!/bin/sh
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
2 # install - install a program, script, or datafile
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
3
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
4 scriptversion=2013-12-25.23; # UTC
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
5
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
6 # This originates from X11R5 (mit/util/scripts/install.sh), which was
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
7 # later released in X11R6 (xc/config/util/install.sh) with the
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
8 # following copyright and license.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
9 #
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
10 # Copyright (C) 1994 X Consortium
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
11 #
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
12 # Permission is hereby granted, free of charge, to any person obtaining a copy
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
13 # of this software and associated documentation files (the "Software"), to
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
14 # deal in the Software without restriction, including without limitation the
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
15 # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
16 # sell copies of the Software, and to permit persons to whom the Software is
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
17 # furnished to do so, subject to the following conditions:
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
18 #
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
19 # The above copyright notice and this permission notice shall be included in
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
20 # all copies or substantial portions of the Software.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
21 #
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
22 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
23 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
24 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
25 # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
26 # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
27 # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
28 #
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
29 # Except as contained in this notice, the name of the X Consortium shall not
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
30 # be used in advertising or otherwise to promote the sale, use or other deal-
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
31 # ings in this Software without prior written authorization from the X Consor-
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
32 # tium.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
33 #
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
34 #
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
35 # FSF changes to this file are in the public domain.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
36 #
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
37 # Calling this script install-sh is preferred over install.sh, to prevent
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
38 # 'make' implicit rules from creating a file called install from it
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
39 # when there is no Makefile.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
40 #
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
41 # This script is compatible with the BSD install script, but was written
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
42 # from scratch.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
43
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
44 tab=' '
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
45 nl='
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
46 '
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
47 IFS=" $tab$nl"
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
48
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
49 # Set DOITPROG to "echo" to test this script.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
50
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
51 doit=${DOITPROG-}
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
52 doit_exec=${doit:-exec}
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
53
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
54 # Put in absolute file names if you don't have them in your path;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
55 # or use environment vars.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
56
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
57 chgrpprog=${CHGRPPROG-chgrp}
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
58 chmodprog=${CHMODPROG-chmod}
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
59 chownprog=${CHOWNPROG-chown}
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
60 cmpprog=${CMPPROG-cmp}
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
61 cpprog=${CPPROG-cp}
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
62 mkdirprog=${MKDIRPROG-mkdir}
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
63 mvprog=${MVPROG-mv}
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
64 rmprog=${RMPROG-rm}
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
65 stripprog=${STRIPPROG-strip}
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
66
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
67 posix_mkdir=
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
68
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
69 # Desired mode of installed file.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
70 mode=0755
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
71
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
72 chgrpcmd=
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
73 chmodcmd=$chmodprog
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
74 chowncmd=
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
75 mvcmd=$mvprog
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
76 rmcmd="$rmprog -f"
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
77 stripcmd=
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
78
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
79 src=
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
80 dst=
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
81 dir_arg=
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
82 dst_arg=
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
83
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
84 copy_on_change=false
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
85 is_target_a_directory=possibly
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
86
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
87 usage="\
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
88 Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
89 or: $0 [OPTION]... SRCFILES... DIRECTORY
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
90 or: $0 [OPTION]... -t DIRECTORY SRCFILES...
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
91 or: $0 [OPTION]... -d DIRECTORIES...
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
92
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
93 In the 1st form, copy SRCFILE to DSTFILE.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
94 In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
95 In the 4th, create DIRECTORIES.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
96
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
97 Options:
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
98 --help display this help and exit.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
99 --version display version info and exit.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
100
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
101 -c (ignored)
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
102 -C install only if different (preserve the last data modification time)
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
103 -d create directories instead of installing files.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
104 -g GROUP $chgrpprog installed files to GROUP.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
105 -m MODE $chmodprog installed files to MODE.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
106 -o USER $chownprog installed files to USER.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
107 -s $stripprog installed files.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
108 -t DIRECTORY install into DIRECTORY.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
109 -T report an error if DSTFILE is a directory.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
110
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
111 Environment variables override the default commands:
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
112 CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
113 RMPROG STRIPPROG
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
114 "
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
115
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
116 while test $# -ne 0; do
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
117 case $1 in
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
118 -c) ;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
119
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
120 -C) copy_on_change=true;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
121
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
122 -d) dir_arg=true;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
123
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
124 -g) chgrpcmd="$chgrpprog $2"
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
125 shift;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
126
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
127 --help) echo "$usage"; exit $?;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
128
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
129 -m) mode=$2
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
130 case $mode in
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
131 *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
132 echo "$0: invalid mode: $mode" >&2
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
133 exit 1;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
134 esac
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
135 shift;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
136
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
137 -o) chowncmd="$chownprog $2"
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
138 shift;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
139
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
140 -s) stripcmd=$stripprog;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
141
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
142 -t)
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
143 is_target_a_directory=always
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
144 dst_arg=$2
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
145 # Protect names problematic for 'test' and other utilities.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
146 case $dst_arg in
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
147 -* | [=\(\)!]) dst_arg=./$dst_arg;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
148 esac
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
149 shift;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
150
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
151 -T) is_target_a_directory=never;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
152
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
153 --version) echo "$0 $scriptversion"; exit $?;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
154
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
155 --) shift
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
156 break;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
157
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
158 -*) echo "$0: invalid option: $1" >&2
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
159 exit 1;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
160
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
161 *) break;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
162 esac
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
163 shift
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
164 done
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
165
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
166 # We allow the use of options -d and -T together, by making -d
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
167 # take the precedence; this is for compatibility with GNU install.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
168
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
169 if test -n "$dir_arg"; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
170 if test -n "$dst_arg"; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
171 echo "$0: target directory not allowed when installing a directory." >&2
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
172 exit 1
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
173 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
174 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
175
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
176 if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
177 # When -d is used, all remaining arguments are directories to create.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
178 # When -t is used, the destination is already specified.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
179 # Otherwise, the last argument is the destination. Remove it from $@.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
180 for arg
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
181 do
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
182 if test -n "$dst_arg"; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
183 # $@ is not empty: it contains at least $arg.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
184 set fnord "$@" "$dst_arg"
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
185 shift # fnord
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
186 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
187 shift # arg
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
188 dst_arg=$arg
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
189 # Protect names problematic for 'test' and other utilities.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
190 case $dst_arg in
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
191 -* | [=\(\)!]) dst_arg=./$dst_arg;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
192 esac
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
193 done
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
194 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
195
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
196 if test $# -eq 0; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
197 if test -z "$dir_arg"; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
198 echo "$0: no input file specified." >&2
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
199 exit 1
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
200 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
201 # It's OK to call 'install-sh -d' without argument.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
202 # This can happen when creating conditional directories.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
203 exit 0
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
204 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
205
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
206 if test -z "$dir_arg"; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
207 if test $# -gt 1 || test "$is_target_a_directory" = always; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
208 if test ! -d "$dst_arg"; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
209 echo "$0: $dst_arg: Is not a directory." >&2
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
210 exit 1
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
211 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
212 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
213 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
214
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
215 if test -z "$dir_arg"; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
216 do_exit='(exit $ret); exit $ret'
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
217 trap "ret=129; $do_exit" 1
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
218 trap "ret=130; $do_exit" 2
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
219 trap "ret=141; $do_exit" 13
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
220 trap "ret=143; $do_exit" 15
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
221
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
222 # Set umask so as not to create temps with too-generous modes.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
223 # However, 'strip' requires both read and write access to temps.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
224 case $mode in
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
225 # Optimize common cases.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
226 *644) cp_umask=133;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
227 *755) cp_umask=22;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
228
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
229 *[0-7])
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
230 if test -z "$stripcmd"; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
231 u_plus_rw=
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
232 else
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
233 u_plus_rw='% 200'
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
234 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
235 cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
236 *)
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
237 if test -z "$stripcmd"; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
238 u_plus_rw=
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
239 else
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
240 u_plus_rw=,u+rw
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
241 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
242 cp_umask=$mode$u_plus_rw;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
243 esac
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
244 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
245
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
246 for src
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
247 do
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
248 # Protect names problematic for 'test' and other utilities.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
249 case $src in
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
250 -* | [=\(\)!]) src=./$src;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
251 esac
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
252
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
253 if test -n "$dir_arg"; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
254 dst=$src
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
255 dstdir=$dst
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
256 test -d "$dstdir"
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
257 dstdir_status=$?
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
258 else
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
259
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
260 # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
261 # might cause directories to be created, which would be especially bad
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
262 # if $src (and thus $dsttmp) contains '*'.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
263 if test ! -f "$src" && test ! -d "$src"; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
264 echo "$0: $src does not exist." >&2
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
265 exit 1
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
266 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
267
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
268 if test -z "$dst_arg"; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
269 echo "$0: no destination specified." >&2
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
270 exit 1
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
271 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
272 dst=$dst_arg
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
273
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
274 # If destination is a directory, append the input filename; won't work
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
275 # if double slashes aren't ignored.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
276 if test -d "$dst"; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
277 if test "$is_target_a_directory" = never; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
278 echo "$0: $dst_arg: Is a directory" >&2
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
279 exit 1
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
280 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
281 dstdir=$dst
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
282 dst=$dstdir/`basename "$src"`
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
283 dstdir_status=0
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
284 else
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
285 dstdir=`dirname "$dst"`
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
286 test -d "$dstdir"
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
287 dstdir_status=$?
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
288 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
289 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
290
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
291 obsolete_mkdir_used=false
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
292
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
293 if test $dstdir_status != 0; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
294 case $posix_mkdir in
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
295 '')
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
296 # Create intermediate dirs using mode 755 as modified by the umask.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
297 # This is like FreeBSD 'install' as of 1997-10-28.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
298 umask=`umask`
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
299 case $stripcmd.$umask in
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
300 # Optimize common cases.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
301 *[2367][2367]) mkdir_umask=$umask;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
302 .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
303
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
304 *[0-7])
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
305 mkdir_umask=`expr $umask + 22 \
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
306 - $umask % 100 % 40 + $umask % 20 \
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
307 - $umask % 10 % 4 + $umask % 2
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
308 `;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
309 *) mkdir_umask=$umask,go-w;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
310 esac
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
311
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
312 # With -d, create the new directory with the user-specified mode.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
313 # Otherwise, rely on $mkdir_umask.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
314 if test -n "$dir_arg"; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
315 mkdir_mode=-m$mode
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
316 else
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
317 mkdir_mode=
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
318 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
319
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
320 posix_mkdir=false
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
321 case $umask in
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
322 *[123567][0-7][0-7])
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
323 # POSIX mkdir -p sets u+wx bits regardless of umask, which
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
324 # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
325 ;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
326 *)
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
327 tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
328 trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
329
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
330 if (umask $mkdir_umask &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
331 exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
332 then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
333 if test -z "$dir_arg" || {
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
334 # Check for POSIX incompatibilities with -m.
29898
3276298c67c5 patch 9.0.0287: Irix systems no longer exist
Bram Moolenaar <Bram@vim.org>
parents: 11370
diff changeset
335 # HP-UX 11.23 mkdir -m -p sets group- or
11370
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
336 # other-writable bit of parent directory when it shouldn't.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
337 # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
338 ls_ld_tmpdir=`ls -ld "$tmpdir"`
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
339 case $ls_ld_tmpdir in
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
340 d????-?r-*) different_mode=700;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
341 d????-?--*) different_mode=755;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
342 *) false;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
343 esac &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
344 $mkdirprog -m$different_mode -p -- "$tmpdir" && {
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
345 ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
346 test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
347 }
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
348 }
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
349 then posix_mkdir=:
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
350 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
351 rmdir "$tmpdir/d" "$tmpdir"
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
352 else
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
353 # Remove any dirs left behind by ancient mkdir implementations.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
354 rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
355 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
356 trap '' 0;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
357 esac;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
358 esac
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
359
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
360 if
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
361 $posix_mkdir && (
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
362 umask $mkdir_umask &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
363 $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
364 )
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
365 then :
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
366 else
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
367
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
368 # The umask is ridiculous, or mkdir does not conform to POSIX,
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
369 # or it failed possibly due to a race condition. Create the
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
370 # directory the slow way, step by step, checking for races as we go.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
371
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
372 case $dstdir in
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
373 /*) prefix='/';;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
374 [-=\(\)!]*) prefix='./';;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
375 *) prefix='';;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
376 esac
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
377
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
378 oIFS=$IFS
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
379 IFS=/
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
380 set -f
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
381 set fnord $dstdir
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
382 shift
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
383 set +f
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
384 IFS=$oIFS
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
385
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
386 prefixes=
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
387
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
388 for d
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
389 do
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
390 test X"$d" = X && continue
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
391
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
392 prefix=$prefix$d
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
393 if test -d "$prefix"; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
394 prefixes=
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
395 else
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
396 if $posix_mkdir; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
397 (umask=$mkdir_umask &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
398 $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
399 # Don't fail if two instances are running concurrently.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
400 test -d "$prefix" || exit 1
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
401 else
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
402 case $prefix in
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
403 *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
404 *) qprefix=$prefix;;
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
405 esac
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
406 prefixes="$prefixes '$qprefix'"
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
407 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
408 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
409 prefix=$prefix/
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
410 done
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
411
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
412 if test -n "$prefixes"; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
413 # Don't fail if two instances are running concurrently.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
414 (umask $mkdir_umask &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
415 eval "\$doit_exec \$mkdirprog $prefixes") ||
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
416 test -d "$dstdir" || exit 1
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
417 obsolete_mkdir_used=true
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
418 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
419 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
420 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
421
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
422 if test -n "$dir_arg"; then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
423 { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
424 { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
425 { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
426 test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
427 else
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
428
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
429 # Make a couple of temp file names in the proper directory.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
430 dsttmp=$dstdir/_inst.$$_
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
431 rmtmp=$dstdir/_rm.$$_
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
432
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
433 # Trap to clean up those temp files at exit.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
434 trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
435
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
436 # Copy the file name to the temp name.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
437 (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
438
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
439 # and set any options; do chmod last to preserve setuid bits.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
440 #
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
441 # If any of these fail, we abort the whole thing. If we want to
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
442 # ignore errors from any of these, just make sure not to ignore
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
443 # errors from the above "$doit $cpprog $src $dsttmp" command.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
444 #
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
445 { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
446 { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
447 { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
448 { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
449
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
450 # If -C, don't bother to copy if it wouldn't change the file.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
451 if $copy_on_change &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
452 old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
453 new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
454 set -f &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
455 set X $old && old=:$2:$4:$5:$6 &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
456 set X $new && new=:$2:$4:$5:$6 &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
457 set +f &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
458 test "$old" = "$new" &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
459 $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
460 then
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
461 rm -f "$dsttmp"
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
462 else
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
463 # Rename the file to the real destination.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
464 $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
465
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
466 # The rename failed, perhaps because mv can't rename something else
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
467 # to itself, or perhaps because mv is so ancient that it does not
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
468 # support -f.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
469 {
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
470 # Now remove or move aside any old file at destination location.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
471 # We try this two ways since rm can't unlink itself on some
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
472 # systems and the destination file might be busy for other
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
473 # reasons. In this case, the final cleanup might fail but the new
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
474 # file should still install successfully.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
475 {
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
476 test ! -f "$dst" ||
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
477 $doit $rmcmd -f "$dst" 2>/dev/null ||
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
478 { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
479 { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
480 } ||
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
481 { echo "$0: cannot unlink or rename $dst" >&2
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
482 (exit 1); exit 1
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
483 }
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
484 } &&
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
485
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
486 # Now rename the file to the real destination.
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
487 $doit $mvcmd "$dsttmp" "$dst"
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
488 }
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
489 fi || exit 1
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
490
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
491 trap '' 0
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
492 fi
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
493 done
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
494
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
495 # Local variables:
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
496 # eval: (add-hook 'write-file-hooks 'time-stamp)
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
497 # time-stamp-start: "scriptversion="
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
498 # time-stamp-format: "%:y-%02m-%02d.%02H"
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
499 # time-stamp-time-zone: "UTC"
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
500 # time-stamp-end: "; # UTC"
e11d5966b822 patch 8.0.0570: can't run make with several jobs
Christian Brabandt <cb@256bit.org>
parents:
diff changeset
501 # End: