[Guix packaging] oqurum/TheReader #153

Open
opened 2026-08-14 13:18:00 +00:00 by htayj · 1 comment
htayj commented 2026-08-14 13:18:00 +00:00 (Migrated from github.com)

Candidate

  • Upstream canonical URL: https://github.com/oqurum/TheReader
  • Source pinned commit/release when known: default-branch HEAD 0133f7f1c3680ebd3e18fd35b4fc2a11c5eae5ee (checked 2026-08-14)
  • Target concrete installed deliverable: TheReader desktop book organizer
  • Primary category: desktop-application
  • Tags: none
  • Primary language normalized: Rust
  • Build system: cargo-build-system
  • SPDX expression: GPL-3.0
  • License status: confirmed-free
  • License evidence: Inspected the upstream license text at this pinned commit; GitHub identifies it as GPL-3.0 (GNU General Public License v3.0). No GPL only-or-later term is inferred beyond the upstream evidence.
  • Difficulty: moderate — The workspace Cargo closure and desktop frontend/backend integration need verification.
  • Workflow state: research
  • Existing Guix coverage: Checked 2026-08-14: GNU Guix, Nonguix, Guix Science, Guix HPC, Guix Past, Guix 'R Us, and RDE; no equivalent package with the same upstream origin was found.

Scope and blockers

Package the local desktop organizer and its local SQLite data behavior.

Acceptance checks

  • guix lint -L . thereader
  • guix build -L . thereader
  • launch with a temporary data directory and import a local fixture.

Imported from GitHub issue/PR. Originally posted by htayj on 2026-08-14T13:18:00Z.

## Candidate - Upstream canonical URL: https://github.com/oqurum/TheReader - Source pinned commit/release when known: default-branch HEAD `0133f7f1c3680ebd3e18fd35b4fc2a11c5eae5ee` (checked 2026-08-14) - Target concrete installed deliverable: TheReader desktop book organizer - Primary category: desktop-application - Tags: none - Primary language normalized: Rust - Build system: cargo-build-system - SPDX expression: GPL-3.0 - License status: confirmed-free - License evidence: Inspected the upstream license text at this pinned commit; GitHub identifies it as `GPL-3.0` (GNU General Public License v3.0). No GPL only-or-later term is inferred beyond the upstream evidence. - Difficulty: moderate — The workspace Cargo closure and desktop frontend/backend integration need verification. - Workflow state: research - Existing Guix coverage: Checked 2026-08-14: GNU Guix, Nonguix, Guix Science, Guix HPC, Guix Past, Guix 'R Us, and RDE; no equivalent package with the same upstream origin was found. ## Scope and blockers Package the local desktop organizer and its local SQLite data behavior. ## Acceptance checks - `guix lint -L . thereader` - `guix build -L . thereader` - launch with a temporary data directory and import a local fixture. --- Imported from [GitHub issue/PR](https://github.com/htayj/guix-channel/issues/153). Originally posted by [htayj](https://github.com/htayj) on 2026-08-14T13:18:00Z.
htayj commented 2026-08-29 11:54:02 +00:00 (Migrated from github.com)

Goocastle recorded disposition: blocked.

Canonical source is https://github.com/oqurum/TheReader at fixed commit 0133f7f1c3680ebd3e18fd35b4fc2a11c5eae5ee (2024-10-23; Guix version can be 0-20241023-0133f7f). The upstream LICENSE at that exact revision is the complete GNU General Public License, Version 3, so the main origin is GPL-3.0. The workspace is four local crates (books-backend, books-frontend, common-local, bookie) plus the separately fetched global_common gitlink at ce25aa8d00a2ffa321e6df3da03dc9759f61c01d; global_common/LICENSE at that exact revision grants MIT. crates/frontend/Cargo.toml and Cargo.lock separately fetch https://github.com/oqurum/html-editor at d597a0dd3d9e0ca699839ae8bdb1df5ecbf3b29c; html-editor/LICENSE at that exact revision grants MIT. Bootstrap and Bootstrap Icons files already present in the main tree carry in-file MIT notices; no separately refetched asset origin is proposed. The local channel contains only oqurum-thereader-source in tay/packages/starred-n-r.scm, at the same main commit and GPL-3 declaration; no executable thereader package or equivalent package was found. Source-build assessment: Cargo.lock is version 3 with 559 package records (553 registry records, one html-editor git record, and the local workspace records); the implementation must provide the complete locked registry closure as cargo-inputs, materialize global_common at its gitlink revision, materialize html-editor at its locked revision and replace that git dependency with a local path, and retain/regenerate the lock graph offline. The native build needs cargo/rust, pkg-config, sqlite for libsqlite3-sys 0.27.0, and openssl for openssl-sys 0.9.104. Upstream requires trunk build --release --public-url /dist -d ../../app/public/dist before cargo build --bin backend-bundled --release --features=bundled; the source has no app/public/dist, and backend/src/bundle.rs embeds app/public and writes it on first run. The concrete blocker is that this channel has no package named trunk, wasm-pack, or rust-std-wasm32-unknown-unknown, while its available wasm-bindgen-cli is 0.2.120 and the fixed lockfile pins wasm-bindgen 0.2.95. Therefore an unattended cargo-build-system derivation cannot currently produce the required frontend artifact offline; the host also had no cargo/rust executable and no Guix daemon, so no build proof was claimed. Unblock only by adding to the package module a fixed, licensed, offline-compatible wasm32-unknown-unknown standard-library/toolchain and frontend bundler (Trunk or an equivalent explicit cargo/wasm-bindgen pipeline, with wasm-bindgen CLI matching 0.2.95), and by recording exact-revision license evidence for any new origin, then rerun guix lint -L . thereader, guix build -L . thereader, and the runtime smoke. The eventual package should install the bundled backend as bin/thereader and wrap it so it creates ${XDG_DATA_HOME:-$HOME/.local/share}/thereader, changes directory there, and execs the real binary; this is required because upstream hardcodes ./app/config.toml, ./app/database.db, and ./app/public. It is a local HTTP service, not a native window: the exact reviewed runtimeEvidence draft is packageName=thereader, artifactPath=bin/thereader, runtime.executable=thereader, runtime.invocation=["thereader","--host","127.0.0.1","--port","18084"], runtime.successMarker="Starting HTTP Server". A meaningful isolated smoke must set fresh HOME/XDG_DATA_HOME, copy the tracked Pride and Prejudice EPUB fixture into a fresh library directory, launch that argv, POST /api/setup with that directory and a server name of at least three characters, POST /auth/password with a temporary local account while retaining the cookie, poll authenticated GET /api/books until count/items is nonzero, and assert config.toml and database.db exist only below the temporary data directory; this also exercises SQLite migration, the queued library scan, EPUB import, and the immutable-store-safe wrapper. Until the fixed frontend toolchain and its offline license/provenance records exist, the requested legal/source-buildable/technically viable unattended package outcome is blocked.


