DFSG NEW Queue

DFSG, Licensing & New Packages Team

Review: rust-nostr-rs-relay 0.8.12-1

Package Information

DescriptionRelay implementation for the Nostr protocol - Rust source code

Source code for Debianized Rust crate "nostr-rs-relay"

MaintainerDebian Rust Maintainers <pkg-rust-maintainers@alioth-lists.debian.net>
Changed ByYing-Chun Liu (PaulLiu) <paulliu@debian.org>
Sponsorpaulliu@debian.org
Distributionunstable
Architectureany
VCSgit: https://salsa.debian.org/rust-team/debcargo-conf.git [src/nostr-rs-relay] (browse)
Trackerhttps://tracker.debian.org/pkg/rust-nostr-rs-relay
Uploaded4 days ago

New Package Report

.changes◂
Version0.8.12-1
Changed-ByYing-Chun Liu (PaulLiu) <paulliu@debian.org>
Architectureamd64 source
Distributionunstable
DateTue, 10 Nov 2026 22:57:52 +0000
Sourcerust-nostr-rs-relay
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◂
Sectionrust
Priorityoptional
Componentmain
Package-Listlibrust-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, 1 important, 1 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 4 days ago.

Report◂

DFSG NEW review for rust-nostr-rs-relay version 0.8.12-1

Summary

  • Licensing is DFSG-compliant and debian/copyright is accurate: Yes
  • Packaging is of good quality: No
  • Issues: 0 blocker, 1 important, 1 minor
  • debian/watch: version 5
  • debian/copyright: machine-readable
  • Scan before the review: nothing found

Licensing

