commit | 8900e9bd37efe52cc58fb464d148801ac775592c | [log] [tgz] |
---|---|---|
author | Colin Cross <ccross@android.com> | Mon Mar 02 14:03:01 2015 -0800 |
committer | Colin Cross <ccross@android.com> | Wed Mar 04 13:27:39 2015 -0800 |
tree | 641ad3772183322447d6fd7f48e300255179c1cf | |
parent | 93ef72d2836ae001cca3b923ec68b9e691af9908 [diff] |
Exit early from generateModuleBuildActions on error generateModuleBuildActions was continuing to call GenerateBuildActions on all modules even after one returned an error. This could cause a later module to panic because it was missing information that was supposed to be generated by the module that returned an error, hiding the earlier error message. If a module returns an error, stop triggering any new goroutines to call GenerateBuildActions on later modules.
Blueprint is a meta-build system that reads in Blueprints files that describe modules that need to be built, and produces a Ninja (http://martine.github.io/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 langauge 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.