[Guix packaging] Nodens-/QMud #244

Closed
opened 2026-08-22 05:13:20 +00:00 by htayj · 3 comments
htayj commented 2026-08-22 05:13:20 +00:00 (Migrated from github.com)

Candidate

User-facing deliverable

Qt graphical MUD/MUSH client with Lua scripting, TLS, MXP/MSP/MCCP/GMCP, and speech accessibility features.

Packaging approach

Test whether the release can build against Guix Qt 6.9 or package the minimum newer Qt dependency; use system Lua modules and disable auto-update behavior.

Known blockers and investigation points

Upstream requests Qt 6.11 while the audited Guix has Qt 6.9.2; Lua-module unbundling and updater behavior require investigation.

Acceptance checks

  • Pin an immutable upstream release or commit and record a real Guix source hash.
  • Build without network access using Guix-provided dependencies; do not download runtimes or plugins during the build.
  • Preserve all applicable project and bundled-component license notices.
  • Verify the installed launcher/version output and run an offline protocol smoke test against a local fake MUD endpoint where the platform permits it.
  • Keep profiles, logs, maps, plugins, and other mutable state outside the store.

Existing-package coverage

Checked on 2026-08-22 against GNU Guix, Nonguix, Guix Science, Guix HPC, Guix Past, Guix R Us, and RDE, plus all states of this repository issue tracker. No same-upstream package or existing ticket was found. GNU Guix already packages TinTin++ and POWWOW; this candidate is distinct.


Imported from GitHub issue/PR. Originally posted by htayj on 2026-08-22T05:13:20Z.

## Candidate - Canonical upstream: [https://github.com/Nodens-/QMud](https://github.com/Nodens-/QMud) - Packaging target: v12.00 (2026-08-05) - Category: MUD client - Tags: mud-client, desktop, Qt, Lua, accessibility, TTS, GMCP, MXP - Primary language/build ecosystem: C++20, CMake, Qt6 - License: GPL-3.0-only - License evidence: https://github.com/Nodens-/QMud/blob/main/LICENSE.md - Expected Guix packaging difficulty: hard ## User-facing deliverable Qt graphical MUD/MUSH client with Lua scripting, TLS, MXP/MSP/MCCP/GMCP, and speech accessibility features. ## Packaging approach Test whether the release can build against Guix Qt 6.9 or package the minimum newer Qt dependency; use system Lua modules and disable auto-update behavior. ## Known blockers and investigation points Upstream requests Qt 6.11 while the audited Guix has Qt 6.9.2; Lua-module unbundling and updater behavior require investigation. ## Acceptance checks - Pin an immutable upstream release or commit and record a real Guix source hash. - Build without network access using Guix-provided dependencies; do not download runtimes or plugins during the build. - Preserve all applicable project and bundled-component license notices. - Verify the installed launcher/version output and run an offline protocol smoke test against a local fake MUD endpoint where the platform permits it. - Keep profiles, logs, maps, plugins, and other mutable state outside the store. ## Existing-package coverage Checked on 2026-08-22 against GNU Guix, Nonguix, Guix Science, Guix HPC, Guix Past, Guix R Us, and RDE, plus all states of this repository issue tracker. No same-upstream package or existing ticket was found. GNU Guix already packages TinTin++ and POWWOW; this candidate is distinct. --- Imported from [GitHub issue/PR](https://github.com/htayj/guix-channel/issues/244). Originally posted by [htayj](https://github.com/htayj) on 2026-08-22T05:13:20Z.
htayj commented 2026-08-22 12:26:09 +00:00 (Migrated from github.com)

Feasibility research is complete: QMud v12.00 is packageable on the authenticated Guix revision, so this issue is moving to state:ready while retaining difficulty:hard.

