Commit graph

5 commits

Author SHA1 Message Date
Jamie Gennis
598fe760ca Change the bootstrap dir to .bootstrap
Change-Id: I016939015144e29f5981b754b725a6c8e48e3b0d
2014-06-06 14:41:07 -07:00
Jamie Gennis
28a63fba69 Add the blueprint.VariableConfigMethod function.
VariableConfigMethod creates a Ninja variable whose value comes directly from a
method on the config object.

Change-Id: I9baa3598678928ea3d5bc85b864b2df7d3e1b749
2014-06-06 14:41:07 -07:00
Jamie Gennis
cbc6f86e34 Fix a re-bootstrapping issue.
This change fixes an issue where the re-bootstrapping process would overwrite a
newer bootstrap manifest with one that it generates using its older minibp.  It
fixes the issue by only generating a new bootstrap manifest right after
rebuilding minibp (as part of the bootstrap process).  It then uses an
additional rebootstrap iteration to replace the old bootstrap manifest with the
new one.

Change-Id: I16bad2f30f6ad7f10da07d77105e8745adec3650
2014-06-06 14:41:07 -07:00
Jamie Gennis
1ebd3b838b Make build.ninja.in independent of the build dir.
This change makes the module definition location that's included in the build
manifest comments use paths relative to the top-level source directory.  This
should make the bootstrap build manifest not get regenerated when using a new
build directory.

Change-Id: I350562ad10aa52688c8841c96c6325502b0faa59
2014-06-04 15:33:08 -07:00
Jamie Gennis
1bc967ed43 Initial Blueprint commit.
Blueprint is a build system component that reads Blueprints files defining
modules to be built, and generates a Ninja build manifest that can be used to
perform all the build actions.  It does not dictate or implement much build
policy itself, but rather provides a framework to ease the process of defining
build logic in Go.

The "blueprint" and "blueprint/parser" Go packages contain the functionality
for reading Blueprint files and invoking build logic functions defined in other
Go packages.

The "blueprint/bootstrap" Go package contains just enough build logic to build
a binary that includes Blueprint and any pure-Go (i.e. no cgo) build logic
defined in external Go packages.  This can be used to create a minimal Ninja
file that's capable of bootstrapping a Blueprint-based build system from
source.

The "blueprint/bootstrap/minibp" Go package contains code for a minimal binary
that includes the build logic defined in the "blueprint/bootstrap" package.
This binary can then create the Ninja file for the bootstrapping process.

Change-Id: I8d8390042372a72d225785cda738525001b009f1
2014-06-04 14:23:32 -07:00