Research: deb + rpm packaging toolchain for bundled-venv builds #34
Notifications
Due Date
No due date set.
Blocks
#38 Grilling: Lock channel + toolchain
xavierk/Fenris
Reference: xavierk/Fenris#34
Reference in New Issue
Block a user
Parent map: Fenris deb + rpm release plan
Question
Which packaging toolchain builds both a .deb and an .rpm containing a bundled venv with
textual>=0.40vendored, from as close to a single source of truth as feasible? Compare dh-virtualenv, rpmbuild spec + vendored venv, nfpm, fpm. Answer per format: recommended route, shared assets (version, file lists), build prerequisites (host tools, containers), how the venv maps to the package file list, and upgrade/removal behavior each tool yields. Note maintenance status of each tool.Research done — findings on branch
research/toolchain(commitcca27d0), filedocs/research/deb-rpm-toolchain.md(not pushed).Answer: nfpm + staged
--copiesvenv at/opt/fenrisSingle source of truth: one
nfpm.yaml(version, depends, file list, scripts) →nfpm pkg -p deb && nfpm pkg -p rpm. Note:-paccepts one format per invocation (verified ininternal/cmd/package.go), so it's one config, two invocations — still the closest to single-source of the four.Per tool:
type: tree, config viatype: config|noreplace(=%config(noreplace) rpm / conffile deb),/var/lib/fenrisstore viatype: ghost(deb: create in postinst), per-format deltas viaoverrides:. Prereq: one static Go binary. Upgrade/removal: native dpkg/rpm semantics. Active: v2.47.0 (2026-06-20), repo pushed 2026-08-31.-s dir -t deb|rpm,--deb-systemd,--config-files. But "config" = CLI flags per invocation → drift risk; source of truth is a shell script. Active: v1.18.0 (2026-08-26), docs thin./opt/venvs/<pkg>. Cannot emit rpm at all → fails criterion. Dormant: last upstream release 1.2.2 = 2020-10-22, RTD docs 404, PyPI gone; Debian 12 still ships 1.2.2-1.3.Constraint check (measured): python3-textual = 0.1.13-1 on Debian 12, Ubuntu 22.04 AND 24.04 → far below the >=0.40 floor. Fedora 40+ actually ships 0.48.1/0.69/1.0/4.0 — meets floor but not our
textual==8.2.8pin. Vendoring inside the package stays correct for all targets.Doc includes a sketch Makefile
stagetarget +packaging/nfpm.yamlcovering units, polkit action,/usr/libexec/fenrishelpers,/etc/fenrisconffile,/var/lib/fenrisghost, postinst (fenris group, 2750 store dir, daemon-reload; units shipped dormant per current design).Full per-tool detail, comparison matrix, and source links in the file.
Refs #34 (closes). Parent plan: #33.
xavierk referenced this issue2026-09-02 18:43:43 +00:00