[Haskell-cafe] Minimal Haskell Platform

Travis Cardwell travis.cardwell at extellisys.com
Wed Apr 16 02:00:31 UTC 2014


On 2014年04月15日 14:02, Simon Hengel wrote:
>> It is interesting that cabal does not (try to) install happy as a
>> prerequisite for haskell-src-exts, which lists happy as a
>> Build-Tools dependency [2].  It is also interesting that `cabal
>> install happy` requires itself, despite indication in the
>> documentation [3] that it is a valid way to install the package...
>>
>> Does this indicate that Cabal expects Haskell Platform?
>
> No, installing build tools is just a missing feature of `cabal-install`
> (AFAIK).

I chatted with Duncan Coutts in #haskell, and he confirmed that it is
indeed just a missing feature.  I found the issue here:

https://github.com/haskell/cabal/issues/220

I was unable to find an issue regarding the `cabal install happy` failure,
so I created one:

https://github.com/haskell/cabal/issues/1777

>> Should Cabal be changed to (support minimal installations and)
>> manage Build-Tools dependencies?
>
> Yes.

In #haskell, Duncan Coutts said:
> as for the global vs. minimal, yes I see it's an issue. One sometimes
> wants to start a sandbox with a very minimal set.
>
> the issue with making a minimal sandbox is simply knowing which
> packages should be in it, and we currently just base them all off of
> the global one.
>
> but that's not the only solution, it'd also be possible to copy a
> subset, if we know what subset to copy
>
> and I have a somewhat cunning plan along these lines (related to some
> other ghc-pkg/cabal improvement work) which might make that rather
> easier
>
> what I want is for ghc itself to come with multiple profiles, with one
> being the minimum (base + rts + deps), and that could be used as a basis
> for new envs

With such a feature, it sounds like we can get the best of both worlds:
* a feature-rich Haskell Platform to support beginners
* minimal sandboxes for advanced users

> I think most Haskell developers use a reasonably recent version of GHC
> (that would currently still be 7.6.3 for me) and the latest version of
> cabal-install.  Everything else can be installed with cabal-install.

In my experience, the alex and happy binaries must also be installed (for
a number of packages to be installable via cabal-install).

> Where would something like the HP actually make sense?  For stuff that
> has external dependencies that are not easily  installable with
> cabal-install (like curses bindings, SSL support, etc.).  We have none
> of this in the HP.  So I think currently we just have additional costs,
> but no benefits (+ we harm innovation by arbitrarily "endorsing" random
> packages).

I understand this point of view, but allow me to offer an opposing one.
By putting packages with external dependencies into Haskell Platform, we
often increase the dependencies of Haskell Platform itself.  For example,
Haskell Platform currently includes Graphics packages; installing Haskell
Platform on a server entails installing a number of OpenGL libraries that
are never used.

Cheers,

Travis


More information about the Haskell-Cafe mailing list