From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Kost Subject: Re: [PATCH 6/7] guix build: Add 'build-package'. Date: Wed, 19 Aug 2015 23:50:54 +0300 Message-ID: <878u972ea9.fsf@gmail.com> References: <1437814197-6321-1-git-send-email-alezost@gmail.com> <1437814197-6321-7-git-send-email-alezost@gmail.com> <87zj1ou1i0.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]:36800) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZSAK1-0004uC-1z for guix-devel@gnu.org; Wed, 19 Aug 2015 16:50:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZSAJw-0005Vz-2Q for guix-devel@gnu.org; Wed, 19 Aug 2015 16:50:56 -0400 In-Reply-To: <87zj1ou1i0.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Tue, 18 Aug 2015 16:15:03 +0200") 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-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Ludovic =?utf-8?Q?Court=C3=A8s?= Cc: guix-devel@gnu.org Ludovic Court=C3=A8s (2015-08-18 17:15 +0300) wrote: > Alex Kost skribis: > >> * guix/scripts/build.scm (build-package): New procedure. > > [...] > >> +(define (build-package package . build-options) >> + "Build PACKAGE using BUILD-OPTIONS." >> + (with-store store >> + (let* ((drv (run-with-store store >> + (package->derivation package))) >> + (drvs (list drv))) >> + (apply set-build-options store build-options) >> + (show-what-to-build store drvs) >> + (build-derivations store drvs) >> + (show-derivation-outputs drv)))) > > I think this doesn=E2=80=99t fit here because it isn=E2=80=99t actually u= sed by =E2=80=98guix > build=E2=80=99. Maybe keep it in emacs/ for now? If you mean "guix-main.scm", I don't think it's the right place either, as all this guix-devel stuff does not depend on Guix REPL (or on any code from "guix-main.scm" in general). Besides, "guix-main.scm" doesn't provide a module. What about making some additional module?: (guix devel) or something. Other similar code may be put there in future. For example, you are editing a package definition and you may want to download the current origin source. It will probably also require some specific scheme code, which may be added to that module. > Also, it=E2=80=99s best to call =E2=80=98set-build-options=E2=80=99 befor= e anything else, to > make sure all the options are taken into account. OK > Bonus points for making it all monadic-style: > > (mbegin %store-monad > (set-build-options* opts) > (mlet* %store-monad ((drv (package->derivation)) > (drvs (list drv))) > (mbegin %store-monad > (show-what-to-build* drvs) > (built-derivations drvs) > (return (show-derivation-outputs drv))))) > > and (define set-build-options* (store-lift set-build-options)) in > (guix store). > > WDYT? OK, I'll look at it. I suppose adding 'set-build-options*' to (guix store) should be done in a separate commit, right? --=20 Alex