No description
Find a file
Colin Cross 127d2eae8b Import globbing from Soong
Add globbing with dependency checking to blueprint.  Calling
ModuleContext.GlobWithDeps or SingletonContext.GlobWithDeps will return
a list of files that match the globs, while also adding efficient
dependencies to rerun the primary builder if a file that matches the
glob is added or removed.

Also use the globbing support for optional_subdirs=, subdirs= and build=
lines in blueprints files.  The globbing slightly changes the behavior
of subname= lines, it no longer falls back to looking for a file called
"Blueprints".  Blueprint files that need to include a subdirectory with
a different name can use build= instead of subdir= to directly include
them.  The Blueprints file is updated to reset subname="Blueprints" in
case we want to include subdirectories inside blueprint and the primary
builder has changed the subname.

Also adds a new test directory that contains a simple primary builder
tree to test regeneration for globbing, and runs the tests in travis.

Change-Id: I83ce525fd11e11579cc58ba5308d01ca8eea7bc6
2016-11-03 13:54:03 -07:00
bootstrap Import globbing from Soong 2016-11-03 13:54:03 -07:00
bpfmt Update import paths to include github 2015-03-21 01:03:36 -04:00
bpmodify Remove blueprint/parser.Ident 2016-06-14 15:26:49 -07:00
deptools Make WriteDepFile escape spaces and special characters 2015-04-14 23:34:24 -04:00
gotestmain Fix package names for executables. 2016-03-23 20:57:43 -07:00
gotestrunner Add a test runner 2015-09-18 10:28:36 -07:00
loadplugins Implement plugins for bootstrap go modules 2015-09-14 15:35:12 -07:00
parser Fix error messages containing variable types 2016-07-15 16:43:42 -07:00
pathtools Import globbing from Soong 2016-11-03 13:54:03 -07:00
proptools Add proptools functions to escape strings 2016-09-29 14:31:40 -07:00
tests Import globbing from Soong 2016-11-03 13:54:03 -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 Import globbing from Soong 2016-11-03 13:54:03 -07:00
blueprint.bash Clean up unnecessary dependencies 2016-11-02 13:10:27 -07:00
Blueprints Import globbing from Soong 2016-11-03 13:54:03 -07:00
bootstrap.bash Simplify bootstrap 2016-08-30 17:26:56 -07:00
build.ninja.in Import globbing from Soong 2016-11-03 13:54:03 -07:00
context.go Import globbing from Soong 2016-11-03 13:54:03 -07:00
context_test.go Import globbing from Soong 2016-11-03 13:54:03 -07:00
CONTRIBUTING.md Add CONTRIBUTING.md file 2015-03-16 00:12:49 -07:00
doc.go Indent code block in doc.go 2015-04-11 09:52:11 -07:00
fs.go Allow tests to mock filesystem 2016-08-08 17:26:57 -07:00
glob.go Import globbing from Soong 2016-11-03 13:54:03 -07:00
LICENSE Add license headers and LICENSE file 2015-01-23 14:23:27 -08:00
live_tracker.go Add common implicit deps to Rules 2015-11-17 17:08:05 -08:00
mangle.go Add license headers and LICENSE file 2015-01-23 14:23:27 -08:00
module_ctx.go Import globbing from Soong 2016-11-03 13:54:03 -07:00
ninja_defs.go Support implicit outputs 2016-10-31 17:36:49 -07:00
ninja_strings.go Allow wrapping of PackageContext 2015-11-30 17:03:34 -08:00
ninja_strings_test.go Fix formatting 2015-04-20 16:41:55 -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 Import globbing from Soong 2016-11-03 13:54:03 -07:00
splice_modules_test.go Parallelize BottomUpMutators 2016-08-10 16:31:35 -07:00
unpack.go Improve error reporting 2016-10-12 11:14:18 -07:00
unpack_test.go Improve error reporting 2016-10-12 11:14:18 -07:00
visit_test.go Ask primary builder for module names 2016-10-12 13:33:37 -07: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.