feat: add 3 game engines: Open 3D Engine (COPR, BETA), Unreal Engine 5.8 (guided zip), Unigine (guided .run with EULA gate)#74
Conversation
|
@kernelqa I'll also need new screenshot of the v2.0.x for the website and main github page please |
|
unzip errors for Unreal and Unigine on Alma9
|
- install_unreal: EL9's unzip 6.0 can fail silently on ZIP64 archives (Epic's Linux UE downloads). Drop -q so errors surface; add python3 zipfile module as an automatic fallback when unzip exits non-zero. - install_unigine: add chcon -t bin_t on the copied .run so SELinux enforcing on EL9 doesn't block execution from /opt (best-effort, no-op on permissive or when chcon is absent). - polkit policy: allow_inactive=auth_admin (was: no) so CLI and SSH sessions can also authenticate via pkexec without a desktop session. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add GDM/GNOME-gated "Windows-style UI" row in the Setup tab: installs Dash to Panel, ArcMenu, System Monitor, Blur My Shell, GNOME Tweaks, and Nautilus copy-path extension system-wide in one click - Bundle gnome-ui extensions and dconf profile in src/gnome-ui/ (packaged to /usr/share/almalinux-creative-installer/gnome-ui/ by the RPM) - Add install_gnome_ui / remove_gnome_ui actions to the helper; dev mode resolves data dir relative to the helper script path - Gate the Install/Remove buttons to GNOME Desktop sessions only (XDG_CURRENT_DESKTOP check); shows "GNOME only" badge on other DEs - Rename all SHED / SHED MTL file names and content references: 01-shed_gnome_defaults → 01-creative_gnome_defaults, SHED_UI_EL9.yaml → gnome-ui-setup.yaml, shed_launcher.desktop removed from dconf favorite-apps - Fix polkit policy: allow_inactive=auth_admin (was: no) so QA and SSH sessions can authenticate via pkexec without a desktop session - Update spec: install gnome-ui data tree; add %files entries; bump version notes in changelog Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
….sh (SC2004) Third-party System Monitor extension script used \$var inside \$(( )) which shellcheck flags as SC2004. All three copies fixed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…message - install_unreal_flow: hint now says Linux_Unreal_Engine_5.8.0.zip (no longer mentions preview-1 which confused QA and is out of date) - run_helper_with_callback: exit code 127 + "not authorized" now emits a clear message explaining the polkit agent requirement instead of surfacing the raw pkexec error Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…n + drop preview label - run_helper_with_callback: check polkit policy file exists before calling pkexec; show a clear actionable error (install the RPM) instead of the cryptic "Not authorized / This incident has been reported" from pkexec - Fix auth error detection: scan all captured output lines (not just last) so the "not authorized / incident" pattern matches correctly - install_unreal helper: desktop entry Name drops "(preview)" label - install_unreal helper: comment updated (preview-1 ref removed) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…t can authenticate All guided install flows (Resolve, 3DCoat, InstaMaterial, JangaFX, Gaffer, Unreal, Unigine) open the browser with xdg-open and then show a QFileDialog. When the file dialog closes, focus is on the browser/desktop — not the app. Polkit's auth agent needs to attach its password dialog to an active app window; without focus it silently returns "Not authorized" (exit 127). Fix: call raise_() + activateWindow() in every pick_* method immediately after QFileDialog.getOpenFileName() returns, before pkexec is invoked. This restores window focus and lets polkit show the authentication prompt. Also: skip pkexec entirely when already running as root (os.getuid()==0), since pkexec refuses to re-escalate from root and returns 127. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…-flight The allow_inactive=auth_admin change caused polkitd to reload its policy when the RPM was installed, clearing the auth_admin_keep session cache. This forced re-authentication for ALL subsequent pkexec calls. Combined with the focus issue (polkit agent can't show the dialog after xdg-open steals window focus), this broke every app, not just the guided flows. Reverted to allow_inactive=no (identical to main) so polkitd does not trigger a cache-clearing reload on PR 74 RPM installs. Also removed the POLKIT_POLICY pre-flight check — over-engineered and not needed since the helper path check is sufficient. Kept: raise_()/activateWindow() in all pick_* methods (the real fix for the guided-flow pkexec focus issue), os.getuid()==0 root bypass, and the improved auth error message detection. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ruff flags semicolon-joined statements as E702. Split all 7 instances across the guided-flow pick_* methods onto individual lines. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…polkit env check run_helper_with_callback is now byte-for-byte identical to main — the os.getuid()==0 bypass, POLKIT_POLICY pre-flight, and custom error message rewrites are all reverted. Any one of those could have broken pkexec behaviour that works on main. Added _check_polkit_environment() that runs in the background on startup and logs a clear warning if polkitd is not running or loginctl reports the session as inactive, so the QA can diagnose the root cause instead of hunting through "Not authorized" messages. Kept: raise_()/activateWindow() in all pick_* methods (focus fix for guided flows), unzip fallback + chcon for EL9, desktop entry cleanup, shellcheck fixes, and the GNOME UI setup feature. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…in spec pkexec needs a running polkit authentication agent to show the password prompt. Without it, every pkexec call silently returns "Not authorized" (exit 127) instead of prompting. - _ensure_polkit_agent(): called at app startup; on Wayland, gnome-shell is the built-in agent so nothing to do. On X11, checks if any polkit.*agent process is running; if not, launches polkit-gnome-authentication-agent-1 from /usr/lib/polkit-gnome/ or /usr/libexec/. Logs a clear dnf install hint if the binary is missing. - spec: Recommends polkit-gnome so the agent binary is present on fresh installs; soft dep so Wayland-only setups are not forced to install it. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
✅ Beta RPMs are ready for commit Option 1: COPR testing repo (recommended, installs via DNF)Enable the testing repo, then install. Works on both AlmaLinux 9 sudo dnf copr enable tristantheroux/AlmaLinux-Creative-Installer-Testing
sudo dnf install almalinux-creative-installer
Uninstall after QAsudo dnf remove almalinux-creative-installer
sudo dnf copr remove tristantheroux/AlmaLinux-Creative-Installer-TestingOption 2: Manual RPM downloadDownload from this run's artifacts: Artifact names:
|
Summary
Adds 3 game engines to the catalog, introducing two new install patterns (one-click COPR install, guided .run install behind a GUI EULA consent gate) plus a reusable BETA chip for pre-release apps.
Related Issue
Closes #73, closes #70, closes #67
Why this change?
Fills out the Game Engines category with the three most-requested engines from the issue tracker: a fully open source Unreal alternative (O3DE), Unreal Engine itself, and Unigine.
Type of change
What was done?
New Apps
hellaenergy/o3de, one click/opt/unreal-engine/.run→/opt/unigine/Implementation details
"beta": Trueapp field renders an amber BETA pill next to the app name (same construction as the EL chip). Applied to O3DE and Unreal 5.8.centos-stream-10-x86_64chroot (the project has no epel-10 chroot, so a barecopr enablewould fail on AlmaLinux 10), then auto-detects the newest versioned major (o3deNNNN, currentlyo3de2605) via repoquery and installs it. Remove uninstalls allo3deNNNNpackages and disables the COPR. EL10 only./opt(not/tmp, the engine is tens of GB), handles both zip layouts (rootEngine/or single top-level folder), chowns to the invoking user (the editor writes into its own tree), and writes a desktop entry..runshows an interactive terminal EULA, so the GUI collects explicit consent first (dialog links to the UNIGINE EULA, with an "I Agree" button), then the helper runs the installer into/opt/uniginewith piped acceptance, chowns to the invoking user so the SDK Browser can self-update, and writes a proper named desktop entry (the vendor one is nameless). Post-install log reminds the user to create their UNIGINE account inside the Browser, per vendor policy.icon_appidfor post-install theme lookup).Review notes
.runexecutes as root (same model as InstaMaterial'sinstall.sh), which is intentional and signed off.Beta RPM / Release Draft checks
rpm-el9-pr<PR#>andrpm-el10-pr<PR#>)Testing Done
o3de2605)Additional checks:
python3 -m py_compileandbash -npass; AST check confirms all new flow methods and constants are wired; helper dispatcher falls through to usage text on unknown actions.Screenshots (if UI changed)
BETA chip renders next to the app name for O3DE and Unreal 5.8 (amber pill, same style as the EL chip). Screenshot to follow after a desktop run.
Checklist
CONTRIBUTING.md