Add a test for bazel-distfile.tar. Also cleans up generation of bazel-distfile.tar to work on macOS. Fixes #11741. Closes #11743. PiperOrigin-RevId: 320938268
diff --git a/combine_distfiles_to_tar.sh b/combine_distfiles_to_tar.sh index 40a8f4a..865a6d2 100755 --- a/combine_distfiles_to_tar.sh +++ b/combine_distfiles_to_tar.sh
@@ -40,5 +40,15 @@ (cd "${PACKAGE_DIR}" && ${UNPACK} "${ARCHIVE}") done -(cd "${PACKAGE_DIR}" && tar -c -f "${OUTPUT}" --group=0 --owner=0 \ - $(find . -type f | sort)) +ID_OPTS="--group=0 --owner=0" +if [ "$(uname -s)" == "Darwin" ]; then + ID_OPTS="--gid=0 --uid=0" +fi + +( + cd "${PACKAGE_DIR}" + FILE_LIST="$(mktemp ${TMP_DIR%%/}/bazel-distfile-files.XXXXXXXX)" + trap "rm -fr \"${FILE_LIST}\"" EXIT + find . -type f | sort > "${FILE_LIST}" + tar -c -f "${OUTPUT}" ${ID_OPTS} -T "${FILE_LIST}" +)
diff --git a/src/test/shell/bazel/BUILD b/src/test/shell/bazel/BUILD index ca9ceb9..26feef3 100644 --- a/src/test/shell/bazel/BUILD +++ b/src/test/shell/bazel/BUILD
@@ -1007,6 +1007,27 @@ ) sh_test( + name = "bazel_bootstrap_distfile_tar_test", + timeout = "eternal", + srcs = ["bazel_bootstrap_distfile_test.sh"], + args = [ + "$(location //:bazel-distfile-tar)", + "$(location //src:embedded_jdk_allmodules_cached)", + ], + data = [ + ":test-deps", + "//:bazel-distfile-tar", + "//src:embedded_jdk_allmodules_cached", + "@bazel_tools//tools/bash/runfiles", + ], + exec_compatible_with = ["//:highcpu_machine"], + tags = [ + "block-network", + "no_windows", + ], +) + +sh_test( name = "bazel_determinism_test", timeout = "eternal", srcs = ["bazel_determinism_test.sh"],
diff --git a/src/test/shell/bazel/bazel_bootstrap_distfile_test.sh b/src/test/shell/bazel/bazel_bootstrap_distfile_test.sh index 338ee03..589e9c8 100755 --- a/src/test/shell/bazel/bazel_bootstrap_distfile_test.sh +++ b/src/test/shell/bazel/bazel_bootstrap_distfile_test.sh
@@ -72,12 +72,34 @@ function test_bootstrap() { cd "$(mktemp -d ${TEST_TMPDIR}/bazelbootstrap.XXXXXXXX)" export SOURCE_DATE_EPOCH=1501234567 - unzip -q "${DISTFILE}" - if [[ $EMBEDDED_JDK == *.tar.gz ]]; then - tar xf $EMBEDDED_JDK - elif [[ $EMBEDDED_JDK == *.zip ]]; then - unzip -q $EMBEDDED_JDK - fi + + case "${DISTFILE}" in + *.zip) + unzip -q "${DISTFILE}" + ;; + *.tar) + tar xf "${DISTFILE}" + ;; + *) + fail "Unknown distfile format: ${DISTFILE}" + ;; + esac + + case "${EMBEDDED_JDK}" in + *.zip) + unzip -q "$EMBEDDED_JDK" + ;; + *.tar.gz) + tar zxf "$EMBEDDED_JDK" + ;; + *.tar) + tar xf "$EMBEDDED_JDK" + ;; + *) + fail "Unknown embedded JDK format: ${EMBEDDED_JDK}" + ;; + esac + JAVABASE=$(echo reduced*) env EXTRA_BAZEL_ARGS="--host_javabase=@local_jdk//:jdk" ./compile.sh \