Workaround chrome-bot's special case wackiness.

BUG=4547
TEST="untestable - the failure can only occur on chrome-bot, which I don't have access to "

Change-Id: Ia90eaa7c673f16533dbc397adf7f76e6404c6d2b

Review URL: http://codereview.chromium.org/3978005
This commit is contained in:
Nick Sanders 2010-10-22 21:15:02 -07:00
parent 4a6e482b31
commit ad0599f00c

View File

@ -58,20 +58,26 @@ DEFAULT_USED=
# Reset "default" FLAGS_from based on passed-in board if not set on cmd-line
if [ "$FLAGS_from" = "$DEFAULT_FROM" ]
then
FLAGS_from="${IMAGES_DIR}/$FLAGS_board/$(ls -t1 \
$IMAGES_DIR/$FLAGS_board 2>&-| head -1)"
# Keep the directory name of the current image set (*.bin).
IMG_DIR="$(readlink ${IMAGES_DIR}/${FLAGS_board}/latest)"
FLAGS_from="${IMAGES_DIR}/${FLAGS_board}/${IMG_DIR}"
DEFAULT_USED=1
fi
# Die on any errors.
set -e
if [ -z $DEFAULT_USED ] && [ $FLAGS_test_mod -eq $FLAGS_TRUE ]
if [ -z $DEFAULT_USED ]
then
echo "test_mod requires that the default from path be used."
echo "If non default behavior is desired, run mod_image_for_test manually"
echo "re-run archive build without test_mod"
exit 1
if [ $FLAGS_test_mod -eq $FLAGS_TRUE ] || \
[ $FLAGS_factory_install_mod -eq $FLAGS_TRUE ] || \
[ $FLAGS_factory_test_mod -eq $FLAGS_TRUE ]
then
echo "test_mod requires that the default from path be used."
echo "If non default behavior is desired, run mod_image_for_test manually"
echo "re-run archive build without test_mod"
exit 1
fi
fi
if [ ! -d "$FLAGS_from" ]
@ -152,19 +158,12 @@ then
"--factory"
fi
if [ $FLAGS_factory_install_mod -eq $FLAGS_TRUE ]
then
echo "Modifying image for factory install"
do_chroot_mod "${FLAGS_from}/chromiumos_factory_install_image.bin" \
"--factory_install"
fi
# Modify for recovery
if [ $FLAGS_official_build -eq $FLAGS_TRUE ]
then
BUILDVER=$(ls -t1 $IMAGES_DIR/$FLAGS_board 2>&-| head -1)
CHROOT_IMAGE_DIR=/home/$USER/trunk/src/build/images/$FLAGS_board/$BUILDVER
./enter_chroot.sh -- ./mod_image_for_recovery.sh --board $FLAGS_board \
BUILDVER="$(readlink ${IMAGES_DIR}/${FLAGS_board}/latest)"
CHROOT_IMAGE_DIR=/home/$USER/trunk/src/build/images/$FLAGS_board/$BUILDVER
./enter_chroot.sh -- ./mod_image_for_recovery.sh --board $FLAGS_board \
--image $CHROOT_IMAGE_DIR/chromiumos_base_image.bin
fi
@ -173,6 +172,31 @@ if [ $FLAGS_test_mod -eq $FLAGS_TRUE ] ; then
rm -f ${SRC_IMAGE}
fi
# Build differently sized shims. Currently only factory install shim is
# supported, TODO(tgao): Add developer shim.
if [ $FLAGS_factory_install_mod -eq $FLAGS_TRUE ]
then
echo "Building factory install shim."
# HACK: The build system can't currently handle more than one image size
# at a time. Therefor eit's necessary to do another round of build after
# archiving the original build. This should be fixed in Chromite.
# HACK: cbuild has a special case when running on chrome-bot that
# zeroes out the current revision, which makes calling build_image directly
# fail. You must explictly call replace and specify a unique name numerically
# using build_attempt.
./enter_chroot.sh -- ./build_image --board $FLAGS_board --factory_install \
--replace --build_attempt 7
# Get the install shim dir: It is the newest build.
# This is the output dir for the factory shim, the factory test and
# release images will remain in IMG_DIR, defined previously.
SHIM_DIR="$(readlink ${IMAGES_DIR}/${FLAGS_board}/latest)"
echo "Factory image dir: ${IMG_DIR}"
echo "Factory install shim dir: ${SHIM_DIR}"
fi
# Zip the build
echo "Compressing and archiving build..."
cd "$FLAGS_from"
@ -182,8 +206,23 @@ zip -r "${ZIPFILE}" ${MANIFEST}
if [ $FLAGS_factory_test_mod -eq $FLAGS_TRUE ] || \
[ $FLAGS_factory_install_mod -eq $FLAGS_TRUE ]
then
FACTORY_MANIFEST=`ls | grep factory`
zip -r "${FACTORY_ZIPFILE}" ${FACTORY_MANIFEST}
# We need to have directory structure for factory package, as
# signing and packaging utilities need unpack_partitions.sh.
echo "Compressing factory software"
pushd ..
[ -n "${SHIM_DIR}" ] && rm -f factory_shim && ln -s "${SHIM_DIR}" factory_shim
[ -n "${IMG_DIR}" ] && rm -f factory_test && ln -s "${IMG_DIR}" factory_test
# Restore "latest" status to the original image.
# The "latest" symlink and latest timestamp are used extensively
# throughout the build scripts rather than explicitly specifying an image.
touch "${IMG_DIR}"
[ -n "${IMG_DIR}" ] && rm -f latest && ln -s "${IMG_DIR}" latest
FACTORY_MANIFEST=`find factory_shim factory_test -follow \
-type f | grep -E "(factory_image|factory_install|partition)"`
zip "${FACTORY_ZIPFILE}" ${FACTORY_MANIFEST}
echo "Zipped"
popd
chmod 644 "${FACTORY_ZIPFILE}"
fi
cd -