No description
Find a file
Paul Duffin 72bab1707e WalkDeps - only record module visited when it has been recursed into
Previously, WalkDeps() would record that a module was visited after the
first time it encountered the module irrespective of whether it recursed
into or not. This change moves the recording so it happens only after it
has been recursed into.

Added TestWalkDepsDuplicates_IgnoreFirstPath to test the change. Without
the change the test fails because it does not visit E.

Test refactoring:
* A depsMutator was added instead of relying on blueprintDepsMutator to
  allow different tags to be used for different dependency types.
* Modified barModule and fooModule to support the new depsMutator and
  add support for another type of dependency that is ignored by the
  walking code.
* Extracted walkDependencyGraph() function to reuse common code.
2020-04-02 10:56:13 +01:00
bootstrap Remove blueprint:"filter(*)" tag support 2020-01-21 11:49:27 -08:00
bpfmt Correctly report errors in bpfmt 2019-05-21 11:03:00 -07:00
bpmodify bpmodify: fix os.Exit() shouldn't shadow panic() 2020-03-05 19:45:49 +08:00
deptools Make WriteDepFile escape spaces and special characters 2015-04-14 23:34:24 -04:00
gotestmain Support examples as tests 2019-02-15 15:13:37 -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 Disable parallel compilation when using race detector 2018-04-30 14:44:22 -07:00
parser Implement list of maps 2020-03-02 17:26:20 -08:00
pathtools Fix reading absolute paths through OsFs 2020-01-10 13:52:22 -08:00
proptools Fix bug in buildPropertyMap in previous commit. 2020-03-03 17:42:38 -08: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 Fix compiling binaries with go 1.13 2019-09-06 14:25:28 -07:00
blueprint.bash Use microfactory to build the bootstrap minibp 2017-07-24 14:02:51 -07:00
blueprint_impl.bash Run globs during earlier bootstrap phases 2018-07-06 10:39:38 -07:00
Blueprints Move unpackProperties to proptools and export it 2020-01-02 20:32:51 -08:00
bootstrap.bash Add --empty-ninja-file for test usecases 2018-10-26 09:57:24 -07:00
context.go WalkDeps - only record module visited when it has been recursed into 2020-04-02 10:56:13 +01:00
context_test.go WalkDeps - only record module visited when it has been recursed into 2020-04-02 10:56:13 +01:00
CONTRIBUTING.md Add CONTRIBUTING.md file 2015-03-16 00:12:49 -07:00
doc.go Fix Ninja build system site link 2019-03-23 16:31:07 +02:00
glob.go Add ShouldFollowSymlinks argument to pathtools.Glob 2018-09-24 15:09:32 -07:00
glob_test.go Fix glob cache conflict when excludes=nil and excludes=[]string{} 2018-02-23 14:03:56 -08:00
go.mod Add proptools.Int and proptools.IntDefault 2019-09-25 14:52:54 -07:00
LICENSE Add license headers and LICENSE file 2015-01-23 14:23:27 -08:00
live_tracker.go Make ninjaString an interface 2020-01-29 16:23:40 -08:00
mangle.go Add license headers and LICENSE file 2015-01-23 14:23:27 -08:00
module_ctx.go Add EarlyModuleContext.BlueprintsFile 2020-01-14 13:00:01 -08:00
module_ctx_test.go Move LoadHooks from Soong to Blueprint 2020-01-02 20:32:51 -08:00
name_interface.go Return an error when renaming a module that doesn't exist 2018-04-16 14:44:41 -07:00
ninja_defs.go Make ninjaString an interface 2020-01-29 16:23:40 -08:00
ninja_strings.go Make ninjaString an interface 2020-01-29 16:23:40 -08:00
ninja_strings_test.go Make ninjaString an interface 2020-01-29 16:23:40 -08:00
ninja_writer.go Write ninja file directly to the output file 2019-01-23 13:26:42 -08:00
ninja_writer_test.go Run globs during earlier bootstrap phases 2018-07-06 10:39:38 -07:00
package_ctx.go Make ninjaString an interface 2020-01-29 16:23:40 -08:00
README.md Update link to Ninja 2016-08-18 00:48:20 -04:00
scope.go Make ninjaString an interface 2020-01-29 16:23:40 -08:00
singleton_ctx.go Added VisitDirectDeps* methods to SingletonContext. 2019-09-20 23:58:23 +01:00
splice_modules_test.go Parallelize BottomUpMutators 2016-08-10 16:31:35 -07:00
visit_test.go Move LoadHooks from Soong to Blueprint 2020-01-02 20:32:51 -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.