Added bubblewrap / apparmor fixes and diagnostic tools for troubleshooting it on related distros.
This commit is contained in:
@@ -10,6 +10,7 @@ import platform
|
||||
import shutil
|
||||
from typing import Mapping
|
||||
|
||||
from .container_host import ContainerHostReport, inspect_container_host
|
||||
from .launcher import find_wine_tools
|
||||
from .paths import AppPaths
|
||||
from .runtime import find_steam_proton7
|
||||
@@ -37,6 +38,7 @@ class DoctorReport:
|
||||
architecture: str
|
||||
display_backend: str
|
||||
tools: list[ToolStatus]
|
||||
container_host: ContainerHostReport
|
||||
package_hint: str | None
|
||||
warnings: list[str]
|
||||
|
||||
@@ -51,6 +53,8 @@ def inspect_host(environment: Mapping[str, str] | None = None) -> DoctorReport:
|
||||
version = os_release.get("VERSION_ID", "unknown")
|
||||
wine_tools = find_wine_tools()
|
||||
umu_path = _umu_path(env)
|
||||
container_host = inspect_container_host(environment=env)
|
||||
container_required = umu_path is not None
|
||||
tools = [
|
||||
ToolStatus(
|
||||
"python3",
|
||||
@@ -100,6 +104,12 @@ def inspect_host(environment: Mapping[str, str] | None = None) -> DoctorReport:
|
||||
distribution in ARCH_FAMILY_DISTRIBUTIONS,
|
||||
"Steam Runtime container; managed automatically when needed",
|
||||
),
|
||||
ToolStatus(
|
||||
"bubblewrap",
|
||||
container_host.bwrap_path,
|
||||
container_required,
|
||||
"user-namespace sandbox required by UMU and pressure-vessel",
|
||||
),
|
||||
ToolStatus(
|
||||
"vulkaninfo",
|
||||
shutil.which("vulkaninfo"),
|
||||
@@ -118,15 +128,30 @@ def inspect_host(environment: Mapping[str, str] | None = None) -> DoctorReport:
|
||||
"No local game runtime is installed yet; run runtime-bootstrap to fetch the "
|
||||
"pinned official UMU helper. Startup and Play also retry automatically."
|
||||
)
|
||||
if container_required and not container_host.ready:
|
||||
warnings.append(
|
||||
container_host.recommendation
|
||||
or "The Steam Runtime Bubblewrap sandbox is unavailable."
|
||||
)
|
||||
if container_host.broken_umu_profile_link:
|
||||
warnings.append(
|
||||
"UMU's AppArmor profile link is broken and may prevent profiles from "
|
||||
"loading after reboot; run `pristontale-eu container-host --repair`."
|
||||
)
|
||||
warnings.extend(_arch_runtime_warnings(distribution, platform.machine()))
|
||||
required_ok = all(item.path is not None for item in tools if item.required)
|
||||
return DoctorReport(
|
||||
ok=required_ok,
|
||||
ok=(
|
||||
required_ok
|
||||
and (not container_required or container_host.ready)
|
||||
and not container_host.broken_umu_profile_link
|
||||
),
|
||||
distribution=distribution,
|
||||
version=version,
|
||||
architecture=platform.machine(),
|
||||
display_backend="wayland" if env.get("WAYLAND_DISPLAY") else "x11",
|
||||
tools=tools,
|
||||
container_host=container_host,
|
||||
package_hint=_package_hint(distribution),
|
||||
warnings=warnings,
|
||||
)
|
||||
@@ -160,21 +185,22 @@ def _package_hint(distribution: str) -> str | None:
|
||||
if distribution in {"ubuntu", "debian", "linuxmint", "pop"}:
|
||||
return (
|
||||
"Install Python/Tk, Wine (64- and 32-bit), Winetricks, "
|
||||
"Cabextract, OpenSSL, and both 64- and 32-bit Vulkan drivers with APT."
|
||||
"Cabextract, OpenSSL, Bubblewrap, and both 64- and 32-bit Vulkan "
|
||||
"drivers with APT. Ubuntu also needs its AppArmor tools."
|
||||
)
|
||||
if distribution in {"fedora", "nobara"}:
|
||||
return (
|
||||
"Install python3-tkinter, wine, winetricks, cabextract, openssl, "
|
||||
"Install python3-tkinter, wine, winetricks, bubblewrap, cabextract, openssl, "
|
||||
"and the matching 32-bit Vulkan driver with DNF."
|
||||
)
|
||||
if distribution in ARCH_FAMILY_DISTRIBUTIONS:
|
||||
return (
|
||||
"Install python, tk, wine, winetricks, umu-launcher, cabextract, "
|
||||
"Install python, tk, wine, winetricks, umu-launcher, bubblewrap, cabextract, "
|
||||
"openssl, and the matching lib32 Vulkan and gstreamer dependencies with Pacman."
|
||||
)
|
||||
if distribution in {"opensuse-tumbleweed", "opensuse-leap", "suse"}:
|
||||
return (
|
||||
"Install Python/Tk, Wine, Winetricks, Cabextract, OpenSSL, and "
|
||||
"Install Python/Tk, Wine, Winetricks, Bubblewrap, Cabextract, OpenSSL, and "
|
||||
"32-bit Vulkan support with Zypper."
|
||||
)
|
||||
return None
|
||||
|
||||
Reference in New Issue
Block a user