Index: stateful_update |
diff --git a/stateful_update b/stateful_update |
index 8b26e10123e0e05f8cdb90e8a6091b0657e1c5ad..7f5ddaec7e996bdf90bffddbca6b3778680b8431 100755 |
--- a/stateful_update |
+++ b/stateful_update |
@@ -28,67 +28,51 @@ remove_quotes() { |
update_dev_image () { |
LSB_RELEASE="/etc/lsb-release" |
STATEFUL_DIR="/mnt/stateful_partition" |
- STATEFUL_IMAGE="$STATEFUL_DIR/stateful.image" |
- STATEFUL_MOUNT_POINT="/tmp/s" |
+ WORK_DIR="${STATEFUL_DIR}/stateful_update" |
if [ -n "${FLAGS_ARGV}" ]; then |
BASE_UPDATE_URL=$(remove_quotes "${FLAGS_ARGV}") |
else |
- if [ -f "$STATEFUL_DIR$LSB_RELEASE" ]; then |
- DEVSERVER_URL=$(grep CHROMEOS_DEVSERVER $STATEFUL_DIR$LSB_RELEASE | \ |
+ if [ -f "${STATEFUL_DIR}${LSB_RELEASE}" ]; then |
+ DEVSERVER_URL=$(grep CHROMEOS_DEVSERVER ${STATEFUL_DIR}${LSB_RELEASE} | \ |
cut -f 2 -d '=') |
fi |
- if [ -z "$DEVSERVER_URL" ]; then |
- DEVSERVER_URL=$(grep CHROMEOS_DEVSERVER $LSB_RELEASE | cut -f 2 -d '=') |
+ if [ -z "${DEVSERVER_URL}" ]; then |
+ DEVSERVER_URL=$(grep CHROMEOS_DEVSERVER ${LSB_RELEASE} | cut -f 2 -d '=') |
fi |
# Sanity check. |
- if [ -z "$DEVSERVER_URL" ]; then |
+ if [ -z "${DEVSERVER_URL}" ]; then |
echo >&2 "No CHROMEOS_DEVSERVER URL found in lsb-release file" |
exit 1 |
fi |
# Devserver URL should never contain "/update" |
- DEVSERVER_URL=$(echo $DEVSERVER_URL | sed -e 's#/update##') |
- BASE_UPDATE_URL="$DEVSERVER_URL/static" |
+ DEVSERVER_URL=$(echo ${DEVSERVER_URL} | sed -e 's#/update##') |
+ BASE_UPDATE_URL="${DEVSERVER_URL}/static" |
fi |
- STATEFUL_UPDATE_URL="$BASE_UPDATE_URL/stateful.image.gz" |
+ STATEFUL_UPDATE_URL="${BASE_UPDATE_URL}/stateful.tgz" |
# Prepare directories for update. |
- rm -rf "$STATEFUL_DIR/var_new" "$STATEFUL_DIR/dev_image_new" |
+ rm -rf "${WORK_DIR}" |
+ mkdir "${WORK_DIR}" |
- # Prepare and mount new stateful partition. |
- rm -rf "$STATEFUL_MOUNT_POINT" |
- mkdir -p "$STATEFUL_MOUNT_POINT" |
- |
- echo "Download stateful partition image from $STATEFUL_UPDATE_URL" |
+ echo "Download stateful image from ${STATEFUL_UPDATE_URL}" |
# Unzip mount and copy the relevant directories. |
# Get the update. |
- eval "wget -qS -T 300 -O - \"$STATEFUL_UPDATE_URL\"" | \ |
- gzip -d > $STATEFUL_IMAGE |
+ eval "wget -qS -T 300 -O - \"${STATEFUL_UPDATE_URL}\"" | \ |
+ tar -C ${WORK_DIR} -xz |
echo >&2 "Successfully downloaded update" |
- trap "rm -f \"$STATEFUL_IMAGE\"" EXIT |
- mount -n -o loop "$STATEFUL_IMAGE" "$STATEFUL_MOUNT_POINT" |
- if [ -d "$STATEFUL_MOUNT_POINT/var" ] && \ |
- [ -d "$STATEFUL_MOUNT_POINT/dev_image" ] ; then |
- echo >&2 "Copying new /var from stateful update" |
- cp -rf "$STATEFUL_MOUNT_POINT/var" "$STATEFUL_DIR/var_new" |
- echo >&2 "Copying new /usr/local from stateful update" |
- cp -rf "$STATEFUL_MOUNT_POINT/dev_image" "$STATEFUL_DIR/dev_image_new" |
+ |
+ if [ -d "${WORK_DIR}/var" ] && [ -d "${WORK_DIR}/dev_image" ] ; then |
echo >&2 "Notifying startup that an update is available" |
- touch "$STATEFUL_DIR/.update_available" |
+ touch "${STATEFUL_DIR}/.update_available" |
else |
echo >&2 "No update available" |
fi |
- |
- umount -n -d "$STATEFUL_MOUNT_POINT" |
- |
- rm -f "$STATEFUL_IMAGE" |
- |
- trap - EXIT |
} |
update_old_state () { |
- echo >&2 "Not updating state except for dev_image." |
+ echo >&2 "Performing standard stateful update." |
} |
update_clean_state () { |