Fedora Fix
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user