Authoring build-inputs.yaml¶
Each tool repo declares its input components in a build-inputs.yaml at the
repo root (schema edapack.build-inputs/1). resolve-inputs.py reads it,
resolves every input to a concrete commit, and computes the inputs_digest
that gates releases.
Shape¶
schema: edapack.build-inputs/1
core:
name: verilator
repo: https://github.com/verilator/verilator
policy: branch:master
dependencies:
- name: bitwuzla
repo: https://github.com/bitwuzla/bitwuzla
policy: branch:main
- name: some-optional-tool
repo: https://github.com/x/y
policy: latest-tag
track: false # recorded in the manifest, excluded from the digest
Policies¶
Policy |
Resolves to |
|---|---|
|
current HEAD of that branch |
|
that exact tag (annotated tags are peeled to the commit) |
|
the repo’s latest GitHub release tag |
|
the highest version-sorted tag |
Overrides¶
The reusable workflow’s workflow_dispatch inputs flow into the resolver:
core_refoverrides thecoreinput’s ref (tag, branch, or raw SHA).input_overridesis a JSON map{name: ref}for dependencies.
An override always wins over the declared policy, and a build with any
override set is treated as a pinned build (it always builds, regardless of the
change-gate). See Releasing.
track: false¶
Set track: false on a dependency whose churn should not, on its own, trigger a
new weekly release. It still appears in manifest.json (so the release record is
complete) but is excluded from inputs_digest.
Per-tool inventories¶
Tool |
core |
dependencies |
|---|---|---|
verilator |
verilator ( |
bitwuzla |
yosys |
yosys ( |
yosys-slang, boolector, sby, mcy, eqy, sv2v |
iverilog |
iverilog ( |
— |
icestorm |
icestorm ( |
libftdi1 (pinned), libusb (Windows) |
nextpnr |
nextpnr ( |
icestorm-chipdb, prjtrellis, mistral, prjpeppercorn, apicula |