blob: 9af0047a94b421d70a6685896bf6d41b8011c90e [file] [log] [blame]
#!/bin/bash
# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# Customizes a Chrome OS release image by setting /etc/lsb-release values.
# Load common constants and variables.
. "$(dirname "$0")/common.sh"
set_lsb_release_keyval() {
local rootfs=$1
local key=$2
local value=$3
local temp_lsb_release="$rootfs/etc/temp-lsb-release"
echo "$key=$value" | sudo tee "$temp_lsb_release" > /dev/null
grep -Ev "^$key=" "$rootfs/etc/lsb-release" \
| sudo tee -a "$temp_lsb_release" > /dev/null
sudo sort -o "$rootfs/etc/lsb-release" "$temp_lsb_release"
sudo rm -f "$temp_lsb_release"
}
main() {
set -e
local image=$1
local key=$2
local value=$3
if [ $# -ne 1 ] && [ $# -ne 3 ]; then
cat <<EOF
Usage: $PROG <image.bin> [<key> <value>]
Examples:
$ $PROG chromiumos_image.bin
Dumps /etc/lsb-release from chromiumos_image.bin to stdout.
$ $PROG chromiumos_image.bin CHROMEOS_RELEASE_DESCRIPTION "New description"
Sets the CHROMEOS_RELEASE_DESCRIPTION key's value to "New description"
in /etc/lsb-release in chromiumos_image.bin, sorts the keys and dumps
the updated file to stdout.
EOF
exit 1
fi
local rootfs=$(mktemp -d)
mount_image_partition_ro "$image" 3 "$rootfs"
trap "sudo umount -d $rootfs; rm -rf $rootfs" EXIT
if [ -n "$key" ]; then
sudo umount -d "$rootfs"
mount_image_partition "$image" 3 "$rootfs"
set_lsb_release_keyval "$rootfs" "$key" "$value"
touch "$image" # Updates the image modification time.
fi
cat "$rootfs/etc/lsb-release"
}
main "$@"