To build the GenVM project:
Build all Rust binaries:
nix develop .#full --command bash .claude/skills/build/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 binary - •
out/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/current/dev-mode.nixtotrue - •
Set hash to "test": In
runners/support/current/hashes.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/current/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:bashnix develop .#full --command ninja -C build all
The 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.