summaryrefslogtreecommitdiff
path: root/build_files/patch-bazzite-rollback-helper.sh
diff options
context:
space:
mode:
authortranch <tranch.xiao@gmail.com>2026-09-13 19:18:04 +0800
committertranch <tranch.xiao@gmail.com>2026-09-13 19:18:04 +0800
commit796c6c8a70c92d4675df7c2ec2d25ecda139d723 (patch)
tree06c6d3e7788d7b2ad5ddd0565e2651c0c8d9d151 /build_files/patch-bazzite-rollback-helper.sh
parentab070aec5f1d760a2539e14cb19da61593bded15 (diff)
parentd734f2c746632772b794143762f2fcea78e62011 (diff)
downloadAeroCore-OS-796c6c8a70c92d4675df7c2ec2d25ecda139d723.tar.gz
AeroCore-OS-796c6c8a70c92d4675df7c2ec2d25ecda139d723.zip
Merge testing into main for 44.x stable release44.20260913
Diffstat (limited to 'build_files/patch-bazzite-rollback-helper.sh')
-rwxr-xr-xbuild_files/patch-bazzite-rollback-helper.sh52
1 files changed, 52 insertions, 0 deletions
diff --git a/build_files/patch-bazzite-rollback-helper.sh b/build_files/patch-bazzite-rollback-helper.sh
new file mode 100755
index 0000000..6d565b0
--- /dev/null
+++ b/build_files/patch-bazzite-rollback-helper.sh
@@ -0,0 +1,52 @@
+#!/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 | map(select(.booted == true)) | first | .[\"container-image-reference\"] // empty'\'')"
+ 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 | map(select(.booted == true)) | first | .[\"container-image-reference\"] // empty'\'')"
+ print " if [[ -z \"$current\" ]]; then"
+ print " echo \"Unable to determine the current booted image reference.\" >&2"
+ print " return 1"
+ print " fi"
+ 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://[^\"]+/", "$(signing_scheme)$(current_image_prefix)/")
+ gsub("\\$\\(signing_scheme\\)/\\$\\(current_image_prefix\\)/", "$(signing_scheme)$(current_image_prefix)/")
+ gsub("\\$\\(signing_scheme\\)/", "$(signing_scheme)")
+ print
+ }
+' "$file" > "$patched_file"
+
+install -m 0755 "$patched_file" "$file"
+rm -f "$patched_file"