commit | c708e1c9e3076df0d7803f2ed5c367aef69bea7f | [log] [tgz] |
---|---|---|
author | Colin Cross <ccross@android.com> | Fri May 31 15:27:12 2019 -0700 |
committer | Colin Cross <ccross@android.com> | Fri May 31 15:38:12 2019 -0700 |
tree | 1647d4be24954f829c3da9c842c363f62c4aef69 | |
parent | abd66e6c82385105b1c292cb3107f7e5d98b6f35 [diff] |
Avoid exiting with errors in bpglob bpglob is only used as a helper to check if the primary builder needs to rerun due to the results of a glob changing. A recent change to glob support in pathtools made a glob format that was accidentally previously accepted into an error. If the bad syntax was used in the most recent primary builder run, and then an incremental build is performed after picking up the change that made the syntax invalid, then bpglob will attempt to rerun before the primary builder, see the now-invalid syntax, and fail. This will prevent the primary builder from rerunning, which would have updated the bpglob rule with a corrected glob syntax (or failed in the primary builder if the Blueprints file still had the invalid glob syntax). Avoid exiting with an error in bpglob. Instead, write the error to the output file along with a timestamp so that it is always dirty, forcing the primary builder to rerun. Bug: 129411151 Test: m nothing Change-Id: Ib680570c33662f3c0f1f72425d60a963ed841ba6
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.