commit | 1cda3fd3e4b1cbd4f9fed8ac59faa1be1954edff | [log] [tgz] |
---|---|---|
author | Colin Cross <ccross@android.com> | Thu Jan 16 10:32:35 2020 -0800 |
committer | Colin Cross <ccross@android.com> | Thu Jan 16 10:38:46 2020 -0800 |
tree | 7f161a186455608529b304067ab2e4a4c744a742 | |
parent | b92b466a463564b014e4c9b86f621bd4eab5fe63 [diff] |
Fix primary builder reruns caused by globs Globs produce a filelist using restat rules to avoid primary builder reruns. On the first execution of the primary builder the filelists are written directly by the primary builder, so that the second execution can restat them all but avoid rerunning the primary builder. This wasn't working because the glob filelists were written after the build.ninja file, but the build.ninja file depends on the filelists. Switching the order avoids the extra rerun. Test: m nothing && m nothing Change-Id: Ia8e0924598220d4ff34235907a8de2e3e03632df
Blueprint is a meta-build system that reads in Blueprints files that describe modules that need to be built, and produces a Ninja manifest describing the commands that need to be run and their dependencies. Where most build systems use built-in rules or a domain-specific language to describe the logic for converting module descriptions to build rules, Blueprint delegates this to per-project build logic written in Go. For large, heterogenous projects this allows the inherent complexity of the build logic to be maintained in a high-level language, while still allowing simple changes to individual modules by modifying easy to understand Blueprints files.