summaryrefslogtreecommitdiff
path: root/scripts/image_signing/set_lsb_release.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/image_signing/set_lsb_release.sh')
-rwxr-xr-xscripts/image_signing/set_lsb_release.sh25
1 files changed, 16 insertions, 9 deletions
diff --git a/scripts/image_signing/set_lsb_release.sh b/scripts/image_signing/set_lsb_release.sh
index e847abb1..5b669120 100755
--- a/scripts/image_signing/set_lsb_release.sh
+++ b/scripts/image_signing/set_lsb_release.sh
@@ -11,15 +11,17 @@
set_lsb_release_keyval() {
local rootfs=$1
+ local lsb="${rootfs}/etc/lsb-release"
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"
- restore_lsb_selinux "$rootfs/etc/lsb-release"
+ local data
+ data=$(
+ (
+ grep -Ev "^${key}=" "${lsb}"
+ echo "${key}=${value}"
+ ) | sort
+ )
+ sudo tee "${lsb}" <<<"${data}" >/dev/null
}
main() {
@@ -45,13 +47,15 @@ EOF
exit 1
fi
+ # If there are no key/value pairs to process, we don't need write access.
+ local ro=$([[ $# -eq 0 ]] && echo true || echo false)
+
local image=$1
shift
local loopdev=$(loopback_partscan "${image}")
local rootfs=$(make_temp_dir)
- # If there are no key/value pairs to process, we don't need write access.
- if [[ $# -eq 0 ]]; then
+ if ${ro}; then
mount_loop_image_partition_ro "${loopdev}" 3 "${rootfs}"
else
mount_loop_image_partition "${loopdev}" 3 "${rootfs}"
@@ -65,6 +69,9 @@ EOF
shift 2
set_lsb_release_keyval "${rootfs}" "${key}" "${value}"
done
+ if ! ${ro}; then
+ restore_lsb_selinux "${rootfs}/etc/lsb-release"
+ fi
# Dump the final state.
cat "${rootfs}/etc/lsb-release"