package b0
Install
dune-project
Dependency
Authors
Maintainers
Sources
sha512=e9aa779e66c08fc763019f16d4706f465d16c05d6400b58fbd0313317ef33ddea51952e2b058db28e65f7ddb7012f328c8bf02d8f1da17bb543348541a2587f0
doc/b0.memo/B0_zero/Reviver/index.html
Module B0_zero.Reviver
Source
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
.