fix(rpm): rename neuron package to helexa-neuron

Fedora's official repos ship a package named `neuron` — the NEURON
neural-simulation environment from Yale (see
https://src.fedoraproject.org/rpms/neuron). Having our own `neuron`
in the helexa COPR caused dnf5 to silently no-op `dnf install neuron`
because of the name collision, even with the COPR repo enabled and
keys imported. The only workarounds were full NEVRA (`dnf install
neuron-0.1.12-1.fc43.x86_64`) or a local file install — neither
acceptable for end-users.

Rename the RPM package to `helexa-neuron`. Keep binary (/usr/bin/neuron),
systemd unit (neuron.service), system user (neuron), and config dir
(/etc/neuron) unchanged — those are project-local contexts where the
short name is unambiguous. Follows Fedora subpackage-style naming
except with a vendor prefix rather than a parent-package prefix,
because neuron is an independent package from cortex (installed on
different hosts) and neither depends on the other.

Changes:
- neuron.spec -> helexa-neuron.spec (git rename)
- Name: neuron -> helexa-neuron (with comment explaining why)
- CI: srpm-neuron job now builds helexa-neuron-VERSION.tar.gz with the
  matching top-level dir prefix, publishes to helexa/helexa-neuron COPR
- CI: bump-version job references helexa-neuron.spec
- CLAUDE.md: install instructions updated

Old helexa/neuron COPR project can be deleted after the first
helexa/helexa-neuron build lands.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-16 16:19:42 +03:00
parent 2ff062da0e
commit 7c3390a4e1
3 changed files with 22 additions and 16 deletions

View File

@@ -139,37 +139,37 @@ jobs:
run: | run: |
VERSION="${{ steps.version.outputs.VERSION }}" VERSION="${{ steps.version.outputs.VERSION }}"
sed -i '/\[workspace\.package\]/,/\[/{ s/^version = ".*"/version = "'"${VERSION}"'"/ }' Cargo.toml sed -i '/\[workspace\.package\]/,/\[/{ s/^version = ".*"/version = "'"${VERSION}"'"/ }' Cargo.toml
sed -i "s/^Version:.*/Version: ${VERSION}/" neuron.spec sed -i "s/^Version:.*/Version: ${VERSION}/" helexa-neuron.spec
- name: Generate changelog entry - name: Generate changelog entry
uses: https://git.lair.cafe/actions/rpm-changelog@v1 uses: https://git.lair.cafe/actions/rpm-changelog@v1
with: with:
spec: neuron.spec spec: helexa-neuron.spec
version: ${{ steps.version.outputs.VERSION }} version: ${{ steps.version.outputs.VERSION }}
- name: Generate source tarball - name: Generate source tarball
run: | run: |
set -ex set -ex
VERSION="${{ steps.version.outputs.VERSION }}" VERSION="${{ steps.version.outputs.VERSION }}"
tar czf /tmp/neuron-${VERSION}.tar.gz \ tar czf /tmp/helexa-neuron-${VERSION}.tar.gz \
--transform "s,^\.,neuron-${VERSION}," \ --transform "s,^\.,helexa-neuron-${VERSION}," \
--exclude='./target' \ --exclude='./target' \
--exclude='./.git' \ --exclude='./.git' \
--exclude='*.tar.gz' \ --exclude='*.tar.gz' \
--exclude='*.src.rpm' \ --exclude='*.src.rpm' \
. .
mv /tmp/neuron-${VERSION}.tar.gz . mv /tmp/helexa-neuron-${VERSION}.tar.gz .
- name: Vendor Rust dependencies - name: Vendor Rust dependencies
run: | run: |
VERSION="${{ steps.version.outputs.VERSION }}" VERSION="${{ steps.version.outputs.VERSION }}"
cargo vendor vendor/ cargo vendor vendor/
tar czf neuron-${VERSION}-vendor.tar.gz vendor/ tar czf helexa-neuron-${VERSION}-vendor.tar.gz vendor/
rm -rf vendor/ rm -rf vendor/
- name: Build SRPM - name: Build SRPM
run: | run: |
rpmbuild -bs neuron.spec \ rpmbuild -bs helexa-neuron.spec \
--define "_sourcedir $(pwd)" \ --define "_sourcedir $(pwd)" \
--define "_srcrpmdir $(pwd)" --define "_srcrpmdir $(pwd)"
@@ -209,7 +209,7 @@ jobs:
- name: Publish to COPR - name: Publish to COPR
uses: https://git.lair.cafe/actions/copr-publish@v1 uses: https://git.lair.cafe/actions/copr-publish@v1
with: with:
project: helexa/neuron project: helexa/helexa-neuron
srpm: "*.src.rpm" srpm: "*.src.rpm"
copr-config: ${{ secrets.COPR_CONFIG }} copr-config: ${{ secrets.COPR_CONFIG }}
@@ -231,7 +231,7 @@ jobs:
VERSION="${{ steps.version.outputs.VERSION }}" VERSION="${{ steps.version.outputs.VERSION }}"
sed -i '/\[workspace\.package\]/,/\[/{ s/^version = ".*"/version = "'"${VERSION}"'"/ }' Cargo.toml sed -i '/\[workspace\.package\]/,/\[/{ s/^version = ".*"/version = "'"${VERSION}"'"/ }' Cargo.toml
sed -i "s/^Version:.*/Version: ${VERSION}/" cortex.spec sed -i "s/^Version:.*/Version: ${VERSION}/" cortex.spec
sed -i "s/^Version:.*/Version: ${VERSION}/" neuron.spec sed -i "s/^Version:.*/Version: ${VERSION}/" helexa-neuron.spec
cargo check --workspace 2>/dev/null || true cargo check --workspace 2>/dev/null || true
- name: Generate cortex changelog entry - name: Generate cortex changelog entry
@@ -240,10 +240,10 @@ jobs:
spec: cortex.spec spec: cortex.spec
version: ${{ steps.version.outputs.VERSION }} version: ${{ steps.version.outputs.VERSION }}
- name: Generate neuron changelog entry - name: Generate helexa-neuron changelog entry
uses: https://git.lair.cafe/actions/rpm-changelog@v1 uses: https://git.lair.cafe/actions/rpm-changelog@v1
with: with:
spec: neuron.spec spec: helexa-neuron.spec
version: ${{ steps.version.outputs.VERSION }} version: ${{ steps.version.outputs.VERSION }}
- name: Commit and push - name: Commit and push
@@ -253,7 +253,7 @@ jobs:
VERSION="${{ steps.version.outputs.VERSION }}" VERSION="${{ steps.version.outputs.VERSION }}"
git config user.name "Gitea Actions" git config user.name "Gitea Actions"
git config user.email "actions@git.lair.cafe" git config user.email "actions@git.lair.cafe"
git add Cargo.toml Cargo.lock cortex.spec neuron.spec git add Cargo.toml Cargo.lock cortex.spec helexa-neuron.spec
if git diff --cached --quiet; then if git diff --cached --quiet; then
echo "Nothing to commit for ${VERSION}" echo "Nothing to commit for ${VERSION}"
else else

View File

@@ -596,15 +596,18 @@ Completed. Both packages have RPM specs, systemd units, and example configs.
CI builds parallel SRPMs on tag push and publishes to separate COPR repos. CI builds parallel SRPMs on tag push and publishes to separate COPR repos.
- `cortex.spec``helexa/cortex` COPR: binary, systemd unit, config files - `cortex.spec``helexa/cortex` COPR: binary, systemd unit, config files
- `neuron.spec``helexa/neuron` COPR: binary, systemd unit, config - `helexa-neuron.spec``helexa/helexa-neuron` COPR: binary, systemd unit,
config. Package renamed from `neuron` to avoid collision with Fedora's
NEURON neural-simulation package (https://src.fedoraproject.org/rpms/neuron);
binary, systemd unit, system user, and config dir stay as `neuron`.
- `data/cortex.service`, `data/neuron.service` — systemd units - `data/cortex.service`, `data/neuron.service` — systemd units
- `cortex.example.toml`, `neuron.example.toml`, `models.example.toml` - `cortex.example.toml`, `neuron.example.toml`, `models.example.toml`
- CI: parallel `srpm-cortex` + `srpm-neuron` jobs, then parallel COPR publish - CI: parallel `srpm-cortex` + `srpm-neuron` jobs, then parallel COPR publish
Install: Install:
```sh ```sh
dnf copr enable helexa/cortex && dnf install cortex # gateway host dnf copr enable helexa/cortex && dnf install cortex # gateway host
dnf copr enable helexa/neuron && dnf install neuron # GPU nodes dnf copr enable helexa/helexa-neuron && dnf install helexa-neuron # GPU nodes
``` ```
### Phase 11: llama.cpp harness stub ### Phase 11: llama.cpp harness stub

View File

@@ -1,7 +1,10 @@
Name: neuron Name: helexa-neuron
Version: 0.1.12 Version: 0.1.12
Release: 1%{?dist} Release: 1%{?dist}
Summary: Per-node GPU discovery and harness management daemon for cortex Summary: Per-node GPU discovery and harness management daemon for cortex
# Package name disambiguates from Fedora's existing "neuron" package
# (NEURON neural simulation environment from Yale). Binary, systemd
# unit, and system user are still called "neuron" for brevity.
License: GPL-3.0-or-later License: GPL-3.0-or-later
URL: https://git.lair.cafe/helexa/cortex URL: https://git.lair.cafe/helexa/cortex