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 | 3 days ago |
New Package Report
.changes
| Date | Wed, 11 Nov 2026 14:44:16 +0000 |
|---|---|
| Source | rust-nostr-rs-relay |
| Version | 0.8.12-1 |
| Changed-By | Ying-Chun Liu (PaulLiu) <paulliu@debian.org> |
| Architecture | amd64 source |
| Distribution | unstable |
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.4
.dsc
| Component | main |
|---|---|
| Package-List | librust-nostr-rs-relay-dev deb rust optional arch=any nostr-rs-relay deb net optional arch=any |
| Section | rust |
| Priority | optional |
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 3 days 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
debian/copyright is DEP-5, with Files: * (MIT, 2021 Greg Heartsfield) and debian/* (2026 Debian Rust Maintainers / Ying-Chun Liu), and the full MIT text. Upstream LICENSE and Cargo.toml's license = "MIT" agree, and a tree-wide grep for copyright notices and licence terms found no other holder and no other licence anywhere in the source, docs, proto, contrib or .github directories. There are no non-free terms, no files without permission, no vendored third-party code, and nothing built that lacks its source (the two generated man pages come from debian/man/*.md and are removed by debian/clean). The prescan's author check agrees.
Packaging
Standard debcargo packaging done carefully on top: compat 13 with the cargo buildsystem, complete Build-Depends (including dh-sequence-installsysusers, needed because dh_installsysusers only joins the default sequence at compat 14, and pandoc for the man pages), dh-exec for the renamed conffile, a systemd unit, a sysusers entry and matching README.Debian, three cargo-auto-test autopkgtests and nine DEP-3 patches. Issue 1 below is a Debian-authored documentation error about the unimplemented [retention] section; the second is a wrong path in a man page example. Neither affects the binary package.
Issues
minor packaging 1. Man page and README.Debian document a [retention] section that is unimplemented and absent from examples/config.toml ◂
- Files:
debian/man/nostr-rs-relay.md:104-107,debian/nostr-rs-relay.README.Debian:82-85,src/config.rs:53-60 - Basis: checked, in the package or with a reference tool
- Evidence: nostr-rs-relay(1): "[retention] : Automatic deletion policies: max_events, max_bytes and persist_days, plus whitelist_addresses which are never deleted." README.Debian: "The [limits], [authorization], [verified_users], [retention] and [pay_to_relay] sections are not present in the Debian default configuration. Add the ones you need from /usr/share/doc/nostr-rs-relay/examples/config.toml." src/config.rs:55
// TODO: implement; grep -i 'retention|persist_days|max_events|whitelist_addresses' over src/ matches only config.rs; upstream config.toml (the installed example) has no[retention]section. - Problem: The settings are deserialised but never read, so an administrator who adds them gets silent no-deletion instead of the retention the man page promises; and the file the README points to for the section does not contain it. Both texts are Debian's, not upstream's.
- Fix: Drop the
[retention]paragraph from debian/man/nostr-rs-relay.md and[retention]from the README.Debian list, or say plainly that retention is not implemented in this version.
minor packaging 2. bulkloader(1) example tells readers to cd to /var/lib/nostr, which this package never creates ◂
- Files:
debian/man/bulkloader.md:100-103 - Basis: checked, in the package or with a reference tool
- Evidence: " $ cd /var/lib/nostr" followed by " $ zcat archive.jsonl.gz | bulkloader"; the unit uses
StateDirectory=nostr-rs-relayand README.Debian and nostr-rs-relay(1) name /var/lib/nostr-rs-relay as the state directory. - Problem: The path does not exist on a system with this package installed, so the example fails at its first command; bulkloader also reads ./config.toml from the current directory, which only exists on the packaged system in /etc/nostr-rs-relay.
- Fix: Use /var/lib/nostr-rs-relay in the example, and say that bulkloader finds the database through the built-in defaults when run there (or that ./config.toml must be supplied).
Verified ◂
- debian/copyright is DEP-5 (exact 1.0 Format URL), two stanzas:
Files: *MIT 2021 Greg Heartsfield scsibug@imap.cc,debian/*MIT 2026 Debian Rust Maintainers and Ying-Chun Liu, with the complete MIT text matching LICENSE verbatim; Upstream-Name/Contact/Source fields present. - Tree-wide grep (case-insensitive) for Copyright, (C), ©, SPDX-License-Identifier, Licensed under, Permission is hereby granted, GNU (L)GPL, Apache License, Mozilla Public, public domain, All rights reserved, plus adapted from/based on/taken from/copied from/dual/third-party: matches only LICENSE, debian/copyright, debian/copyright.debcargo.hint (uninstalled debcargo template with a FIXME line), and the two debian/man/*.md, whose PaulLiu MIT notice is covered by
Files: debian/*. No other holder, no other licence, no non-free term. - Full inventory of the upstream tree (~55 files: Cargo.toml, Cargo.toml.orig, Cargo.lock, build.rs, .cargo_vcs_info.json, .cargo/config.toml, .build.yml, .gitignore, .pre-commit-config.yaml, Dockerfile, README.md, config.toml, rustfmt.toml, LICENSE, .github/workflows/ci.yml, contrib/, docs/ (5 .md), proto/nauthz.proto, src/ (23 .rs), tests/ (4 .rs)): no images, fonts, sounds, PDFs, archives, minified code or prebuilt binaries; no
include_str!/include_bytes!embedding external data. - No vendored third-party code: every dependency is a crates.io crate packaged separately in Debian (Cargo.toml has no path dependencies, no vendor/ directory).
- The prescan's copyright-holder check reported "every holder found is named in debian/copyright"; my own grep corroborates it (only Greg Heartsfield in LICENSE, PaulLiu in debian/man/*.md).
- Generated files: nostr-rs-relay.1 and bulkloader.1 are produced at build time by pandoc from debian/man/*.md (
execute_after_dh_auto_buildin debian/rules) and listed in debian/clean; the .1 files are not in the source tree. proto/nauthz.proto is shipped alongside build.rs, so the generated tonic code has its input. - debian/rules:
dh $@ --buildsystem cargo, compat 13; debhelper 14.5 confirms dh_installsysusers is not in the default sequence at 13, which debian/debcargo.toml's[source] build_dependscovers with dh-sequence-installsysusers; pandoc (build-time man pages) and dh-exec (rename in the .install file) are in Build-Depends, where an arch build needs them. - Conffile handling: debian/nostr-rs-relay.install places debian/nostr-rs-relay.config.toml at /etc/nostr-rs-relay/config.toml via dh-exec; dh_installdeb(1) enriches the conffiles list with files under /etc automatically, so README.Debian's "dpkg conffile" claim holds.
- All nine patches read at header level and their content spot-checked (0001 Cargo.toml adaptation, 0002 bech32, 0004 tonic/tonic-prost-build, 0006 nostr, 0008 sqlx, 0009 tungstenite): each has Description, Author, Last-Update and Forwarded: not-needed (plus Origin where taken from upstream), series lists all nine, and none is obsolete (upstream 0.8.12 still uses the old APIs).
- Dependency names checked with apt-cache: dh-sequence-installsysusers provided by debhelper 14.5; librust-tonic-prost-build-0.14+default-dev and librust-tonic-prost-0.14+default-dev provided by librust-tonic-build-dev 0.14.5; librust-hyper-util+server-auto-dev provided by librust-hyper-util-dev 0.1.19.
- autopkgtest: three cargo-auto-test stanzas (all-targets with and without default features, and --all-features), only dev-dependency anyhow in Depends, Restrictions allow-stderr and isolation-container matching the loopback-websocket tests; dh-cargo's test step runs
cargo buildat build time, so the missing dev-dependencies in Build-Depends are not a fault. - Service/user layout cross-checked against the code: src/cli.rs defines -c/--config and -d/--db, src/main.rs applies the -d override to settings.database.data_directory, and Settings::new merges the file over built-in defaults, so the unit's
--config /etc/nostr-rs-relay/config.tomland the short default config work as README.Debian and the man page describe; the sysusers entry and StateDirectory agree on /var/lib/nostr-rs-relay. - Changelog and control are consistent: 0.8.12-1, unstable, urgency=medium, X-Cargo-Crate/X-Cargo-Crate-Version 0.8.12, Standards-Version 4.7.4 (first two components current with the reviewing system's Policy), Vcs-Git/Vcs-Browser pointing at debcargo-conf with the right subdirectory.
- uscan found the packaged version as the newest upstream release (upstream
0.8.12, packaged0.8.12).
Not confirmed ◂
- The nostr-rs-relay stanza's Depends/Recommends/Suggests/Provides name ${cargo:Depends}, ${cargo:Recommends}, ${cargo:Suggests} and ${cargo:Provides}. dh-cargo 34's dh-cargo-built-using (/usr/share/cargo/bin/dh-cargo-built-using:162-166) writes only cargo:Built-Using and cargo:Static-Built-Using; if debcargo 2.8.4 likewise provides no helper for these, dpkg-gencontrol would warn "substitution variable ${cargo:Depends} used, but is not defined" (Dpkg/Substvars.pm) and leave Depends ending in a comma, while the three feature fields become empty. A build log would show whether this is the case; I could not run debcargo to see what it emits.
- librust-nostr+default-dev, librust-nostr+nip04-dev, librust-nostr+os-rng-dev and librust-nostr+std-dev are in neither the package lists nor the NEW queue as of 2026-11-11. The lists can be days old, so this is not proof; the build needs the nostr crate to be accepted.
- I did not compare the unpacked tree with rust-nostr-rs-relay_0.8.12.orig.tar.gz or the .dsc, and I did not read the .pc/ directory or debian/cargo-checksum.json.
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 3 days ago, started 3 days ago, completed 3 days 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 again.
Other Reviews of this Package
| Version | Hash | Allocated | Completed | Reviewer | Status | Details |
|---|---|---|---|---|---|---|
| 0.8.12-1 | 7ff720ea… | 2026-11-10 04:42 | 2026-11-10 04:42 | dfsg-uploader | rejected | VIEW |
| 0.8.12-1 | 18badba5… | 2026-11-11 00:24 | 2026-11-11 00:24 | dfsg-uploader | rejected | VIEW |
| 0.8.12-1 | d13ab089… | 2026-11-11 13:55 | 2026-11-11 13:55 | dfsg-uploader | rejected | VIEW |