Re: Proposal for Remote Execution
- From: Jürg Billeter <j bitron ch>
- To: Jim MacArthur <jim macarthur codethink co uk>, buildstream-list gnome org
- Subject: Re: Proposal for Remote Execution
- Date: Wed, 18 Apr 2018 13:19:16 +0200
On Wed, 2018-04-18 at 11:58 +0100, Jim MacArthur wrote:
On 11/04/18 21:37, Jürg Billeter wrote:
The CAS is similar to a OSTree repository, storing directories as Merkle
trees. However, unlike OSTree, CAS does not include support for refs.
What's the material difference between a Merkle tree hash and an OSTree
ref (in the way BuildStream uses refs)? It's my understanding that our
OSTree refs are a unique identifier for the pre-build conditions, plus
the project and artifact name, while a Merkle hash would be a unique
identifier for the results of the build, but is there some other
difference I should know about?
This is correct. To elaborate a bit, both CAS and OSTree use Merkle
trees with SHA256 hashes for directories. OSTree adds commit objects on
top of this (similar to git), also hashed with SHA256. Each commit
object points to a Merkle tree (hash). And OSTree refs build on top of
commit objects (also similar to git). Each ref maps a custom name to a
commit object (hash).
As you correctly describe, BuildStream uses unique cache keys that
correspond to the pre-build conditions for refs. The functionality
provided by commit objects on top of Merkle trees (i.e., commit
parent/message) is not used by BuildStream. However, refs are essential
as otherwise we can't find the Merkle tree (and thus the artifact) when
we only have BuildStream's cache key.
Jürg
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]