Convert soong java from soong_zip to jar

soong_zip produces jar files that are not compatible with java's
ZipInputStream.  Switch to jar using ugly sed scripts to munge
file lists into the alternating -C and file arguments required
by jar.

Bug: 64536066
Test: m -j checkbuild
Test: build/soong/scripts/jar_args.sh --test
Change-Id: Ifcc4bdab25e7d02342720eb246c673ff9a58bddb
diff --git a/scripts/jar-args.sh b/scripts/jar-args.sh
new file mode 100755
index 0000000..9f05394
--- /dev/null
+++ b/scripts/jar-args.sh
@@ -0,0 +1,64 @@
+#!/bin/bash -e
+
+# Script that takes a list of files on stdin and converts it to arguments to jar on stdout
+# Usage:
+#        find $dir -type f | sort | jar-args.sh $dir > jar_args.txt
+#        jar cf out.jar @jar_args.txt
+
+case $(uname) in
+  Linux)
+    extended_re=-r
+    ;;
+  Darwin)
+    extended_re=-E
+    ;;
+  *) echo "unknown OS:" $(uname) >&2 && exit 1;;
+esac
+
+if [ "$1" == "--test" ]; then
+  in=$(mktemp)
+  expected=$(mktemp)
+  out=$(mktemp)
+  cat > $in <<EOF
+a
+a/b
+a/b/'
+a/b/"
+a/b/\\
+a/b/#
+a/b/a
+EOF
+  cat > $expected <<EOF
+
+-C 'a' 'b'
+-C 'a' 'b/\\''
+-C 'a' 'b/"'
+-C 'a' 'b/\\\\'
+-C 'a' 'b/#'
+-C 'a' 'b/a'
+EOF
+  cat $in | $0 a > $out
+
+  if cmp $out $expected; then
+    status=0
+    echo "PASS"
+  else
+    status=1
+    echo "FAIL"
+    echo "got:"
+    cat $out
+    echo "expected:"
+    cat $expected
+  fi
+  rm -f $in $expected $out
+  exit $status
+fi
+
+# In order, the regexps:
+#   - Strip $1/ from the beginning of each line, and everything from lines that just have $1
+#   - Escape single and double quotes, '#', ' ', and '\'
+#   - Prefix each non-blank line with -C $1
+sed ${extended_re} \
+  -e"s,^$1(/|\$),," \
+  -e"s,(['\\]),\\\\\1,g" \
+  -e"s,^(.+),-C '$1' '\1',"