package b0
Software construction care
Install
Dune Dependency
Authors
Maintainers
Sources
b0-0.0.0.tbz
sha256=dadde8cfa62be9dabd805fc190b415427b4699ffe3458c153e2f3f9cc5c9b9b4
md5=f96ac96fb0182f2b97dbe9ded452544b
doc/b0.b00/B00/index.html
Module B00
Build kernel
WARNING. This is an unstable API use at your own risk.
Concepts kept:
- Treat build operations as pure functions that affect the file system and memoize their results.
- Parallelize build operations by synchronizing on the files they read and writes.
- Tight control over tool lookup and build environment.
Concepts dropped and to be seen how we can recover them at a higher level:
- Build aims for cross compilation (build/host OS distinction). This should be capturable as two separate
Memo
s. - Build units (named sets of build operation with metadata)
- Build operation synchronisation, only files for now, we had unit-level. Did introduce
Memo.Fut
for odig. - Build configuration.
- Build unit/config definition localisation (multiple B0.ml files)
- Build directory structuring and forced clean builds
- Build metadata, unit and file level, packages.
TODO.
- The concept of response file in
Tool
should likely appear at theOp.spawn
level aswell so that we can simply have the sequence ofOp.t
value for a potential build log (otherwiseOp.spawn_args
becomes the line with the response file which is not meanigfull) - Operations, b0 also had file deletion and copy maybe add them aswell. Copy can be expressed in terms of read/write but maybe better to have as a primitive for concurency. Delete doesn't fit well in the "file ready" model, but could be useful for concurrency.
- Spawn redirection should maybe create the paths of the file they write to.
v0.0.0 — homepage
B00
module File_cache : sig ... end
File caches.
module Op : sig ... end
Build operations.
module Op_cache : sig ... end
Operation cache.
module Guard : sig ... end
Build operations guards.
module Exec : sig ... end
Build operation executors.
B01
module Env : sig ... end
Build environment.
module Tool : sig ... end
Command line tools.
module Memo : sig ... end
Build memoizer.