From 9a9ba1f76910eb6be35d4eba3902cc0caabc051c Mon Sep 17 00:00:00 2001 From: Nick Sanders Date: Fri, 22 Oct 2010 11:11:08 -0700 Subject: [PATCH] Allow build of shim BUG=4547 TEST="run archive build" Change-Id: I716fbd2f648b8e5137ee515aaed7be89a6af8f37 Review URL: http://codereview.chromium.org/3828015 --- archive_build.sh | 59 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 19 deletions(-) diff --git a/archive_build.sh b/archive_build.sh index 7f7e53a3d4..6681208123 100755 --- a/archive_build.sh +++ b/archive_build.sh @@ -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="$(ls -t1 ${IMAGES_DIR}/${FLAGS_board} 2>&-| head -1)" + 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=$(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 \ --image $CHROOT_IMAGE_DIR/chromiumos_base_image.bin fi @@ -173,6 +172,19 @@ 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." + ./enter_chroot.sh -- ./build_image --board $FLAGS_board --factory_install + + # Get the install shim dir: It is the newest build. + # This is the output dir for the factory shim, the factory test and + # release umages will remain in IMG_DIR, defined previously. + SHIM_DIR="$(ls -t1 $IMAGES_DIR/$FLAGS_board 2>&-| head -1)" +fi + # Zip the build echo "Compressing and archiving build..." cd "$FLAGS_from" @@ -182,8 +194,17 @@ 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}" ] && ln -sf "${SHIM_DIR}" factory_shim + [ -n "${IMG_DIR}" ] && ln -sf "${IMG_DIR}" factory_test + 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 -