blob: 05b6e5f8af97fa1ab11883494325458285ab5074 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
#!/usr/bin/bash
set -euo pipefail
root="${AEROCORE_DECK_COMPAT_ROOT:-}"
root="${root%/}"
target_path() {
printf '%s%s\n' "$root" "$1"
}
patch_condition() {
local file="$1"
local old_condition="$2"
local new_condition="$3"
local expected_count="$4"
local old_count new_count patched_file
if [[ ! -f "$file" ]]; then
echo "Unable to locate expected Bazzite Deck file: $file" >&2
exit 1
fi
new_count="$(grep -Foc "$new_condition" "$file" || true)"
if [[ "$new_count" -eq "$expected_count" ]]; then
return 0
fi
old_count="$(grep -Foc "$old_condition" "$file" || true)"
if [[ "$old_count" -ne "$expected_count" ]]; then
echo "Unable to locate the expected Bazzite Deck image check in $file" >&2
echo "Expected $expected_count occurrence(s), found old=$old_count new=$new_count" >&2
exit 1
fi
patched_file="$(mktemp)"
awk \
-v old_condition="$old_condition" \
-v new_condition="$new_condition" \
' {
position = index($0, old_condition)
if (position) {
$0 = substr($0, 1, position - 1) new_condition substr($0, position + length(old_condition))
}
print
}' "$file" > "$patched_file"
cp "$patched_file" "$file"
rm -f "$patched_file"
new_count="$(grep -Foc "$new_condition" "$file" || true)"
if [[ "$new_count" -ne "$expected_count" ]]; then
echo "Failed to patch the Bazzite Deck image check in $file" >&2
exit 1
fi
}
# Keep AeroCore's public image-name, while restoring the Deck capability checks
# used by Bazzite's runtime scripts. These are literal source lines; variable
# expansion must happen later, when the scripts run on the installed system.
# shellcheck disable=SC2016
patch_condition \
"${1:-$(target_path /usr/libexec/bazzite-hardware-setup)}" \
'if [[ "$IMAGE_NAME" != *deck* && "$IMAGE_NAME" != *dx* ]]; then' \
'if [[ "$IMAGE_NAME" != aerocore-os && "$IMAGE_NAME" != *deck* && "$IMAGE_NAME" != *dx* ]]; then' \
1
# The hardware setup has a second Deck-only block after the top-level image
# guard. Keep it active for AeroCore as well.
# shellcheck disable=SC2016
patch_condition \
"${1:-$(target_path /usr/libexec/bazzite-hardware-setup)}" \
'if [[ $IMAGE_NAME =~ "deck" || $IMAGE_NAME =~ "ally" ]]; then' \
'if [[ $IMAGE_NAME =~ "deck" || $IMAGE_NAME =~ "ally" || $IMAGE_NAME == aerocore-os ]]; then' \
1
# bazzite-steam gates the Steam bootstrap archive and -steamdeck flag on the
# image name. The user setup script has the same Deck-only gating in three
# places.
# shellcheck disable=SC2016
patch_condition \
"$(target_path /usr/bin/bazzite-steam)" \
'if [[ $IMAGE_NAME =~ "deck" ]]; then' \
'if [[ $IMAGE_NAME =~ "deck" || $IMAGE_NAME == aerocore-os ]]; then' \
1
# shellcheck disable=SC2016
patch_condition \
"$(target_path /usr/libexec/bazzite-user-setup)" \
'if [[ $IMAGE_NAME =~ "deck" || $IMAGE_NAME =~ "ally" ]]; then' \
'if [[ $IMAGE_NAME =~ "deck" || $IMAGE_NAME =~ "ally" || $IMAGE_NAME == aerocore-os ]]; then' \
3
|