Every runner builds hulken with the sx commit the repository pins #2

Merged
agent merged 2 commits from task/3868-every-runner-builds-hulken-with-the-sx-c into master 2026-10-28 12:54:42 +02:00
Owner

Tracker: #3868

Every build and test of hulken, on any host, runner or gate, uses the sx commit the repository pins. It carries the commit of #1 (#3866, the window and the first scene), which it builds on and which hulken's gates need it for: this PR's review and merge land both, and #1 closes as merged with them.

  • sx.pin names the commit (af8455c3).
  • tools/provision_sx.sh fetches and builds it once per host and LLVM version into ~/.cache/sx of the user's own home — a sak run's HOME is a fresh directory, so agents in runs reuse the build instead of rebuilding it each run. A rename that refuses to replace leaves one build when two provisions race.
  • tools/sx runs the pinned sx; tools/run_tests.sh and the new tools/gate.sh fast|full use it alone, never an sx on PATH.
  • Taking an sx fix is a hulken PR that moves sx.pin. SX_REMOTE=~/projects/sx fetches from a local checkout.

hulken's sak gates fast and full provision the pinned sx in their setup and run tools/gate.sh; a hulken project memory tells every run to build through tools/sx.

Verification

  • Cold provision from git.swipelab.com: 77 s; the next call returns the cached build in 15 ms.
  • With HOME a fresh directory and no sx on PATH, the stored full gate setup and command pass (first_scene_golden ok) on the cached build.
  • Two provisions started a second apart into an empty cache from a local SX_REMOTE: both exit 0, one build remains, no build directories are left, and it compiles hulken.
Tracker: [#3868](https://sak.swipelab.com/tasks/3868) Every build and test of hulken, on any host, runner or gate, uses the sx commit the repository pins. It carries the commit of [#1](https://git.swipelab.com/sx/hulken/pulls/1) ([#3866](https://sak.swipelab.com/tasks/3866), the window and the first scene), which it builds on and which hulken's gates need it for: this PR's review and merge land both, and #1 closes as merged with them. - `sx.pin` names the commit (af8455c3). - `tools/provision_sx.sh` fetches and builds it once per host and LLVM version into `~/.cache/sx` of the user's own home — a sak run's HOME is a fresh directory, so agents in runs reuse the build instead of rebuilding it each run. A rename that refuses to replace leaves one build when two provisions race. - `tools/sx` runs the pinned sx; `tools/run_tests.sh` and the new `tools/gate.sh fast|full` use it alone, never an `sx` on PATH. - Taking an sx fix is a hulken PR that moves `sx.pin`. `SX_REMOTE=~/projects/sx` fetches from a local checkout. hulken's sak gates `fast` and `full` provision the pinned sx in their setup and run `tools/gate.sh`; a hulken project memory tells every run to build through `tools/sx`. ## Verification - Cold provision from git.swipelab.com: 77 s; the next call returns the cached build in 15 ms. - With HOME a fresh directory and no `sx` on PATH, the stored `full` gate setup and command pass (first_scene_golden ok) on the cached build. - Two provisions started a second apart into an empty cache from a local `SX_REMOTE`: both exit 0, one build remains, no build directories are left, and it compiles hulken.
build.sx bundles sx-out/macos/Hulken.app with SDL3 and Metal. main.sx opens
the window, and a camera circles the test scene: a ruin, crates and a marker
on checkered grass, with towers out in the fog.

src/render holds the camera, the mesh builder, the fragment-stage constants
and the scene renderer: per-fragment sun and hemisphere ambient light,
exponential distance fog, and mipmapped, repeat-sampled ground texture.

tests/first_scene_golden.sx renders the scene windowless on Metal from a
fixed orbit point and compares it with tests/pixels/first-scene-metal.png;
tools/run_tests.sh runs every test.
sx.pin names the sx commit hulken builds with. tools/provision_sx.sh
fetches that commit and builds it once per host and LLVM version into
~/.cache/sx of the user's own home, so a sak run, whose HOME is a fresh
directory, reuses it; two provisions racing leave one build. tools/sx runs
it, and tools/run_tests.sh and tools/gate.sh run only through it.

Taking an sx fix moves sx.pin; SX_REMOTE fetches the commit from a local
sx checkout instead of git.swipelab.com.
agent merged commit 17c43e1d2f into master 2026-10-28 12:54:42 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sx/hulken!2
No description provided.