[Guix packaging] oobabooga/textgen #152
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
tay/guix-channel#152
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
ed888c71f221df552750e1834b3654abab8ae345(checked 2026-08-14)AGPL-3.0(GNU Affero General Public License v3.0). No GPL only-or-later term is inferred beyond the upstream evidence.Scope and blockers
Package source code only; model downloads and proprietary/unclear model weights are out of scope.
Acceptance checks
guix lint -L . textgenguix build -L . textgenImported from GitHub issue/PR. Originally posted by htayj on 2026-08-14T13:17:59Z.
Goocastle recorded disposition: blocked.
Upstream https://github.com/oobabooga/textgen at pinned commit ed888c71f221df552750e1834b3654abab8ae345 (clone verified; rev-parse HEAD matches) is AGPL-3.0: LICENSE is the verbatim GNU Affero GPL v3 text, sha256 8486a10c4393cee1c25392769ddd3b2d6c242d6ec7928e1414efff7dfb2f07ef. The tree has no .gitmodules, so no separately fetched submodule origin needs its own license evidence. The local channel already pins this exact revision as a source snapshot only, oobabooga-textgen-source in guix/tay/packages/starred-n-r.scm:163 (hash 0jvaq31r1drxsb30kfj8w4hza4cycwl1kvj832sj2gh2ylhq4hh6, license:agpl3); there is no existing textgen application package and no prior closed delivery issue, so this is not a duplicate and not a proof remediation. It is blocked on two independent, concrete prerequisites.
Blocker 1 (source-buildability): the project ships no pyproject.toml, setup.py, or console_scripts entry point; setup.cfg contains only pycodestyle configuration. Its only declared dependency manifests are requirements/full/.txt and requirements/portable/.txt, and every variant, including the minimal requirements/portable/requirements_cpu_only.txt, pins mandatory prebuilt binary wheels fetched over the network from GitHub release URLs rather than source: a custom Gradio fork (gradio-4.37.2+custom.21 and gradio_client-1.0.2+custom.21 from oobabooga/gradio releases) and llama_cpp_binaries-0.138.0+cpu wheels from oobabooga/llama-cpp-binaries releases. These are opaque binary artifacts with no in-tree build recipe and no license evidence at a fixed revision of their own origins; Guix cannot substitute them, and the custom Gradio fork is not API-equivalent to any packaged Gradio. Unblocking condition: for each binary-wheel origin, identify the corresponding upstream source repository and exact fixed revision, confirm an explicit redistribution grant at that revision, and confirm it is buildable from source in Guix (or demonstrate that upstream textgen runs correctly against source-built stock Gradio and a source-built llama.cpp binding, making the vendored wheels droppable).
Blocker 2 (missing runtime contract): server.py provides no noninteractive smoke mode, deterministic subcommand, or headless one-shot invocation. Both branches are long-running servers: the default path calls create_interface() then loops forever on time.sleep(0.5) (server.py:359-380), and --nowebui only starts the API service. Argument parsing in modules/shared.py defines model/loader/listen options but no evaluate-and-exit or self-test mode, and the only non-server invocations are --help style metadata, which the runtime-proof contract forbids. No package wrapper can synthesize a safe deterministic single-line stdout marker without a local model and without inventing upstream behavior, and model weights are explicitly out of scope for this issue. Unblocking condition: upstream (or an agreed wrapper backed by a genuinely offline, freely licensed test model) must provide a noninteractive invocation that exercises real generation or API health and prints a stable single-line marker before exiting.
Environment limitation recorded per the host capability boundary: no Guix daemon is available in this phase, so no guix lint, guix build, or guix shell feasibility build was attempted and no package proof is claimed; source-buildability above is assessed solely from the authoritative in-tree build metadata cited.