mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-24 15:11:19 +02:00
Harden build_image to not lose loopback devices.
Review URL: http://codereview.chromium.org/1794007
This commit is contained in:
parent
5d8ed6de6a
commit
bde8c1bccc
30
build_image
30
build_image
@ -115,23 +115,17 @@ fi
|
|||||||
mkdir -p "$OUTPUT_DIR"
|
mkdir -p "$OUTPUT_DIR"
|
||||||
|
|
||||||
cleanup_rootfs_loop() {
|
cleanup_rootfs_loop() {
|
||||||
sudo umount "$LOOP_DEV"
|
sudo umount -d "$ROOT_FS_DIR"
|
||||||
sleep 1 # in case $LOOP_DEV is in use.
|
|
||||||
sudo losetup -d "$LOOP_DEV"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup_stateful_fs_loop() {
|
cleanup_stateful_fs_loop() {
|
||||||
sudo umount "${ROOT_FS_DIR}/usr/local"
|
sudo umount "${ROOT_FS_DIR}/usr/local"
|
||||||
sudo umount "${ROOT_FS_DIR}/var"
|
sudo umount "${ROOT_FS_DIR}/var"
|
||||||
sudo umount "${STATEFUL_DIR}"
|
sudo umount -d "${STATEFUL_DIR}"
|
||||||
sleep 1 # follows from cleanup_root_fs_loop.
|
|
||||||
sudo losetup -d "$STATEFUL_LOOP_DEV"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup_esp_loop() {
|
cleanup_esp_loop() {
|
||||||
sudo umount "$ESP_DIR"
|
sudo umount -d "$ESP_DIR"
|
||||||
sleep 1
|
|
||||||
sudo losetup -d "$ESP_LOOP_DEV"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup() {
|
cleanup() {
|
||||||
@ -154,6 +148,20 @@ cleanup() {
|
|||||||
set -e
|
set -e
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete_prompt() {
|
||||||
|
echo "An error occurred in your build so your latest output directory" \
|
||||||
|
"is invalid."
|
||||||
|
read -p "Would you like to delete the output directory (y/N)? " SURE
|
||||||
|
SURE="${SURE:0:1}" # Get just the first character
|
||||||
|
if [ "${SURE}" == "y" ] ; then
|
||||||
|
sudo rm -rf "$OUTPUT_DIR"
|
||||||
|
echo "Deleted $OUTPUT_DIR"
|
||||||
|
else
|
||||||
|
echo "Not deleting $OUTPUT_DIR. Note dev server updates will not work" \
|
||||||
|
"until you successfully build another image or delete this directory"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# ${DEV_IMAGE_ROOT} specifies the location of where developer packages will
|
# ${DEV_IMAGE_ROOT} specifies the location of where developer packages will
|
||||||
# be installed on the stateful dir. On a Chromium OS system, this will
|
# be installed on the stateful dir. On a Chromium OS system, this will
|
||||||
# translate to /usr/local
|
# translate to /usr/local
|
||||||
@ -187,7 +195,7 @@ setup_symlinks_on_root() {
|
|||||||
sudo ln -s "${2}" "${DEV_IMAGE_ROOT}/var"
|
sudo ln -s "${2}" "${DEV_IMAGE_ROOT}/var"
|
||||||
}
|
}
|
||||||
|
|
||||||
trap cleanup EXIT
|
trap "cleanup && delete_prompt" EXIT
|
||||||
|
|
||||||
mkdir -p "$ROOT_FS_DIR"
|
mkdir -p "$ROOT_FS_DIR"
|
||||||
|
|
||||||
@ -428,6 +436,8 @@ setup_symlinks_on_root "/usr/local" "/var"
|
|||||||
# Cleanup loop devices.
|
# Cleanup loop devices.
|
||||||
cleanup
|
cleanup
|
||||||
|
|
||||||
|
trap delete_prompt EXIT
|
||||||
|
|
||||||
# Create the GPT-formatted image
|
# Create the GPT-formatted image
|
||||||
${SCRIPTS_DIR}/build_gpt.sh \
|
${SCRIPTS_DIR}/build_gpt.sh \
|
||||||
--arch=${ARCH} --board=${FLAGS_board} "${OUTPUT_DIR}" "${OUTPUT_IMG}"
|
--arch=${ARCH} --board=${FLAGS_board} "${OUTPUT_DIR}" "${OUTPUT_IMG}"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user