blob: 10ae87ed0797bb071c0c59c304c292e0e8f92af1 [file] [log] [blame]
#!/bin/bash
# Copyright 2022 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
set -exo pipefail
# This runs in a new empty directory, unpack the CIPD package to verify
# its content and that it runs properly.
unzip -q "$1"
# Dump current directory content for debugging
ls -l .
# Run the 'bazel version' command into a new empty output_user_root.
# Note that `bash -x` is used to print the script's internal commands
# for debugging.
"${SHELL}" -x ./bazel --output_user_root=output_user_root version \
2>&1 | tee stdout.txt
# Verify that the version contains a `Build label' value that matches
# _3PP_VERSION. Note that the latter may include a suffix like -fuchsia1
# corresponding to the version of the 3pp scripts, and not of the binary
# itself, and should be ignored.
BUILD_LABEL="$(awk '$1 == "Build" && $2 == "label:" { print $3; }' stdout.txt)"
if [[ -z "${BUILD_LABEL}" ]]; then
echo >&2 "Could not find Bazel build label!"
exit 1
fi
# Check that _3PP_VERSION starts with BUILD_LABEL.
if [[ "${_3PP_VERSION#${BUILD_LABEL}}" == "${_3PP_VERSION}" ]]; then
echo >&2 "Invalid Bazel build label (${BUILD_LABEL}), does not match ${_3PP_VERSION}"
exit 1
fi
# Verify that the output_user_root has no 'install' directory.
# This would be created if the --install_base argument is not given
# to the final Bazel binary.
if [[ -d "output_user_root/install" ]]; then
echo "Unexpected extracted install directory:"
ls output_user_root/install/
exit 1
fi
# Verify that the stderr does not contain a line that starts with "Extracting"
# This would happen if the --output_user_root option was ignored, and the
# install_base was not used.
if grep -F "Extracting" stdout.txt; then
echo "Unexpected extration of install_base:"
cat stdout.txt
exit 1
fi
echo "All good!"