blob: 087bd7d6902598f4aadb27610a9439febd62f0b9 [file] [log] [blame]
#! /bin/bash
set -euo pipefail
ANC_DIR="$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd)"
SRC_DIR="${ANC_DIR}/src"
REPO="third_party/boringssl"
fatal() {
echo "error: $1"
echo "usage: check-integration [integration-repo]"
echo
echo "Displays current revisions of the BoringSSL repositories. Checks whether the"
echo "mirror of upstream matches the revision listed in README.fuchsia in the"
echo "ancillary repo. Also checks if the revisions of both the upstream and ancillary"
echo "repos match what is listed in the 'integration-repo' manifest. The"
echo "'integration-repo' defaults to '\$FUCHSIA_DIR/integration'."
exit 1
}
# Get the Jiri integration manifest for BoringSSL
manifest=
if [[ $# -gt 1 ]] ; then
fatal "too many arugments"
elif [[ $# -eq 1 ]] ; then
manifest="$1/fuchsia/${REPO}/boringssl"
elif [[ -z "${FUCHSIA_DIR:-}" ]] ; then
fatal "FUCHSIA_DIR not set; have you run 'fx set'?"
else
manifest="${FUCHSIA_DIR}/integration/${REPO}/boringssl"
fi
if [[ ! -r "${manifest}" ]] ; then
fatal "unable to read '${manifest}'"
fi
# Collect all the revisions
anc_git="$(cd ${ANC_DIR} && git rev-list HEAD --max-count=1)"
src_git="$(cd ${SRC_DIR} && git rev-list HEAD --max-count=1)"
doc_rev="$(grep ${REPO} ${ANC_DIR}/README.fuchsia | sed "s/.*boringssl...//; s/.$//")"
anc_int="$(jiri manifest -element=${REPO} -template=\"{{.Revision}}\" ${manifest} | tr -d '"')"
src_int="$(jiri manifest -element=${REPO}/src -template=\"{{.Revision}}\" ${manifest} | tr -d '"')"
# Display the revisions and compare
echo
echo "Upstream mirror (${REPO}/src):"
echo " git revision: ${src_git}"
echo " in README.fuchsia: ${doc_rev}"
echo " in integration: ${src_int}"
echo
echo "Ancillary sources (${REPO}):"
echo " git revision: ${anc_git}"
echo " in integration: ${anc_int}"
echo
if [[ "${src_git}" != "${doc_rev}" ]] ; then
echo "[!] ${ANC_DIR}/README.fuchsia doesn't match ${SRC_DIR}"
echo " BoringSSL is in an inconsistent state; use 'go run roll_boringssl.go'"
elif [[ "${src_git}" != "${src_int}" ]] || [[ "${anc_git}" != "${anc_int}" ]] ; then
echo "[-] ${manifest} is out-of-date."
echo " A roll of the integration repo is needed or pending. Check 'fx pending-commits'"
else
echo "[+] ${manifest} is up-to-date."
fi