a day ago
- Build executor is the third stage of a build, after package management and configuration, responsible for executing processes and reporting progress.
- Change detection should use file attributes beyond mtime to reduce false positives, inspired by tools like redo.
- Querying the action graph (file dependencies) is a key executor feature; desired query language includes nested predicates and an emit() function for complex output filtering.
- Tracing can automatically add dependency edges and verify hermetic builds, supporting gradual transition via linting or hard errors without full inference.
- Environment variable tracing is challenging; approaches include CPU-level tracing (PIN, SPE) or signal handlers, but each has limitations.
- Proposed tool 'ronin' would read Magma format, offer continuous rebuild mode, tracing options, Bazel-like queries, pluggable backends, and SQLite-based state storage.
- Ronin differs from Buck2 by being a lower-level executor that slots under existing build systems like CMake and Meson, enabling gradual adoption of hermetic builds without a full rewrite.