summaryrefslogtreecommitdiff
path: root/build_files/patch-bazzite-rollback-helper.sh
diff options
context:
space:
mode:
Diffstat (limited to 'build_files/patch-bazzite-rollback-helper.sh')
-rw-r--r--build_files/patch-bazzite-rollback-helper.sh43
1 files changed, 43 insertions, 0 deletions
diff --git a/build_files/patch-bazzite-rollback-helper.sh b/build_files/patch-bazzite-rollback-helper.sh
new file mode 100644
index 0000000..d5b3f21
--- /dev/null
+++ b/build_files/patch-bazzite-rollback-helper.sh
@@ -0,0 +1,43 @@
+#!/usr/bin/bash
+
+set -euo pipefail
+
+file=/usr/bin/bazzite-rollback-helper
+
+if [[ ! -f "$file" ]]; then
+ echo "Unable to locate Bazzite rollback helper: $file" >&2
+ exit 1
+fi
+
+if grep -Fq 'current_image_prefix()' "$file"; then
+ exit 0
+fi
+
+patched_file=$(mktemp)
+awk '
+ /^signing_scheme\(\) \{/ {
+ print "signing_scheme() {"
+ print " local current=$(rpm-ostree status -b --json | jq -r '\''.deployments[] | select(.booted == true) | .["container-image-reference"]'\'')"
+ print " local scheme=\"ostree-unverified-registry\""
+ print " [[ \"$current\" == *\"ostree-image-signed\"* ]] && scheme=\"ostree-image-signed\""
+ print " echo \"$scheme:docker://\""
+ print "}"
+ print ""
+ print "current_image_prefix() {"
+ print " local current"
+ print " current=$(rpm-ostree status -b --json | jq -r '\''.deployments[] | select(.booted == true) | .["container-image-reference"]'\'')"
+ print " current=\"${current#ostree-image-signed:}\""
+ print " current=\"${current#ostree-unverified-registry:}\""
+ print " current=\"${current#docker://}\""
+ print " echo \"${current%/*}\""
+ print "}"
+ skip=1
+ next
+ }
+ skip && /^warn_if_de_mismatch\(\) \{/ { skip=0; print; next }
+ skip { next }
+ { gsub("ostree-image-signed:docker://ghcr.io/ublue-os/", "$(signing_scheme)/$(current_image_prefix)/"); print }
+' "$file" > "$patched_file"
+
+install -m 0755 "$patched_file" "$file"
+rm -f "$patched_file"