Skip to content

Commit f4a24fe

Browse files
Shachar Anchelovichittaiz
Shachar Anchelovich
authored andcommitted
Improve classpath manifest file construction (#842)
1 parent f1e689c commit f4a24fe

File tree

1 file changed

+11
-17
lines changed

1 file changed

+11
-17
lines changed

java_stub_template/file/file.txt

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -293,36 +293,30 @@ function create_and_run_classpath_jar() {
293293
# Build class path as one single string separated by spaces
294294
MANIFEST_CLASSPATH=""
295295
if is_windows; then
296-
IFS=';'
296+
CLASSPATH_SEPARATOR=";"
297297
URI_PREFIX="file:/" # e.g. "file:/C:/temp/foo.jar"
298298
else
299-
IFS=':'
299+
CLASSPATH_SEPARATOR=":"
300300
URI_PREFIX="file:$(pwd)/" # e.g. "file:/usr/local/foo.jar"
301301
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}")
308308

309309
# Create manifest file
310310
MANIFEST_FILE="$(mktemp -t XXXXXXXX.jar_manifest)"
311311

312312
(
313313
echo "Manifest-Version: 1.0"
314+
314315
CLASSPATH_LINE="Class-Path:$MANIFEST_CLASSPATH"
315316
# No line in the MANIFEST.MF file may be longer than 72 bytes.
316317
# 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"
326320
echo "Created-By: Bazel"
327321
) >$MANIFEST_FILE
328322

0 commit comments

Comments
 (0)