name: build description: Builds the GenVM project. Use after making code changes to compile Rust binaries.
To build the GenVM project:
Reconfiguring
If ninja fails with missing and no known rule to make it (e.g., after adding/removing/renaming source files), regenerate the build file first:
./configure.rb
This runs the configure.rb Ruby script at the project root, which regenerates build/build.ninja with the current file list.
Building
Build all Rust binaries:
nix develop .#full --command bash .claude/skills/build/scripts/run-ninja.sh -C build all/bin
This runs ninja silently and only shows output on failure (to save tokens).
Available ninja targets:
| Target | Description |
|---|---|
all |
Build everything |
all/bin |
Build all Rust binaries |
all/data |
Build data about runners using Nix |
codegen |
Run code generation |
Output locations:
out/bin/genvm-modules- modules binaryout/executor/vTEST/bin/genvm- executor binary
Runners
Runners can only be built on x86_64 using the all target. On other platforms, download them instead.
Download runners:
nix develop .#full --command python3 build/out/bin/post-install.py --create-venv false --default-step false --runners-download true --error-on-missing-executor false
Runner Development Workflow
To develop/modify a runner (e.g., cloudpickle):
Enable dev mode: Set
runners/support/versions/dev-mode.nixtotrueSet hash to "test": In
runners/support/versions/current.nix, set the runner's hash to"test"Make your modifications and run tests With dev-mode enabled and hash set to "test", you can build and run tests.
Disable dev mode: Set
runners/support/versions/dev-mode.nixback tofalse. The build will now tell you to set hashes tonull.Set hashes to null and build: Set the runner's hash (and dependent runners' hashes) to
null, then build:nix develop .#full --command ninja -C build allThe build will fail with a hash mismatch showing the new hash.
Update hashes: Copy the new hash from the error message back into
hashes.nix. Repeat for dependent runners.Rebuild to verify: Run the build again to confirm all hashes are correct.