| #!/bin/bash |
| |
| # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Downloads the latest buildbot image and prints the path to it. |
| # This script only works if you have access to buildbot images. |
| |
| # --- BEGIN COMMON.SH BOILERPLATE --- |
| # Load common CrOS utilities. Inside the chroot this file is installed in |
| # /usr/lib/crosutils. Outside the chroot we find it relative to the script's |
| # location. |
| find_common_sh() { |
| local common_paths=("$(dirname "$(readlink -f "$0")")/.." /usr/lib/crosutils) |
| local path |
| |
| SCRIPT_ROOT="${common_paths[0]}" |
| for path in "${common_paths[@]}"; do |
| if [ -r "${path}/common.sh" ]; then |
| SCRIPT_ROOT="${path}" |
| break |
| fi |
| done |
| } |
| |
| find_common_sh |
| . "${SCRIPT_ROOT}/common.sh" || exit 1 |
| # --- END COMMON.SH BOILERPLATE --- |
| |
| get_default_board |
| |
| DEFINE_string board "$DEFAULT_BOARD" \ |
| "The name of the board to check for images." |
| DEFINE_boolean incremental "$FLAGS_FALSE" "Download incremental build" |
| DEFINE_boolean enable_rootfs_verification "${FLAGS_TRUE}" \ |
| "Enable rootfs verification for the downloaded image." |
| |
| # Parse command line flags. |
| FLAGS "$@" || exit 1 |
| eval set -- "$FLAGS_ARGV" |
| |
| # Check on the board that they are trying to set up. |
| if [ -z "$FLAGS_board" ] ; then |
| die_notrace "Error: --board required." |
| fi |
| |
| BUCKET="chromeos-image-archive" |
| if [ $FLAGS_board = x86-generic ]; then |
| if [ "$FLAGS_incremental" -eq "$FLAGS_TRUE" ]; then |
| PATH_PREFIX="x86-generic-pre-flight-queue" |
| else |
| PATH_PREFIX="x86-generic-full" |
| fi |
| else |
| PATH_PREFIX="${FLAGS_board}-release" |
| fi |
| |
| URL_PREFIX="gs://$BUCKET/$PATH_PREFIX" |
| LATEST_BUILD=$(gsutil cat $URL_PREFIX/LATEST) |
| IMAGES_DIR="$DEFAULT_BUILD_ROOT/images/$FLAGS_board" |
| LATEST_IMAGE_DIR="$IMAGES_DIR/$LATEST_BUILD" |
| if [ ! -e $LATEST_IMAGE_DIR/chromiumos_base_image.bin ]; then |
| mkdir -p $LATEST_IMAGE_DIR |
| gsutil cp "$URL_PREFIX/$LATEST_BUILD/image.zip" \ |
| "$LATEST_IMAGE_DIR/image.zip" || die "Could not download image.zip" |
| ( cd $LATEST_IMAGE_DIR && unzip -qo image.zip ) \ |
| || die "Could not unzip image.zip" |
| fi |
| |
| IMAGE_NAME=chromiumos_qemu_image.bin |
| IMAGE_FILE="${LATEST_IMAGE_DIR}"/"${IMAGE_NAME}" |
| ESP_DIR="${LATEST_IMAGE_DIR}/esp" |
| |
| cleanup() { |
| "$SCRIPTS_DIR/mount_gpt_image.sh" -u -e "${ESP_DIR}" |
| } |
| |
| # This might seem a bit strange, but rootfs verification is already on with the |
| # image, the only reason we've named this flag 'enable_rootfs_verfication' |
| # versus 'disable_xyz' is to stay constant with the |
| # 'noenable_rootfs_verification' flag used in build image to disable it. |
| if [ "${FLAGS_enable_rootfs_verification}" -eq "${FLAGS_FALSE}" ] ; then |
| trap cleanup INT TERM EXIT |
| # We only need to touch the ESP part |
| "$SCRIPTS_DIR/mount_gpt_image.sh" -i chromiumos_qemu_image.bin \ |
| -f "${LATEST_IMAGE_DIR}" -e "${ESP_DIR}" |
| |
| # Change the default to boot from the usb instead of vusb, usb is set |
| # to boot from /dev/sda |
| sudo sed -i -e 's/vusb/usb/g' "${ESP_DIR}/syslinux/default.cfg" |
| |
| sync; sync |
| fi |
| |
| echo $LATEST_IMAGE_DIR |
| exit 0 |