diff options
| author | tranch <tranch.xiao@gmail.com> | 2026-10-23 16:58:49 +0800 |
|---|---|---|
| committer | tranch <tranch.xiao@gmail.com> | 2026-10-23 16:58:49 +0800 |
| commit | 885d1c77ac036bf2807c6a49a0cb49db5091a492 (patch) | |
| tree | 08db84e0fbe681f708800118f4a3988cee96f9af /build_files/patch-bazzite-os-branch-select.sh | |
| parent | 5725363f633c31a0f96e70f1400fba4958a4356c (diff) | |
| parent | fca1daca7dbe218dde1240b6c406a4257c70bd05 (diff) | |
| download | AeroCore-OS-885d1c77ac036bf2807c6a49a0cb49db5091a492.tar.gz AeroCore-OS-885d1c77ac036bf2807c6a49a0cb49db5091a492.zip | |
Merge testing changes before news trigger44.20261023
Diffstat (limited to 'build_files/patch-bazzite-os-branch-select.sh')
| -rwxr-xr-x | build_files/patch-bazzite-os-branch-select.sh | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/build_files/patch-bazzite-os-branch-select.sh b/build_files/patch-bazzite-os-branch-select.sh new file mode 100755 index 0000000..a360a2e --- /dev/null +++ b/build_files/patch-bazzite-os-branch-select.sh @@ -0,0 +1,58 @@ +#!/usr/bin/bash + +set -euo pipefail + +file=/usr/libexec/os-branch-select + +if [[ ! -f "$file" ]]; then + echo "Unable to locate Bazzite OS branch selector: $file" >&2 + exit 1 +fi + +old=' branch=$(cut -d ":" -f4 <<< "$(rpm-ostree status --booted | grep -m 1 $ID)")' +if ! grep -Fxq "$old" "$file"; then + echo "Bazzite OS branch selector changed; review the downstream patch" >&2 + exit 1 +fi + +patched_file=$(mktemp) +awk -v old="$old" ' + $0 == old { + print " # Read the booted deployment directly; its image name need not match os-release ID." + print " image_ref=$(rpm-ostree status --booted --json | jq -r '\''[.deployments[] | select(.booted) | .[\"container-image-reference\"] // empty][0] // empty'\'')" + print " branch=\"\"" + print " if [[ $image_ref =~ :([^/:]+)$ ]]; then" + print " branch=${BASH_REMATCH[1]}" + print " fi" + found++ + next + } + { print } + END { if (found != 1) exit 1 } +' "$file" > "$patched_file" + +install -m 0755 "$patched_file" "$file" +rm -f "$patched_file" + +# Match the channel names used by Bazzite's Game Mode announcement feeds. +# Steam's rc/beta and bc/main aliases still select the same image branches. +python3 - "$file" <<'PY' +from pathlib import Path +import sys + +path = Path(sys.argv[1]) +text = path.read_text() +replacements = { + " testing)\n echo rc\n": " testing)\n echo beta\n", + " unstable)\n echo main\n": " unstable)\n echo preview\n", + " echo rc\n echo beta\n echo bc\n echo main\n": + " echo rc\n echo beta\n echo bc\n echo preview\n echo main\n", + " bc|main|unstable)\n": " bc|preview|main|unstable)\n", +} +for old in replacements: + if text.count(old) != 1: + raise SystemExit(f"Bazzite branch selector changed; expected exactly one {old!r}") +for old, new in replacements.items(): + text = text.replace(old, new, 1) +path.write_text(text) +PY |
