Review: rust-nostr-rs-relay 0.8.12-1
Package Information
| Description | Relay implementation for the Nostr protocol - Rust source code Source code for Debianized Rust crate "nostr-rs-relay" |
|---|---|
| Maintainer | Debian Rust Maintainers <pkg-rust-maintainers@alioth-lists.debian.net> |
| Changed By | Ying-Chun Liu (PaulLiu) <paulliu@debian.org> |
| Sponsor | paulliu@debian.org |
| Distribution | unstable |
| Architecture | any |
| VCS | git: https://salsa.debian.org/rust-team/debcargo-conf.git [src/nostr-rs-relay] (browse) |
| Tracker | https://tracker.debian.org/pkg/rust-nostr-rs-relay |
| Uploaded | 2 hours ago |
New Package Report
.changes
| Changed-By | Ying-Chun Liu (PaulLiu) <paulliu@debian.org> |
|---|---|
| Architecture | amd64 source |
| Distribution | unstable |
| Date | Tue, 10 Nov 2026 03:20:44 +0000 |
| Source | rust-nostr-rs-relay |
| Version | 0.8.12-1 |
Changelog
rust-nostr-rs-relay (0.8.12-1) unstable; urgency=medium . * Package nostr-rs-relay 0.8.12 from crates.io using debcargo 2.8.3
.dsc
| Section | rust |
|---|---|
| Priority | optional |
| Component | main |
| Package-List | librust-nostr-rs-relay-dev deb rust optional arch=any nostr-rs-relay deb net optional arch=any |
debian/copyright
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: nostr-rs-relay Upstream-Contact: Greg Heartsfield <scsibug@imap.cc> Source: https://git.sr.ht/~gheartsfield/nostr-rs-relay Files: * Copyright: 2021 Greg Heartsfield <scsibug@imap.cc> License: MIT Files: debian/* Copyright: 2026 Debian Rust Maintainers <pkg-rust-maintainers@alioth-lists.debian.net> 2026 Ying-Chun Liu (PaulLiu) <paulliu@debian.org> License: MIT License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: . The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. . THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
DFSG Assistant LLM REVIEW 0 blocker, 0 important, 2 minor
This is an LLM based review using a Debian Inference based workflow. It was not written by a member of the DFSG team and has not been checked by one. It is not a decision on the package: it may be wrong, and it may have missed things.
Reviewed 1 hour ago.
Report
DFSG NEW review for rust-nostr-rs-relay version 0.8.12-1
Summary
- Licensing is DFSG-compliant and
debian/copyrightis accurate: Yes - Packaging is of good quality: Yes
- Issues: 0 blocker, 0 important, 2 minor
- debian/watch: version 5
- debian/copyright: machine-readable
- Scan before the review: nothing found
Licensing
All upstream files are MIT, held by Greg Heartsfield; LICENSE and README agree, no other notices anywhere in the tree, and debian/copyright is DEP-5 with a correct Files: * and debian/* stanza and the full MIT text. No DFSG problems: no non-free terms, no prebuilt or minified binaries, the only generated code (nauthz) is produced at build time from proto/nauthz.proto which is in the source. Copyright is accurate as far as the package's own evidence (prescan found no unnamed holder) goes.
Packaging
Standard debcargo 2.8.3 output plus hand-written man pages, a lintian override and a carefully commented debcargo.toml; compat 13 with dh-sequence-cargo, all substvars named, Standards-Version 4.7.4 current, all declared dependencies resolvable (prost-build brings protobuf-compiler for build.rs), patches carry DEP-3 headers. Two minor gaps remain, both about how the daemon binary package is shipped rather than about policy violations.
Issues
minor packaging 1. nostr-rs-relay installs no example config.toml, but its man page sends users to one ◂
- Files:
debian/nostr-rs-relay.1 (DESCRIPTION and FILES), debian/nostr-rs-relay.manpages, config.toml, README.md, docs/ - Basis: checked, in the package or with a reference tool
- Evidence: debian/nostr-rs-relay.1:
the **config.toml** shipped with the upstream source documents all of the available knobs; debian/nostr-rs-relay.manpages lists onlydebian/nostr-rs-relay.1anddebian/bulkloader.1; there is no debian/*.install, *.docs or *.examples. - Problem: The binary package ships only /usr/bin/nostr-rs-relay, /usr/bin/bulkloader and the two man pages. config.toml, README.md and docs/ end up only in librust-nostr-rs-relay-dev's /usr/share/cargo/registry copy, so a user of the nostr-rs-relay package is pointed at a file that is not installed and has no configuration template at all for a daemon whose whole configuration lives in that file.
- Fix: Add debian/nostr-rs-relay.examples with config.toml and optionally debian/nostr-rs-relay.docs with README.md and docs/, and point the man page at /usr/share/doc/nostr-rs-relay/examples/config.toml.
minor packaging 2. Network daemon nostr-rs-relay ships no systemd service unit although upstream provides one ◂
- Files:
contrib/nostr-rs-relay.service, debian/control (Package: nostr-rs-relay) - Basis: checked, in the package or with a reference tool
- Evidence: Upstream ships
contrib/nostr-rs-relay.servicewithExecStart=/usr/bin/nostr-rs-relay --config /etc/nostr-rs-relay/config.toml; the packaging installs no unit and no init script (no debian/*.service, no debian/nostr-rs-relay.install), and Policy 9.3.1 says packages that wish to start and stop system services must include systemd units to do so. - Problem: The relay is a long-running network service, but the package provides no way to start, stop or enable it with the service manager, so it cannot be started at boot without the administrator writing a unit from scratch. Upstream already has a unit that only needs Debian-ising (its User=/WorkingDirectory= are placeholders).
- Fix: Ship an adapted unit installed by dh_installsystemd, with a dedicated system user (sysusers) and a documented configuration/data directory, or state explicitly in debian/README.Debian why the service is left to the administrator.
Verified ◂
- debian/copyright read in full: DEP-5, Format URL correct, Files: * (2021 Greg Heartsfield, MIT), debian/* (Debian Rust Maintainers and PaulLiu, MIT), full MIT text in a stand-alone License paragraph; needed no Files-Excluded.
- Licence evidence searched across src/, tests/, docs/, contrib/, proto/, README.md, config.toml, Cargo.toml(.orig), Dockerfile, .build.yml, .github/, .cargo/, rustfmt.toml, .pre-commit-config.yaml: the only copyright/licence statements in the tree are LICENSE (MIT, 2021 Greg Heartsfield) and README.md line 162 ("This project is MIT licensed."); no third-party or contradictory notices, no non-free wording.
- Prescan listed no missing copyright holders (52 files scanned, all three declared holders match); nothing else was listed for individual accounting.
- Generated code: src/nauthz.rs contains only
tonic::include_proto!("nauthz"); the .proto is shipped at proto/nauthz.proto and compiled by build.rs, so nothing is missing its preferred form. No built binaries, minified files, archives or images in the tree (Cargo.lock is a generated text lockfile, licence-irrelevant and deleted by the build). - DOC: debian/control, rules, changelog, source/format, manpages, lintian-overrides, tests/control, debcargo.toml, copyright.debcargo.hint, all nine patches' DEP-3 headers and series read. No Maintainer scripts or .maintscript files exist.
- Build deps: dh-sequence-cargo is provided by dh-cargo 34; librust-prost-build-dev depends on protobuf-compiler, so build.rs's tonic-prost-build step has protoc without an explicit Build-Depend. Spot-checked that librust-governor, librust-const-format, librust-r2d2-sqlite, librust-tikv-jemallocator, librust-nonzero-ext, librust-parse-duration, librust-hyper-util, librust-tonic and librust-tonic-prost-build resolve to real packages.
- librust-nostr is not in the archive's package lists; it is a new crate this package depends on, not a misspelling or a fault (it may be in a NEW upload or accepted after the lists were taken).
- Undefined ${cargo:Recommends}, ${cargo:Suggests}, ${cargo:Provides} and ${cargo:Depends} expand to the empty string with a dpkg warning (deb-substvars(5)) and the empty fields are dropped; dh-cargo only defines cargo:Built-Using and cargo:Static-Built-Using, so this is noise, not a broken control file.
- Man page content checked against the code: cli.rs has -c/--config and -d/--db; main.rs exits after a config error only when -c was given, and config.rs falls back to defaults with a warning otherwise; bulkloader.rs matches the documented no-option, config.toml-driven behaviour, 50000-event transactions, ephemeral-event skip and the schema-version panic (exit 101).
- uscan found the packaged version as the newest upstream release (upstream
0.8.12, packaged0.8.12).
Not confirmed ◂
- Whether cargo-auto-test in the autopkgtest keeps .cargo/config.toml (rustflags --cfg tokio_unstable) when it builds the crate; if it builds from another directory the console-subscriber code in src/main.rs could fail to compile there. Not reportable without running it.
- Whether librust-r2d2-sqlite (0.35) and librust-sqlx resolve against the single rusqlite version the patches target; the archive's build will show it.
Proposed changes ◂
None.
Uploader's response to the LLM review
The uploader rejected this upload in response to the review.
Review Information
rejected — allocated to dfsg-uploader 1 hour ago, started 1 hour ago, completed 1 hour ago.
Final Comment
The uploader rejected this upload in response to the automated (LLM) review of it, so that they can fix the problems it found and upload again.
The uploader said:
I'll fix it.