Remove guest runtime prefix shim dependency
This commit is contained in:
@@ -2541,3 +2541,81 @@ Next recommended step:
|
||||
1. focus directly on eliminating the remaining Guile / Shepherd compatibility-prefix shims from the guest runtime
|
||||
2. preserve `shepherd-pid1` as an experimental selectable boot mode while that cleanup proceeds
|
||||
3. once the runtime-prefix issue is reduced, reassess whether `shepherd-pid1` should replace the older `freebsd-init+rc.d-shepherd` path as the preferred Fruix boot architecture
|
||||
|
||||
## 2026-04-02 — Post-Phase-10: removed runtime dependence on `/tmp` Guile / Shepherd compatibility-prefix shims
|
||||
|
||||
Completed work:
|
||||
|
||||
- removed the generated guest's runtime dependence on the old `/tmp` compatibility-prefix symlinks for Guile, guile-extra, and Shepherd
|
||||
- wrote the subphase report:
|
||||
- `docs/reports/postphase10-runtime-prefix-shims-freebsd.md`
|
||||
- updated the prefix materializer in:
|
||||
- `modules/fruix/system/freebsd.scm`
|
||||
- bumped the prefix-materializer revision
|
||||
- added deterministic post-copy sanitation for staged runtime prefixes
|
||||
- removed activation-time recreation of these guest-side shims from the generated activation path:
|
||||
- `/tmp/guile-freebsd-validate-install`
|
||||
- `/tmp/guile-gnutls-freebsd-validate-install`
|
||||
- `/tmp/shepherd-freebsd-validate-install`
|
||||
- sanitized the staged guile-extra runtime so it no longer depends on those old prefixes for key module loading:
|
||||
- patched `fibers/config.scm` to use `GUILE_EXTENSIONS_PATH`
|
||||
- patched `gnutls.scm` to fall back to `GUILE_EXTENSIONS_PATH`
|
||||
- removed stale compiled cache files that would otherwise retain the old prefix behavior:
|
||||
- `fibers/config.go`
|
||||
- `gnutls.go`
|
||||
- sanitized the staged Shepherd runtime so it no longer depends on the old temporary prefix for `shepherd config`:
|
||||
- patched `share/guile/site/3.0/shepherd/config.scm`
|
||||
- removed stale compiled cache file:
|
||||
- `shepherd/config.go`
|
||||
- extended the real XCP-ng validation harnesses so they now explicitly check for:
|
||||
- absence of the `/tmp` compatibility-prefix trees
|
||||
- successful Guile module loading from the store-backed runtime
|
||||
- updated:
|
||||
- `tests/system/run-phase9-xcpng-boot.sh`
|
||||
- `tests/system/run-phase11-shepherd-pid1-xcpng.sh`
|
||||
|
||||
Validation:
|
||||
|
||||
- `tests/system/run-phase9-xcpng-boot.sh` passes on the real VM with:
|
||||
- workdir: `/tmp/noshim-phase9-smoke-1775143001`
|
||||
- `compat_prefix_shims=absent`
|
||||
- `guile_module_smoke=ok`
|
||||
- `ready_marker=ready`
|
||||
- `shepherd_status=running`
|
||||
- `sshd_status=running`
|
||||
- `tests/system/run-phase11-shepherd-pid1-xcpng.sh` passes on the real VM with:
|
||||
- workdir: `/tmp/noshim-phase11-smoke-1775142712`
|
||||
- `compat_prefix_shims=absent`
|
||||
- `guile_module_smoke=ok`
|
||||
- `ready_marker=ready`
|
||||
- `shepherd_pid=1`
|
||||
- `shepherd_status=running`
|
||||
- `sshd_status=running`
|
||||
- a direct manual guest probe also confirmed that all three `/tmp` compatibility-prefix paths are absent while Guile can still load:
|
||||
- `(fibers config)`
|
||||
- `(gnutls)`
|
||||
- `(shepherd config)`
|
||||
|
||||
Important findings:
|
||||
|
||||
- the remaining native-runtime problem was narrower than the earlier boot-manager issue:
|
||||
- boot was already solved
|
||||
- PID 1 was already solved
|
||||
- the next real dependency to remove was the guest's reliance on temporary compatibility aliases
|
||||
- deleting the stale compiled cache files for the affected modules was important; otherwise Guile could continue using prefix-baked compiled forms even after the source modules were patched
|
||||
- this subphase removes runtime dependence on the old `/tmp` compatibility shims, but it does not yet guarantee that every embedded historical prefix string has disappeared from every binary or metadata artifact
|
||||
|
||||
Current assessment:
|
||||
|
||||
- Fruix now boots and runs from a store-backed Guile / Shepherd runtime arrangement on FreeBSD without needing guest-side `/tmp` compatibility-prefix symlinks
|
||||
- this now holds for both validated real-VM boot modes:
|
||||
- `freebsd-init+rc.d-shepherd`
|
||||
- `shepherd-pid1`
|
||||
- the main remaining cleanup is deeper and lower-level:
|
||||
- move the local Guile / guile-extra / Shepherd build/install flow itself closer to a truly store-native prefix so the remaining baked strings disappear from the artifacts rather than merely becoming runtime-irrelevant
|
||||
|
||||
Next recommended step:
|
||||
|
||||
1. keep `shepherd-pid1` available as the stronger experimental boot architecture
|
||||
2. start pushing the local Guile / guile-extra / Shepherd build/install process itself toward a truly store-native prefix layout
|
||||
3. clean up the remaining historical prefix strings still present in binaries, libtool metadata, and pkg-config metadata where they still matter for developer/operator workflows
|
||||
|
||||
Reference in New Issue
Block a user