# static-musl-builds Automated static `musl` builds for portable Linux binaries. Current target: - `iperf3` (x86_64 / amd64) ## What this repo does - Tracks a pinned upstream version in `versions/` - Builds a fully static `musl` binary with Gitea Actions - Publishes versioned release assets to Gitea Releases - Is designed to grow with more binaries later ## Current output For each `iperf3` release build, the workflow publishes: - `iperf3--linux-amd64-musl-static` - `iperf3--linux-amd64-musl-static.tar.gz` - `iperf3--linux-amd64-musl-static.sha256` ## Repo layout - `versions/iperf3.version` — tracked upstream version - `scripts/build_iperf3.sh` — static build script - `scripts/sync_iperf3_version.py` — checks upstream and updates pinned version - `scripts/publish_release.py` — idempotent release asset publisher for Gitea - `.gitea/workflows/iperf3.yml` — CI pipeline ## How updates happen 1. `scripts/sync_iperf3_version.py` checks the latest upstream iperf3 release. 2. If a newer version exists, it updates `versions/iperf3.version`. 3. A commit is pushed. 4. Gitea Actions builds the static binary and uploads release assets. ## Manual local update example ```bash python3 scripts/sync_iperf3_version.py --update-file if ! git diff --quiet -- versions/iperf3.version; then git add versions/iperf3.version git commit -m "chore(iperf3): bump to $(cat versions/iperf3.version)" git push fi ``` ## Notes - The current workflow targets `amd64` first because that is the most broadly useful Linux target. - The structure is intentionally generic so more binaries can be added later without reworking the repo.