diff options
Diffstat (limited to 'binary_search_tool/cros_pkg/setup.sh')
-rwxr-xr-x | binary_search_tool/cros_pkg/setup.sh | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/binary_search_tool/cros_pkg/setup.sh b/binary_search_tool/cros_pkg/setup.sh new file mode 100755 index 00000000..ae31fa82 --- /dev/null +++ b/binary_search_tool/cros_pkg/setup.sh @@ -0,0 +1,123 @@ +#!/bin/bash -u +# +# Copyright 2015 Google Inc. All Rights Reserved. +# +# This script is part of the ChromeOS package binary search triage process. +# It should be the first script called by the user, after the user has set up +# the three necessary build tree directories (see the prerequisites section of +# README.cros_pkg_triage). +# +# This script requires two arguments. The first argument must be the name of +# the board for which this work is being done (e.g. 'daisy', 'lumpy','parrot', +# etc.). The second argument must be the name or IP address of the chromebook +# on which the ChromeOS images will be pushed and tested. +# +# This script sets up a soft link definining /build/${board} to point +# to the working build tree, for the binary search triags process. In +# addition, this script generates two other scripts, common.sh, +# which generates enviroment variables used by the other scripts in the +# package binary search triage process; and ${board}_cleanup.sh, +# which undoes the various changes that this script performs, returning the +# user's environment to its original state. +# + +# Set up basic variables. + +BOARD=$1 +REMOTE=$2 + +GOOD_BUILD=/build/${BOARD}.good +BAD_BUILD=/build/${BOARD}.bad +WORK_BUILD=/build/${BOARD}.work + +# +# Verify that the necessary directories exist. +# + +if [[ ! -d ${GOOD_BUILD} ]] ; then + echo "Error: ${GOOD_BUILD} does not exist." + exit 1 +fi + +if [[ ! -d ${BAD_BUILD} ]] ; then + echo "Error: ${BAD_BUILD} does not exist." + exit 1 +fi + +if [[ ! -d ${WORK_BUILD} ]] ; then + echo "Error: ${WORK_BUILD} does not exist." + exit 1 +fi + +# +# Check to see if /build/${BOARD} already exists and if so, in what state. +# Set appropriate flags & values, in order to be able to undo these changes +# in ${board}_cleanup.sh. If it's a soft link, remove it; if it's a +# read tree, rename it. +# + +build_tree_existed=0 +build_tree_was_soft_link=0 +build_tree_renamed=0 +build_tree_link="" + +if [[ -d "/build/${BOARD}" ]] ; then + build_tree_existed=1 + if [[ -L "/build/${BOARD}" ]] ; then + build_tree_was_soft_link=1 + build_tree_link=`readlink /build/${BOARD}` + sudo rm /build/${BOARD} + else + build_tree_renamed=1 + sudo mv /build/${BOARD} /build/${BOARD}.save + fi +fi + +# Make "working' tree the default board tree (set up soft link) + +sudo ln -s /build/${BOARD}.work /build/${BOARD} + +# +# Create common.sh file, containing appropriate environment variables. +# + +COMMON_FILE="common/common.sh" + +cat <<-EOF > ${COMMON_FILE} + +BISECT_BOARD=${BOARD} +BISECT_REMOTE=${REMOTE} +BISECT_MODE="PACKAGE_MODE" + +GOOD_BUILD=/build/${BOARD}.good +BAD_BUILD=/build/${BOARD}.bad +WORK_BUILD=/build/${BOARD}.work + +EOF + +chmod 755 ${COMMON_FILE} + +# +# Create clean-up script, calling create_cleanup_script.py with +# the appropriate flags. +# + +if [[ ${build_tree_existed} -eq 0 ]] ; then + + python cros_pkg/create_cleanup_script.py --board=${BOARD} \ + --old_tree_missing + +elif [[ ${build_tree_was_soft_link} -eq 0 ]] ; then + + python cros_pkg/create_cleanup_script.py --board=${BOARD} \ + --renamed_tree + +else + + python cros_pkg/create_cleanup_script.py --board=${BOARD} \ + --old_link="'${build_tree_link}'" +fi + +chmod 755 cros_pkg/${BOARD}_cleanup.sh + +exit 0 |