colibri/packaging/freebsd/port/README.md
Sam & Claude d77e46ec92
Some checks failed
CI / rust (pull_request) Has been cancelled
CI / markdown (pull_request) Has been cancelled
CI / port (pull_request) Has been cancelled
docs(port): record Linux gate results — 228 tests green on domedog (Sam & Claude)
Verified the 0.11.0 release tree on Linux (domedog.pro, Debian) before
tagging:
  cargo fmt --check             
  cargo build --workspace --release   (4m 31s)
  cargo clippy -D warnings      
  cargo test --workspace         (228 passed, 0 failed)

FreeBSD runtime validation remains the pre-poudriere step.
2026-06-20 22:40:25 +02:00

3.4 KiB

FreeBSD port: sysutils/colibri

Source-of-truth for the Clawdie Colibri FreeBSD port, built by the first-party poudriere server (pkg.clawdie.si). Kept here, with the code it builds, so the port tracks the source. See clawdie-iso docs/POUDRIERE-BUILD-SERVER.md.

What's here (hand-authored)

sysutils/colibri/
├── Makefile      port recipe (cargo; ships 6 runtime/operator binaries + rc.d)
├── pkg-descr     package description
├── pkg-plist     installed file list
└── files/        rc.d service templates installed into etc/rc.d/
    ├── colibri_daemon.in
    └── colibri_bridge.in

The files/ rc.d templates mirror the canonical live-image copies in packaging/freebsd/; poudriere builds in a clean jail and only sees the port directory, so the package carries its own copy. This is the single canonical port — the clawdie-iso repo consumes it from here and keeps no duplicate.

Generated content

  • CARGO_CRATES (committed, in the Makefile) — the crates.io dependency closure from Cargo.lock (#109). Regenerate with make cargo-crates after any dependency change. check-cargo-crates.sh verifies it stays in sync with Cargo.lock (no network, any host) and runs in CI, so drift fails the build:

    ./packaging/freebsd/port/check-cargo-crates.sh
    
  • distinfo (NOT committed) — checksums of the source tarball + every crate distfile. Generated on the build host with make makesum; it is intentionally not hand-authored (the Forgejo source tarball hash must come from the host that fetches it).

Build it

  1. Tag a release. The Makefile fetches archive/v${DISTVERSION}.tar.gz from Forgejo, so a matching tag (e.g. v0.11.0) must exist on clawdie/colibri.

  2. Drop the port into the poudriere ports tree (default tree name clawdie, per poudriere-setup.sh):

    cp -R sysutils/colibri \
        /usr/local/poudriere/ports/clawdie/sysutils/colibri
    cd /usr/local/poudriere/ports/clawdie/sysutils/colibri
    make makesum          # -> distinfo (CARGO_CRATES is already in the Makefile)
    
  3. Build + sign via the wrapper:

    poudriere-build.sh --jail clawdie-amd64 --ports clawdie sysutils/colibri
    

Validation

Linux cross-build gate (domedog, 2026-06-20)

The source tree is cross-platform (FreeBSD + Linux). Before tagging, the full Rust gate was verified on Linux (domedog.pro, Debian):

cargo fmt --check                              # ✅ clean
cargo build --workspace --release              # ✅ 4m 31s
cargo clippy --workspace --all-targets -- -D warnings  # ✅ zero warnings
cargo test --workspace                         # ✅ 228 passed, 0 failed

228 tests cover all 13 crates including unit, integration, golden, and live-socket tests. This confirms the 0.11.0 tree compiles and passes on Linux. FreeBSD runtime validation (cargo test on FreeBSD 15) is the remaining step before the first poudriere build.

Notes

  • License: MIT (matches Cargo.toml; same as layered-soul).
  • Builds only the crates whose binaries ship (colibri-client yields both colibri and colibri-test-agent); colibri-probe / colibri-runtime-inventory are dev tools and are not installed.
  • rust-toolchain.toml pins a rustup channel; the port removes it in post-extract so the clean jail uses the ports lang/rust toolchain.
  • Not yet test-built against a live ports tree — first real run is on mother-build.