guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] profiles: Generate GHC's package database cache.


From: Ludovic Courtès
Subject: Re: [PATCH] profiles: Generate GHC's package database cache.
Date: Sun, 05 Apr 2015 22:06:04 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux)

Federico Beffa <address@hidden> skribis:

> From dfe3b875267731006512b8a9803aaa56f07db12e Mon Sep 17 00:00:00 2001
> From: Federico Beffa <address@hidden>
> 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 <address@hidden> 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’.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]