[Haskell-cafe] Build base with stack

Robin Palotai palotai.robin at gmail.com
Thu Jan 5 14:42:09 UTC 2017


Thanks for the pointer Edward, new-build seems nice. It could build base
indeed!

Just a note - with the patch, if I had "tests: True" in cabal.project, I
got an assertion for
    pkgStanzasEnabled `Set.isSubsetOf` pkgStanzasAvailable
from Distribution/Client/ProjectPlanning.hs. Maybe WAI.

Do you think the patch could make it upstream in a form of some flag?
--no-require-install=x,y or so.

Thank you,
Robin


2016-12-31 3:28 GMT+01:00 Edward Z. Yang <ezyang at mit.edu>:

> Excerpts from Brandon Allbery's message of 2016-12-30 19:45:46 -0500:
> > On Fri, Dec 30, 2016 at 7:37 PM, Robin Palotai <palotai.robin at gmail.com>
> > wrote:
> > >
> > > Do you know a way to force a rebuild of base with stack? I don't want
> to
> > > modify it, just want to feed it through a customized ghc pipeline.
> > >
> >
> > base is part of ghc and must be built along with ghc. It cannot be built
> > separately from ghc, regardless of tooling, if you want it to actually
> work.
> >
> > (If you want to see some examples of why it is this way, play around with
> > RebindableSyntax a bit, paying attention to the ways in which it breaks
> if
> > you do the wrong thing. You can also get some idea of it from the
> behavior
> > of type roles. In short: ghc must know the precise identity *at machine
> > level*, not just source, of various key types in base. It can only do
> this
> > by ghc and base being built together so that various types' machine level
> > representations can be wired into ghc as they are built.)
>
> Although it is true that GHC is closely tied to the particularities
> of base, you CAN swap out base, as long as the new version of base has
> all of the wired in entities that GHC expects to see. (This must be
> the case, because we build stage 1 GHC before we build base.)
>
> To answer OP's question, I don't know how to do it with Stack but I've
> rebuilt base with cabal-install new-build with a little patch.  First you
> have to
> modify cabal-install/Distribution/Solver/Modular/Solver.hs,
> changing the invocation of P.requireInstalled so that "base" isn't
> on the list; this lets cabal-install decide that it can rebuild base.
> Then, in your cabal.project, add:
>
>     packages: path/to/base
>     constraints: base +integer-gmp
>
> (The integer-gmp flag is manual so you need to make sure you toggle
> it yourself.)  Then cabal new-build will build it, and other packages
> will make use of it.
>
> Good luck!
>
> Edward
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20170105/09b9646a/attachment.html>


More information about the Haskell-Cafe mailing list