Prototype Shepherd rc.d integration
This commit is contained in:
@@ -1349,3 +1349,79 @@ Next recommended step:
|
||||
2. after that, bridge Shepherd to key FreeBSD service concepts such as rc.d management, loopback/network configuration, filesystem setup, and temporary user/group administration
|
||||
3. continue carrying the separate real-checkout runtime blocker for later integration work:
|
||||
- investigate the `leave-on-EPIPE` failure in `./pre-inst-env guix --version`
|
||||
|
||||
## 2026-04-01 — Phase 4.2 completed: FreeBSD rc.d init-integration prototype validated for Shepherd
|
||||
|
||||
Completed work:
|
||||
|
||||
- added a runnable FreeBSD init-integration prototype harness:
|
||||
- `tests/shepherd/run-freebsd-shepherd-init-prototype.sh`
|
||||
- wrote the Phase 4.2 report:
|
||||
- `docs/reports/phase4-freebsd-shepherd-init-integration.md`
|
||||
- ran the init-integration prototype successfully and captured metadata under:
|
||||
- `/tmp/freebsd-shepherd-init-metadata.txt`
|
||||
|
||||
Important findings:
|
||||
|
||||
- a real temporary FreeBSD `rc.d` script can successfully launch the locally built Shepherd daemon through the standard:
|
||||
- `service <name> onestart`
|
||||
path
|
||||
- the same wrapper can stop it cleanly through:
|
||||
- `service <name> onestop`
|
||||
using `herd ... stop root` under the hood
|
||||
- the prototype automatically started a minimal essential-service graph at daemon launch consisting of:
|
||||
- `filesystems`
|
||||
- `system-log`
|
||||
- `networking`
|
||||
- `login`
|
||||
- observed startup order matched the declared dependency chain exactly:
|
||||
- `start:filesystems`
|
||||
- `start:system-log`
|
||||
- `start:networking`
|
||||
- `start:login`
|
||||
- observed shutdown order matched the expected reverse dependency order exactly:
|
||||
- `stop:login`
|
||||
- `stop:networking`
|
||||
- `stop:system-log`
|
||||
- `stop:filesystems`
|
||||
- the rc.d wrapper reported the Shepherd instance as running while active:
|
||||
- `rc_status=running`
|
||||
- the prototype again observed the expected FreeBSD runtime note:
|
||||
- `System lacks support for 'signalfd'; using fallback mechanism.`
|
||||
and confirmed that it does not prevent correct boot/shutdown ordering behavior
|
||||
|
||||
Current assessment:
|
||||
|
||||
- Phase 4.2 is now satisfied on the current prototype track as an init-integration prototype
|
||||
- the key result is that Shepherd can already be launched and stopped through native FreeBSD service-management conventions while preserving dependency-based startup and shutdown semantics
|
||||
- the remaining Phase 4 work is now specifically about bridging Shepherd services to concrete FreeBSD host-management concepts rather than basic daemon launch or service ordering
|
||||
|
||||
Recent commits:
|
||||
|
||||
- `e380e88` — `Add FreeBSD Guile verification harness`
|
||||
- `cd721b1` — `Update progress after Guile verification`
|
||||
- `27916cb` — `Diagnose Guile subprocess crash on FreeBSD`
|
||||
- `02f7a7f` — `Validate local Guile fix on FreeBSD`
|
||||
- `4aebea4` — `Add native GNU Hello FreeBSD build harness`
|
||||
- `c944cdb` — `Validate Guix builder phases on FreeBSD`
|
||||
- `0a2e48e` — `Validate GNU which builder phases on FreeBSD`
|
||||
- `245a47d` — `Document gaps to real Guix FreeBSD builds`
|
||||
- `d62e9b0` — `Investigate Guix derivation generation on FreeBSD`
|
||||
- `c0a85ed` — `Build local Guile-GnuTLS on FreeBSD`
|
||||
- `15b9037` — `Build local Guile-Git on FreeBSD`
|
||||
- `47d31e8` — `Build local Guile-JSON on FreeBSD`
|
||||
- `d82195b` — `Advance Guix checkout on FreeBSD`
|
||||
- `9bf3d30` — `Document FreeBSD syscall mapping`
|
||||
- `7621798` — `Prototype FreeBSD jail build isolation`
|
||||
- `d65b2af` — `Prototype FreeBSD build user isolation`
|
||||
- `e404e2e` — `Prototype FreeBSD store management`
|
||||
- `eb0d77c` — `Adapt GNU build phases for FreeBSD`
|
||||
- `d47dc9b` — `Prototype FreeBSD package definitions`
|
||||
- `b36746f` — `Validate Shepherd services on FreeBSD`
|
||||
|
||||
Next recommended step:
|
||||
|
||||
1. complete Phase 4.3 by adding a small FreeBSD Shepherd bridge layer for rc.d-style services, loopback/network configuration, filesystem setup, and temporary user/group administration
|
||||
2. use that bridge layer in a runnable integration harness that validates both activation and cleanup of those FreeBSD concepts
|
||||
3. continue carrying the separate real-checkout runtime blocker for later integration work:
|
||||
- investigate the `leave-on-EPIPE` failure in `./pre-inst-env guix --version`
|
||||
|
||||
Reference in New Issue
Block a user