OLD | NEW |
1 #!/bin/bash | 1 #!/bin/bash |
2 | 2 |
3 # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. | 3 # Copyright (c) 2009 The Chromium OS Authors. All rights reserved. |
4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
6 | 6 |
7 # This is the autoupdater for Memento. When called it consults Omaha to see | 7 # This is the autoupdater for Memento. When called it consults Omaha to see |
8 # if there's an update available. If so, it downloads it to the other | 8 # if there's an update available. If so, it downloads it to the other |
9 # partition on the Memento USB stick, then alters the MBR and partitions | 9 # partition on the Memento USB stick, then alters the MBR and partitions |
10 # as needed so the next reboot will boot into the newly installed partition. | 10 # as needed so the next reboot will boot into the newly installed partition. |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 true | 51 true |
52 else | 52 else |
53 log "Failed to acquire lockfile: $PID_FILE." | 53 log "Failed to acquire lockfile: $PID_FILE." |
54 log "Held by $(cat $PID_FILE)" | 54 log "Held by $(cat $PID_FILE)" |
55 exit 1 | 55 exit 1 |
56 fi | 56 fi |
57 # remove lockfile when we exit | 57 # remove lockfile when we exit |
58 trap 'rm -f "$PID_FILE"; log Memento AutoUpdate terminating; exit $?' \ | 58 trap 'rm -f "$PID_FILE"; log Memento AutoUpdate terminating; exit $?' \ |
59 INT TERM EXIT | 59 INT TERM EXIT |
60 | 60 |
| 61 if [ x$1 = "x-f" ]; then |
| 62 log "Forced update requested" |
| 63 ForceUpdate="yes" |
| 64 shift |
| 65 fi |
| 66 |
61 log Memento AutoUpdate starting | 67 log Memento AutoUpdate starting |
62 | 68 |
63 # Get local version | 69 # Get local version |
64 APP_VERSION=$(grep ^CHROMEOS_RELEASE_VERSION \ | 70 APP_VERSION=$(grep ^CHROMEOS_RELEASE_VERSION \ |
65 /mnt/stateful_partition/etc/lsb-release | \ | 71 /mnt/stateful_partition/etc/lsb-release | \ |
66 cut -d = -f 2-) | 72 cut -d = -f 2-) |
67 if [ "x" = "x$APP_VERSION" ] | 73 if [ "x" = "x$APP_VERSION" ] |
68 then | 74 then |
69 # look in the main file | 75 # look in the main file |
70 APP_VERSION=$(grep ^CHROMEOS_RELEASE_VERSION \ | 76 APP_VERSION=$(grep ^CHROMEOS_RELEASE_VERSION \ |
71 /etc/lsb-release | cut -d = -f 2-) | 77 /etc/lsb-release | cut -d = -f 2-) |
72 fi | 78 fi |
73 | 79 |
74 # See if we're forcing an update from a specific URL | 80 # See if we're forcing an update from a specific URL |
75 if [ "x" = "x$1" ] | 81 if [ "x" = "x$1" ] |
76 then | 82 then |
77 # abort if autoupdates have been disabled, but only when an update image | 83 # abort if autoupdates have been disabled, but only when an update image |
78 # isn't forced | 84 # isn't forced |
79 UPDATES_DISABLED_FILE="/var/local/disable_software_update" | 85 UPDATES_DISABLED_FILE="/var/local/disable_software_update" |
80 if [ -f "$UPDATES_DISABLED_FILE" ] | 86 if [ -f "$UPDATES_DISABLED_FILE" ] |
81 then | 87 then |
82 log Updates disabled. Aborting. | 88 log Updates disabled. Aborting. |
83 exit 0 | 89 exit 0 |
84 fi | 90 fi |
85 | 91 |
86 # check w/ omaha to see if there's an update | 92 # check w/ omaha to see if there's an update |
87 OMAHA_CHECK_OUTPUT=$(`dirname "$0"`/ping_omaha.sh $APP_VERSION) | 93 if [ "$ForceUpdate" = "yes" ]; then |
| 94 OMAHA_CHECK_OUTPUT=$(`dirname "$0"`/ping_omaha.sh "ForcedUpdate") |
| 95 else |
| 96 OMAHA_CHECK_OUTPUT=$(`dirname "$0"`/ping_omaha.sh $APP_VERSION) |
| 97 fi |
88 IMG_URL=$(echo "$OMAHA_CHECK_OUTPUT" | grep '^URL=' | cut -d = -f 2-) | 98 IMG_URL=$(echo "$OMAHA_CHECK_OUTPUT" | grep '^URL=' | cut -d = -f 2-) |
89 CHECKSUM=$(echo "$OMAHA_CHECK_OUTPUT" | grep '^HASH=' | cut -d = -f 2-) | 99 CHECKSUM=$(echo "$OMAHA_CHECK_OUTPUT" | grep '^HASH=' | cut -d = -f 2-) |
90 else | 100 else |
91 log User forced an update from: "$1" checksum: "$2" | 101 log User forced an update from: "$1" checksum: "$2" |
92 IMG_URL="$1" | 102 IMG_URL="$1" |
93 CHECKSUM="$2" | 103 CHECKSUM="$2" |
94 fi | 104 fi |
95 | 105 |
96 if [[ -z "$IMG_URL" || -z "$CHECKSUM" ]] | 106 if [[ -z "$IMG_URL" || -z "$CHECKSUM" ]] |
97 then | 107 then |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 NEW_VERSION=$(grep ^GOOGLE_RELEASE "$MOUNTPOINT"/etc/lsb-release | \ | 227 NEW_VERSION=$(grep ^GOOGLE_RELEASE "$MOUNTPOINT"/etc/lsb-release | \ |
218 cut -d = -f 2-) | 228 cut -d = -f 2-) |
219 if [ "x$NEW_VERSION" = "x" ] | 229 if [ "x$NEW_VERSION" = "x" ] |
220 then | 230 then |
221 log "Can't find new version number. aborting update" | 231 log "Can't find new version number. aborting update" |
222 umount "$MOUNTPOINT" | 232 umount "$MOUNTPOINT" |
223 rmdir "$MOUNTPOINT" | 233 rmdir "$MOUNTPOINT" |
224 exit 1 | 234 exit 1 |
225 else | 235 else |
226 # See if it's newer than us | 236 # See if it's newer than us |
227 if version_number_greater_than "$APP_VERSION" "$NEW_VERSION" | 237 if [ "$ForceUpdate" != "yes" ] && |
| 238 version_number_greater_than "$APP_VERSION" "$NEW_VERSION" |
228 then | 239 then |
229 log "Can't upgrade to older version: " "$NEW_VERSION" | 240 log "Can't upgrade to older version: " "$NEW_VERSION" |
230 umount "$MOUNTPOINT" | 241 umount "$MOUNTPOINT" |
231 rmdir "$MOUNTPOINT" | 242 rmdir "$MOUNTPOINT" |
232 exit 1 | 243 exit 1 |
233 fi | 244 fi |
234 fi | 245 fi |
235 | 246 |
236 "$MOUNTPOINT"/postinst "$INSTALL_DEV" 2>&1 | cat >> "$MEMENTO_AU_LOG"; \ | 247 "$MOUNTPOINT"/postinst "$INSTALL_DEV" 2>&1 | cat >> "$MEMENTO_AU_LOG"; \ |
237 [ "${PIPESTATUS[*]}" = "0 0" ] | 248 [ "${PIPESTATUS[*]}" = "0 0" ] |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 -e "s/\(${LOCAL_DEV//\//\\/} .*\), bootable/\1/" \ | 283 -e "s/\(${LOCAL_DEV//\//\\/} .*\), bootable/\1/" \ |
273 > "$LAYOUT_FILE" | 284 > "$LAYOUT_FILE" |
274 sfdisk --force $ROOT_DEV < "$LAYOUT_FILE" 2>&1 | cat >> "$MEMENTO_AU_LOG" | 285 sfdisk --force $ROOT_DEV < "$LAYOUT_FILE" 2>&1 | cat >> "$MEMENTO_AU_LOG" |
275 abort_update_if_cmd_failed | 286 abort_update_if_cmd_failed |
276 | 287 |
277 # mark update as complete so we don't try to update again | 288 # mark update as complete so we don't try to update again |
278 touch "$UPDATED_COMPLETED_FILE" | 289 touch "$UPDATED_COMPLETED_FILE" |
279 | 290 |
280 # tell user to reboot | 291 # tell user to reboot |
281 log Autoupdate applied. You should now reboot | 292 log Autoupdate applied. You should now reboot |
OLD | NEW |