all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Speeding up “guix pull”: splitting modules
@ 2020-01-05 20:37 Ricardo Wurmus
  2020-01-06  9:11 ` Andy Wingo
                   ` (3 more replies)
  0 siblings, 4 replies; 14+ messages in thread
From: Ricardo Wurmus @ 2020-01-05 20:37 UTC (permalink / raw)
  To: guix-devel

Hi Guix,

thanks to Ludo’s excellent work on “guix pull”, updating Guix has become
a lot faster than in the old days.  With build farm support one usually
only needs to wait a little while to be able to download all parts of
an up-to-date Guix.

Unfortunately, changes to the repository invalidate expensive
derivations regularly, and waiting for the build farm to get around to
building these derivations gets old quickly.  Running “guix pull”
repeatedly is a drag because the chances of getting a fully remotely
built Guix are pretty slim.

Part of the problem is that there’s just one derivation for the
compilation of all package modules.  This one derivation’s output is an
input to another expensive derivation: the one for the Guix System
(services, etc).

We should aim to split up the guix-packages derivation, so that the
guix-system derivation will not have to be rebuilt when its packages
aren’t affected.  Unfortunately, it’s difficult to build modules
independently from one another because of the many inter-module
dependency cycles.

Gábor once suggested an iterative approach of identifying the most
important nodes in the package graph that should be moved to their own
modules, so that we would end up with a package graph that looks less
like a hair ball.  I think it would useful to get a better view on the
relationships between modules.

On the other hand: this would need to be an ongoing effort.  Newly
introduced packages or even new features might create complex module
cycles.  It sounds tedious to keep track of this and to enforce
boundaries.

Is there an alternative?  Could we, for example, make all lookups of
cross-module package references lazy?  Or could we improve compilation
times by disabling optimizations?  Or by marking the modules as
declarative and thus unlock more optimizations (with Guile 3)?

--
Ricardo

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2020-01-20 17:45 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-05 20:37 Speeding up “guix pull”: splitting modules Ricardo Wurmus
2020-01-06  9:11 ` Andy Wingo
2020-01-07 18:37 ` zimoun
2020-01-07 20:14   ` Gábor Boskovits
2020-01-10 12:09     ` zimoun
2020-01-10 12:42       ` Gábor Boskovits
2020-01-10 12:53         ` zimoun
2020-01-11 23:29           ` Ludovic Courtès
2020-01-20 17:44             ` zimoun
2020-01-08 21:50 ` Ludovic Courtès
2020-01-10 12:13   ` zimoun
2020-01-10 19:02     ` Ricardo Wurmus
2020-01-08 21:57 ` Ludovic Courtès
     [not found]   ` <87zhenp01v.fsf@cbaines.net>
2020-01-19 21:07     ` Ludovic Courtès

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.