Evidence and implementation outline:

  • Pin annotated v12.00 to commit 3a2aa1d1ca28df206cc565513bfb7d6d033e471c with recursive NAR hash 1yl97ph31zqchxbzb8i21w8bj92kw408cxqy0h4mxm8bjjxnrajs.
  • Qt 6.11 is not a source requirement. Configuration with Guix Qt 6.9.2 succeeded, and a bounded real compile produced 88 objects without a Qt compatibility error before its time cap.
  • Build with Lua 5.4 enabled. LPeg 1.1.0, LuaSocket 3.1.0, LuaSec 1.3.2, and LuaJSON 1.3.4 were each build-probed; LuaJSON needs the already-merged LPeg 1.1 compatibility patch.
  • A Speech Dispatcher-enabled qtspeech 6.9.2 variant was built successfully; its output contains the real speechd engine plugin linked to Guix libraries.
  • QMud lacks install rules, so the package needs a small native-Linux XDG/skeleton integration patch and an explicit updater-disable environment contract. Do not emulate APPIMAGE behavior.
  • Exclude the unnecessary Dina.fon because its embedded redistribution wording is ambiguous. Preserve all other notices and seek upstream confirmation for bundled data assets, especially prebuilt mapper/SQLite data.
  • Upstream registers 74 CTest tests. Acceptance should additionally cover fresh XDG state, immutable store paths, Lua module loading, local TLS, speechd plugin discovery, and a loopback fake MUD exercising Telnet/MCCP/MXP/GMCP.

The current local/channel audit found no existing QMud package in GNU Guix, Nonguix, Guix Science, Guix HPC, Guix Past, Guix R Us, or RDE.


Imported from GitHub comment. Originally posted by htayj on 2026-08-22T12:26:09Z.

Feasibility research is complete: QMud v12.00 is packageable on the authenticated Guix revision, so this issue is moving to state:ready while retaining difficulty:hard. Evidence and implementation outline: - Pin annotated v12.00 to commit 3a2aa1d1ca28df206cc565513bfb7d6d033e471c with recursive NAR hash 1yl97ph31zqchxbzb8i21w8bj92kw408cxqy0h4mxm8bjjxnrajs. - Qt 6.11 is not a source requirement. Configuration with Guix Qt 6.9.2 succeeded, and a bounded real compile produced 88 objects without a Qt compatibility error before its time cap. - Build with Lua 5.4 enabled. LPeg 1.1.0, LuaSocket 3.1.0, LuaSec 1.3.2, and LuaJSON 1.3.4 were each build-probed; LuaJSON needs the already-merged LPeg 1.1 compatibility patch. - A Speech Dispatcher-enabled qtspeech 6.9.2 variant was built successfully; its output contains the real speechd engine plugin linked to Guix libraries. - QMud lacks install rules, so the package needs a small native-Linux XDG/skeleton integration patch and an explicit updater-disable environment contract. Do not emulate APPIMAGE behavior. - Exclude the unnecessary Dina.fon because its embedded redistribution wording is ambiguous. Preserve all other notices and seek upstream confirmation for bundled data assets, especially prebuilt mapper/SQLite data. - Upstream registers 74 CTest tests. Acceptance should additionally cover fresh XDG state, immutable store paths, Lua module loading, local TLS, speechd plugin discovery, and a loopback fake MUD exercising Telnet/MCCP/MXP/GMCP. The current local/channel audit found no existing QMud package in GNU Guix, Nonguix, Guix Science, Guix HPC, Guix Past, Guix R Us, or RDE. --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/244#issuecomment-5380415230). Originally posted by [htayj](https://github.com/htayj) on 2026-08-22T12:26:09Z.
htayj commented 2026-08-22 16:59:55 +00:00 (Migrated from github.com)

Packaging implementation reached a reproducible blocker; no package has been committed.

  • Pinned QMud v12.00 at 3a2aa1d1ca28df206cc565513bfb7d6d033e471c (git-fetch NAR 1yl97ph31zqchxbzb8i21w8bj92kw408cxqy0h4mxm8bjjxnrajs).
  • Exact attempted derivation: /gnu/store/r42m67rjbzlxdsw15hawcl5lkywjq3ys-qmud-12.00.drv.
  • The application and all test executables compile offline against Guix Qt 6.9.2; 76 of 77 upstream CTests pass.
  • The sole failure is tst_WorldView_Basic: its QMud Terminal accessibility-interface assertion passes, but accessibility text/cursor events remain absent and m_accessibleOutputCharacterCount remains -1, so the test times out.
  • A minimal program using the same Qt, private Xvfb/D-Bus session, and corrected AT-SPI policy succeeds as the Guix build uid (active=1 records=2). The remaining problem is therefore specific to accessibility activation/initialization order inside the full QMud test process.

The suite was not weakened or skipped, and the failed build produced no installable output. Next investigation: run tst_WorldView_Basic alone with diagnostics around QAccessible::isActive() after its scoped activation and at notifyAccessibleOutputPresented, then compare AT-SPI plugin initialization order with the passing minimal probe.


Imported from GitHub comment. Originally posted by htayj on 2026-08-22T16:59:55Z.

