From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark H Weaver Subject: Re: [PATCH] profiles: Generate GHC's package database cache. Date: Sun, 05 Apr 2015 16:24:31 -0400 Message-ID: <87h9su4934.fsf@netris.org> References: <87pp7j40aw.fsf@netris.org> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:58733) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Yer5S-0005NY-QP for guix-devel@gnu.org; Sun, 05 Apr 2015 16:24:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Yer5P-0002f5-IW for guix-devel@gnu.org; Sun, 05 Apr 2015 16:24:06 -0400 Received: from world.peace.net ([50.252.239.5]:56877) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Yer5P-0002f1-FD for guix-devel@gnu.org; Sun, 05 Apr 2015 16:24:03 -0400 In-Reply-To: (Federico Beffa's message of "Sun, 5 Apr 2015 10:16:21 +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: Federico Beffa Cc: Guix-devel Federico Beffa writes: > On Sun, Apr 5, 2015 at 7:21 AM, Mark H Weaver wrote: >> I believe this will require GHC to build *any* non-empty profile. Since >> GHC is only available on Intel platforms, this will break profile >> building on MIPS and ARM. >> >> Even on Intel platforms, I don't want to have to install GHC to build >> profiles that don't contain any Haskell packages, especially since it >> involves trusting the upstream binaries from GHC. > > Good point. Would this check be satisfactory for you? > > ;; Don't depend on GHC when there's nothing to do. > (if (any (cut string-prefix? "ghc" <>) > (map manifest-entry-name (manifest-entries manifest))) > (gexp->derivation "ghc-package-cache" build > #:modules '((guix build utils)) > #:local-build? #t) > (gexp->derivation "ghc-package-cache" #~(mkdir #$output)))) Sure, this would be fine, although I wonder if we could replace the 'string-prefix?' with 'string=?'. If so, the conditional could be changed to: (if (member "ghc" (map manifest-entry-name (manifest-entries manifest))) ...) What do you think? >> What if I want to use Hugs instead, or some other Haskell implementation >> that is capable of being bootstrapped from source code. Is GHC the only >> tool that can do this job? > > As far as I know, the library database is compiler specific. Here we > are handling GHC only. Okay, makes sense. Thank you! Mark