Changes between Version 36 and Version 37 of Building/Using


Ignore:
Timestamp:
Jun 16, 2009 12:13:35 PM (5 years ago)
Author:
simonmar
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Building/Using

    v36 v37  
    539539you could also cut-and-paste the command-line to add flags, but sometimes the `EXTRA_HC_OPTS` method is more convenient. 
    540540 
    541 == Building libraries == 
     541== Installing extra packages == 
    542542 
    543543The [wiki:Commentary/Libraries boot libraries] are built as part of building GHC; they are built with the stage1 compiler, and imported when the stage2 compiler is compiled with stage1. 
     
    545545All other libraries are stand-alone Cabal packages, and the build system knows nothing about them.  Nevertheless, it is common to want to install extra packages for the GHC in your build tree.  Here's how to do it. 
    546546 
    547 First, download the package.  For example (using `$(TOP)` to stand for the root directory of your build tree): 
     547The easiest way is to just use [http://hackage.haskell.org/trac/hackage/wiki/CabalInstall cabal-install]: 
     548 
     549{{{ 
     550$ cabal install --with-ghc=$(TOP)/inplace/bin/ghc-stage2 <package> 
     551}}} 
     552 
     553where `$(TOP)` stands for the root directory of your build tree, and `<package>` is the name of the package you want to install.  This will install the package in your home directory (e.g. somewhere under `~/.cabal/lib` on a Unix system) , so you'll probably want to remove it by hand when you've finished. 
     554 
     555There's also a way to build and register a package with GHC but without actually installing it in your home directory.  For example, if you want to install a package from its darcs repository: 
    548556{{{ 
    549557$ cd $(TOP)/libraries 
    550 $ darcs get http:://darcs.haskell.org/packages/parallel 
     558$ darcs get http://darcs.haskell.org/packages/parallel 
    551559}}} 
    552560(You don't have to download the package to `$(TOP)/libraries`; it can go anywhere.)  Now build it using Cabal, telling Cabal to use the GHC from your build tree: 
    553561{{{ 
    554 runhaskell Setup configure --with-ghc=$(TOP)/inplace/bin/ghc-stage2 
    555 runhaskell Setup build 
    556 runhaskell Setup install --inplace 
    557 }}} 
    558 The `--inplace` flag to `install` is passed by Cabal to `ghc-pkg` (which in turn is found form the `--with-ghc` flag you gave to `configure`, and tells `ghc-pkg` not to copy the compiled package, but rather to leave it right where it is. 
     562$ runhaskell Setup configure --with-ghc=$(TOP)/inplace/bin/ghc-stage2 
     563$ runhaskell Setup build 
     564$ runhaskell Setup register --inplace 
     565}}} 
     566The `--inplace` flag to `register` tells Cabal not to copy the compiled package, but rather to leave it right where it is, and register this location in the package database in your GHC build tree. 
    559567 
    560568== Standard Targets ==