No description
Find a file
Dan Willemsen 20c343b89e Cap the number of cpus for Go compiles
When passing "-c" to the Go compiler, any time this value changes, we'd
force all of the Go compiles to rebuild. This could trigger a
substantial portion of the tree to rebuild (anything that transitive
depends on a Go helper tool).

We're running into issues when moving output directories between
multiple GCE machines with different core counts, but are otherwise
identical. This could also hit users moving/mounting disks between
machines, though changes to other host tools can make an impact too.

On my 48-core machine, I get a ~15% benefit from going from -c 1 to -c
48, but also ~12% benefit from going from -c 1 to -c 8. So this will
still let us scale somewhat, but prevent rebuilds when transitioning
between machines that are more likely building Android.
2018-03-02 15:32:22 -08:00
bootstrap Cap the number of cpus for Go compiles 2018-03-02 15:32:22 -08:00
bpfmt Fix format issues found by go vet 2018-02-23 14:05:03 -08:00
bpmodify Fix format issues found by go vet 2018-02-23 14:05:03 -08:00
deptools Make WriteDepFile escape spaces and special characters 2015-04-14 23:34:24 -04:00
gotestmain Support go1.10 2018-02-27 01:49:49 -08:00
gotestrunner gotestrunner: Make GOROOT absolute before chdir 2017-01-18 14:42:09 -08:00
loadplugins Implement plugins for bootstrap go modules 2015-09-14 15:35:12 -07:00
microfactory Fix format issues found by go vet 2018-02-23 14:05:03 -08:00
parser Support parsing int64 in Blueprint file. 2017-11-02 22:10:47 -07:00
pathtools Append / to directories in Glob results 2018-02-23 17:21:37 -08:00
proptools Support parsing int64 in Blueprint file. 2017-11-02 22:10:47 -07:00
tests Make test_tree_tests.sh slightly easier to read 2017-10-30 15:00:19 -07:00
.gitignore Import globbing from Soong 2016-11-03 13:54:03 -07:00
.travis.fix-fork.sh Fix running travis on forked repos 2015-07-23 21:07:32 -07:00
.travis.gofmt.sh Enforce gofmt in travis 2016-08-11 10:21:37 -07:00
.travis.install-ninja.sh Support implicit outputs 2016-10-31 17:36:49 -07:00
.travis.yml Support go1.10 2018-02-27 01:49:49 -08:00
blueprint.bash Use microfactory to build the bootstrap minibp 2017-07-24 14:02:51 -07:00
blueprint_impl.bash Support for a custom list of Blueprints files to parse 2017-10-30 15:00:19 -07:00
Blueprints Fix glob cache conflict when excludes=nil and excludes=[]string{} 2018-02-23 14:03:56 -08:00
bootstrap.bash Support for a custom list of Blueprints files to parse 2017-10-30 15:00:19 -07:00
context.go Support go1.10 2018-02-27 01:49:49 -08:00
context_test.go prevent file=nil panic if syntax error in Blueprints 2017-12-05 16:09:02 -08:00
CONTRIBUTING.md Add CONTRIBUTING.md file 2015-03-16 00:12:49 -07:00
doc.go Finish switching blueprint back to the original Blueprints format 2017-10-19 15:33:11 -07:00
glob.go Fix glob cache conflict when excludes=nil and excludes=[]string{} 2018-02-23 14:03:56 -08:00
glob_test.go Fix glob cache conflict when excludes=nil and excludes=[]string{} 2018-02-23 14:03:56 -08:00
LICENSE Add license headers and LICENSE file 2015-01-23 14:23:27 -08:00
live_tracker.go Allow rules to specify order-only dependencies 2017-10-17 13:50:49 -07:00
mangle.go Add license headers and LICENSE file 2015-01-23 14:23:27 -08:00
module_ctx.go Append / to directories in Glob results 2018-02-23 17:21:37 -08:00
name_interface.go Make ninja file deterministic even with dup module names 2017-12-04 17:16:21 -08:00
ninja_defs.go Allow rules to specify order-only dependencies 2017-10-17 13:50:49 -07:00
ninja_strings.go Make ninja file deterministic even with dup module names 2017-12-04 17:16:21 -08:00
ninja_strings_test.go Escape leading space in ninja strings 2017-05-09 10:14:38 -07:00
ninja_writer.go Support implicit outputs 2016-10-31 17:36:49 -07:00
ninja_writer_test.go Support implicit outputs 2016-10-31 17:36:49 -07:00
package_ctx.go Add NewBuiltinRule and NewBuiltinPool 2016-08-29 15:12:33 -07:00
README.md Update link to Ninja 2016-08-18 00:48:20 -04:00
scope.go Allow wrapping of PackageContext 2015-11-30 17:03:34 -08:00
singleton_ctx.go Append / to directories in Glob results 2018-02-23 17:21:37 -08:00
splice_modules_test.go Parallelize BottomUpMutators 2016-08-10 16:31:35 -07:00
unpack.go Support parsing int64 in Blueprint file. 2017-11-02 22:10:47 -07:00
unpack_test.go Replace unpack's replace semantics with append 2017-08-01 15:12:12 -07:00
visit_test.go Extract module naming into an interface 2017-11-29 12:01:09 -08:00

Blueprint Build System

Build Status

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.