No description
Find a file
Colin Cross 8a40148408 Write build definitions directly to output writer
buildDef.WriteTo was calling valueList to convert all the build
parameter ninjaStrings into strings, which uses ValueWithEscaper
to build a strings.Builder.  This results in building a string
only to immediately copy it into the output writer's buffer.

Instead, pass an io.StringWriter to ValueWithEscaper so it can
build the string directly into the output writer's buffer.  This
requires converting ninjaWriterWithWrap into an io.StringWriter.

Test: ninja_writer_test.go
Change-Id: I02e1cf8259306267b9d2d0ebe8c81e13dd443725
2021-01-21 22:02:30 -08:00
.github/workflows Fix github builds for deprecated set-env and add-path commands (#333) 2020-11-23 16:52:58 -08:00
bootstrap Increase ninja file writer buffer 2021-01-21 22:02:30 -08:00
bpfmt Correctly report errors in bpfmt 2019-05-21 11:03:00 -07:00
bpmodify bpmodify: support numerical sort (#332) 2020-12-14 11:30:48 -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 bpmodify: support numerical sort (#332) 2020-12-14 11:30:48 -08:00
pathtools Use info.IsDir() instead of info.Mode()&os.ModeDir != 0 2021-01-20 13:47:37 -08:00
proptools Fix silently ignoring values assigned to map properties 2021-01-15 22:21:28 -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
.gofmt.sh Use github actions instead of travis 2020-06-15 10:32:10 -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 Add Providers to Blueprint 2020-09-22 18:20:18 -07:00
bootstrap.bash Add flag to use validations for tests 2020-07-09 14:28:20 -07:00
CODEOWNERS Add CODEOWNERS: @google/blueprint 2020-10-07 11:57:54 +08:00
context.go Memoize full names of variables, pools and rules 2021-01-21 22:02:30 -08:00
context_test.go Support pausing parallelVisit 2020-09-16 12:58:39 -07: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 Return a copy of glob lists 2021-01-21 13:47:59 -08: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 Add Validations support to Blueprint 2020-07-09 14:28:20 -07:00
mangle.go Add license headers and LICENSE file 2015-01-23 14:23:27 -08:00
module_ctx.go Actually pause mutators when adding dependencies (#335) 2020-12-14 11:23:23 -08:00
module_ctx_test.go Improve formatting of some error messages. (#327) 2020-11-16 12:15:36 -08:00
name_interface.go Maintain ordering between variants and aliases 2020-09-09 18:29:15 -07:00
ninja_defs.go Write build definitions directly to output writer 2021-01-21 22:02:30 -08:00
ninja_strings.go Write build definitions directly to output writer 2021-01-21 22:02:30 -08:00
ninja_strings_test.go Make ninjaString an interface 2020-01-29 16:23:40 -08:00
ninja_writer.go Write build definitions directly to output writer 2021-01-21 22:02:30 -08:00
ninja_writer_test.go Write build definitions directly to output writer 2021-01-21 22:02:30 -08:00
package_ctx.go Memoize full names of variables, pools and rules 2021-01-21 22:02:30 -08:00
provider.go Add Providers to Blueprint 2020-09-22 18:20:18 -07:00
provider_test.go Add Providers to Blueprint 2020-09-22 18:20:18 -07:00
README.md Use github actions instead of travis 2020-06-15 10:32:10 -07:00
scope.go Memoize full names of variables, pools and rules 2021-01-21 22:02:30 -08:00
singleton_ctx.go Add Providers to Blueprint 2020-09-22 18:20:18 -07:00
splice_modules_test.go Maintain ordering between variants and aliases 2020-09-09 18:29:15 -07:00
visit_test.go Maintain ordering between variants and aliases 2020-09-09 18:29:15 -07:00

Blueprint Build System

build

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.