Federico Beffa <be...@ieee.org> skribis: > From dfe3b875267731006512b8a9803aaa56f07db12e Mon Sep 17 00:00:00 2001 > From: Federico Beffa <be...@fbengineering.ch> > Date: Sat, 4 Apr 2015 22:51:13 +0200 > Subject: [PATCH] profiles: Generate GHC's package database cache. > > * guix/profiles.scm (ghc-package-cache-file): New procedure. > (profile-derivation): Add 'ghc-package-cache?' keyword argument. If true > (the default), add the result of 'ghc-package-cache-file' to 'inputs'. > * guix/scripts/package.scm (guix-package)[process-actions]: Pass > #:ghc-package-cache? to 'profile-generation'. > * tests/packages.scm ("--search-paths with pattern"): Likewise. > * tests/profiles.scm ("profile-derivation"): Likewise.
LG, but... > On Sun, Apr 5, 2015 at 7:21 AM, Mark H Weaver <m...@netris.org> 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. All good points. > 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)))) I think that would do. Eventually we could think of more sophisticated way to determine whether to trigger a given “hook” (info-dir, ca-certificates, ghc.) Perhaps this ‘ghc-package-cache-file’ procedure could be added as an ‘environment-hook’ field of the ghc package and it would be triggered iff GHC is installed. (This approach would work well for GHC, but not for info-dir or ca-certificates, though.) >> 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. I think this is fine. A similar hook could be added for Hugs if/when we see fit and presumably they would not interfere. Thoughts? Thanks, Ludo’.