feat(freebsd): draft sysutils/colibri poudriere port #108
4 changed files with 131 additions and 0 deletions
61
packaging/freebsd/port/README.md
Normal file
61
packaging/freebsd/port/README.md
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
# 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)
|
||||
├── pkg-descr package description
|
||||
└── pkg-plist installed file list
|
||||
```
|
||||
|
||||
## What's generated on the build host (NOT committed)
|
||||
|
||||
Two files are derived and must be generated in the ports tree before building —
|
||||
they are not hand-edited and not stored here:
|
||||
|
||||
- **`distinfo`** — checksums of the source tarball + every crate distfile.
|
||||
Generate with `make makesum`.
|
||||
- **`CARGO_CRATES`** — the full crate list from `Cargo.lock` (hundreds of lines).
|
||||
Generate with `make cargo-crates` and paste the block into the `Makefile`
|
||||
(replacing the empty placeholder). Without it, the clean-jail build cannot
|
||||
fetch crates offline.
|
||||
|
||||
## Build it
|
||||
|
||||
1. **Tag a release.** The Makefile fetches
|
||||
`archive/v${DISTVERSION}.tar.gz` from Forgejo, so a matching tag
|
||||
(e.g. `v0.0.1`) must exist on `clawdie/colibri`.
|
||||
|
||||
2. **Drop the port into the poudriere ports tree** (default tree name `clawdie`,
|
||||
per `poudriere-setup.sh`):
|
||||
|
||||
```sh
|
||||
cp -R sysutils/colibri \
|
||||
/usr/local/poudriere/ports/clawdie/sysutils/colibri
|
||||
cd /usr/local/poudriere/ports/clawdie/sysutils/colibri
|
||||
make makesum # -> distinfo
|
||||
make cargo-crates # -> paste the CARGO_CRATES block into the Makefile
|
||||
make makesum # re-run now that crates are listed
|
||||
```
|
||||
|
||||
3. **Build + sign** via the wrapper:
|
||||
|
||||
```sh
|
||||
poudriere-build.sh --jail clawdie-amd64 --ports clawdie sysutils/colibri
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
- **License:** AGPL-3.0-only (matches `Cargo.toml`).
|
||||
- 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`.
|
||||
49
packaging/freebsd/port/sysutils/colibri/Makefile
Normal file
49
packaging/freebsd/port/sysutils/colibri/Makefile
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
PORTNAME= colibri
|
||||
DISTVERSIONPREFIX= v
|
||||
DISTVERSION= 0.0.1
|
||||
CATEGORIES= sysutils
|
||||
|
||||
MAINTAINER= hello@clawdie.si
|
||||
COMMENT= Clawdie Colibri control plane (agent supervision, tasks, skills)
|
||||
WWW= https://code.smilepowered.org/clawdie/colibri
|
||||
|
||||
LICENSE= AGPLv3
|
||||
|
||||
USES= cargo
|
||||
|
||||
# Source tarball from the Clawdie Forgejo. A tagged release is required: the
|
||||
# archive at archive/v${DISTVERSION}.tar.gz extracts to colibri/.
|
||||
MASTER_SITES= https://code.smilepowered.org/clawdie/colibri/archive/
|
||||
DISTFILES= ${DISTVERSIONFULL}${EXTRACT_SUFX}
|
||||
WRKSRC= ${WRKDIR}/colibri
|
||||
|
||||
# CARGO_CRATES is generated from Cargo.lock. Regenerate on the build host before
|
||||
# the first real build (the workspace pulls in hundreds of crates):
|
||||
# make cargo-crates >> Makefile # then move the generated block here
|
||||
# Empty in this draft, so `make makesum` only sums the main tarball.
|
||||
CARGO_CRATES= # regenerate with: make cargo-crates
|
||||
|
||||
# Build only the crates whose binaries we ship. colibri-client provides both
|
||||
# `colibri` and `colibri-test-agent`. No GUI dependencies are pulled in.
|
||||
CARGO_BUILD_ARGS= -p clawdie \
|
||||
-p colibri-client \
|
||||
-p colibri-daemon \
|
||||
-p colibri-mcp \
|
||||
-p colibri-glasspane-tui
|
||||
|
||||
# The repo pins a rustup channel (rust-toolchain.toml); in a clean poudriere
|
||||
# jail we use the ports lang/rust toolchain, so drop the pin before building.
|
||||
post-extract:
|
||||
@${RM} -f ${WRKSRC}/rust-toolchain.toml
|
||||
|
||||
BINS= clawdie colibri colibri-daemon colibri-mcp colibri-test-agent colibri-tui
|
||||
|
||||
do-install:
|
||||
@${MKDIR} ${STAGEDIR}${PREFIX}/bin
|
||||
.for b in ${BINS}
|
||||
${INSTALL_PROGRAM} \
|
||||
${CARGO_TARGET_DIR}/${CARGO_BUILD_TARGET}/release/${b} \
|
||||
${STAGEDIR}${PREFIX}/bin/${b}
|
||||
.endfor
|
||||
|
||||
.include <bsd.port.mk>
|
||||
15
packaging/freebsd/port/sysutils/colibri/pkg-descr
Normal file
15
packaging/freebsd/port/sysutils/colibri/pkg-descr
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
Colibri is the Clawdie control plane: a cross-platform (FreeBSD/Linux) Rust core
|
||||
that supervises agents, schedules and routes tasks by capability, and exposes a
|
||||
local board over a Unix socket and an MCP interface.
|
||||
|
||||
This package installs the runtime and operator binaries:
|
||||
|
||||
clawdie deployed-host service binary
|
||||
colibri board / CLI client
|
||||
colibri-daemon local board + scheduler daemon
|
||||
colibri-mcp MCP server interface
|
||||
colibri-test-agent test / development agent
|
||||
colibri-tui glasspane terminal UI
|
||||
|
||||
The colibri-probe and colibri-runtime-inventory development tools are part of
|
||||
the source workspace but are not installed by this package.
|
||||
6
packaging/freebsd/port/sysutils/colibri/pkg-plist
Normal file
6
packaging/freebsd/port/sysutils/colibri/pkg-plist
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
bin/clawdie
|
||||
bin/colibri
|
||||
bin/colibri-daemon
|
||||
bin/colibri-mcp
|
||||
bin/colibri-test-agent
|
||||
bin/colibri-tui
|
||||
Loading…
Add table
Reference in a new issue