From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: [PATCH] system: Remove spec->file-system. Date: Mon, 05 Dec 2016 21:58:11 +0100 Message-ID: <87k2beyty4.fsf@gnu.org> References: <20161202183716.25174-1-david@craven.ch> <87oa0r7l16.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:52197) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cE0L5-0004tD-HI for guix-devel@gnu.org; Mon, 05 Dec 2016 15:58:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cE0L0-0004G6-NC for guix-devel@gnu.org; Mon, 05 Dec 2016 15:58:19 -0500 In-Reply-To: (David Craven's message of "Sun, 4 Dec 2016 17:19:24 +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: David Craven Cc: guix-devel Hi! David Craven skribis: > Ah yes, that makes sense. Thank you for explaining. I think I'm > understanding the general design pattern better: > > Build side code that uses a record from gnu/system is a gexp in > gnu/system. This gexp is passed to a function in gnu/build so that > gnu/build itself doesn't need to import gnu/system and can avoid > recursive imports. One of the goals of using Scheme on both sides is code reuse. However, things like (guix build utils) are inherently =E2=80=9Cbuild side= =E2=80=9D, hence the name. In addition, it wouldn=E2=80=99t make sense to pull (guix store), (guix packages), and friends on the =E2=80=9Cbuild side=E2=80=9D, b= ecause these things cannot be used there since the build environment doesn=E2=80=99t give access to the daemon (IOW, a build process cannot talk to the daemon, it=E2=80=99s not recursive.) Thus, the (guix build =E2=80=A6) module space also serves as a way to distinguish things and avoid pulling all of the Guix modules unwillingly on the build side. It introduces some sort of a frontier between the build side and the host side (info "(guix) G-Expressions"). But borders are unbearable and sometimes there=E2=80=99s useful stuff that = we want to use freely on both sides, like this record type. :-) Ludo=E2=80=99.