| #!/usr/bin/env bash | |
| # Copyright 2016 The Fuchsia Authors | |
| # | |
| # Use of this source code is governed by a MIT-style | |
| # license that can be found in the LICENSE file or at | |
| # https://opensource.org/licenses/MIT | |
| # Use this to use git bisect with prebuilt binary artifacts. To use, first copy the script somewhere | |
| # outside of the source tree (so git bisect won't mess with it) then run the following commands: | |
| # git bisect start <bad> <good> | |
| # git bisect run PATH_TO/bisect-helper <optional additional args to run-zircon> | |
| # The script will download the prebuilt zircon.bin associated with each commit, if it exists, and | |
| # start it up in qemu. After qemu exits, the script will ask if the build is good or bad. Type 'y' | |
| # or 'n' and the bisect will proceed. | |
| set -e | |
| readonly SCRIPT_DIR="$1" | |
| readonly TEMP_DIR="$(mktemp -d)" | |
| trap "rm -rf -- "${TEMP_DIR}"" EXIT | |
| readonly CURRENT_COMMIT="$(git rev-parse HEAD)" | |
| readonly ZIRCON_BIN_URL="https://storage-download.googleapis.com/fuchsia-build/zircon/qemu-arm64/zircon.elf/${CURRENT_COMMIT}" | |
| readonly DOWNLOAD_STATUS="$(curl -s -w %{http_code} --progress-bar --output "${TEMP_DIR}/zircon.elf" "${ZIRCON_BIN_URL}")" | |
| if [[ "${DOWNLOAD_STATUS}" != 200 ]]; then | |
| echo "Could not find prebuilt at ${ZIRCON_BIN_URL}: ${DOWNLOAD_STATUS}" | |
| exit 125 # could not evaluate this commit, no prebuilt available | |
| fi | |
| "${SCRIPT_DIR}/run-zircon-arm64" -o "${TEMP_DIR}" | |
| echo "Did it work? y/n" | |
| read RESULT | |
| if [[ "${RESULT}" == y ]]; then | |
| exit 0 | |
| else | |
| exit 1 | |
| fi |