Fedora Fix

This commit is contained in:
MangoPig
2026-05-31 20:48:18 +01:00
parent 3f753d0dd0
commit f1a2d08e14
5 changed files with 85 additions and 11 deletions

View File

@@ -39,6 +39,39 @@ mark_reboot_required() {
echo ""
}
get_atomic_requested_packages() {
local python_bin=""
local candidate
for candidate in python3 python /usr/libexec/platform-python; do
if command -v "$candidate" >/dev/null 2>&1; then
python_bin="$candidate"
break
fi
done
if [ -z "$python_bin" ]; then
return 0
fi
rpm-ostree status --json 2>/dev/null | "$python_bin" -c '
import json, sys
try:
data = json.load(sys.stdin)
except Exception:
raise SystemExit(0)
for deployment in data.get("deployments", []):
if deployment.get("booted"):
for key in ("requested-packages", "requested-local-packages"):
for package in deployment.get(key, []):
if package:
print(package)
break
'
}
install_packages() {
local packages=("$@")
@@ -59,11 +92,25 @@ install_packages() {
if is_fedora_family; then
if is_atomic_fedora; then
local requested_pkg
local missing_packages=()
declare -A requested_packages=()
local pkg
while IFS= read -r requested_pkg; do
[ -n "$requested_pkg" ] && requested_packages["$requested_pkg"]=1
done < <(get_atomic_requested_packages)
for pkg in "${packages[@]}"; do
rpm -q "$pkg" >/dev/null 2>&1 || missing_packages+=("$pkg")
if rpm -q "$pkg" >/dev/null 2>&1; then
continue
fi
if [ -n "${requested_packages[$pkg]:-}" ]; then
continue
fi
missing_packages+=("$pkg")
done
if [ ${#missing_packages[@]} -eq 0 ]; then