The package is MIT throughout, which is DFSG-free. debian/copyright is DEP-5, names Greg Heartsfield for the upstream tree and the Debian Rust Maintainers plus the uploader for debian/*, reproduces the full MIT text, and its stanzas match every file I could find evidence for. LICENCE/LICENSE and Cargo.toml agree with it, the prescan found no other holder, and src/, tests/, docs/, proto/, contrib/, .github/ and .cargo/ carry no notices that would need a different stanza. No third-party code is embedded and no built or generated file lacks its source.

Packaging

The packaging is a careful debcargo-generated one with good Debian-specific work (systemd unit, preset, conffile, man pages, README.Debian, autopkgtest), but it has one important defect: debhelper compat is 13, and dh_installsysusers is not in the default sequence before compat 14, so debian/nostr-rs-relay.sysusers is never installed and the nostr-rs-relay system user the unit runs as is never created. The service can therefore not start, and README.Debian documents a sysusers.d file that does not exist. A second, smaller mismatch: dh_installsystemd still starts the unit from the postinst on installation, although the man page says a fresh install listens on no port.

Issues

important packaging 1. debian/nostr-rs-relay.sysusers is never installed at debhelper compat 13, so the nostr-rs-relay user the unit needs is not created ◂
  • Files: debian/control:2, debian/nostr-rs-relay.sysusers:2, debian/rules:2, debian/nostr-rs-relay.service:8, debian/nostr-rs-relay.README.Debian
  • Basis: checked, in the package or with a reference tool
  • Evidence: debian/control: Build-Depends: debhelper-compat (= 13); debian/rules is only dh $@ --buildsystem cargo. /usr/share/perl5/Debian/Debhelper/Sequence/root_sequence.pm includes dh_installsysusers only through $include_if_compat_X_or_newer->(14, 'dh_installsysusers'), and the debhelper tool says of v14: "The tool dh_installsysusers is now included in the default sequence". debian/nostr-rs-relay.service runs User=nostr-rs-relay, and README.Debian states the package creates it "from /usr/lib/sysusers.d/nostr-rs-relay.conf".
  • Problem: No debhelper command consumes debian/nostr-rs-relay.sysusers at this compat level and there is no override or maintainer script that creates the account, so neither the user nor the group exists. systemd cannot resolve User=nostr-rs-relay and the unit fails at start (status 217/USER); StateDirectory is not usable either. The sysusers.d path README.Debian documents is never shipped, so the documented account creation does not happen.
  • Fix: Either raise the compat level to 14 (debhelper-compat (= 14), which also runs dh_installsysusers and gets the misc:Depends on systemd | systemd-standalone-sysusers added automatically), or keep compat 13 and add dh-sequence-installsysusers to Build-Depends (debhelper provides it) so the sequence runs dh_installsysusers.
minor packaging 2. dh_installsystemd starts the service in the postinst on installation, while man page and README say a fresh install listens on no port ◂
  • Files: debian/rules:2, debian/nostr-rs-relay.1, debian/nostr-rs-relay.README.Debian, debian/nostr-rs-relay.preset
  • Basis: checked, in the package or with a reference tool
  • Evidence: debian/rules does not override dh_installsystemd, so dh_installsystemd adds /usr/share/debhelper/autoscripts/postinst-systemd-start: if [ -z "$DPKG_ROOT" ] && [ -d /run/systemd/system ]; then ... deb-systemd-invoke start #UNITFILES#. The preset only affects enablement: /usr/bin/deb-systemd-helper's enable calls systemctl --system --preset-mode=enable-only preset $scriptname, so disable nostr-rs-relay.service keeps it out of the boot targets but does not prevent the postinst start.
  • Problem: The man page says "a freshly installed package listens on no port at all until the administrator asks for it", and the preset and README describe the service as deliberately not running on a fresh installation; in fact apt install starts it on 127.0.0.1:8080. The stated behaviour is not what the package does.
  • Fix: Add override_dh_installsystemd: with dh_installsystemd --no-start (keeping the preset for enablement), which matches the documented intent for this network daemon, or correct the man page and README to say only that the unit is not enabled for boot.
Verified ◂
  • The prescan's only output was the dfsg-author-check, which found every copyright holder it matched named in debian/copyright; it listed no built files, minified code, PDFs, non-free wording or other files to account for.
  • All 52 upstream files were inventoried: src/ (including src/bin/bulkloader.rs, src/repo/, src/payment/), tests/, docs/*.md, proto/nauthz.proto, contrib/nostr-rs-relay.service, .github/workflows/ci.yml, .cargo/config.toml, build.rs, Cargo.toml, Cargo.toml.orig, Cargo.lock, config.toml, Dockerfile, README.md, LICENSE, rustfmt.toml, .pre-commit-config.yaml, .build.yml, .cargo_vcs_info.json, .gitignore.
  • No file under src/, tests/, docs/, proto/, contrib/, .github/ or .cargo/ carries a copyright, SPDX or licence notice, so the single Files: * MIT stanza is right; LICENSE is the same MIT text as the stand-alone License: MIT paragraph in debian/copyright, and Cargo.toml says license = "MIT".
  • debian/copyright is DEP-5 with Format, Upstream-Name, Upstream-Contact, Source, a Files: * stanza, a Files: debian/* stanza naming the Debian Rust Maintainers and Ying-Chun Liu (PaulLiu), and a full MIT licence paragraph; the debian/* man pages carry the same MIT notice and the same holder.
  • src/nauthz.rs is not generated code: it pulls in tonic::include_proto!("nauthz"), generated at build time from proto/nauthz.proto by build.rs, which is present.
  • Cargo.lock and .cargo_vcs_info.json are crates.io tarball artifacts and are not installed; dh-cargo's cargo buildsystem removes Cargo.lock in its configure step (cargo.pm).
  • The nine quilt patches in debian/patches/series all have DEP-3 headers (Description, Author, Last-Update, Forwarded, sometimes Origin); they only touch Cargo.toml, src/, build.rs and tests/, and the test hunks are API adjustments, not disabled assertions.
  • Build-time protoc is available transitively: librust-prost-build-dev Depends on protobuf-compiler and libprotobuf-dev, and librust-tonic-prost-build-0.14+default-dev is provided by librust-tonic-build-dev.
  • Other Build-Depends spot-checked with apt-cache and found: librust-tonic-0.14+default-dev and librust-tonic-prost-0.14+default-dev (librust-tonic-dev), librust-hyper-util+client-legacy-dev, librust-nonzero-ext-0.3+default-dev, librust-parse-duration-2+default-dev, librust-sqlx+tls-rustls-dev, librust-qrcode+svg-dev, librust-bitcoin-hashes+serde-dev, librust-console-subscriber+default-dev, librust-tikv-jemallocator+default-dev.
  • The autopkgtest Depends resolve: @ is the librust-nostr-rs-relay-dev binary package, whose Depends include the build-time crate librust-tonic-prost-build-0.14+default-dev and therefore protobuf-compiler, so cargo-auto-test can rebuild build.rs.
  • /etc/nostr-rs-relay/config.toml is installed by dh_install into /etc, so dh_installdeb marks it a conffile automatically; debian/nostr-rs-relay.install uses dh-exec's => rename and dh-exec is in Build-Depends.
  • The preset is honoured: deb-systemd-helper enables a unit on first installation through systemctl --preset-mode=enable-only preset, so disable nostr-rs-relay.service leaves it unenabled for boot.
  • Standards-Version 4.7.4 matches the reviewing system's Policy 4.7.4.1; the changelog is 0.8.12-1, distribution unstable; src/format is 3.0 (quilt).
  • uscan found the packaged version as the newest upstream release (upstream 0.8.12, packaged 0.8.12).
Not confirmed ◂
  • Build-Depends librust-nostr+nip04-dev, librust-nostr+os-rng-dev and librust-nostr+std-dev (>= 0.18.0) are provided by no package in the reviewing system's archive lists or in the NEW-queue snapshot of 2026-11-11T00:04Z. A build would show whether librust-nostr has been accepted since those lists were taken; if it has not, the package cannot build.
  • No build was attempted, so the debcargo version-relaxation patches (0001) and the source forward ports (0002-0009) were not compiled against the archive's crate versions.
  • Whether debian/nostr-rs-relay.install is executable (which dh-exec requires for its => syntax) could not be checked without file modes; the build is assumed to work.
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 4 days ago, started 4 days ago, completed 4 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

VersionHashAllocatedCompletedReviewerStatusDetails
0.8.12-1 7ff720ea… 2026-11-10 04:42 2026-11-10 04:42 dfsg-uploader rejected VIEW
0.8.12-1 d13ab089… 2026-11-11 13:55 2026-11-11 13:55 dfsg-uploader rejected VIEW
0.8.12-1 9af6f868… 2026-11-11 17:23 2026-11-11 17:23 dfsg-uploader rejected VIEW

Back to Dashboard | View all reviews for this package