commit | 05b3607c378dc6557d64ae6cecee3f7fe1b22b13 | [log] [tgz] |
---|---|---|
author | Colin Cross <ccross@android.com> | Fri Jul 28 17:51:37 2017 -0700 |
committer | Colin Cross <ccross@android.com> | Tue Aug 01 15:12:12 2017 -0700 |
tree | c3f9c4383f7d31fdb03778283380e21893bb31bd | |
parent | 5fe225f5f976f191e0f9fd543e7b5b74ad388bd9 [diff] |
Replace unpack's replace semantics with append Blueprint was using "replace" semantics when unpacking properties into property structs, meaning if a module factory pre-set property values they would be overwritten by whatever was in the Blueprint file. This is different than what would happen if the same property was updated using the Append*Properties functions in proptools, which would use "append" semantics, which append strings and lists, logically ORs booleans and replaces pointers to strings and booleans. Replace unpack's semantics with append semantics for consistency. Any previous users of pre-set properties can move to using a pointer to a string or boolean if they want the old behavior. Test: unpack_test.go Test: extend_test.go Change-Id: I02eebe80916e578938142f8e76889bd985223afc
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.