[Haskell-cafe] Minimal Haskell Platform
Travis Cardwell
travis.cardwell at extellisys.com
Tue Apr 15 01:35:20 UTC 2014
Hello,
I have been using Haskell Platform since it was introduced because I have
always heard that it is the recommended way to use GHC. Indeed, Haskell
Platform has made the installation of a Haskell environment quite
straightforward. My current usage strategy is a common one:
* Only install Haskell Platform in --global.
* Avoid installing into ~/.cabal (when possible).
* Develop exclusively in Cabal sandboxes.
In a recent /r/haskell post [1], user mightybyte commented:
> This. The Haskell Platform installs a bunch of packages for you in
> --global. My experience is that this inevitably leads to problems if
> you're doing significant Haskell development. The best thing to do is
> to minimize the number of packages installed as --global. The way to do
> that is to install GHC directly and avoid using the Haskell Platform or
> Haskell distributions provided by your OS.
Asking about it in #haskell, it seems that a number of developers
recommend such a minimal installation, particularly for large projects. I
am very interested in minimizing the number of packages in --global, and I
would like to start testing my software against the current Haskell
Platform *as well as* such a minimal installation.
I my initial tests (Debian stable amd64; minimal virtual machine), I tried
installing GHC 7.8.2 and cabal-install (using bootstrap.sh) only.
Installation went fine, `cabal update` worked fine, and `cabal sandbox
init` worked fine. I then tried `cabal install hlint` (within the
sandbox), and it successfully compiles a number of packages before failing
when trying to build haskell-src-exts, complaining that happy could not be
found. Running `cabal install happy` failed with the "setup: The program
happy is required but it could not be found" error. Building happy via
the source Setup.lhs worked fine, and installing the binary into my
installation bin directory results in an environment in which I am able to
`cabal install hlint` (and `cabal install happy`) into a sandbox without
issue.
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?
Should Cabal be changed to (support minimal installations and) manage
Build-Tools dependencies?
Would it be worthwhile to create a "Minimal Haskell Platform" to create a
truly common platform that everybody would be happy using?
Cheers,
Travis
[1] http://www.reddit.com/r/haskell/comments/22up8l/ghc_782_released/
[2]
https://github.com/haskell-suite/haskell-src-exts/blob/9bc4daf3b51d006741c6b1fc7524e18591f01945/haskell-src-exts.cabal#L127
[3] http://www.haskell.org/happy/
More information about the Haskell-Cafe
mailing list