Skip to content

Fix Plasma setup on Arch library compatibility paths - #361

Merged
Staphylococcus merged 4 commits into
devfrom
fix/359-plasma-setup-paths
Oct 30, 2026
Merged

Staphylococcus merged 4 commits into
devfrom
fix/359-plasma-setup-paths

Conversation

@Staphylococcus

Copy link
Copy Markdown
Owner

Summary

On CachyOS, /usr/lib64 is a compatibility symlink to /usr/lib. Plasma setup discovers the lib64 spelling, then the privileged installer rejects its symlink ancestor. This blocks setup and removal even when a compatible plugin is available.

Normalize only the known /usr/lib64 -> lib or /usr/lib alias to the supported /usr/lib/qt6/plugins root during discovery and privileged operations. Existing receipts using the old spelling can be cleaned up. Real lib64 directories remain supported, and unexpected symlink ancestors retain the installer refusal.

Add Cucumber coverage that runs production discovery, provisioning, privileged installation, verification and cleanup together in disposable namespaces. KWin's D-Bus API and external package/configuration tools are contract fixtures; privileged file operations are real. A new Arch/Fedora CI job additionally exercises setup and repair with real headless KWin through normal system plugin directories, and feeds the bundle smoke gate.

Scope

  • This PR addresses one concern only.
  • I split unrelated fixes, refactors, cleanup, or formatting into separate PRs.
  • I read CONTRIBUTING.md and the relevant docs linked there.
  • I discussed design-sensitive changes first, or this is a small obvious bug fix.

User-Visible Behavior

Plasma setup, repair and removal work on the normal Arch/CachyOS library layout, including cleanup of legacy installation receipts. No configuration or permission-policy change is required.

Validation

  • Coverage was committed first in 650b7332: both compatibility-symlink scenarios failed with the exact reported installer refusal; both real-lib64 controls and the unexpected-Qt-symlink safety scenario passed. The implementation followed in 6dc32472.
  • cargo test --locked -p lg-buddy passed: 1,622 library tests, one existing ignored hardware test, all 160 Cucumber scenarios (2,017 steps), and the remaining integration/doc tests.
  • After final fixture connection-lifetime cleanup, all five Plasma scenarios (29 steps) and Clippy for all runtime targets with warnings denied passed again.
  • Real KWin setup, repeat setup, repair of a stale artifact/legacy receipt, and removal passed on updated CachyOS (KWin 6.8.2 / Qt 6.12.0) and Fedora 44 (KWin 6.7.5 / Qt 6.11.2), without QT_PLUGIN_PATH injection. The preserved pre-fix binary failed the same native CachyOS check at /usr/lib64 after successfully compiling its plugin.
  • Root-only artifact validation, actionlint, shellcheck, shell syntax and whitespace checks passed.
  • One earlier run failed the unchanged modal_recheck_cannot_retry_a_still_active_helper test; its isolated rerun and the subsequent full runtime suite passed without changing that test.
  • Latest dev was merged; the tested Rust/source/native-smoke files are unchanged by that synchronization. GitHub CI will validate the pushed head, including the existing GUI checks.

Related Issue

Fixes #359.

Repository owner deleted a comment from chatgpt-codex-connector Bot Oct 30, 2026
@Staphylococcus
Staphylococcus merged commit 630e6c6 into dev Oct 30, 2026
26 checks passed
@Staphylococcus
Staphylococcus deleted the fix/359-plasma-setup-paths branch October 30, 2026 01:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant