package b0
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha512=e9aa779e66c08fc763019f16d4706f465d16c05d6400b58fbd0313317ef33ddea51952e2b058db28e65f7ddb7012f328c8bf02d8f1da17bb543348541a2587f0
doc/b0.memo/B0_zero/Reviver/index.html
Module B0_zero.ReviverSource
Build operation revivers.
An operation reviver combines a file cache and a hash function to record and revive the effect of build operations.
Note. Hashes performed on files by this module are cached.
Operation reviver
The type for build operation revivers.
clock r is r's clock.
file_cache r is r's file cache.
Hashing
hash_op r o hashes the operation o. Errors if an input file of the build operation can't be hashed, this is most likely because an input file does not exist.
file_hashes r is a map of the files that were hashed.
file_hash_dur r is the time spent hashing files.
Recording and reviving operations
record r o records operation o in the reviver r. This associates the Op.writes o of o to the key Op.hash o (i.e. this function assume o has gone through B0_zero.Op.set_hash before) and stores operation output information of o in the key's metadata hunk. The semantics of the result is like File_cache.add; in particular in case of Ok false it means some file in the set of writes do not exist and is likely an error.
revive r o tries to revive operation o from r using the key Op.hash o (i.e. this function assume o has gone through B0_zero.Op.set_hash before). In particular:
- Recreates the files
Op.writes o - Sets
o's execution information using the metadata hunk of the key. For example for spawn operations this also recovers the exit status code and standard output redirection contents intoo.
If Ok true is returned the operation was revived. If Ok false is returned then nothing was revived and the file system is kept unchanged. Nothing is guaranteed in case of Error _.
Warning. The fields Op.time_started, Op.time_ended of o get set regardless of the result. This may be overwritten later by Exec.