Design considerations and todo

B0 file

B0 library

Unit dynamic meta

For now we used 'a Fut B0_beta.key.

Unit actions

The current implementations raises a few questions. It will need to be refined, see B0_unit.action.

b0 tool

Build API conventions

Build fragments

At the B0 level we need to expose build fragments. It seems the build procedures of units is a good candidate but for now it's a bit unconvient to do that. We need to clarify the configuration store and dynamic metadata see Unit dynamic meta.

For now as a temporary hack we add the wrap parameter to units.


The signature of B00.Memo.write looks wrong you want a fut. E.g. we don't want to the Fut.sync here.

let crunch_file m file ~in_dir =
  let open Fut.Syntax in
  let mn = B00_ocaml.Mod.Name.of_mangled_filename (Fpath.basename file) in
  let out = Fpath.(in_dir / String.Ascii.uncapitalize mn + ".ml") in
  B00.Memo.write m out ~reads:[file] begin fun () ->
  (* FIXME b0 the sig of write is wrong *)
  let data = Fut.sync ( m file) in
  Ok (B00_ocaml.Crunch.string_to_string ~id:"file" ~data)
  Fut.return out