Packaging implementation reached a reproducible blocker; no package has been committed. - Pinned QMud v12.00 at `3a2aa1d1ca28df206cc565513bfb7d6d033e471c` (`git-fetch` NAR `1yl97ph31zqchxbzb8i21w8bj92kw408cxqy0h4mxm8bjjxnrajs`). - Exact attempted derivation: `/gnu/store/r42m67rjbzlxdsw15hawcl5lkywjq3ys-qmud-12.00.drv`. - The application and all test executables compile offline against Guix Qt 6.9.2; 76 of 77 upstream CTests pass. - The sole failure is `tst_WorldView_Basic`: its QMud `Terminal` accessibility-interface assertion passes, but accessibility text/cursor events remain absent and `m_accessibleOutputCharacterCount` remains `-1`, so the test times out. - A minimal program using the same Qt, private Xvfb/D-Bus session, and corrected AT-SPI policy succeeds as the Guix build uid (`active=1 records=2`). The remaining problem is therefore specific to accessibility activation/initialization order inside the full QMud test process. The suite was not weakened or skipped, and the failed build produced no installable output. Next investigation: run `tst_WorldView_Basic` alone with diagnostics around `QAccessible::isActive()` after its scoped activation and at `notifyAccessibleOutputPresented`, then compare AT-SPI plugin initialization order with the passing minimal probe. --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/244#issuecomment-5381555859). Originally posted by [htayj](https://github.com/htayj) on 2026-08-22T16:59:55Z.
htayj commented 2026-08-22 22:43:01 +00:00 (Migrated from github.com)

Final implementation disposition: closing as blocked/not planned for the authenticated Guix Qt 6.9.2 revision. No QMud package was committed.\n\nExact final bounded derivation: /gnu/store/9hms8z5d2i1xp6pra2bzfr3jb7nfdxsj-qmud-12.00.drv (log /var/log/guix/drvs/9h/ms8z5d2i1xp6pra2bzfr3jb7nfdxsj-qmud-12.00.drv.gz). The application and test target compile offline, but tst_WorldView_Basic remains 234 passed / 9 failed / 3 skipped. Eight failures cover accessibility insert/update/cursor/review events and one covers split-pane anchoring.\n\nDiagnostics proved Qt activation and the installed update handler work, but QMud reaches its uninitialized accessibility baseline and returns before QAccessible::updateAccessibility. A test-only Qt 6.9 compatibility attempt that activated the private platform backend, drained events, waited, and cleared bootstrap captures produced the identical result. Removing QMud production QAccessible::isActive() gates was independently rejected because it breaks the suite’s explicit inactive-accessibility semantics; tests were never skipped or weakened.\n\nReopen when either upstream supports/tests Qt 6.9.2 behavior, GNU Guix provides the Qt version used by upstream, or a narrowly reviewable compatibility patch makes the complete upstream suite pass without changing inactive accessibility behavior.


Imported from GitHub comment. Originally posted by htayj on 2026-08-22T22:43:01Z.

Final implementation disposition: closing as blocked/not planned for the authenticated Guix Qt 6.9.2 revision. No QMud package was committed.\n\nExact final bounded derivation: `/gnu/store/9hms8z5d2i1xp6pra2bzfr3jb7nfdxsj-qmud-12.00.drv` (log `/var/log/guix/drvs/9h/ms8z5d2i1xp6pra2bzfr3jb7nfdxsj-qmud-12.00.drv.gz`). The application and test target compile offline, but `tst_WorldView_Basic` remains 234 passed / 9 failed / 3 skipped. Eight failures cover accessibility insert/update/cursor/review events and one covers split-pane anchoring.\n\nDiagnostics proved Qt activation and the installed update handler work, but QMud reaches its uninitialized accessibility baseline and returns before `QAccessible::updateAccessibility`. A test-only Qt 6.9 compatibility attempt that activated the private platform backend, drained events, waited, and cleared bootstrap captures produced the identical result. Removing QMud production `QAccessible::isActive()` gates was independently rejected because it breaks the suite’s explicit inactive-accessibility semantics; tests were never skipped or weakened.\n\nReopen when either upstream supports/tests Qt 6.9.2 behavior, GNU Guix provides the Qt version used by upstream, or a narrowly reviewable compatibility patch makes the complete upstream suite pass without changing inactive accessibility behavior. --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/244#issuecomment-5382985128). Originally posted by [htayj](https://github.com/htayj) on 2026-08-22T22:43:01Z.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
tay/guix-channel#244
No description provided.