Update location of autotest files in image_to_usb, fix loopback mounting for stateful partition

Review URL: http://codereview.chromium.org/1125004
This commit is contained in:
Nick Sanders 2010-03-22 14:45:52 -07:00
parent 3b06f7de69
commit 229bdeae7e

View File

@ -24,6 +24,8 @@ DEFINE_boolean copy_kernel ${FLAGS_FALSE} \
"Copy the kernel to the fourth partition." "Copy the kernel to the fourth partition."
DEFINE_boolean test_image "${FLAGS_FALSE}" \ DEFINE_boolean test_image "${FLAGS_FALSE}" \
"Uses test image if available, otherwise creates one as rootfs_test.image." "Uses test image if available, otherwise creates one as rootfs_test.image."
DEFINE_string build_root "/build" \
"The root location for board sysroots."
# Parse command line # Parse command line
FLAGS "$@" || exit 1 FLAGS "$@" || exit 1
@ -33,10 +35,11 @@ eval set -- "${FLAGS_ARGV}"
# Script can be run either inside or outside the chroot. # Script can be run either inside or outside the chroot.
if [ ${INSIDE_CHROOT} -eq 1 ] if [ ${INSIDE_CHROOT} -eq 1 ]
then then
AUTOTEST_SRC="/usr/local/autotest/${FLAGS_board}" SYSROOT="${FLAGS_build_root}/${FLAGS_board}"
else else
AUTOTEST_SRC="${DEFAULT_CHROOT_DIR}/usr/local/autotest/${FLAGS_board}" SYSROOT="${DEFAULT_CHROOT_DIR}${FLAGS_build_root}/${FLAGS_board}"
fi fi
AUTOTEST_SRC="${SYSROOT}/usr/local/autotest"
# Die on any errors. # Die on any errors.
set -e set -e
@ -97,10 +100,12 @@ if [ ! -f "${STATEFUL_IMG}" ] ; then
dd if=/dev/zero of="${STATEFUL_IMG}" bs=1 count=1 \ dd if=/dev/zero of="${STATEFUL_IMG}" bs=1 count=1 \
seek=$(( (${PART_SIZE} - 1) )) seek=$(( (${PART_SIZE} - 1) ))
set +x set +x
trap do_cleanup INT TERM EXIT
sudo losetup "$STATEFUL_LOOP_DEV" "$STATEFUL_IMG" sudo losetup "$STATEFUL_LOOP_DEV" "$STATEFUL_IMG"
sudo mkfs.ext3 "$STATEFUL_LOOP_DEV" sudo mkfs.ext3 "$STATEFUL_LOOP_DEV"
sudo tune2fs -L "C-STATE" -c 0 -i 0 "$STATEFUL_LOOP_DEV" sudo tune2fs -L "C-STATE" -c 0 -i 0 "$STATEFUL_LOOP_DEV"
sudo losetup -d "${STATEFUL_LOOP_DEV}" sudo losetup -d "${STATEFUL_LOOP_DEV}"
trap - INT TERM EXIT
fi fi
# Modifies image for test if requested # Modifies image for test if requested
@ -116,10 +121,16 @@ if [ ${FLAGS_test_image} -eq ${FLAGS_TRUE} ] ; then
fi fi
function do_cleanup { function do_cleanup {
sudo losetup -d "${LOOP_DEV}" echo "Cleaning loopback devices: ${STATEFUL_LOOP_DEV}"
if [ "${STATEFUL_LOOP_DEV}" != "" ]; then
sudo umount "${STATEFUL_DIR}"
sudo losetup -d "${STATEFUL_LOOP_DEV}"
echo "Cleaned"
fi
} }
function install_autotest { function install_autotest {
echo "Detecting autotest at ${AUTOTEST_SRC}"
if [ -d ${AUTOTEST_SRC} ] if [ -d ${AUTOTEST_SRC} ]
then then
local stateful_loop_dev=$(sudo losetup -f) local stateful_loop_dev=$(sudo losetup -f)
@ -128,23 +139,26 @@ function install_autotest {
echo "No free loop device. Free up a loop device or reboot. exiting." echo "No free loop device. Free up a loop device or reboot. exiting."
exit 1 exit 1
fi fi
trap do_cleanup INT TERM EXIT
STATEFUL_LOOP_DEV=$stateful_loop_dev
echo "Mounting ${STATEFUL_DIR} loopback"
sudo losetup "${stateful_loop_dev}" "${STATEFUL_DIR}.image"
sudo mount "${stateful_loop_dev}" "${STATEFUL_DIR}" sudo mount "${stateful_loop_dev}" "${STATEFUL_DIR}"
echo -ne "Install autotest into stateful partition..." echo -ne "Install autotest into stateful partition..."
local autotest_client="/home/autotest-client" local autotest_client="/home/autotest-client"
sudo mkdir -p "${STATEFUL_DIR}${autotest_client}" sudo mkdir -p "${STATEFUL_DIR}${autotest_client}"
sudo cp -fpru ${AUTOTEST_SRC}/client/* \ sudo cp -fpru ${AUTOTEST_SRC}/client/* \
"${STATEFUL_DIR}${autotest_client}" "${STATEFUL_DIR}${autotest_client}"
sudo chmod 755 "${STATEFUL_DIR}${autotest_client}" sudo chmod 755 "${STATEFUL_DIR}${autotest_client}"
sudo chown -R 1000:1000 "${STATEFUL_DIR}${autotest_client}" sudo chown -R 1000:1000 "${STATEFUL_DIR}${autotest_client}"
sudo umount ${STATEFUL_DIR} sudo umount ${STATEFUL_DIR}
sudo losetup -d "${stateful_loop_dev}" sudo losetup -d "${stateful_loop_dev}"
trap - INT TERM EXIT
else else
echo "/usr/local/autotest under ${DEFAULT_CHROOT_DIR} is not installed." echo "/usr/local/autotest under ${DEFAULT_CHROOT_DIR} is not installed."
echo "Please call make_autotest.sh inside chroot first." echo "Please call make_autotest.sh inside chroot first."
sudo umount "${STATEFUL_DIR}"
exit -1 exit -1
fi fi
} }