Hi, On lun., 13 mai 2024 at 17:11, Richard Sent <rich...@freakingpenguin.com> wrote:
> Instead of A and B building C directly, A and B download the > substitutable Guix package D, then use D to build C. Because D is a > reproducible package, it should be substitutable from both A and B. > Then, because D->C is the same for everyone, we could substitute the > Guix derivation computation for C. Maybe I am missing some details. From my understanding, your D is the result of the “Computing derivation” dance. And it is a minimalist build because it must work for both cases: with or without substitutes. Somehow, my understanding of the current process is: A -> D -> C B -> D* -> C And, D or D* can be the same script. Here, the property is a kind of idempotency. Hence, C is substitutable. IIUC, your proposal is to fix D (the intermediary step). You propose the package named ’guix’ that changes barely, but it could be something more minimalist. The requirements is: susbtitutable. The problem is transferred to the first arrow, no? How can we be sure that A and B points to the same D? Other said, A lives in the past. Later, we changed D becoming D* because some bugs. The other revision B lives after this change. Therefore, we have the same picture: A -> D B -> D* But then how do we go to C since D and D* does not have a kind of idempotent property. >From my understanding, the current situation/process is very similar with the one for compiling compiler: you have your new Source of compiler and an OldCompiler binary, so you run: OldCompiler(Source) -> Compiler and again Compiler(Source) -> NewCompiler Somehow, whatever the choice of some OldCompiler binary, you get the same NewCompiler binary (aside trusting trust attack and friends, obviously ;-)) The story of “guix pull” is not so different; from my understanding. Again, maybe I am missing something. Cheers, simon