You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
3.2 KiB
124 lines
3.2 KiB
#!/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
|