B0_buildBuilds.
Centralizes the information to run and orchestrate a b0 build.
The type for build units. See B0_unit.t.
The type for sets of build units. See B0_unit.Set.t.
val must_build : t -> b0_unit_setmust_build b are the units in b that must build.
val may_build : t -> b0_unit_setmay_build b are all the units in b that may build, i.e. that can be required. This includes the elements in must_build b.
require_unit b u asks to build unit u in b. This fails the memo if b is u is not in may_build.
current b is b's current unit. In the build procedure of a unit this is the unit itself.
FIXME Unify the directory story with B0_action and We likely want to get rid of a few of the functions below.
val unit_dir : t -> b0_unit -> B0_std.Fpath.tunit_dir b u is the unit build directory for unit u. This is where u should write is build artefacts.
val unit_scope_dir : t -> b0_unit -> B0_std.Fpath.tunit_scope_dir b u is the directory of the b0 file in which u was defined. This is were unit relative paths like source files should be resolved.
val current_dir : t -> B0_std.Fpath.tcurrent_dir b is unit_dir b current.
val scope_dir : t -> B0_std.Fpath.tscope_dir b is unit_scope_dir b current.
shared_dir b is a build directory shared by all units of the build. This is used by computations shared by units, most of the time one should rather use current_dir.
val in_unit_dir : t -> b0_unit -> B0_std.Fpath.t -> B0_std.Fpath.tin_unit_dir b u p is Fpath.(unit_dir b u // p).
val in_unit_scope_dir : t -> b0_unit -> B0_std.Fpath.t -> B0_std.Fpath.tin_unit_scope_dir b u p is Fpath.(unit_scope_dir b u // p))
val in_current_dir : t -> B0_std.Fpath.t -> B0_std.Fpath.tin_current_dir b p is Fpath.(current_dir b // p)).
val in_scope_dir : t -> B0_std.Fpath.t -> B0_std.Fpath.tin_scope_dir b p is Fpath.(scope_dir b // p)).
in_shared_dir b p is Fpath.(shared_dir b // p)).
val store : t -> B0_store.tstore b is the store for the build. Note that b itself can be found in store via the self key.
val get : t -> 'a B0_store.key -> 'a B0_std.Fut.tget b k is B0_store.get (store b) k.
val self : t B0_store.keyself is a store key that holds the build itself. The store returned by store has this key bound to the build.
val make :
root_dir:B0_std.Fpath.t ->
b0_dir:B0_std.Fpath.t ->
variant:string ->
store:B0_store.binding list ->
B0_memo.t ->
may_build:b0_unit_set ->
must_build:b0_unit_set ->
tmake ~root_dir ~b0_dir m ~may_build ~must_build
must_build are the build units that must be build by b.may_build are the build units that may build in b. must units are automatically added to this set.val run : t -> (unit, unit) Stdlib.resultrun b runs the build.
val did_build : t -> b0_unit_setdid_build b are the units that did build. This is meaningless before run has finished.
_b0 directory accessmodule B0_dir : sig ... end_b0 directory structured access.