From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms1.migadu.com with LMTPS id QIJVOIVqQmYDUwEAe85BDQ:P1 (envelope-from ) for ; Mon, 13 May 2024 21:31:18 +0200 Received: from aspmx1.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2.migadu.com with LMTPS id QIJVOIVqQmYDUwEAe85BDQ (envelope-from ) for ; Mon, 13 May 2024 21:31:18 +0200 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=nBmEAmy9; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1715628677; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post:dkim-signature; bh=ZTAk9cEIR4I8I8NLHLRy4RlyGu7AcZvHn4Zlf0xJiDo=; b=fPAU7OkVXkWEibNeyl3khnMJ8X/1dOiqgwlh/Vumj67EPUblRuL+MvpsbzoyfYgHp7OU9C 6lAaAxePuTITb3lS2HnVR5WwXJNgljaKwWKqNm60xrdhs6enWpbcH9Ve8bidYSUrDs4YlA SBH4d23TlVUnV+cKdZELFE1gV0fnnhW5fxxZnaCRgPtbeoPOhnA6lnUW+qxO2LMsrzHAkO OJ1p991JXWOrYkj5UPPRq7FeukSLAyV2/L/CiWM2IuL++2k7TAgKwy7FIUuHILABXUIho0 d11SdItEEdOirGXqsNCml0v97BDdt3g7RKk9BnpJguIqcFEiujj69eT/eSmF2A== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=nBmEAmy9; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=key1; d=yhetil.org; t=1715628677; a=rsa-sha256; cv=none; b=jj7K1a+b0obBuwS8s/db1YiGqovHXWM3O/NkJ1jzLCKBeCYl3mbVj3Vmmju5BEaZKw3Vl3 ojGjf24+mEn3xuh3gVfG2AYQT4Xl9/bjHS5aUkqygQvIGIXxYK+Dvuu8bOeVwzt5NCGOdf sxhWxrWgP1XIsFlQbxeXAtbDhFaPxtjKIPhalYI9FLzow3HLizWV+h38jNtzISPc2+P0tI ZdCLq79wKsFQLGopkVWhHRcetRF37dcupMTo34lnVsvw3jA3iqy2OEQ06D/GVfibiMPuP8 pbhghaqZMPD56D0Za//1pQ6Gr8MrOz/uUGWhcHRxqojlRTv86pbunWx/ji1YUg== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 88A836B262 for ; Mon, 13 May 2024 21:31:17 +0200 (CEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s6bNq-0003aW-Fn; Mon, 13 May 2024 15:30:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s6bNm-0003V9-3n for guix-devel@gnu.org; Mon, 13 May 2024 15:30:48 -0400 Received: from mail-wr1-x429.google.com ([2a00:1450:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1s6bNj-0000NJ-76 for guix-devel@gnu.org; Mon, 13 May 2024 15:30:45 -0400 Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-34cb2bf85easo405237f8f.3 for ; Mon, 13 May 2024 12:30:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1715628640; x=1716233440; darn=gnu.org; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ZTAk9cEIR4I8I8NLHLRy4RlyGu7AcZvHn4Zlf0xJiDo=; b=nBmEAmy9Jme79kw1FgSMQffzgofu+m9VaeCaA5ZXPZ/SjaUgdsPNDO6QGvhuz/RJEd OjH22rbs8LZVPxCFM82Dy7CUemknEDkHHbekNy/cvz9fMuhIOHGxBa3/5wfcolnKh9ZI pFVwpEJiPUGViOea8BfGZceSZmG9xsTEAwDXS5qV/zEixFwQfz1vJCmSeD1u91uaiq9q EfAcKPJbEnSESCgCw/hc2RpAJeXYYd57XWnweYZbR5WbYfQ/QNlojxP0Xm7od2WI8bCX l44hBerY2O5Kg7N6AVo9RBmwPQDwKXED3BqdaTuEX4IbKwTPgrjEJ5sNtGC4+e1Jbtm7 c6fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715628640; x=1716233440; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:to:from:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=ZTAk9cEIR4I8I8NLHLRy4RlyGu7AcZvHn4Zlf0xJiDo=; b=qiVUhfqexHdmROoZoitF8VAYoF3pyzx0TelfiNf+pJMGanYz5gdH+oknqEUccHaqVs fd9u+NN8GlawD78YYgUID521JQEEthDYDNG273AZOVsVv0Jv2CwHqhbzBK4N2dEw1U7P guDisID96iWXJAhP6UAzjLyh0/vb1/L91bdfjMUijaBcCK/7XtsKkvSTFnoyBLeuIpII VsF/tsqNg+WJ2ypoP/nvbUHFtsytXs3JY8GA7ieFXbMyOOMqxR+LSmr3pbO9U9DuwRwd VJpv3piPDz4KGel4UA9iaU7z8tgt5e+LR+vzRG7OG2mdHDDSC8zSHlkPx7BsIeAm0lfC aDwQ== X-Forwarded-Encrypted: i=1; AJvYcCUjYqhO0nvwesGoBUEwBCTkQueIUlT15dMQsbt1Jcd8I+QZ5bhKiiETzbG2l5O2zMaVwnLv5cCwVJpqPv4U6HM/1SI= X-Gm-Message-State: AOJu0YxAe8CL5IYr6e2VPkKctgjN5V0ssE7PGJ2PYeQEskQZa1sC9lvJ Q+zBsJ8oqQGEWYoJwXh3lx+nkHxFgPbmgknHZiAIpJAyMhH1cIYOHIhuGQ== X-Google-Smtp-Source: AGHT+IERdMyMpgEjdNiQ14mtoQSBcYWyUbk6WImFqHknS5JloZtc2E6mhZchHmzWJbAeIFQfRaY+6w== X-Received: by 2002:a5d:49c8:0:b0:34d:7d77:36fa with SMTP id ffacd0b85a97d-3504a96c3aamr7429597f8f.5.1715628640088; Mon, 13 May 2024 12:30:40 -0700 (PDT) Received: from lili (roam-nat-fw-prg-194-254-61-44.net.univ-paris-diderot.fr. [194.254.61.44]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3502baad037sm11733966f8f.71.2024.05.13.12.30.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 May 2024 12:30:39 -0700 (PDT) From: Simon Tournier To: Edouard Klein , guix-devel@gnu.org Subject: Re: Guix pull: avoiding "Computing Guix derivation" In-Reply-To: <874jb16993.fsf@rdklein.fr> References: <874jb16993.fsf@rdklein.fr> Date: Mon, 13 May 2024 21:28:37 +0200 Message-ID: <87ikzh340q.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=2a00:1450:4864:20::429; envelope-from=zimon.toutoune@gmail.com; helo=mail-wr1-x429.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+larch=yhetil.org@gnu.org Sender: guix-devel-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Migadu-Spam-Score: -9.70 X-Spam-Score: -9.70 X-Migadu-Queue-Id: 88A836B262 X-Migadu-Scanner: mx13.migadu.com X-TUID: z2/gL5/KEO/9 Hi, On lun., 13 mai 2024 at 17:04, Edouard Klein wrote: > - Why is this step not substitutable ? The inputs are known, a hash can > be derived, a substitute server could be queried for an output of that > hash ? What am I missing ? Does the guix derivation not end up in the > store ? What makes it so special that it can't be served by a substitute > server ? Assume we are running two different Guix revisions, say A and B. And at the end of our respective =E2=80=9Cguix pull=E2=80=9D, we expect to have th= e same revision, say C. We expect to then run the same Guix. Other said, how can we =E2=80=9Ccompile=E2=80=9D the code of C using one ma= chinery from A and another potentially different from B and expect to have the same result? Somehow, we need an intermediary step: something minimal that is independent of A and B but produces the same C. And it=E2=80=99s the aim of =E2=80=9CComputing derivation=E2=80=9D with the script build-aux/build-self= .scm. The inputs are known, indeed. However, the ones from A and from B are not necessary the sames. For instance, Guile of A might be different of Guile of B. Somehow, that =E2=80=9CComputing derivation=E2=80=9D is what a= llows to time travel. Well, that=E2=80=99s my understanding and I could have missing something. For instance, I am running: $ guix describe Generation 4 mars 25 2024 18:22:25 (current) guix 929ddec repository URL: https://git.savannah.gnu.org/git/guix.git branch: master commit: 929ddec8f4a181be653152c7436581c2adc54eee Assume it is revision A. From there, let run =E2=80=99guix pull=E2=80=99. --8<---------------cut here---------------start------------->8--- $ time guix pull Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.or= g/git/guix.git'... Authenticating channel 'guix', commits 9edb3f6 to 6ba29e0 (51 new commits).= .. Building from this channel: guix https://git.savannah.gnu.org/git/guix.git 6ba29e0 substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0% substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0% substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0% module-import 2KiB 305KiB/s 00:00 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% module-import-compiled 1.2MiB 306KiB/s 00:04 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% compute-guix-derivation 1015B 1.8MiB/s 00:00 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% Computing Guix derivation for 'x86_64-linux'... / substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0% The following derivations will be built: /gnu/store/115prkj2rp58gl2lr0qy6higpliw8xpy-profile.drv /gnu/store/56dsm4f5snfmnfgkki4x41fj0xcl394m-guix-daemon.drv /gnu/store/77r2c33r1cq03qrrrfsf3g6mvmjp0w92-guix-command.drv /gnu/store/0y0fq1lmz3dwqi0fpbq4g6swkc9yljmp-guix-cli-modules.drv /gnu/store/bbczy39rid3q6j191mj397ak589s1101-guix-system-modules.drv /gnu/store/gx3ngbxmb6ayzjpxv9afsigvajc5d7h4-guix-extra-modules.drv /gnu/store/i0b6inna8a8bxg75k3dxr4xl6jrn53cm-guix-cli-core-modules.drv /gnu/store/iww6bi0ciaqkjjbqp26iclq2ijd1bgck-guix-system-tests-modules.drv /gnu/store/x0ai22yrq99kp3il0x3nf1d3yj5fydqy-guix-packages-base-modules.drv 70,7 MB will be downloaded substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0% [...] guix-package-cache 872KiB 303KiB/s 00:03 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% guix-cli 315KiB 241KiB/s 00:01 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% guix-cli-core 922KiB 194KiB/s 00:05 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% guix-cli-modules 260B 253KiB/s 00:00 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% guix-cli-core-modules 261B 450KiB/s 00:00 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% guix-extra 2.8MiB 363KiB/s 00:08 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% guix-manual 5.2MiB 273KiB/s 00:19 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% guix-extra-modules 261B 187KiB/s 00:00 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% guix-packages-base 17.4MiB 271KiB/s 01:06 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% guix-system 7.9MiB 264KiB/s 00:31 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% guix-packages-base-modules 265B 279KiB/s 00:00 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% guix-system-modules 262B 282KiB/s 00:00 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% guix-system-tests 921KiB 332KiB/s 00:03 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% guix-system-tests-modules 267B 279KiB/s 00:00 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% guix-6ba29e021-modules 31.2MiB 299KiB/s 01:47 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% guix-module-union 2KiB 385KiB/s 00:00 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% guix-command 655B 1.0MiB/s 00:00 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% guix-daemon 402B 711KiB/s 00:00 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% guix-6ba29e021 802B 499KiB/s 00:00 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% [...] real 5m8,633s user 1m53,567s sys 0m1,530s --8<---------------cut here---------------end--------------->8--- Ok, all is substitutable (wow! 70MiB that=E2=80=99s not nothing=E2=80=A6 an= other story) except the part =E2=80=9CComputing derivation=E2=80=9D. Now, from another revision B (here I choose C to make things more confusing ;-)), let run: --8<---------------cut here---------------start------------->8--- simon@lili$ time guix time-machine --commit=3D6ba29e0 -- describe=20 Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.or= g/git/guix.git'... substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0% substitute: updating substitutes from 'https://bordeaux.guix.gnu.org'... 10= 0.0% substitute: updating substitutes from 'https://guix.bordeaux.inria.fr'... 1= 00.0% [...] config.scm 507B 377KiB/s 00:00 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% git.scm 105B 127KiB/s 00:00 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% hash.scm 130B 267KiB/s 00:00 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% module-import 2KiB 557KiB/s 00:00 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% module-import 2KiB 577KiB/s 00:00 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% module-import-compiled 1.2MiB 302KiB/s 00:04 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% module-import-compiled 1.2MiB 244KiB/s 00:05 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% building /gnu/store/icka5f4977darnyw75is2v716k0agp48-compute-guix-derivatio= n.drv... Computing Guix derivation for 'x86_64-linux'... | substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0% substitute: updating substitutes from 'https://bordeaux.guix.gnu.org'... 10= 0.0% substitute: updating substitutes from 'https://guix.bordeaux.inria.fr'... 1= 00.0% The following derivations will be built: /gnu/store/iq1xhzdjc2lhvfmg5ap65a1wx2mwbynw-profile.drv /gnu/store/jkslyhj4m35bqrg0am8y5qlh9gsdamyv-guix-6ba29e021.drv /gnu/store/8nc0vjaz96n3rixxdi57w0zk7ja5nh7h-guix-daemon.drv /gnu/store/fryzibmg9vrc542qra59qmzf8d6n86sw-guix-command.drv /gnu/store/qqnxqvqsbjm1mglisnmm9sb0n6043c9i-guix-module-union.drv /gnu/store/q9p35jxy0jr4zaldm6nmkj91zkhsv0an-guix-6ba29e021-modules.drv /gnu/store/5fz6m02fgjnyqf359wv47hwwfhfwk64b-guix-packages-modules.drv /gnu/store/jm5il7lsxigw0d63cv1vwx1kxgm06580-guix-home-modules.drv /gnu/store/jz26dqj8kai936h2fj0szdnkmnlhmfl3-guix-config-modules.drv /gnu/store/lf4k886h1cqnj39774hmnpfsxxi40cnb-guix-config.drv /gnu/store/lh77nxg1hl3snzfd8f5fngzfj6zbr8jn-guix-config-source.drv /gnu/store/593nr6hirjgkvmpfyvfw8laqha2ycgfw-config.scm.drv /gnu/store/jjqy49vzcfcvdkg59cpssvg643bsilkl-inferior-script.scm.drv /gnu/store/pbfh548cj96kd7gxdyrs1q4ljdgdb1gn-profile.drv 2,4 MB will be downloaded module-import-compiled 107KiB 145KiB/s 00:01 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% guix-home 751KiB 180KiB/s 00:04 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% guix-packages 1.5MiB 210KiB/s 00:07 =E2=96=95=E2=96=88=E2=96= =88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88= =E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2=96=88=E2= =96=8F 100.0% building /gnu/store/593nr6hirjgkvmpfyvfw8laqha2ycgfw-config.scm.drv... building /gnu/store/jm5il7lsxigw0d63cv1vwx1kxgm06580-guix-home-modules.drv.= .. building /gnu/store/lh77nxg1hl3snzfd8f5fngzfj6zbr8jn-guix-config-source.drv= ... building /gnu/store/5fz6m02fgjnyqf359wv47hwwfhfwk64b-guix-packages-modules.= drv... building /gnu/store/lf4k886h1cqnj39774hmnpfsxxi40cnb-guix-config.drv... building /gnu/store/jz26dqj8kai936h2fj0szdnkmnlhmfl3-guix-config-modules.dr= v... building /gnu/store/q9p35jxy0jr4zaldm6nmkj91zkhsv0an-guix-6ba29e021-modules= .drv... building /gnu/store/qqnxqvqsbjm1mglisnmm9sb0n6043c9i-guix-module-union.drv.= .. building /gnu/store/fryzibmg9vrc542qra59qmzf8d6n86sw-guix-command.drv... building /gnu/store/8nc0vjaz96n3rixxdi57w0zk7ja5nh7h-guix-daemon.drv... building /gnu/store/jkslyhj4m35bqrg0am8y5qlh9gsdamyv-guix-6ba29e021.drv... [...] guix 6ba29e0 repository URL: https://git.savannah.gnu.org/git/guix.git commit: 6ba29e02108ed144da1234b4b5512ee03865dcf6 real 1m34,408s user 1m50,315s sys 0m1,421s --8<---------------cut here---------------end--------------->8--- Similar story. All is substitutatble except =E2=80=9CComputing derivation= =E2=80=9D. Now, if we scrutinize, let compare the script we run when type =E2=80=9Cgui= x=E2=80=9D: (A) /gnu/store/77r2c33r1cq03qrrrfsf3g6mvmjp0w92-guix-command.drv and =20=20=20=20 (B) /gnu/store/fryzibmg9vrc542qra59qmzf8d6n86sw-guix-command.drv The outputs are different (I did not expect that ;-)) (A) /gnu/store/mwv6xzx8ggyzb67jwj1pmxyr8zndq12x-guix-command and=20 (B) /gnu/store/4jjd4zfyvp2g8gnp3wqzaxnn9xs9sdan-guix-command Well, I was expecting the same guix-command. Why not the same? Because one thing is different (aside the order of listed inputs): (A) /gnu/store/39l6dl5q5287wnn063nx4qgd3gx1l6zy-guix-module-union.drv and =20=20=20=20 (B) /gnu/store/qqnxqvqsbjm1mglisnmm9sb0n6043c9i-guix-module-union.drv Let dive in more. The two outputs of these derivations look similar; except one file: config.scm. (Aside .go binary compiled files which are known to not be reproducible.) The difference between revision A and B reads: --8<---------------cut here---------------start------------->8--- (define %channel-metadata (quote (repository (version 0) (url "https://git.savannah.gnu.org/git/guix.git") (A) (branch "master") (B) (branch #f) (commit "6ba29e02108ed144da1234b4b5512ee03865dcf6") (name guix) (introduction (channel-introduction (version 0) (commit "9edb3f66fd807b096b48283debdcddccfea34bad") (signer "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA")))))) --8<---------------cut here---------------end--------------->8--- and that=E2=80=99s because one is from regular =E2=80=9Cguix pull=E2=80=9D,= and the other is from =E2=80=9Cguix time-machine=E2=80=9D. Well, maybe that could be consid= ered as a bug, that=E2=80=99s another story. ;-) All the point is to build the same result starting from two different machinery (different Guile, modules, etc) and ending to the same output. Considering the combinatorial, it would not be possible to substitutes; it would mean compute all the couples A-C and B-C. That=E2=80=99s an hard topic and speed it up would be very nice. Bah it wo= uld require to redesign stuff and perhaps find a process to build the same output using two different toolchains, somehow. Again, maybe I am missing something. > - Is there a way (even a very dirty one, like hand copying stuff accross > /var/guix/profiles/per-user/*/current-guix) I can stop paying this 4 > minutes per user price ? As I said, this is downtime on my server, as > I need to stop all other services to let guix pull finish. Nothing I am aware. For this situation with different users, are they all running the same Guix revision and targeting the same final Guix revision? If yes, indeed =E2=80=99guix pull=E2=80=99 should be costly only once and t= hen instantly fast for all the others; if that=E2=80=99s not already the case. If no, as explained, it seems hard to avoid the cost of =E2=80=9CComputing derivation=E2=80=9C for each user using a different Guix revision. Well, maybe I am missing something. Cheers, simon