Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(331)

Unified Diff: make_factory_package.sh

Issue 4824003: crosutils: refine memento image / factory package creation (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/crosutils.git@master
Patch Set: should not compress twice Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « image_common.sh ('k') | mk_memento_images.sh » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: make_factory_package.sh
diff --git a/make_factory_package.sh b/make_factory_package.sh
index 9a44f71dd24d6d9e8a4a48495365578492c13b6d..a251980a1201d9e6b03fdd37721a38b1f8b7e42e 100755
--- a/make_factory_package.sh
+++ b/make_factory_package.sh
@@ -18,6 +18,9 @@
# Load functions and constants for chromeos-install
. "$(dirname "$0")/chromeos-common.sh"
+# Load functions designed for image processing
+. "$(dirname "$0")/image_common.sh"
+
get_default_board
# Flags
@@ -95,6 +98,50 @@ prepare_dir() {
rm -rf state.gz
}
+compress_and_hash_memento_image() {
+ local input_file="$1"
+
+ if has_part_tools; then
+ sudo "${SCRIPTS_DIR}/mk_memento_images.sh" "$input_file" 2 3 |
+ grep hash |
+ awk '{print $4}'
+ else
+ sudo "${SCRIPTS_DIR}/mk_memento_images.sh" part_2 part_3 |
+ grep hash |
+ awk '{print $4}'
+ fi
+}
+
+compress_and_hash_file() {
+ local input_file="$1"
+ local output_file="$2"
+
+ if [ -z "$input_file" ]; then
+ # Runs as a pipe processor
+ gzip_compress -c -9 |
+ tee "$output_file" |
+ openssl sha1 -binary |
+ openssl base64
+ else
+ gzip_compress -c -9 "$input_file" |
+ tee "$output_file" |
+ openssl sha1 -binary |
+ openssl base64
+ fi
+}
+
+compress_and_hash_partition() {
+ local input_file="$1"
+ local part_num="$2"
+ local output_file="$3"
+
+ if has_part_tools; then
+ dump_partition "$input_file" "$part_num" |
+ compress_and_hash_file "" "$output_file"
+ else
+ compress_and_hash_file "part_$part_num" "$output_file"
+ fi
+}
# Clean up stale config and data files.
prepare_omaha
@@ -108,21 +155,25 @@ echo "Output omaha config to ${OMAHA_DIR}/miniomaha.conf"
prepare_dir
-sudo ./unpack_partitions.sh ${RELEASE_IMAGE} &> /dev/null
-release_hash=`sudo ${SCRIPTS_DIR}/mk_memento_images.sh part_2 part_3 \
- | grep hash | awk '{print $4}'`
+if ! has_part_tools; then
+ #TODO(hungte) we can still avoid running unpack_partitions.sh
+ # by $(cat unpack_partitions.sh | grep Label | sed "s/#//" | grep ${name}" |
+ # awk '{ print $1}') to fetch offset/size.
+ echo "Unpacking image ${RELEASE_IMAGE} ..." >&2
+ sudo ./unpack_partitions.sh "${RELEASE_IMAGE}" 2>/dev/null
+fi
+
+release_hash="$(compress_and_hash_memento_image "${RELEASE_IMAGE}")"
sudo chmod a+rw update.gz
mv update.gz rootfs-release.gz
mv rootfs-release.gz ${OMAHA_DATA_DIR}
echo "release: ${release_hash}"
-cat part_8 | gzip -9 > oem.gz
-oem_hash=`cat oem.gz | openssl sha1 -binary | openssl base64`
+oem_hash="$(compress_and_hash_partition "${RELEASE_IMAGE}" 8 "oem.gz")"
mv oem.gz ${OMAHA_DATA_DIR}
echo "oem: ${oem_hash}"
-cat part_12 | gzip -9 > efi.gz
-efi_hash=`cat efi.gz | openssl sha1 -binary | openssl base64`
+efi_hash="$(compress_and_hash_partition "${RELEASE_IMAGE}" 12 "efi.gz")"
mv efi.gz ${OMAHA_DATA_DIR}
echo "efi: ${efi_hash}"
@@ -132,17 +183,18 @@ popd > /dev/null
pushd ${FACTORY_DIR} > /dev/null
prepare_dir
+if ! has_part_tools; then
+ echo "Unpacking image ${FACTORY_IMAGE} ..." >&2
+ sudo ./unpack_partitions.sh "${FACTORY_IMAGE}" 2>/dev/null
+fi
-sudo ./unpack_partitions.sh ${FACTORY_IMAGE} &> /dev/null
-test_hash=`sudo ${SCRIPTS_DIR}//mk_memento_images.sh part_2 part_3 \
- | grep hash | awk '{print $4}'`
+test_hash="$(compress_and_hash_memento_image "${FACTORY_IMAGE}")"
sudo chmod a+rw update.gz
mv update.gz rootfs-test.gz
mv rootfs-test.gz ${OMAHA_DATA_DIR}
echo "test: ${test_hash}"
-cat part_1 | gzip -9 > state.gz
-state_hash=`cat state.gz | openssl sha1 -binary | openssl base64`
+state_hash="$(compress_and_hash_partition "${FACTORY_IMAGE}" 1 "state.gz")"
mv state.gz ${OMAHA_DATA_DIR}
echo "state: ${state_hash}"
@@ -155,8 +207,7 @@ if [ ! -z ${FLAGS_firmware_updater} ] ; then
exit 1
fi
- cat $SHELLBALL | gzip -9 > firmware.gz
- firmware_hash=`cat firmware.gz | openssl sha1 -binary | openssl base64`
+ firmware_hash="$(compress_and_hash_file "$SHELLBALL" "firmware.gz")"
mv firmware.gz ${OMAHA_DATA_DIR}
echo "firmware: ${firmware_hash}"
fi
« no previous file with comments | « image_common.sh ('k') | mk_memento_images.sh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698