Changes between Version 39 and Version 40 of Repositories


Ignore:
Timestamp:
Dec 19, 2012 12:21:07 PM (16 months ago)
Author:
simonpj
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Repositories

    v39 v40  
    2828See the [wiki:Commentary/Libraries] page for more information about GHC's libraries. 
    2929 
    30 == Making changes to repositories == 
     30== The repositories == 
    3131 
    32 See [wiki:WorkingConventions/Repositories]. 
     32Here is a list of the repositories that GHC uses.  The columns have the following meaning 
     33 * '''Location in tree''': where in the source tree this repository sits. 
     34 * '''Upstream repo?''': if "yes", this library is maintained by someone else,  
     35   and its master repo is somewhere else.  See the [wiki:Repositories/Upstream page about upstream repositories]. 
     36 * '''Reqd to build?''': is "no" is this library is not required to build GHC. We have a few of these because we use them for tests and suchlike. 
     37 * '''Installed?''': is "no" if the library is not installed in a GHC installation. All others are installed with GHC. See the [wiki:Commentary/Libraries libraries page] for more info. 
     38 * '''GHC repo''': in every case there is a repo on `http://darcs.haskell.org/`, which contains the bits we use for building GHC every night. For libraries with upstream repos, this is just a lagging mirror of the master (see [wiki:Repositories/Upstream upstream repositories]) 
    3339 
    34 == Repository and mirrors == 
    35  
    36 Many of the libraries and tools in a GHC tree are actually maintained by someone else. They therefore have a separate upstream repository, from which we need to pull. That repository may be either a darcs or a git repository; in the darcs case, we also need to convert to a git repository for use in a GHC tree. However, if the darcs repository is on another server, then we first need to mirror it for the conversion program to use. This diagram shows how changes migrate from one repo to another: 
    37  
    38 [[Image(repos.png)]] 
    39  
    40 This means that when making changes needed in GHC to one of these libraries, we first need to put the changes in the upstream repository. Note that a git hook prevents you from pushing patches to the ghc repos until they are already in the git mirror repos, so that we cannot forget to send changes upstream. 
    41  
    42 The mirrors are updated automatically each night, but you can force an immediate update by running `/srv/darcs/do_mirrors` on `darcs.haskell.org`. 
    43  
    44 == Repository locations == 
    4540{{{ 
    4641#!html 
     42<style type="text/css"> 
     43table.sample { 
     44        border-width: 1px; 
     45        border-spacing: 0px; 
     46        border-style: outset; 
     47        border-color: gray; 
     48        border-collapse: collapse; 
     49        background-color: white; 
     50} 
     51table.sample th { 
     52        border-width: 1px; 
     53        padding: 1px; 
     54        border-style: inset; 
     55        border-color: gray; 
     56        background-color: white; 
     57        -moz-border-radius: ; 
     58} 
     59table.sample td { 
     60        border-width: 1px; 
     61        padding: 1px; 
     62        padding-left: 4px; 
     63        padding-right: 6px; 
     64        border-style: inset; 
     65        border-color: gray; 
     66        background-color: white; 
     67        -moz-border-radius: ; 
     68} 
     69</style> 
     70<table border="1"> 
     71<tr><td>Location in tree</td>   <td> Upstream repo?</td> <td>Reqd to build?</td>   <td>Installed?</td> <td>GHC repo http://darcs.haskell.org/...</td></tr> 
     72<tr><td>. (ghc itself)</td>                    <td>     </td> <td>     </td> <td>     </td> <td>ghc.git/</td></tr> 
     73<tr><td>ghc-tarballs</td>                      <td>     </td> <td>     </td> <td> no  </td> <td>ghc-tarballs.git/</td></tr> 
     74<tr><td>utils/hsc2hs</td>                      <td>     </td> <td>     </td> <td>     </td> <td>utils/hsc2hs.git/</td></tr> 
     75<tr><td>utils/haddock</td>                     <td>     </td> <td>     </td> <td>     </td> <td>haddock.git</td></tr> 
     76<tr><td>libraries/array</td>                   <td>     </td> <td>     </td> <td>     </td> <td>packages/array.git/</td></tr> 
     77<tr><td>libraries/base</td>                    <td>     </td> <td>     </td> <td>     </td> <td>packages/base.git/</td></tr> 
     78<tr><td>libraries/binary</td>                  <td> yes </td> <td>     </td> <td>     </td> <td>packages/.git/</td></tr> 
     79<tr><td>libraries/bytestring</td>              <td> yes </td> <td>     </td> <td>     </td> <td>packages/bytestring.git/</td></tr> 
     80<tr><td>libraries/Cabal</td>                   <td> yes </td> <td>     </td> <td>     </td> <td>packages/Cabal.git/</td></tr> 
     81<tr><td>libraries/containers</td>              <td> yes </td> <td>     </td> <td>     </td> <td>packages/containers.git/</td></tr> 
     82<tr><td>libraries/directory</td>               <td>     </td> <td>     </td> <td>     </td> <td>packages/directory.git/</td></tr> 
     83<tr><td>libraries/extensible-exceptions</td>   <td>     </td> <td>     </td> <td>     </td> <td>packages/extensible-exceptions.git/</td></tr> 
     84<tr><td>libraries/filepath</td>                <td>     </td> <td>     </td> <td>     </td> <td>packages/filepath.git/</td></tr> 
     85<tr><td>libraries/ghc-prim</td>                <td>     </td> <td>     </td> <td>     </td> <td>packages/ghc-prim.git/</td></tr> 
     86<tr><td>libraries/haskeline</td>               <td> yes </td> <td>     </td> <td> no  </td> <td>packages/haskeline.git/</td></tr> 
     87<tr><td>libraries/haskell98</td>               <td>     </td> <td>     </td> <td>     </td> <td>packages/haskell98.git/</td></tr> 
     88<tr><td>libraries/haskell2010</td>             <td>     </td> <td>     </td> <td>     </td> <td>packages/haskell2010.git/</td></tr> 
     89<tr><td>libraries/hoopl</td>                   <td>     </td> <td>     </td> <td>     </td> <td>packages/hoopl.git/</td></tr> 
     90<tr><td>libraries/hpc</td>                     <td>     </td> <td>     </td> <td>     </td> <td>packages/hpc.git/</td></tr> 
     91<tr><td>libraries/integer-gmp</td>             <td>     </td> <td>     </td> <td>     </td> <td>packages/integer-gmp.git/</td></tr> 
     92<tr><td>libraries/integer-simple</td>          <td>     </td> <td>     </td> <td>     </td> <td>packages/integer-simple.git/</td></tr> 
     93<tr><td>libraries/mtl</td>                     <td> yes </td> <td> no  </td> <td> no  </td> <td>packages/mtl.git/</td></tr> 
     94<tr><td>libraries/old-locale</td>              <td>     </td> <td>     </td> <td>     </td> <td>packages/old-locale.git/</td></tr> 
     95<tr><td>libraries/old-time</td>                <td>     </td> <td>     </td> <td>     </td> <td>packages/old-time.git/</td></tr> 
     96<tr><td>libraries/pretty</td>                  <td> yes </td> <td>     </td> <td>     </td> <td>packages/pretty.git/</td></tr> 
     97<tr><td>libraries/process</td>                 <td>     </td> <td>     </td> <td>     </td> <td>packages/process.git/</td></tr> 
     98<tr><td>libraries/random</td>                  <td> yes </td> <td>     </td> <td>     </td> <td>packages/random.git/</td></tr> 
     99<tr><td>libraries/template-haskell</td>        <td>     </td> <td>     </td> <td>     </td> <td>packages/template-haskell.git/</td></tr> 
     100<tr><td>libraries/terminfo</td>                <td> yes </td> <td>     </td> <td> no  </td> <td>packages/terminfo.git/</td></tr> 
     101<tr><td>libraries/time</td>                    <td> yes </td> <td>     </td> <td>     </td> <td>packages/time.git/</td></tr> 
     102<tr><td>libraries/transformers</td>            <td> yes </td> <td>     </td> <td>     </td> <td>packages/transformers.git/</td></tr> 
     103<tr><td>libraries/unix</td>                    <td>     </td> <td>     </td> <td>     </td> <td>packages/unix.git/</td></tr> 
     104<tr><td>libraries/utf8-string</td>             <td> yes </td> <td>     </td> <td>     </td> <td>packages/utf8-string.git/</td></tr> 
     105<tr><td>libraries/Win32</td>                   <td> yes </td> <td>     </td> <td>     </td> <td>packages/Win32.git/</td></tr> 
     106<tr><td>libraries/xhtml</td>                   <td> yes </td> <td>     </td> <td>     </td> <td>packages/xhtml.git/</td></tr> 
     107<tr><td>testsuite</td>                         <td>     </td> <td>     </td> <td>     </td> <td>testsuite.git</td></tr> 
     108<tr><td>nofib</td>                             <td>     </td> <td>     </td> <td>     </td> <td>nofib.git</td></tr> 
     109<tr><td>libraries/primitive</td>               <td> yes </td> <td>     </td> <td>     </td> <td>packages/primitive.git/</td></tr> 
     110<tr><td>libraries/vector</td>                  <td> yes </td> <td>     </td> <td>     </td> <td>packages/vector.git/</td></tr> 
     111<tr><td>libraries/dph</td>                     <td>     </td> <td>     </td> <td>     </td> <td>packages/dph.git/</td></tr> 
     112<tr><td>libraries/deepseq</td>                 <td>     </td> <td> no  </td> <td> no </td> <td>packages/deepseq.git/</td></tr> 
     113<tr><td>libraries/parallel</td>                <td>     </td> <td> no  </td> <td> no  </td> <td>packages/parallel.git/</td></tr> 
     114<tr><td>libraries/stm</td>                     <td>     </td> <td> no  </td> <td> no  </td> <td>packages/stm.git/</td></tr> 
     115</table> 
     116}}} 
    47117 
    48 <p>This table shows, for each repository in a GHC tree, where the <span style="color: green;">central repository</span> (identified in green) is, and what mirrors there are.</p> 
    49 <p>For the common case where the central repository held on <tt>darcs.haskell.org</tt> and appears in the "ghc (validated) repo" column, we give the read-only URL.  To get a read/write URL, replace HTTP prefix <tt>http://darcs.haskell.org</tt> with the SSH prefix <tt>darcs.haskell.org:/srv/darcs</tt>. 
     118== Modifying local packages == 
    50119 
    51 <table border="2"> 
    52 <tr><td colspan="2">darcs</td><td colspan="4">git</td><td></td></tr> 
    53 <tr><td>darcs upstream</td><td>darcs mirror</td><td>git upstream</td><td>git mirror</td><td>ghc (validated) repo</td><td>in-tree</td><td></td></tr> 
    54 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/ghc.git/</td><td>.</td><td rowspan="34">ghc</td></tr> 
    55 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/ghc-tarballs.git/</td><td>ghc-tarballs</td></tr> 
    56 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/utils/hsc2hs.git/</td><td>utils/hsc2hs</td></tr> 
    57 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/haddock.git</td><td>utils/haddock</td></tr> 
    58 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/array.git/</td><td>libraries/array</td></tr> 
    59 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/base.git/</td><td>libraries/base</td></tr> 
    60 <tr><td></td><td></td><td style="color: green;">git://github.com/kolmodin/binary.git</td><td>http://darcs.haskell.org/git-mirrors/binary/binary.git/</td><td>http://darcs.haskell.org/packages/.git/</td><td>libraries/binary</td></tr> 
    61 <tr><td style="color: green;">http://darcs.haskell.org/bytestring/</td><td></td><td></td><td>http://darcs.haskell.org/git-mirrors/bytestring/.git/</td><td>http://darcs.haskell.org/packages/bytestring.git/</td><td>libraries/bytestring</td></tr> 
    62 <tr><td></td><td></td><td style="color: green;">git://github.com/haskell/cabal.git</td><td>http://darcs.haskell.org/git-mirrors/Cabal/.git/</td><td>http://darcs.haskell.org/packages/Cabal.git/</td><td>libraries/Cabal</td></tr> 
    63 <tr><td></td><td></td><td style="color: green;">git://github.com/haskell/containers.git</td><td>http://darcs.haskell.org/git-mirrors/containers/.git/</td><td>http://darcs.haskell.org/packages/containers.git/</td><td>libraries/containers</td></tr> 
    64 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/directory.git/</td><td>libraries/directory</td></tr> 
    65 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/extensible-exceptions.git/</td><td>libraries/extensible-exceptions</td></tr> 
    66 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/filepath.git/</td><td>libraries/filepath</td></tr> 
    67 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/ghc-prim.git/</td><td>libraries/ghc-prim</td></tr> 
    68 <tr><td style="color: green;">http://code.haskell.org/haskeline/</td><td>http://darcs.haskell.org/darcs-mirrors/haskeline/</td><td></td><td>http://darcs.haskell.org/git-mirrors/haskeline/.git/</td><td>http://darcs.haskell.org/packages/haskeline.git/</td><td>libraries/haskeline</td></tr> 
    69 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/haskell98.git/</td><td>libraries/haskell98</td></tr> 
    70 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/haskell2010.git/</td><td>libraries/haskell2010</td></tr> 
    71 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/hoopl.git/</td><td>libraries/hoopl</td></tr> 
    72 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/hpc.git/</td><td>libraries/hpc</td></tr> 
    73 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/integer-gmp.git/</td><td>libraries/integer-gmp</td></tr> 
    74 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/integer-simple.git/</td><td>libraries/integer-simple</td></tr> 
    75 <tr><td></td><td></td><td style="color: green;">git://github.com/ekmett/mtl.git</td><td>http://darcs.haskell.org/git-mirrors/mtl/.git</td><td>http://darcs.haskell.org/packages/mtl.git/</td><td>libraries/mtl</td></tr> 
    76 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/old-locale.git/</td><td>libraries/old-locale</td></tr> 
    77 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/old-time.git/</td><td>libraries/old-time</td></tr> 
    78 <tr><td></td><td></td><td style="color: green;">git://github.com/haskell/pretty.git</td><td>http://darcs.haskell.org/git-mirrors/pretty/</td><td>http://darcs.haskell.org/packages/pretty.git/</td><td>libraries/pretty</td></tr> 
    79 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/process.git/</td><td>libraries/process</td></tr> 
    80 <tr><td></td><td></td><td style="color: green;">git://github.com/haskell/random.git</td><td>http://darcs.haskell.org/git-mirrors/random/</td><td>http://darcs.haskell.org/packages/random.git/</td><td>libraries/random</td></tr> 
    81 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/template-haskell.git/</td><td>libraries/template-haskell</td></tr> 
    82 <tr><td style="color: green;">http://code.haskell.org/terminfo/</td><td>http://darcs.haskell.org/darcs-mirrors/terminfo/</td><td></td><td>http://darcs.haskell.org/git-mirrors/terminfo/.git/</td><td>http://darcs.haskell.org/packages/terminfo.git/</td><td>libraries/terminfo</td></tr> 
    83 <tr><td style="color: green;">http://code.haskell.org/time/</td><td>http://darcs.haskell.org/darcs-mirrors/time/</td><td></td><td>http://darcs.haskell.org/git-mirrors/time/.git/</td><td>http://darcs.haskell.org/packages/time.git/</td><td>libraries/time</td></tr> 
    84 <tr><td style="color: green;">http://code.haskell.org/~ross/transformers</td><td>http://darcs.haskell.org/darcs-mirrors/transformers/</td><td></td><td>http://darcs.haskell.org/git-mirrors/transformers/.git/</td><td>http://darcs.haskell.org/packages/transformers.git/</td><td>libraries/transformers</td></tr> 
    85 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/unix.git/</td><td>libraries/unix</td></tr> 
    86 <tr><td></td><td></td><td style="color: green;">https://github.com/glguy/utf8-string.git</td><td>http://darcs.haskell.org/git-mirrors/utf8-string/</td><td>http://darcs.haskell.org/packages/utf8-string.git/</td><td>libraries/utf8-string</td></tr> 
    87 <tr><td></td><td></td><td style="color: green;">git://github.com/haskell/win32.git</td><td>http://darcs.haskell.org/git-mirrors/Win32/</td><td>http://darcs.haskell.org/packages/Win32.git/</td><td>libraries/Win32</td></tr> 
    88 <tr><td></td><td></td><td style="color: green;">git://github.com/haskell/xhtml.git</td><td>http://darcs.haskell.org/git-mirrors/xhtml/</td><td>http://darcs.haskell.org/packages/xhtml.git/</td><td>libraries/xhtml</td></tr> 
    89 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/testsuite.git/</td><td>testsuite</td><td>testsuite</td></tr> 
    90 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/nofib.git</td><td>nofib</td><td>nofib</td></tr> 
    91 <tr><td style="color: green;">http://code.haskell.org/primitive/</td><td>http://darcs.haskell.org/darcs-mirrors/primitive/</td><td></td><td>http://darcs.haskell.org/git-mirrors/primitive/.git/</td><td>http://darcs.haskell.org/packages/primitive.git/</td><td>libraries/primitive</td><td rowspan="3">dph</td></tr> 
    92 <tr><td style="color: green;">http://code.haskell.org/vector/</td><td>http://darcs.haskell.org/darcs-mirrors/vector/</td><td></td><td>http://darcs.haskell.org/git-mirrors/vector/.git/</td><td>http://darcs.haskell.org/packages/vector.git/</td><td>libraries/vector</td></tr> 
    93 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/dph.git/</td><td>libraries/dph</td></tr> 
    94 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/deepseq.git/</td><td>libraries/deepseq</td><td rowspan="3">extra</td></tr> 
    95 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/parallel.git/</td><td>libraries/parallel</td></tr> 
    96 <tr><td></td><td></td><td></td><td></td><td style="color: green;">http://darcs.haskell.org/packages/stm.git/</td><td>libraries/stm</td></tr> 
    97 </table> 
     120For libraries for which there no upstream repo, you can modify the GHC repo above directly. 
     121 
     122When making a change to a library, you must also update the version 
     123number if appropriate. Version number in the repositories should be 
     124maintained such that, if the library were to be release as-is, then 
     125they would have the correct version number. For example, if the last 
     126release of a library was 1.2.0.3 and you remove a function from it 
     127then, as per the 
     128[http://www.haskell.org/haskellwiki/Package_versioning_policy Package versioning policy], 
     129the version number should be bumped to 1.3.0.0. If it is already 
     1301.3.0.0 or higher then no further change is necessary. In order to 
     131make this easier, the version line in the `.cabal` file should be 
     132followed by a comment such as 
     133{{{ 
     134-- GHC 7.6.1 released with 1.2.0.3 
    98135}}} 
    99136