Developer Guide¶
How the edapack build & release system works, and how to build, release, and
extend the tool packages (verilator-bin, yosys-bin, iverilog-bin,
icestorm-bin, nextpnr-bin, …).
What the build system guarantees¶
Every binary release produced by the edapack pipeline provides:
A release manifest (
manifest.json) recording the exact versions/commits of the core source and every tracked dependency that went into the build.Change-gated weekly releases — a scheduled build only publishes when an input component actually changed since the last release.
Reproducible pinned builds — any tool can be built at a specific core version (e.g. Verilator
v5.038) on demand.Rootless local builds — developers reproduce the manylinux build locally without writing root-owned files into the workspace, with a one-command cleanup.
A shipped
export.envrc— extracted releases drop theirbin/ontoPATHvia direnv.Shipped Agent Skills — every release carries the tool’s
skills/so agents can drive it.
How it fits together¶
tool repo (verilator-bin) edapack-common (shared)
┌────────────────────────┐ ┌──────────────────────────────┐
│ build-inputs.yaml │──resolve──▶│ resolve-inputs.py │
│ scripts/build.sh ──────┼──sources──▶│ build-common.sh (ec_* libs) │
│ scripts/skill-manifest │ │ stage-skills.py │
│ scripts/export.envrc │ │ gen-manifest.py / diff │
│ skills/<tool>/ │ │ build-release.yml (reusable) │
│ ivpm.yaml (dep) ───────┼──fetch───▶│ (scripts via packages/) │
│ .github/workflows/ │──calls───▶│ stock quay.io/pypa manylinux │
│ ci.yml (thin) │ └──────────────────────────────┘
└────────────────────────┘
│
▼
GitHub Release: <tool>-<platform>-<version>.tar.gz + manifest.json
The shared logic lives once in
edapack-common; tool repos stay
thin and declarative. CI consumes it as a reusable workflow; local builds
consume it as a sibling checkout.
Contents¶
Note
This guide is being written alongside the rollout of the centralized build
system. Pages marked (planned) describe behavior that is implemented in
edapack-common and being adopted by the tool repos phase by phase.