From a5bc9925900fc72be92cd13a9188d4c9713a27d7 Mon Sep 17 00:00:00 2001 From: rob thijssen Date: Thu, 16 Apr 2026 12:04:19 +0300 Subject: [PATCH] fix(rpm): explicitly Provides user(cortex)/group(cortex) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit dnf5 was silently rejecting neuron-0.1.3 with "Nothing to do" because it had an unresolvable Requires. Inspection showed: Requires: user(cortex) ← unversioned Provides: user(cortex) = ← versioned only, no unversioned rpm's sysusers provides-generator only emits the unversioned user() provide when the u-line is minimal. Our sysusers.conf specifies GECOS, home dir, and shell, which pushes the generator to versioned-only. The matching Requires (auto-generated from %attr(,,cortex) on config files) is unversioned, so resolution failed silently. Explicitly declare Provides: user(cortex) and Provides: group(cortex) to guarantee the unversioned forms exist. group(cortex) was already emitted unversioned but adding it for symmetry and to protect against future generator changes. Co-Authored-By: Claude Opus 4.6 (1M context) --- cortex.spec | 6 ++++++ neuron.spec | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/cortex.spec b/cortex.spec index 1a5427b..4c096d4 100644 --- a/cortex.spec +++ b/cortex.spec @@ -22,6 +22,12 @@ BuildRequires: systemd-rpm-macros Requires(pre): shadow-utils Requires: systemd +# rpm's sysusers provides-generator only emits versioned user(cortex) when +# the u-line has GECOS/home/shell fields. %attr(,,cortex) in %files emits +# an unversioned Requires: user(cortex), so we provide it explicitly. +Provides: user(cortex) +Provides: group(cortex) + %description Cortex is a Rust reverse-proxy that sits in front of multiple inference nodes (via neuron daemons) and presents a unified OpenAI and Anthropic diff --git a/neuron.spec b/neuron.spec index 25fbb80..c1871f7 100644 --- a/neuron.spec +++ b/neuron.spec @@ -22,6 +22,12 @@ BuildRequires: systemd-rpm-macros Requires(pre): shadow-utils Requires: systemd +# rpm's sysusers provides-generator only emits versioned user(cortex) when +# the u-line has GECOS/home/shell fields. %attr(,,cortex) in %files emits +# an unversioned Requires: user(cortex), so we provide it explicitly. +Provides: user(cortex) +Provides: group(cortex) + %description Neuron is a per-node daemon for cortex inference clusters. It discovers local GPU hardware via nvidia-smi, manages inference harnesses (mistral.rs,