Changes between Version 51 and Version 52 of Commentary/Libraries


Ignore:
Timestamp:
Aug 4, 2011 8:19:16 AM (3 years ago)
Author:
simonmar
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Commentary/Libraries

    v51 v52  
    33= GHC Commentary: Libraries = 
    44 
    5 All GHC build trees contain a set of libraries, called the '''Boot Packages'''.  These are the libraries that GHC's source code imports.  Obviously you need the boot packages to build GHC at all. 
     5All GHC build trees contain a set of libraries, called the '''Boot Packages'''.  These are the libraries that GHC's source code imports.  Obviously you need the boot packages to build GHC at all.  The boot packages are those packages in the file source:packages that have a `-` in the "tag" column. 
    66 
    7 The Boot Packages, along with the other subcomponents of the GHC build system, are listed in the file `$(TOP)/packages` in a GHC tree.  
     7The repository structure of a GHC source tree is described in [wiki:Repositories]. 
    88 
    9 All boot packages have a Git repo in http://darcs.haskell.org/packages: 
    10  
    11  * Having all the repos in one place makes it easy and uniform for GHC developers to get all the packages. 
    12  
    13  * In a build tree, these packages each occupy a sub-directory of `$(TOP)/libraries`. 
    14  
    15  * For INDEPENDENT packages (see "Coupling to GHC", below), the Git repo in http://darcs.haskell.org/packages is a '''lagging repo'''. That means 
    16    * Don't push to it. 
    17    * Update it from the package's master repo at convenient intervals. 
    18    In this way GHC developers are not exposed to package upgrades, except when we want. 
    19  
    20 To find out which packages are currently boot packages, do the following in a GHC build: 
    21 {{{ 
    22 $ make show VALUE=PACKAGES 
    23 }}} 
    24  
    25 (The `PACKAGES` variable is set in `$(TOP)/`[[GhcFile(ghc.mk)]].) 
    26 You can see exactly which versions of what packages GHC depends on by looking in `$(TOP)/`[[GhcFile(compiler/ghc.cabal.in)]]. 
     9You can see exactly which versions of what packages GHC depends on by looking in source:compiler/ghc.cabal.in. 
    2710 
    2811= Building packages that GHC doesn't depend on = 
     
    11497 * Next is the '''`base`''' package. This contains a large number of modules, many of which are in one big cyclic import knot, mostly due to the `Exception` type. 
    11598 
    116   * On top of base are a number of other, more specialised packages, whose purpose is generally clear from their name. If not, you can get more detail from the descriptions in their Cabal files.  Currently these packages are are: 
    117     * `array` 
    118     * `bytestring` 
    119     * `Cabal` 
    120     * `containers` 
    121     * `directory` 
    122     * `extensible-exceptions` 
    123     * `filepath` 
    124     * `haskeline` 
    125     * `haskell98` 
    126     * `hpc` 
    127     * `mtl` 
    128     * `old-locale` 
    129     * `old-time` 
    130     * `packedstring` 
    131     * `pretty` 
    132     * `process` 
    133     * `random` 
    134     * `syb` 
    135     * `template-haskell` 
    136     * `terminfo` 
    137     * `unix` 
    138     * `utf8-string` 
    139     * `Win32` 
    140 The `haskell98`, `old-time` and `random` packages are mostly only needed for Haskell 98 support, although `dph` currently uses `random` too. 
     99 * On top of base are a number of other, more specialised packages, whose purpose is generally clear from their name. If not, you can get more detail from the descriptions in their Cabal files.  The up-to-date list of packages can be found in the file source:packages. 
     100 
     101The `haskell98`, `old-time`, `old-locale` and `random` packages are mostly only needed for Haskell 98 support, although `dph` currently uses `random` too. 
    141102 
    142103== WARNING: Pattern matching in `ghc-prim`, `integer-simpl`, and `integer-gmp`  ==