#!/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