From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id mNVHHUZ+u189NQAA0tVLHw (envelope-from ) for ; Mon, 23 Nov 2020 09:17:58 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id iJkkGUZ+u1+NXQAAbx9fmQ (envelope-from ) for ; Mon, 23 Nov 2020 09:17:58 +0000 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 3E9B994051F for ; Mon, 23 Nov 2020 09:17:58 +0000 (UTC) Received: from localhost ([::1]:59764 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kh7yv-0000O7-6H for larch@yhetil.org; Mon, 23 Nov 2020 04:17:57 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:49722) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kh7t0-0006aG-Ue for guix-devel@gnu.org; Mon, 23 Nov 2020 04:11:50 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]:39496) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kh7t0-00057C-3k; Mon, 23 Nov 2020 04:11:50 -0500 Received: from [2a01:e0a:19b:d9a0:f0c7:1dab:64ad:1a4a] (port=54470 helo=cervin) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1kh7sx-00062F-Ej; Mon, 23 Nov 2020 04:11:48 -0500 From: Mathieu Othacehe To: Ludovic =?utf-8?Q?Court=C3=A8s?= Subject: Re: 01/03: guix: store: Add ensure-path. References: <20201122161938.30063.63195@vcs0.savannah.gnu.org> <20201122161940.6485520981@vcs0.savannah.gnu.org> <87mtz9knjl.fsf@gnu.org> Date: Mon, 23 Nov 2020 10:11:46 +0100 In-Reply-To: <87mtz9knjl.fsf@gnu.org> ("Ludovic =?utf-8?Q?Court=C3=A8s=22'?= =?utf-8?Q?s?= message of "Sun, 22 Nov 2020 23:57:18 +0100") Message-ID: <87tutgwi7h.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: guix-devel@gnu.org Errors-To: guix-devel-bounces+larch=yhetil.org@gnu.org Sender: "Guix-devel" X-Scanner: ns3122888.ip-94-23-21.eu Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of guix-devel-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-devel-bounces@gnu.org X-Spam-Score: -1.51 X-TUID: jz7PRzevjp7f Hey, > Looking at LocalStore::ensurePath, I don=E2=80=99t think a GC root is mad= e. > You have to call =E2=80=98add-temp-root=E2=80=99 if you want that to happ= en, no? Yes, I think we do indeed. > However =E2=80=98ensure-path=E2=80=99 can substitute the store item, whic= h I suppose > means you can substitute .drv files without building them, am I right? Yes I'm using it this way: --8<---------------cut here---------------start------------->8--- (define (add-to-store outputs url) (with-store store (for-each (lambda (output) (add-to-locks-held store output) (add-substitute-url store url) (ensure-path store output)) (map derivation-output-path outputs)))) --8<---------------cut here---------------end--------------->8--- to fetch substitutes without building derivations. The painful part is that I have to use my own custom RPC: AddToLocksHeld, so that I can add the substitute to the store even if the output lock is held. At first, I planned to use "restore-file-set" from (guix nar) but it only handles nar files produced by "guix archive --export". Thanks, Mathieu