Skip to content

feat(workflows): support project-specific extra targets - #14

Open
ArcanePivot wants to merge 1 commit into
nullclaw:mainfrom
ArcanePivot:feat/extra-targets-json
Open

feat(workflows): support project-specific extra targets#14
ArcanePivot wants to merge 1 commit into
nullclaw:mainfrom
ArcanePivot:feat/extra-targets-json

Conversation

@ArcanePivot

Copy link
Copy Markdown

Summary

  • add an optional extra_targets_json input to the reusable CI, nightly, and release workflows
  • append project-specific targets to the shared defaults instead of requiring callers to copy the full matrix
  • validate required target fields and reject duplicate target names
  • support an optional per-target build_args override
  • document a MIPS little-endian musl example

Motivation

Projects occasionally need one extra architecture without changing the defaults for every Null-family repository. Replacing targets_json works, but it duplicates the shared matrix in the caller and can drift as nullbuilder evolves.

This is motivated by a verified NullClaw MIPS target for an HC5861 router running OpenWrt 23.05.5 (mipsel_24kc, MIPS32r2 soft-float). Keeping it project-specific avoids forcing unrelated Null projects to support MIPS.

Validation

  • actionlint v1.7.12 passes
  • git diff --check passes
  • local jq cases cover empty extras, MIPS append, duplicate names, and invalid per-target arguments
  • NullClaw d8a802f builds with Zig 0.16.0 using:
zig build -Doptimize=ReleaseSmall \
  -Dtarget=mipsel-linux-musleabi \
  -Dversion=pr-mips-validation \
  -Dembedded_wasm3=false

The resulting 7,044,980-byte static MIPS32r2 binary reports the embedded version and starts an isolated gateway on the physical HC5861. /health returns {"status":"ok"} and idle RSS is about 4.7 MB. The production agent was not modified or restarted.

Compatibility

The new input defaults to [], so existing callers keep the same matrices and build arguments. build_args remains optional on every target.

Embedded wasm3 is disabled only for this proposed MIPS target because its C build currently crashes the Zig/Clang frontend for mipsel-linux-musleabi; NullClaw default channels and SQLite remain enabled.

After merge, the reusable workflow v1 branch/reference will need to be updated before a follow-up NullClaw PR can consume the new input.

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

Labels

None yet

1 participant