guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Prototype tool for building derivations


From: Christopher Baines
Subject: Prototype tool for building derivations
Date: Fri, 17 Apr 2020 21:22:18 +0100
User-agent: mu4e 1.2.0; emacs 26.3

Hey,

Over the last couple of weeks, I've made some time to implement
something I was thinking about for a while.

In terms of getting to a point where Guix packages build reliably and
reproducibly, I think more testing is what's going to help. By taking
packages and building them more, on a wide variety of hardware and
software configurations, we'll get data on what works, what doesn't, and
where improvements and fixes can be made.

It's very much a prototype, but I've pushed some code up here [1] now,
the README.org file [2] contains usage instructions as well as a
description of the architecture.

1: https://git.cbaines.net/guix/build-coordinator/
2: https://git.cbaines.net/guix/build-coordinator/about/

So far, I've mostly done the boring stuff, but I'm excited about what
this could support.

Because the allocation/scheduling of builds is controlled, this offers
the possibility of doing some builds before others. If you were using
this for providing substitutes for example, it could be valuable to try
and prioritise building things that are requested more often, or those
that are more expensive (in time or space) to build.

Often there are concurrency issues with builds, I want to add a way of
specifying where builds should run. This would make it easy to test
building the same derivation in different setups, then capture where it
succeeds, fails, and how the output differs (if at all) across the
different environments.

I think it would be good to get point where there are many different
individuals and groups providing independent sources of Guix packages,
such that users can have a high level of confidence that the substitutes
they're getting correspond to the source code. Getting there will be
easier if substitute servers are easy to operate, and part of that I
think comes down to how easy it is to see what's going on. With the
current daemon implementation, I'm not sure how to get much data out
(this could be possible, I haven't looked very closely). This approach
however where the scheduling is done outside the daemon makes the
information more accessible.

I think some of the design decisions here are quite short sighted. I
think it would be better if some of this functionality could be handled
by the guix-daemon, especially things like providing information on
builds that are going to happen, but haven't happened yet. Once there's
a Guile implementation of the guix-daemon, hopefully some of this
technical debt can be repaid.

Just let me know if you have any questions or comments!

Thanks,

Chris

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]