From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark H Weaver Subject: Re: hydra.gnu.org now provides substitutes for =?utf-8?B?4oCYZ3Vp?= =?utf-8?B?eCBwdWxs4oCZ?= Date: Wed, 07 Nov 2018 19:03:36 -0500 Message-ID: <874lcs305o.fsf@netris.org> References: <87muvn1djp.fsf@gnu.org> <20181015074136.q53i3f6p3hsjvn7o@thebird.nl> <87woqjfrb0.fsf@gnu.org> <20181103141923.toiqztmx33k5cx2l@thebird.nl> <87efby2v1b.fsf@gnu.org> <20181106155545.isyiwjmk3q662dqt@thebird.nl> <20181107081909.x734ulafjlnzo2rv@thebird.nl> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:58375) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gKXoK-0001Q7-Sq for guix-devel@gnu.org; Wed, 07 Nov 2018 19:04:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gKXoF-000599-TT for guix-devel@gnu.org; Wed, 07 Nov 2018 19:04:35 -0500 In-Reply-To: <20181107081909.x734ulafjlnzo2rv@thebird.nl> (Pjotr Prins's message of "Wed, 7 Nov 2018 09:19:09 +0100") 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+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Pjotr Prins Cc: guix-devel@gnu.org Hi Pjotr, Pjotr Prins writes: > Another thing I find a little strange. When I install a package or an > environment it completes fine. When I add then --no-substitutes flag > and it always builds stuff like openssl and libgcrypt, pango and such > from source. > > I.e., it creates a build system (I suppose). If the install is > complete it should not have to do that. > > Even if I do > > guix environment -C guix > > (which should include a build system, right?) and after completion > run the same with --no-substitutes it starts to build right away. > > Any thoughts on that? My first guess is that it has to do with grafting. If I'm not mistaken, in order to generate a graft derivation (.drv file), we need to know which store items are referenced in the ungrafted outputs. When substitutes are enabled, Guix can get the lists of references from the substitute servers. When --no-substitutes is passed, and the ungrafted outputs are not in the local store, they must be locally built in order to determine the set of references. Or at least that's my guess. Ludovic could answer more definitively, as he wrote the relevant code. Mark