[Guix packaging] WeiDUorg/weidu #82
Labels
No labels
accessibility
bug
category:ai-tool
category:browser
category:command-line-tool
category:compiler-toolchain
category:desktop-application
category:developer-tool
category:editor-extension
category:emulator
category:font
category:game
category:input-accessibility
category:library-framework
category:mud-client
category:multimedia
category:networking-client
category:programming-language
category:roguelike
category:storage-media-tool
category:system-tool
category:terminal-application
complexity:high
complexity:low
complexity:medium
difficulty:blocked
difficulty:easy
difficulty:hard
difficulty:moderate
documentation
duplicate
enhancement
good first issue
gooflow:guix-package-high
gooflow:guix-package-moderate
gooflow:guix-package-quality-gates
gooflow:guix-research-disposition
gooflow:guix-runtime-evidence-refresh
help wanted
invalid
kind:disposition
kind:packaging
needs:license-investigation
priority:quick
question
ready-for-agent
state:available-elsewhere
state:blocked
state:deferred
state:out-of-scope
state:ready
state:research
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
tay/guix-channel#82
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Candidate
13f207b12833ce9bbbb119625a9b43b287738c52ondevel(default branch snapshot reviewed 2026-08-14).Makefile,Makefile.ocaml; legacy OCaml sources)COPYINGcontains GPLv2; README documents the OCaml/Make build requirements.Scope and blockers
Package the pinned upstream source as the stated deliverable, retaining upstream notices and making runtime services, credentials, downloaded assets, and optional integrations explicit. Modernize or pin the legacy OCaml toolchain and audit bundled Infinity Engine support files and generated artifacts.
Acceptance checks
guix lint -L. weidupasses with no new errors.guix build -L. weidusucceeds from the pinned source with tests enabled where practical.weidu --helpplus a tiny local mod parse/install fixture with no game downloads.Imported from GitHub issue/PR. Originally posted by htayj on 2026-08-14T13:17:08Z.
Goocastle recorded disposition: implementation-ready.
Created implementation ticket: #630.
Canonical upstream is https://github.com/WeiDUorg/weidu at fixed devel commit 13f207b12833ce9bbbb119625a9b43b287738c52, source version 252.01 from src/version.ml, with the existing Guix codeload hash 0wpdg49dzcrr98a2izdg938l81nab83r6vy4zx6n7f1wa4ggvcsn. The exact parent tree is source-only, has no .gitmodules or gitlink entries, and contains no generated object or executable artifacts. COPYING is the GPL version 2 text and src/licence.ml identifies WeiDU as GPL with the upstream unmodified-binary permission; bundled notices at this fixed parent revision identify Elkhound as 3-clause BSD in elkhound/license.txt, fcase as MIT in fcase/fcase.c, zlib's permissive license in zlib/zlib.h, and xdiff plus Batteries-lite and the copied OCaml hash-table/parser/argument modules as LGPL 2.1 with the stated OCaml linking exception. The only separately fetched build origin needed is https://github.com/WeiDUorg/elkhound at fixed master commit b8f5589de119c89b36b1fc21d2f51c4a942ee3a8, Guix recursive source hash 04hypc95nnvab8nzxy76vvsbf7061wajn3rh6kn5rvwq24m2sjgj; its README and root license.txt give a 3-clause BSD redistribution grant and src/smbase/license.txt places that directory in the public domain. Thus every fetched origin is fixed and has explicit license evidence; do not use upstream CI's unpinned master.zip or The-Mod-Elephant's prebuilt Elkhound binary. The local channel and installed Guix search expose only weiduorg-weidu-source, an immutable source snapshot, and no equivalent installed weidu package; no weidu or equivalent was found in the inspected channel/package definitions. Add a public package in module (tay packages weidu), with a private source-built Elkhound helper using cmake-build-system and CMake flags -DEXTRAS=OFF and -DOCAML=OFF, native build inputs cmake, bison, flex, and a C/C++ toolchain; build WeiDU with gnu-build-system using native inputs ocaml-4.14 (Guix version 4.14.3), perl, and the helper, relying on the standard make/C toolchain. The pinned Makefile needs make weidu only, with Elkhound on PATH and OCaml's required -unsafe-string flags; do not build the zip/documentation targets. The Linux build emits obj/x86_LINUX/weidu.asm.exe, which must be installed as $out/bin/weidu; the compiler, OCaml, Elkhound, zlib, and other build inputs must not be runtime or propagated inputs. Install COPYING and the upstream README/license notices under share/doc/weidu and retain the embedded notices. No wrapper is needed: keep one executable named weidu, do not add setup-* aliases, and preserve the upstream CWD contract. At runtime WeiDU reads user-supplied mod/game files from the current directory, writes logs/backups/outputs there, and --nogame enables offline parsing/installation fixtures; Unix auto-update only scans/copies local WeiDU files and has no network client, while optional VIEW actions may call xdg-open and TP2 actions may invoke user-selected external commands via Unix.system. No service, credential, downloaded asset, game data, or network integration should be added. Acceptance must be proven by the implementation issue with guix lint -L. weidu passing with no new errors and guix build -L. weidu succeeding from the fixed source, plus an isolated no-network container smoke using fresh HOME, XDG_CONFIG_HOME, XDG_CACHE_HOME, and XDG_DATA_HOME: assert $out/bin/weidu --help exits 0 and contains WeiDU, assert --licence contains the GPL and fcaseopen notices, create input.txt and fixture.tp2 containing BACKUP
backup, AUTHORGuix smoke, BEGINoffline copy, and COPYinput.txtoutput.txt, run $out/bin/weidu --nogame --noautoupdate --no-exit-pause --yes --force-install 0 fixture.tp2, and cmp input.txt output.txt. Snapshot the complete file list and sha256 digests of $out before the fixture, then assert the list/digests are unchanged afterward and that all fixture writes are confined to the temporary directory; this proves the installed executable contract and no package-output/store writes. The current research host could not execute Guix build because /var/guix/daemon-socket/socket is absent, so this is an execution-environment limitation and not package proof or an upstream blocker.Imported from GitHub comment. Originally posted by htayj on 2026-08-26T12:28:57Z.