| 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 () {
|
|
|