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◂
Changed-ByYing-Chun Liu (PaulLiu) <paulliu@debian.org>
Architectureamd64 source
Distributionunstable
DateWed, 11 Nov 2026 03:55:34 +0000
Sourcerust-nostr-rs-relay
Version0.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.4
.dsc◂
Componentmain
Package-Listlibrust-nostr-rs-relay-dev deb rust optional arch=any
nostr-rs-relay deb net optional arch=any
Sectionrust
Priorityoptional
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, 0 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/copyright is accurate: Yes
  • Packaging is of good quality: No
  • Issues: 0 blocker, 1 important, 0 minor
  • debian/watch: version 5
  • debian/copyright: machine-readable
  • Scan before the review: nothing found

Licensing

The upstream tree is MIT throughout and debian/copyright is DEP-5 and accurate. The only licence statement outside debian/ is LICENSE (Copyright (c) 2021 Greg Heartsfield, MIT); Cargo.toml says license = "MIT" and README.md says so explicitly. debian/copyright matches every file with Files: * (MIT, 2021 Greg Heartsfield) and Files: debian/* (MIT), and includes the full MIT text, which MIT requires. No other holder, licence, or non-free term appears anywhere in the tree, and nothing DFSG-relevant is missing its preferred form (the two man pages are generated from debian/man/*.md during the build, and proto/nauthz.proto is present for the code build.rs generates). The prescan found no holder missing from debian/copyright.

Packaging

The packaging is generally careful: debcargo-generated control with a correct Build-Depends/Build-Depends-Arch split, nine DEP-3 patches, a hardened systemd unit, sysusers user, conffile, man pages and README.Debian, autopkgtests, current Standards-Version. One real defect remains: debian/rules calls dh_installsystemd with only --no-start, so the postinst enables the relay at boot even though the preset, README.Debian and the man page all state the package ships the unit disabled. That should be fixed before upload; otherwise the package is in good shape.

Issues

important packaging 1. override_dh_installsystemd passes only --no-start, so the relay is enabled at boot although the preset and documentation say it is not ◂
  • Files: debian/rules:5-6; debian/nostr-rs-relay.preset; debian/nostr-rs-relay.README.Debian ("The service is NOT enabled by default"); debian/man/nostr-rs-relay.md (SERVICE: "The unit is installed but not enabled")

  • Basis: checked, in the package or with a reference tool

  • Evidence:

    rules has:

    override_dh_installsystemd:
    	dh_installsystemd --no-start
    

    The unit has an [Install] section (WantedBy=multi-user.target), and dh_installsystemd(1) says of --no-start: "Note that this option does not affect whether the services are enabled. Please remember to also use --no-enable if the services should not be enabled." The shipped preset says disable nostr-rs-relay.service, and README.Debian says the service is deliberately not enabled because a fresh install must not run an internet-facing relay before the administrator reviews the configuration.

  • Problem: Without --no-enable, dh_installsystemd emits its postinst-systemd-enable snippet, which runs deb-systemd-helper enable for the unit; a preset in /usr/lib/systemd/system-preset is only consulted by systemctl preset, which dpkg does not run at installation or upgrade. The service is therefore enabled by the package's own postinst and starts at the next boot on 127.0.0.1:8080 (and creates /var/lib/nostr-rs-relay) before the administrator has looked at it, which is exactly what the preset, README.Debian and the man page promise will not happen. The preset also gives a false sense of control and is effectively dead for installs.

  • Fix: Pass --no-enable as well as --no-start, i.e. dh_installsystemd --no-start --no-enable. The preset can stay (it then only affects an explicit systemctl preset) or be dropped together with its dh-exec line in debian/nostr-rs-relay.install and the FILES entry in the man page.

Verified ◂
  • Read debian/copyright in full: DEP-5 with the exact 1.0 Format URL, Files: * (MIT, 2021 Greg Heartsfield) and Files: debian/* (MIT), and a stand-alone MIT License paragraph; the text matches upstream LICENSE.
  • Grepped the whole tree (gitignore: false, .pc and debian excluded) for Copyright, (C), ©, SPDX-License-Identifier, Licensed under, Permission is hereby granted, GNU GPL/LGPL, Apache, MPL, public domain, All rights reserved, non-commercial: the only hits are in LICENSE. No other LICENCE/COPYING/NOTICE/AUTHORS file exists.
  • src/nauthz.rs is hand-written and uses tonic::include_proto!; the protobuf code is generated at build time from proto/nauthz.proto by build.rs, so no generated source without its input is shipped.
  • The only build-generated files are the two man pages (debian/clean removes them); their markdown sources are in debian/man/, and the man sources carry a fixed date, so the generation is deterministic.
  • debian/ files read in full: changelog, control, rules, clean, install, service, sysusers, preset, README.Debian, docs, examples, manpages, lintian-overrides, debcargo.toml, tests/control, upstream/metadata, source/format, patches/series and all nine patch headers. All patches carry DEP-3 Description/Author/Forwarded/Last-Update.
  • The /etc/nostr-rs-relay/config.toml installed by dh_install is registered as a dpkg conffile automatically: dh_installdeb registers every file under the package's etc/ (checked in /usr/bin/dh_installdeb, "Automatic conffiles registration: If it is in /etc, it is a conffile"), so README.Debian's claim is correct.
  • dh_installsysusers is not in the dh sequence at compat 13, but the dh-sequence-installsysusers Build-Depends (provided by debhelper 14.5) adds it; sysusers 'u' implicitly creates the same-name group (sysusers.d(5)), so the unit's User= is created at install.
  • Build/runtime package names checked with apt-cache: dh-cargo 34 provides dh-sequence-cargo (autopkgtest needs >= 33~); librust-tonic-prost-{0.14,build-0.14}+default-dev are provided by librust-tonic-dev/librust-tonic-build-dev; protobuf-compiler comes in through librust-prost-build-dev's Depends, so build.rs's protoc call is satisfied; Debian's librust-rusqlite-dev provides the +limits/+modern-sqlite/+trace features used.
  • Standards-Version 4.7.4 against Policy 4.7.4.1: current (first two components). Testsuite: autopkgtest is added to the .dsc by dpkg automatically (policy 5.6.30), so its absence from debian/control is not a fault.
  • Manual pages exist for both shipped binaries (nostr-rs-relay.1 and bulkloader.1) and the unit's Documentation=man:nostr-rs-relay(1) is valid; the unit installs to /usr/lib/systemd/system and the preset to /usr/lib/systemd/system-preset, matching debhelper 13 and sysusers.d conventions.
  • The lintian override for the libyaml embedded-library tag is plausible: config is built with its default features, so yaml-rust2 is linked in and emits the libyaml error strings; no C libyaml is present.
  • Prescan author check reported no holder missing from debian/copyright; the tree carries no per-file notices, so the single upstream holder is the complete evidence.
  • uscan found the packaged version as the newest upstream release (upstream 0.8.12, packaged 0.8.12).
Not confirmed ◂
  • The patch headers' Origin: upstream/Origin: backport claims cannot be checked against upstream's history from the package alone; only the DEP-3 fields themselves were verified.
  • File modes are not visible to the read-only tools used, so whether debian/nostr-rs-relay.install is executable (needed for its dh-exec shebang to be run) would only be proven by a build; the package is assumed to build.
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

VersionHashAllocatedCompletedReviewerStatusDetails
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 9af6f868… 2026-11-11 17:23 2026-11-11 17:23 dfsg-uploader rejected VIEW

Back to Dashboard | View all reviews for this package