Files
fruix/docs/reports/phase6-real-package-build-freebsd.md

2.7 KiB

Phase 6.1: Real FreeBSD-backed package build into /frx/store

Date: 2026-04-01

Summary

This step moves beyond the Phase 5 minimal custom derivation path and validates a real package definition derived from Guix's hello package through the live Fruix/Guix checkout, daemon, and /frx/store path on FreeBSD.

Added file:

  • tests/guix/run-phase6-real-package-build.sh

Validation command

Run command:

METADATA_OUT=/tmp/phase6-real-package-metadata.txt \
./tests/guix/run-phase6-real-package-build.sh

What the harness does

The harness:

  1. reuses the patched Phase 5 checkout/runtime setup
  2. fetches GNU Hello 2.12.3 and verifies the expected SHA256
  3. starts the patched daemon on a temporary Unix socket
  4. generates a package file that inherits from Guix's real hello package definition
  5. replaces the source with a prefetched local tarball store item to avoid the still-unresolved built-in downloader/root path on FreeBSD
  6. lowers that package through a tiny FreeBSD host build system and invokes it through:
    • ./pre-inst-env fruix build -f ...
  7. validates the built result in /frx/store
  8. queries the daemon for direct references of the output path

Observed results

Observed metadata included:

  • drv_path=/frx/store/...-hello-2.12.3.drv
  • out_path=/frx/store/...-hello-2.12.3
  • source_store_path=/frx/store/...-hello-2.12.3.tar.gz
  • runtime_output=Hello, world!
  • frontend_invocation=./pre-inst-env fruix build -f ...

The direct references query included both:

  • the built output path itself
  • the source tarball store item recorded by the build output metadata

Important findings

  • this is the first validated fruix build-style package build on the current FreeBSD track that lands a real package output in /frx/store
  • the package definition was not invented from scratch; it inherits from the real Guix hello package and only swaps in a FreeBSD-specific build-system path plus a prefetched source item
  • the live daemon/store path is now strong enough to materialize and execute a genuine package output rather than only the earlier minimal derivation-backed probes
  • the built-in downloader path is still not ready for this FreeBSD/root daemon flow, so Phase 6.1 currently uses a prefetched local tarball to isolate the package-build boundary from that separate runtime issue

Conclusion

Phase 6.1 is satisfied on the current FreeBSD prototype track:

  • a real package definition derived from Guix's hello package builds successfully through the Fruix/Guix checkout and daemon path
  • the output lands in /frx/store
  • the package runs successfully from the store
  • the output preserves a declared source reference that can be queried through the daemon