9
9
# option. This file may not be copied, modified, or distributed
10
10
# except according to those terms.
11
11
12
- set -u
13
-
14
- msg () {
15
- echo " combine-installers: ${1-} "
16
- }
17
-
18
- step_msg () {
19
- msg
20
- msg " $1 "
21
- msg
22
- }
23
-
24
- warn () {
25
- echo " combine-installers: WARNING: $1 " >&2
26
- }
27
-
28
- err () {
29
- echo " combine-installers: error: $1 " >&2
30
- exit 1
31
- }
32
-
33
- need_ok () {
34
- if [ $? -ne 0 ]
35
- then
36
- err " $1 "
37
- fi
38
- }
39
-
40
- need_cmd () {
41
- if command -v $1 > /dev/null 2>&1
42
- then msg " found $1 "
43
- else err " need $1 "
44
- fi
45
- }
46
-
47
- putvar () {
48
- local t
49
- local tlen
50
- eval t=\$ $1
51
- eval tlen=\$ {# $1}
52
- if [ $tlen -gt 35 ]
53
- then
54
- printf " combine-installers: %-20s := %.35s ...\n" $1 " $t "
55
- else
56
- printf " combine-installers: %-20s := %s %s\n" $1 " $t "
57
- fi
58
- }
59
-
60
- valopt () {
61
- VAL_OPTIONS=" $VAL_OPTIONS $1 "
62
-
63
- local op=$1
64
- local default=$2
65
- shift
66
- shift
67
- local doc=" $* "
68
- if [ $HELP -eq 0 ]
69
- then
70
- local uop=$( echo $op | tr ' [:lower:]' ' [:upper:]' | tr ' \-' ' \_' )
71
- local v=" CFG_${uop} "
72
- eval $v =" $default "
73
- for arg in $CFG_ARGS
74
- do
75
- if echo " $arg " | grep -q -- " --$op ="
76
- then
77
- local val=$( echo " $arg " | cut -f2 -d=)
78
- eval $v =$val
79
- fi
80
- done
81
- putvar $v
82
- else
83
- if [ -z " $default " ]
84
- then
85
- default=" <none>"
86
- fi
87
- op=" ${default} =[${default} ]"
88
- printf " --%-30s %s\n" " $op " " $doc "
89
- fi
90
- }
91
-
92
- opt () {
93
- BOOL_OPTIONS=" $BOOL_OPTIONS $1 "
94
-
95
- local op=$1
96
- local default=$2
97
- shift
98
- shift
99
- local doc=" $* "
100
- local flag=" "
101
-
102
- if [ $default -eq 0 ]
103
- then
104
- flag=" enable"
105
- else
106
- flag=" disable"
107
- doc=" don't $doc "
108
- fi
109
-
110
- if [ $HELP -eq 0 ]
111
- then
112
- for arg in $CFG_ARGS
113
- do
114
- if [ " $arg " = " --${flag} -${op} " ]
115
- then
116
- op=$( echo $op | tr ' a-z-' ' A-Z_' )
117
- flag=$( echo $flag | tr ' a-z' ' A-Z' )
118
- local v=" CFG_${flag} _${op} "
119
- eval $v =1
120
- putvar $v
121
- fi
122
- done
123
- else
124
- if [ ! -z " $META " ]
125
- then
126
- op=" $op =<$META >"
127
- fi
128
- printf " --%-30s %s\n" " $flag -$op " " $doc "
129
- fi
130
- }
131
-
132
- flag () {
133
- BOOL_OPTIONS=" $BOOL_OPTIONS $1 "
134
-
135
- local op=$1
136
- shift
137
- local doc=" $* "
138
-
139
- if [ $HELP -eq 0 ]
140
- then
141
- for arg in $CFG_ARGS
142
- do
143
- if [ " $arg " = " --${op} " ]
144
- then
145
- op=$( echo $op | tr ' a-z-' ' A-Z_' )
146
- local v=" CFG_${op} "
147
- eval $v =1
148
- putvar $v
149
- fi
150
- done
151
- else
152
- if [ ! -z " $META " ]
153
- then
154
- op=" $op =<$META >"
155
- fi
156
- printf " --%-30s %s\n" " $op " " $doc "
157
- fi
158
- }
159
-
160
- validate_opt () {
161
- for arg in $CFG_ARGS
162
- do
163
- local is_arg_valid=0
164
- for option in $BOOL_OPTIONS
165
- do
166
- if test --disable-$option = $arg
167
- then
168
- is_arg_valid=1
169
- fi
170
- if test --enable-$option = $arg
171
- then
172
- is_arg_valid=1
173
- fi
174
- if test --$option = $arg
175
- then
176
- is_arg_valid=1
177
- fi
178
- done
179
- for option in $VAL_OPTIONS
180
- do
181
- if echo " $arg " | grep -q -- " --$option ="
182
- then
183
- is_arg_valid=1
184
- fi
185
- done
186
- if [ " $arg " = " --help" ]
187
- then
188
- echo
189
- echo " No more help available for Configure options,"
190
- echo " check the Wiki or join our IRC channel"
191
- break
192
- else
193
- if test $is_arg_valid -eq 0
194
- then
195
- err " Option '$arg ' is not recognized"
196
- fi
197
- fi
198
- done
199
- }
12
+ set -ue
200
13
201
14
# Prints the absolute path of a directory to stdout
202
15
abs_path () {
@@ -207,128 +20,5 @@ abs_path() {
207
20
(unset CDPATH && cd " $path " > /dev/null && pwd)
208
21
}
209
22
210
- msg " looking for programs"
211
- msg
212
-
213
- need_cmd tar
214
- need_cmd cp
215
- need_cmd rm
216
- need_cmd mkdir
217
- need_cmd echo
218
- need_cmd tr
219
-
220
- CFG_ARGS=" $@ "
221
-
222
- HELP=0
223
- if [ " $1 " = " --help" ]
224
- then
225
- HELP=1
226
- shift
227
- echo
228
- echo " Usage: $0 [options]"
229
- echo
230
- echo " Options:"
231
- echo
232
- else
233
- step_msg " processing arguments"
234
- fi
235
-
236
- OPTIONS=" "
237
- BOOL_OPTIONS=" "
238
- VAL_OPTIONS=" "
239
-
240
- valopt product-name " Product" " The name of the product, for display"
241
- valopt package-name " package" " The name of the package, tarball"
242
- valopt rel-manifest-dir " ${CFG_PACKAGE_NAME} lib" " The directory under lib/ where the manifest lives"
243
- valopt success-message " Installed." " The string to print after successful installation"
244
- valopt legacy-manifest-dirs " " " Places to look for legacy manifests to uninstall"
245
- valopt input-tarballs " " " Installers to combine"
246
- valopt non-installed-overlay " " " Directory containing files that should not be installed"
247
- valopt work-dir " ./workdir" " The directory to do temporary work and put the final image"
248
- valopt output-dir " ./dist" " The location to put the final tarball"
249
-
250
- if [ $HELP -eq 1 ]
251
- then
252
- echo
253
- exit 0
254
- fi
255
-
256
- step_msg " validating arguments"
257
- validate_opt
258
-
259
23
src_dir=" $( abs_path $( dirname " $0 " ) ) "
260
-
261
- rust_installer_version=` cat " $src_dir /rust-installer-version" `
262
-
263
- # Create the work directory for the new installer
264
- mkdir -p " $CFG_WORK_DIR "
265
- need_ok " couldn't create work dir"
266
-
267
- rm -Rf " $CFG_WORK_DIR /$CFG_PACKAGE_NAME "
268
- need_ok " couldn't delete work package dir"
269
-
270
- mkdir -p " $CFG_WORK_DIR /$CFG_PACKAGE_NAME "
271
- need_ok " couldn't create work package dir"
272
-
273
- input_tarballs=` echo " $CFG_INPUT_TARBALLS " | sed ' s/,/ /g' `
274
-
275
- # Merge each installer into the work directory of the new installer
276
- for input_tarball in $input_tarballs ; do
277
-
278
- # Extract the input tarballs
279
- tar xzf $input_tarball -C " $CFG_WORK_DIR "
280
- need_ok " failed to extract tarball"
281
-
282
- # Verify the version number
283
- pkg_name=` echo " $input_tarball " | sed s/\. tar\. gz//g`
284
- pkg_name=` basename $pkg_name `
285
- version=` cat " $CFG_WORK_DIR /$pkg_name /rust-installer-version" `
286
- if [ " $rust_installer_version " != " $version " ]; then
287
- err " incorrect installer version in $input_tarball "
288
- fi
289
-
290
- # Copy components to new combined installer
291
- components=` cat " $CFG_WORK_DIR /$pkg_name /components" `
292
- for component in $components ; do
293
-
294
- # All we need to do is copy the component directory
295
- cp -R " $CFG_WORK_DIR /$pkg_name /$component " " $CFG_WORK_DIR /$CFG_PACKAGE_NAME /$component "
296
- need_ok " failed to copy component $component "
297
-
298
- # Merge the component name
299
- echo " $component " >> " $CFG_WORK_DIR /$CFG_PACKAGE_NAME /components"
300
- need_ok " failed to merge component $component "
301
- done
302
- done
303
-
304
- # Write the version number
305
- echo " $rust_installer_version " > " $CFG_WORK_DIR /$CFG_PACKAGE_NAME /rust-installer-version"
306
-
307
- # Copy the overlay
308
- if [ -n " $CFG_NON_INSTALLED_OVERLAY " ]; then
309
- overlay_files=` (cd " $CFG_NON_INSTALLED_OVERLAY " && find . -type f)`
310
- for f in $overlay_files ; do
311
- if [ -e " $CFG_WORK_DIR /$CFG_PACKAGE_NAME /$f " ]; then err " overlay $f exists" ; fi
312
-
313
- cp " $CFG_NON_INSTALLED_OVERLAY /$f " " $CFG_WORK_DIR /$CFG_PACKAGE_NAME /$f "
314
- need_ok " failed to copy overlay $f "
315
- done
316
- fi
317
-
318
- # Generate the install script
319
- " $src_dir /gen-install-script.sh" \
320
- --product-name=" $CFG_PRODUCT_NAME " \
321
- --rel-manifest-dir=" $CFG_REL_MANIFEST_DIR " \
322
- --success-message=" $CFG_SUCCESS_MESSAGE " \
323
- --legacy-manifest-dirs=" $CFG_LEGACY_MANIFEST_DIRS " \
324
- --output-script=" $CFG_WORK_DIR /$CFG_PACKAGE_NAME /install.sh"
325
-
326
- need_ok " failed to generate install script"
327
-
328
- mkdir -p " $CFG_OUTPUT_DIR "
329
- need_ok " couldn't create output dir"
330
-
331
- " $src_dir /make-tarballs.sh" \
332
- --work-dir=" $CFG_WORK_DIR " \
333
- --input=" $CFG_PACKAGE_NAME " \
334
- --output=" $CFG_OUTPUT_DIR /$CFG_PACKAGE_NAME "
24
+ cargo run --manifest-path=" $src_dir /Cargo.toml" -- combine " $@ "
0 commit comments