Imported from GitHub comment. Originally posted by htayj on 2026-08-29T11:54:02Z.

<!-- goocastle-disposition:sequential-reviewer:153:1:blocked --> Goocastle recorded disposition: blocked. Canonical source is https://github.com/oqurum/TheReader at fixed commit 0133f7f1c3680ebd3e18fd35b4fc2a11c5eae5ee (2024-10-23; Guix version can be 0-20241023-0133f7f). The upstream LICENSE at that exact revision is the complete GNU General Public License, Version 3, so the main origin is GPL-3.0. The workspace is four local crates (books-backend, books-frontend, common-local, bookie) plus the separately fetched global_common gitlink at ce25aa8d00a2ffa321e6df3da03dc9759f61c01d; global_common/LICENSE at that exact revision grants MIT. crates/frontend/Cargo.toml and Cargo.lock separately fetch https://github.com/oqurum/html-editor at d597a0dd3d9e0ca699839ae8bdb1df5ecbf3b29c; html-editor/LICENSE at that exact revision grants MIT. Bootstrap and Bootstrap Icons files already present in the main tree carry in-file MIT notices; no separately refetched asset origin is proposed. The local channel contains only oqurum-thereader-source in tay/packages/starred-n-r.scm, at the same main commit and GPL-3 declaration; no executable thereader package or equivalent package was found. Source-build assessment: Cargo.lock is version 3 with 559 package records (553 registry records, one html-editor git record, and the local workspace records); the implementation must provide the complete locked registry closure as cargo-inputs, materialize global_common at its gitlink revision, materialize html-editor at its locked revision and replace that git dependency with a local path, and retain/regenerate the lock graph offline. The native build needs cargo/rust, pkg-config, sqlite for libsqlite3-sys 0.27.0, and openssl for openssl-sys 0.9.104. Upstream requires `trunk build --release --public-url /dist -d ../../app/public/dist` before `cargo build --bin backend-bundled --release --features=bundled`; the source has no app/public/dist, and backend/src/bundle.rs embeds app/public and writes it on first run. The concrete blocker is that this channel has no package named trunk, wasm-pack, or rust-std-wasm32-unknown-unknown, while its available wasm-bindgen-cli is 0.2.120 and the fixed lockfile pins wasm-bindgen 0.2.95. Therefore an unattended cargo-build-system derivation cannot currently produce the required frontend artifact offline; the host also had no cargo/rust executable and no Guix daemon, so no build proof was claimed. Unblock only by adding to the package module a fixed, licensed, offline-compatible wasm32-unknown-unknown standard-library/toolchain and frontend bundler (Trunk or an equivalent explicit cargo/wasm-bindgen pipeline, with wasm-bindgen CLI matching 0.2.95), and by recording exact-revision license evidence for any new origin, then rerun `guix lint -L . thereader`, `guix build -L . thereader`, and the runtime smoke. The eventual package should install the bundled backend as bin/thereader and wrap it so it creates `${XDG_DATA_HOME:-$HOME/.local/share}/thereader`, changes directory there, and execs the real binary; this is required because upstream hardcodes ./app/config.toml, ./app/database.db, and ./app/public. It is a local HTTP service, not a native window: the exact reviewed runtimeEvidence draft is packageName=thereader, artifactPath=bin/thereader, runtime.executable=thereader, runtime.invocation=["thereader","--host","127.0.0.1","--port","18084"], runtime.successMarker="Starting HTTP Server". A meaningful isolated smoke must set fresh HOME/XDG_DATA_HOME, copy the tracked Pride and Prejudice EPUB fixture into a fresh library directory, launch that argv, POST /api/setup with that directory and a server name of at least three characters, POST /auth/password with a temporary local account while retaining the cookie, poll authenticated GET /api/books until count/items is nonzero, and assert config.toml and database.db exist only below the temporary data directory; this also exercises SQLite migration, the queued library scan, EPUB import, and the immutable-store-safe wrapper. Until the fixed frontend toolchain and its offline license/provenance records exist, the requested legal/source-buildable/technically viable unattended package outcome is blocked. --- Imported from [GitHub comment](https://github.com/htayj/guix-channel/issues/153#issuecomment-5462272090). Originally posted by [htayj](https://github.com/htayj) on 2026-08-29T11:54:02Z.
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#153
No description provided.