Index: mod_image_for_recovery.sh |
diff --git a/mod_image_for_recovery.sh b/mod_image_for_recovery.sh |
index faa240c3cd7560f665f8559d73271895e842b7ff..7d4066a86c2a34e6572241e441da892deebdda74 100755 |
--- a/mod_image_for_recovery.sh |
+++ b/mod_image_for_recovery.sh |
@@ -8,35 +8,50 @@ |
. "$(dirname "$0")/common.sh" |
+# Load functions and constants for chromeos-install |
+. "$(dirname "$0")/chromeos-common.sh" |
+ |
# Script must be run inside the chroot. |
restart_in_chroot_if_needed $* |
-DEFINE_string image_dir "" \ |
- "Directory to pristine/base image." |
-DEFINE_string image_name "chromiumos_image.bin" \ |
- "Name of Chrome OS image to modify." |
+get_default_board |
+ |
+DEFINE_string board "$DEFAULT_BOARD" "Board for which the image was built" |
+DEFINE_string image "" "Location of the rootfs raw image file" |
# Parse command line |
FLAGS "$@" || exit 1 |
eval set -- "${FLAGS_ARGV}" |
-set -e |
+# No board, no default and no image set then we can't find the image |
+if [ -z $FLAGS_image ] && [ -z $FLAGS_board ] ; then |
+ setup_board_warning |
+ die "mod_image_for_recovery failed. No board set and no image set" |
+fi |
-if [ -z $FLAGS_image_dir ] || [ ! -d $FLAGS_image_dir ]; then |
- echo "Error: invalid flag --image_dir" |
- exit 1 |
+# 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="chromiumos_image.bin" |
+ FLAGS_image="${IMAGES_DIR}/$(ls -t $IMAGES_DIR 2>&-| head -1)/${FILENAME}" |
fi |
-SRC_PATH="${FLAGS_image_dir}/${FLAGS_image_name}" |
-if [ -z $FLAGS_image_name ] || [ ! -f $SRC_PATH ]; then |
- echo "Error: invalid flag --image_name" |
+# Turn path into an absolute path. |
+FLAGS_image=$(eval readlink -f ${FLAGS_image}) |
+ |
+# Abort early if we can't find the image |
+if [ ! -f $FLAGS_image ] ; then |
+ echo "No image found at $FLAGS_image" |
exit 1 |
fi |
+set -e |
+ |
# Constants |
-OUTPUT_DIR=$FLAGS_image_dir |
-ROOT_FS_DIR="${OUTPUT_DIR}/rootfs" |
-STATEFUL_FS_DIR="${OUTPUT_DIR}/stateful_partition" |
+IMAGE_DIR="$(dirname "$FLAGS_image")" |
+IMAGE_NAME="$(basename "$FLAGS_image")" |
+ROOT_FS_DIR="$IMAGE_DIR/rootfs" |
+STATEFUL_DIR="$IMAGE_DIR/stateful_partition" |
RECOVERY_IMAGE="recovery_image.bin" |
mount_gpt_cleanup() { |
@@ -49,24 +64,24 @@ update_recovery_packages() { |
echo "Modifying image ${image_name} for recovery use" |
- trap "mount_gpt_cleanup \"${ROOT_FS_DIR}\" \"${STATEFUL_FS_DIR}\"" EXIT |
+ trap "mount_gpt_cleanup \"${ROOT_FS_DIR}\" \"${STATEFUL_DIR}\"" EXIT |
- ${SCRIPTS_DIR}/mount_gpt_image.sh --from "${OUTPUT_DIR}" \ |
+ ${SCRIPTS_DIR}/mount_gpt_image.sh --from "${IMAGE_DIR}" \ |
--image "$( basename ${image_name} )" -r "${ROOT_FS_DIR}" \ |
- -s "${STATEFUL_FS_DIR}" |
+ -s "${STATEFUL_DIR}" |
# Mark the image as a recovery image (needed for recovery boot) |
- sudo touch "${STATEFUL_FS_DIR}/.recovery" |
+ sudo touch "${STATEFUL_DIR}/.recovery" |
trap - EXIT |
${SCRIPTS_DIR}/mount_gpt_image.sh -u -r "${ROOT_FS_DIR}" \ |
- -s "${STATEFUL_FS_DIR}" |
+ -s "${STATEFUL_DIR}" |
} |
# Main |
-DST_PATH="${OUTPUT_DIR}/${RECOVERY_IMAGE}" |
-echo "Making a copy of original image ${SRC_PATH}" |
-cp $SRC_PATH $DST_PATH |
+DST_PATH="${IMAGE_DIR}/${RECOVERY_IMAGE}" |
+echo "Making a copy of original image ${FLAGS_image}" |
+cp $FLAGS_image $DST_PATH |
update_recovery_packages $DST_PATH |
echo "Recovery image created at ${DST_PATH}" |