From 13da805b35923dcc3d670b2974be5350c389956a Mon Sep 17 00:00:00 2001 From: "fizzy-linux[bot]" <346940526+fizzy-linux[bot]@users.noreply.github.com> Date: Mon, 26 Oct 2026 16:46:22 -0500 Subject: [PATCH 1/4] build: fixture tests for the build API in check-examples A fixture app builds two staticModule plugin packages (both kinds of executable, and native-only), the web and package steps, and the duplicate-plugin and taken-web-step errors against this tree. Agent-Team: linux Worker: claude Co-Authored-By: Claude Sonnet 5.5 --- scripts/check-examples.sh | 62 ++++++++++++++++++- scripts/fixtures/build-api/app/build.zig | 50 +++++++++++++++ scripts/fixtures/build-api/app/build.zig.zon | 16 +++++ scripts/fixtures/build-api/plugin/build.zig | 22 +++++++ .../fixtures/build-api/plugin/build.zig.zon | 14 +++++ scripts/fixtures/build-api/plugin/lib.zig | 1 + scripts/fixtures/build-api/plugin/plugin.zig | 45 ++++++++++++++ .../build-api/plugin/plugin.zig.zon.tmpl | 7 +++ 8 files changed, 214 insertions(+), 3 deletions(-) create mode 100644 scripts/fixtures/build-api/app/build.zig create mode 100644 scripts/fixtures/build-api/app/build.zig.zon create mode 100644 scripts/fixtures/build-api/plugin/build.zig create mode 100644 scripts/fixtures/build-api/plugin/build.zig.zon create mode 100644 scripts/fixtures/build-api/plugin/lib.zig create mode 100644 scripts/fixtures/build-api/plugin/plugin.zig create mode 100644 scripts/fixtures/build-api/plugin/plugin.zig.zon.tmpl diff --git a/scripts/check-examples.sh b/scripts/check-examples.sh index 7295127e6..368b1902b 100755 --- a/scripts/check-examples.sh +++ b/scripts/check-examples.sh @@ -17,6 +17,8 @@ # # uses checkouts of your own (example-app/ and # # example-plugin/ in that directory), as they are on # # disk, copied so they are left untouched +# EXAMPLES_BUILDS="" scripts/check-examples.sh +# # builds none of their apps: the build API fixture alone # # CI: the examples job of .github/workflows/ci.yml. set -euo pipefail @@ -104,7 +106,7 @@ build_one() { } export -f build_args build_one -builds="plugin minimal studio endless studio-zon replay dvui dvui-sdl3" +builds="${EXAMPLES_BUILDS-plugin minimal studio endless studio-zon replay dvui dvui-sdl3}" # Each build is one compile of an app that mostly keeps one core busy, so they run side by side, # EXAMPLES_JOBS at once (3: CI's runner has 4 cores and 16 GB). First each configuration is @@ -116,5 +118,59 @@ for b in $builds; do for a in "${args[@]:1}"; do [[ $a == -* ]] && opts+=("$a"); done (cd "$work/${args[0]}" && zig build -l ${opts[@]+"${opts[@]}"} > /dev/null) done -echo "== example-plugin and example-app, against this tree" -printf '%s\n' $builds | xargs -P "${EXAMPLES_JOBS:-3}" -n 1 bash -c 'build_one "$1"' _ +if [[ -n $builds ]]; then + echo "== example-plugin and example-app, against this tree" + printf '%s\n' $builds | xargs -P "${EXAMPLES_JOBS:-3}" -n 1 bash -c 'build_one "$1"' _ +fi + +# The build API an app and a plugin package call (`fizzy.framework`, `staticModule`, `addApp`, +# `addWebSteps`, `addPackageSteps`; design/build-api.md), on a fixture app of its own: two plugin +# packages, one for both kinds of executable and one `.native` only, which fails to compile if it +# reaches the wasm. +fixtures="scripts/fixtures/build-api" +for id in fixture_both fixture_native; do + mkdir -p "$work/$id" + cp "$fixtures"/plugin/{build.zig,build.zig.zon,plugin.zig,lib.zig} "$work/$id/" + sed "s/@ID@/$id/g" "$fixtures/plugin/plugin.zig.zon.tmpl" > "$work/$id/plugin.zig.zon" + (cd "$work/$id" && zig fetch --save=fizzy "$sdk_tarball" >/dev/null) +done +mkdir -p "$work/fixture-app" +cp "$fixtures"/app/{build.zig,build.zig.zon} "$work/fixture-app/" +(cd "$work/fixture-app" && zig fetch --save=fizzy "$work/fizzy.tar.gz" >/dev/null \ + && zig build -l > /dev/null) + +echo "== build API fixture app" +fixture_fail=0 +# step