Index: mod_image_for_test.sh |
diff --git a/mod_image_for_test.sh b/mod_image_for_test.sh |
index 25c2fb72b2504c9d20ef5e82b54ab922a321bbdd..f01f2c748dafe3f67e47cbb23376d70c7be2155c 100755 |
--- a/mod_image_for_test.sh |
+++ b/mod_image_for_test.sh |
@@ -1,6 +1,6 @@ |
#!/bin/bash |
-# Copyright (c) 2009 The Chromium OS Authors. All rights reserved. |
+# Copyright (c) 2011 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. |
@@ -48,49 +48,49 @@ DEFINE_string qualdb "" "Location of qualified component file" d |
DEFINE_boolean yes $FLAGS_FALSE "Answer yes to all prompts" y |
DEFINE_string build_root "/build" \ |
"The root location for board sysroots." |
-DEFINE_boolean fast ${DEFAULT_FAST} "Call many emerges in parallel" |
+DEFINE_boolean fast $DEFAULT_FAST "Call many emerges in parallel" |
DEFINE_boolean inplace $FLAGS_TRUE \ |
- "Modify/overwrite the image ${CHROMEOS_IMAGE_NAME} in place. \ |
-Otherwise the image will be copied to ${CHROMEOS_TEST_IMAGE_NAME} \ |
-(or ${CHROMEOS_FACTORY_TEST_IMAGE_NAME} for --factory) if needed, and \ |
+ "Modify/overwrite the image $CHROMEOS_IMAGE_NAME in place. \ |
+Otherwise the image will be copied to $CHROMEOS_TEST_IMAGE_NAME \ |
+(or $CHROMEOS_FACTORY_TEST_IMAGE_NAME for --factory) if needed, and \ |
modified there" |
-DEFINE_boolean force_copy ${FLAGS_FALSE} \ |
+DEFINE_boolean force_copy $FLAGS_FALSE \ |
"Always rebuild test image if --noinplace" |
# Parse command line |
FLAGS "$@" || exit 1 |
-eval set -- "${FLAGS_ARGV}" |
+eval set -- "$FLAGS_ARGV" |
EMERGE_CMD="emerge" |
-EMERGE_BOARD_CMD="emerge-${FLAGS_board}" |
-if [ "${FLAGS_fast}" -eq "${FLAGS_TRUE}" ]; then |
+EMERGE_BOARD_CMD="emerge-$FLAGS_board" |
+if [ $FLAGS_fast -eq $FLAGS_TRUE ]; then |
echo "Using alternate emerge" |
- EMERGE_CMD="${GCLIENT_ROOT}/chromite/bin/parallel_emerge" |
- EMERGE_BOARD_CMD="${EMERGE_CMD} --board=${FLAGS_board}" |
+ EMERGE_CMD="$GCLIENT_ROOT/chromite/bin/parallel_emerge" |
+ EMERGE_BOARD_CMD="$EMERGE_CMD --board=$FLAGS_board" |
fi |
# No board, no default and no image set then we can't find the image |
-if [ -z $FLAGS_image ] && [ -z $FLAGS_board ] ; then |
+if [ -z "$FLAGS_image" -a -z "$FLAGS_board" ] ; then |
setup_board_warning |
die "mod_image_for_test failed. No board set and no image set" |
fi |
# We have a board name but no image set. Use image at default location |
-if [ -z $FLAGS_image ] ; then |
- IMAGES_DIR="${DEFAULT_BUILD_ROOT}/images/${FLAGS_board}" |
- FILENAME="${CHROMEOS_IMAGE_NAME}" |
- FLAGS_image="${IMAGES_DIR}/$(ls -t $IMAGES_DIR 2>&-| head -1)/${FILENAME}" |
+if [ -z "$FLAGS_image" ] ; then |
+ IMAGES_DIR="$DEFAULT_BUILD_ROOT/images/$FLAGS_board" |
+ FILENAME="$CHROMEOS_IMAGE_NAME" |
+ FLAGS_image="$IMAGES_DIR/$(ls -t $IMAGES_DIR 2>&-| head -1)/$FILENAME" |
fi |
# Turn path into an absolute path. |
-FLAGS_image=`eval readlink -f ${FLAGS_image}` |
+FLAGS_image=$(eval readlink -f $FLAGS_image) |
# What cross-build are we targeting? |
-. "${FLAGS_build_root}/${FLAGS_board}/etc/make.conf.board_setup" |
+. "$FLAGS_build_root/$FLAGS_board/etc/make.conf.board_setup" |
# Figure out ARCH from the given toolchain. |
# TODO: Move to common.sh as a function after scripts are switched over. |
-TC_ARCH=$(echo "${CHOST}" | awk -F'-' '{ print $1 }') |
-case "${TC_ARCH}" in |
+TC_ARCH=$(echo "$CHOST" | awk -F'-' '{ print $1 }') |
+case "$TC_ARCH" in |
arm*) |
ARCH="arm" |
;; |
@@ -98,7 +98,7 @@ case "${TC_ARCH}" in |
ARCH="x86" |
;; |
*) |
- error "Unable to determine ARCH from toolchain: ${CHOST}" |
+ error "Unable to determine ARCH from toolchain: $CHOST" |
exit 1 |
esac |
@@ -107,11 +107,11 @@ cleanup_mounts() { |
# Occasionally there are some daemons left hanging around that have our |
# root/stateful image file system open. We do a best effort attempt to kill |
# them. |
- PIDS=`sudo lsof -t "$1" | sort | uniq` |
- for pid in ${PIDS}; do |
- local cmdline=`cat /proc/$pid/cmdline` |
+ PIDS=$(sudo lsof -t "$1" | sort | uniq) |
+ for pid in $PIDS; do |
+ local cmdline=$(cat /proc/$pid/cmdline) |
echo "Killing process that has open file on the mounted directory: $cmdline" |
- sudo kill $pid || /bin/true |
+ sudo kill $pid || true |
done |
} |
@@ -122,7 +122,7 @@ cleanup() { |
# Emerges chromeos-test onto the image. |
emerge_chromeos_test() { |
INSTALL_MASK="" |
- if [[ $FLAGS_installmask -eq ${FLAGS_TRUE} ]]; then |
+ if [[ $FLAGS_installmask -eq $FLAGS_TRUE ]]; then |
INSTALL_MASK="$DEFAULT_INSTALL_MASK" |
fi |
@@ -136,20 +136,18 @@ emerge_chromeos_test() { |
install_autotest() { |
- SYSROOT="${FLAGS_build_root}/${FLAGS_board}" |
- AUTOTEST_SRC="${SYSROOT}/usr/local/autotest" |
- stateful_root="${ROOT_FS_DIR}/usr/local" |
- autotest_client="/autotest" |
+ local autotest_src="$FLAGS_build_root/$FLAGS_board/usr/local/autotest" |
+ local stateful_root="$ROOT_FS_DIR/usr/local" |
+ local autotest_client="$stateful_root/autotest" |
echo "Install autotest into stateful partition from $AUTOTEST_SRC" |
- sudo mkdir -p "${stateful_root}${autotest_client}" |
+ sudo mkdir -p "$autotest_client" |
# Remove excess files from stateful partition. |
- # If these aren't there, that's fine. |
- sudo rm -rf "${stateful_root}${autotest_client}/*" || true |
- sudo rm -rf "${stateful_root}/autotest-pkgs" || true |
- sudo rm -rf "${stateful_root}/lib/icedtea6" || true |
+ sudo rm -rf "$autotest_client/"* |
+ sudo rm -rf "$stateful_root/autotest-pkgs" |
+ sudo rm -rf "$stateful_root/lib/icedtea6" |
sudo rsync --delete --delete-excluded -auv \ |
--exclude=deps/realtimecomm_playground \ |
@@ -162,33 +160,32 @@ install_autotest() { |
--exclude=site_tests/desktopui_PageCyclerTests \ |
--exclude=site_tests/desktopui_UITest \ |
--exclude=.svn \ |
- ${AUTOTEST_SRC}/client/* "${stateful_root}/${autotest_client}" |
+ "$autotest_src/client/"* "$autotest_client" |
- sudo chmod 755 "${stateful_root}/${autotest_client}" |
- sudo chown -R 1000:1000 "${stateful_root}/${autotest_client}" |
+ sudo chmod 755 "$autotest_client" |
+ sudo chown -R 1000:1000 "$autotest_client" |
} |
# main process begins here. |
-IMAGE_DIR="$(dirname "${FLAGS_image}")" |
+IMAGE_DIR=$(dirname "$FLAGS_image") |
# Copy the image to a test location if required |
-if [ ${FLAGS_inplace} -eq ${FLAGS_FALSE} ]; then |
- if [ ${FLAGS_factory} -eq ${FLAGS_TRUE} ]; then |
- TEST_PATHNAME="${IMAGE_DIR}/${CHROMEOS_FACTORY_TEST_IMAGE_NAME}" |
+if [ $FLAGS_inplace -eq $FLAGS_FALSE ]; then |
+ if [ $FLAGS_factory -eq $FLAGS_TRUE ]; then |
+ TEST_PATHNAME="$IMAGE_DIR/$CHROMEOS_FACTORY_TEST_IMAGE_NAME" |
typename="factory" |
else |
- TEST_PATHNAME="${IMAGE_DIR}/${CHROMEOS_TEST_IMAGE_NAME}" |
+ TEST_PATHNAME="$IMAGE_DIR/$CHROMEOS_TEST_IMAGE_NAME" |
typename="test" |
fi |
- if [ ! -f "${TEST_PATHNAME}" ] || \ |
- [ ${FLAGS_force_copy} -eq ${FLAGS_TRUE} ] ; then |
+ if [ ! -f "$TEST_PATHNAME" -o $FLAGS_force_copy -eq $FLAGS_TRUE ] ; then |
echo "Creating test image from original..." |
- ${COMMON_PV_CAT} "${FLAGS_image}" >"${TEST_PATHNAME}" \ |
- || die "Cannot copy ${FLAGS_image} to test image" |
- FLAGS_image="${TEST_PATHNAME}" |
+ $COMMON_PV_CAT "$FLAGS_image" >"$TEST_PATHNAME" || |
+ die "Cannot copy $FLAGS_image to test image" |
+ FLAGS_image="$TEST_PATHNAME" |
else |
- echo "Using cached ${typename} image" |
+ echo "Using cached $typename image" |
exit |
fi |
@@ -198,25 +195,25 @@ fi |
# Make sure this is really what the user wants, before nuking the device |
if [ $FLAGS_yes -ne $FLAGS_TRUE ]; then |
- read -p "Modifying image ${FLAGS_image} for test; are you sure (y/N)? " SURE |
+ read -p "Modifying image $FLAGS_image for test; are you sure (y/N)? " SURE |
SURE="${SURE:0:1}" # Get just the first character |
if [ "$SURE" != "y" ]; then |
echo "Ok, better safe than sorry." |
exit 1 |
fi |
else |
- echo "Modifying image ${FLAGS_image} for test..." |
+ echo "Modifying image $FLAGS_image for test..." |
fi |
# Abort early if we can't find the image |
-if [ ! -f $FLAGS_image ] && [ ${FLAGS_inplace} -eq ${FLAGS_TRUE} ; then |
+if [ ! -f $FLAGS_image -a $FLAGS_inplace -eq $FLAGS_TRUE ] ; then |
die "No image found at $FLAGS_image to modify" |
fi |
set -e |
IMAGE_DIR=$(dirname "$FLAGS_image") |
-IMAGE_NAME="$(basename "$FLAGS_image")" |
+IMAGE_NAME=$(basename "$FLAGS_image") |
ROOT_FS_DIR="$IMAGE_DIR/rootfs" |
STATEFUL_DIR="$IMAGE_DIR/stateful_partition" |
@@ -228,27 +225,26 @@ trap cleanup EXIT |
emerge_chromeos_test |
-MOD_TEST_ROOT="${GCLIENT_ROOT}/src/scripts/mod_for_test_scripts" |
+MOD_TEST_SCRIPT="$SCRIPTS_DIR/mod_for_test_scripts/test_setup.sh" |
# Run test setup script to modify the image |
-sudo GCLIENT_ROOT="${GCLIENT_ROOT}" ROOT_FS_DIR="${ROOT_FS_DIR}" \ |
- STATEFUL_DIR="${STATEFUL_DIR}" ARCH="${ARCH}" "${MOD_TEST_ROOT}/test_setup.sh" |
+sudo GCLIENT_ROOT="$GCLIENT_ROOT" ROOT_FS_DIR="$ROOT_FS_DIR" \ |
+ STATEFUL_DIR="$STATEFUL_DIR" ARCH="$ARCH" "$MOD_TEST_SCRIPT" |
-if [ ${FLAGS_factory} -eq ${FLAGS_TRUE} ]; then |
+if [ $FLAGS_factory -eq $FLAGS_TRUE ]; then |
install_autotest |
- MOD_FACTORY_ROOT="${GCLIENT_ROOT}/src/scripts/mod_for_factory_scripts" |
+ MOD_FACTORY_SCRIPT="$SCRIPTS_DIR/mod_for_factory_scripts/factory_setup.sh" |
# Run factory setup script to modify the image |
- sudo GCLIENT_ROOT="${GCLIENT_ROOT}" ROOT_FS_DIR="${ROOT_FS_DIR}" \ |
- QUALDB="${FLAGS_qualdb}" BOARD=${FLAGS_board} \ |
- "${MOD_FACTORY_ROOT}/factory_setup.sh" |
+ sudo GCLIENT_ROOT="$GCLIENT_ROOT" ROOT_FS_DIR="$ROOT_FS_DIR" \ |
+ QUALDB="$FLAGS_qualdb" BOARD=$FLAGS_board "$MOD_FACTORY_SCRIPT" |
fi |
# Re-run ldconfig to fix /etc/ldconfig.so.cache. |
-sudo /sbin/ldconfig -r "${ROOT_FS_DIR}" |
+sudo ldconfig -r "$ROOT_FS_DIR" |
# Let's have a look at the image just in case.. |
-if [ "${VERIFY}" = "true" ]; then |
- pushd "${ROOT_FS_DIR}" |
+if [ "$VERIFY" = "true" ]; then |
+ pushd "$ROOT_FS_DIR" |
bash |
popd |
fi |
@@ -256,10 +252,9 @@ fi |
cleanup |
# Now make it bootable with the flags from build_image |
-"${SCRIPTS_DIR}/bin/cros_make_image_bootable" "$(dirname "${FLAGS_image}")" \ |
- $(basename "${FLAGS_image}") |
+"$SCRIPTS_DIR/bin/cros_make_image_bootable" "$(dirname "$FLAGS_image")" \ |
+ "$(basename "$FLAGS_image")" |
print_time_elapsed |
trap - EXIT |
- |