commit | cd4e0cebc98bcd164238236d871ed7d5284d2b09 | [log] [tgz] |
---|---|---|
author | Dan Willemsen <dwillemsen@google.com> | Wed Jul 19 22:43:30 2017 -0700 |
committer | Dan Willemsen <dwillemsen@google.com> | Mon Jul 24 14:02:51 2017 -0700 |
tree | 6f74ff79984913e78ea6e19a3f2f8678f4bd43d6 | |
parent | af456eaae4a9655a6105d997eba180163849ed49 [diff] |
Unify .ninja_log files Having separate .ninja_log files doesn't work very well after https://github.com/ninja-build/ninja/commit/04d886b11041bb59d01df794cce7a1e8cad2250d since the last successful timestamp is not recorded in the ninja log. This was triggering the primary builder to be run twice on every build since it was always considered out of date in the primary, then main stages. The two bootstrap stages already were unified when minibootstrap was simplified, but this combines the main stage as well. This means that we'll save some time running globs that are shared between minibp and the primary builder as well (subdirs globs). The cleanup code needed to be refactored, since the ninja_log will have entries from the main stage as well. So instead of looking at everything in the ninja log, take a string prefix to limit what we may clean. Change-Id: I8d43168643aa8a0c6c3e48c6101eaa45d174bbe5
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.