Skip to content

feat(freebsd): publish runner-bin port + .pkg release channel#40

Draft
kjanat wants to merge 1 commit into
masterfrom
freebsd-package-support
Draft

feat(freebsd): publish runner-bin port + .pkg release channel#40
kjanat wants to merge 1 commit into
masterfrom
freebsd-package-support

Conversation

@kjanat

@kjanat kjanat commented Jun 4, 2026

Copy link
Copy Markdown
Owner

Adds a FreeBSD distribution channel alongside crates.io, npm, and the AUR.

The release matrix already builds and uploads *-unknown-freebsd tarballs, so this reuses them (mirroring the AUR runner-run-bin package) rather than recompiling.

What's here

Path Role
freebsd/runner/{Makefile,distinfo,pkg-descr} Prebuilt FreeBSD port runner-bin (amd64 + aarch64): installs runner/run + bash/zsh/fish/pwsh completions into the canonical ${LOCALBASE} autoload dirs. Checked-in values are a real v0.12.0 reference snapshot; CI overwrites them per release.
.github/scripts/publish/freebsd-prepare.sh Bumps DISTVERSION and regenerates distinfo (per-arch SHA256 + SIZE) from the release's published .sha256 assets + asset metadata. amd64 is mandatory; the experimental aarch64 build is skipped with a warning when absent. Strict semver guard before any sed runs.
.github/workflows/freebsd-release.yml On release: published (and manual workflow_dispatch + dry-run) builds the port the canonical way inside a FreeBSD VM (make stage check-plist package) against a blobless sparse checkout of the ports Mk/ tree, then attaches runner-freebsd-amd64.pkg (+ .sha256) to the release. Third-party uses: pinned to commit SHAs.
README / freebsd/README.md / CHANGELOG Docs + pkg add one-liner.

Design notes

  • No recompile — the port fetches the existing release tarballs (binary port, the AUR -bin parallel).
  • FreeBSD has no AUR-style push-to-git remote, so the installable artifact is a .pkg on the GitHub release: pkg add https://github.com/kjanat/runner/releases/latest/download/runner-freebsd-amd64.pkg (version-less asset name → latest/download always resolves).
  • Resilience: aarch64 is the tier-3 experimental build, so it's skipped-with-warning if its asset is missing; amd64 (tier-2) is mandatory.

Validation done locally

  • freebsd-prepare.sh: bash syntax + both paths (full + aarch64-missing) tested with a stubbed gh — Makefile bump and distinfo regen are byte-correct.
  • Workflow YAML parses; dprint check clean; all Makefile recipe lines are real tabs.
  • CI runs make stage check-plist package, so plist drift in either direction fails the build (can't silently ship a broken completions split).

Couldn't verify locally

The actual make package runs inside a FreeBSD VM. Before a real release, run Actions → freebsd-release → Run workflow with a tag + dry-run ticked to exercise the full VM build (fetch / stage / check-plist / package) without uploading.

Supersedes #38 (same commit, moved off the claude/* branch).


Generated by Claude Code

Add a FreeBSD distribution channel alongside crates.io, npm, and the AUR.

The release matrix already builds and uploads `*-unknown-freebsd`
tarballs, so this reuses them (mirroring the AUR `runner-run-bin`
package) rather than recompiling:

- freebsd/runner: a prebuilt port (package `runner-bin`, amd64 + aarch64)
  that installs the `runner` + `run` binaries from the GitHub release
  tarballs plus bash, zsh, fish, and pwsh completions into the canonical
  ${LOCALBASE} autoload dirs. Checked-in Makefile/distinfo are a v0.12.0
  reference snapshot (real checksums); CI overwrites them per release.
- .github/scripts/publish/freebsd-prepare.sh: bumps DISTVERSION and
  regenerates distinfo (per-arch SHA256 + SIZE) from the release's
  published .sha256 assets and asset metadata. amd64 is mandatory; the
  experimental aarch64 build is skipped with a warning when absent.
  Strict semver guard before any sed runs.
- .github/workflows/freebsd-release.yml: on release:published (and manual
  workflow_dispatch + dry-run) builds the port the canonical way inside a
  FreeBSD VM (make stage check-plist package) against a blobless sparse
  checkout of the ports Mk/ tree, then attaches runner-freebsd-amd64.pkg
  (+ .sha256) to the release. Third-party uses: pinned to commit SHAs.
- Docs: README install section (`pkg add` one-liner), freebsd/README.md,
  and CHANGELOG.

Since FreeBSD has no AUR-style push-to-git remote, the installable
artifact is the .pkg on the GitHub release: `pkg add <url>`.
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
runner 8b734ab Commit Preview URL

Branch Preview URL
Jun 04 2026, 09:34 AM

@coderabbitai

coderabbitai Bot commented Jun 4, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: ffde47d7-515b-4ec1-a657-4aaac12fa2f3

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch freebsd-package-support

Comment @coderabbitai help to get the list of available commands and usage tips.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant