@@ -293,36 +293,30 @@ function create_and_run_classpath_jar() {
293
293
# Build class path as one single string separated by spaces
294
294
MANIFEST_CLASSPATH=" "
295
295
if is_windows; then
296
- IFS= ' ; '
296
+ CLASSPATH_SEPARATOR= " ; "
297
297
URI_PREFIX=" file:/" # e.g. "file:/C:/temp/foo.jar"
298
298
else
299
- IFS= ' : '
299
+ CLASSPATH_SEPARATOR= " : "
300
300
URI_PREFIX=" file:$( pwd) /" # e.g. "file:/usr/local/foo.jar"
301
301
fi
302
- for x in $CLASSPATH ; do
303
- # Add file:/ prefix and escaped space characters, it should be a URI.
304
- x =" ${URI_PREFIX }${x // /% 20 } "
305
- MANIFEST_CLASSPATH= " $MANIFEST_CLASSPATH $x "
306
- done
307
- unset IFS
302
+
303
+ URI_PREFIX= ${URI_PREFIX // \/ / \\ / }
304
+ MANIFEST_CLASSPATH =" ${CLASSPATH_SEPARATOR }${CLASSPATH } "
305
+
306
+ MANIFEST_CLASSPATH= $( sed " s/ /%20/g " <<< " ${MANIFEST_CLASSPATH} " )
307
+ MANIFEST_CLASSPATH= $( sed " s/ $CLASSPATH_SEPARATOR / $URI_PREFIX /g " <<< " ${MANIFEST_CLASSPATH} " )
308
308
309
309
# Create manifest file
310
310
MANIFEST_FILE=" $( mktemp -t XXXXXXXX.jar_manifest) "
311
311
312
312
(
313
313
echo " Manifest-Version: 1.0"
314
+
314
315
CLASSPATH_LINE=" Class-Path:$MANIFEST_CLASSPATH "
315
316
# No line in the MANIFEST.MF file may be longer than 72 bytes.
316
317
# A space prefix indicates the line is still the content of the last attribute.
317
- IFS=$' \n '
318
- WRAPPED_LINES=($( echo " $CLASSPATH_LINE " | fold -w 71) )
319
- for (( i = 0 ; i < "${# WRAPPED_LINES[*]} "; i += 1 )) ; do
320
- PREFIX=" "
321
- if (( i == 0 )) ; then
322
- PREFIX=" "
323
- fi
324
- echo " $PREFIX ${WRAPPED_LINES[$i]} "
325
- done
318
+ CLASSPATH_MANIFEST_LINES=$( sed -E $' s/(.{71})/\\ 1\\\n /g' <<< " ${CLASSPATH_LINE}" )
319
+ echo " $CLASSPATH_MANIFEST_LINES "
326
320
echo " Created-By: Bazel"
327
321
) > $MANIFEST_FILE
328
322
0 commit comments