Subject: Re: bug#46402: Cuirass rebuilds the same packae multiple times

From: Mathieu Othacehe <[email-masked]>
Date: Wed, 10 Feb 2021 12:24:09 +0100

Hey Ludo,

Thanks for sharing your thoughts, it's always useful :).

> Seems to me that ‘BuildSteps’ is an orthogonal concern that has little
> to do with Cuirass’ job and with its data model.  In Hydra I saw that as
> a (necessary) kludge.

I'm not sure to follow you here. Cuirass and Hydra have an almost
identical database schema and are now working very similarly from what I
understand.

In Hydra, a JobSet (Specification in Cuirass) has several Builds. Each
Build can be broken in several BuildSteps, corresponding to transitive
derivation inputs that must be built.

Hydra manages to get those BuildSteps to be built in a topological
order, in the same way as the Guix Build Coordinator.

This makes me think that we could implement this exact same mechanism in
Cuirass but I'm maybe missing something.

> If Cuirass would instead delegate derivation build requests to a
> Coordinator/daemon-like thing, it wouldn’t have to worry about those
> details.  That would better separate concerns.

I think that having Cuirass delegating its builds to the Coordinator is
not the right move. That would mean doubling the size of the CI code
base, doubling the number of databases, for a feature that we could
implement in Cuirass, just by making it catch-up on Hydra.

Thanks,

Mathieu