Changes between Version 39 and Version 40 of Repositories

Dec 19, 2012 12:21:07 PM (7 years ago)



  • Repositories

    v39 v40  
    2828See the [wiki:Commentary/Libraries] page for more information about GHC's libraries.
    30 == Making changes to repositories ==
     30== The repositories ==
    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 ``, 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])
    34 == Repository and mirrors ==
    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:
    38 [[Image(repos.png)]]
    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.
    42 The mirrors are updated automatically each night, but you can force an immediate update by running `/srv/darcs/do_mirrors` on ``.
    44 == Repository locations ==
     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;
     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: ;
     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: ;
     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</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>
    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></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></tt> with the SSH prefix <tt></tt>.
     118== Modifying local packages ==
    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;"></td><td>.</td><td rowspan="34">ghc</td></tr>
    55 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>ghc-tarballs</td></tr>
    56 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>utils/hsc2hs</td></tr>
    57 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>utils/haddock</td></tr>
    58 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>libraries/array</td></tr>
    59 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>libraries/base</td></tr>
    60 <tr><td></td><td></td><td style="color: green;">git://</td><td></td><td></td><td>libraries/binary</td></tr>
    61 <tr><td style="color: green;"></td><td></td><td></td><td></td><td></td><td>libraries/bytestring</td></tr>
    62 <tr><td></td><td></td><td style="color: green;">git://</td><td></td><td></td><td>libraries/Cabal</td></tr>
    63 <tr><td></td><td></td><td style="color: green;">git://</td><td></td><td></td><td>libraries/containers</td></tr>
    64 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>libraries/directory</td></tr>
    65 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>libraries/extensible-exceptions</td></tr>
    66 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>libraries/filepath</td></tr>
    67 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>libraries/ghc-prim</td></tr>
    68 <tr><td style="color: green;"></td><td></td><td></td><td></td><td></td><td>libraries/haskeline</td></tr>
    69 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>libraries/haskell98</td></tr>
    70 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>libraries/haskell2010</td></tr>
    71 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>libraries/hoopl</td></tr>
    72 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>libraries/hpc</td></tr>
    73 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>libraries/integer-gmp</td></tr>
    74 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>libraries/integer-simple</td></tr>
    75 <tr><td></td><td></td><td style="color: green;">git://</td><td></td><td></td><td>libraries/mtl</td></tr>
    76 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>libraries/old-locale</td></tr>
    77 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>libraries/old-time</td></tr>
    78 <tr><td></td><td></td><td style="color: green;">git://</td><td></td><td></td><td>libraries/pretty</td></tr>
    79 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>libraries/process</td></tr>
    80 <tr><td></td><td></td><td style="color: green;">git://</td><td></td><td></td><td>libraries/random</td></tr>
    81 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>libraries/template-haskell</td></tr>
    82 <tr><td style="color: green;"></td><td></td><td></td><td></td><td></td><td>libraries/terminfo</td></tr>
    83 <tr><td style="color: green;"></td><td></td><td></td><td></td><td></td><td>libraries/time</td></tr>
    84 <tr><td style="color: green;"></td><td></td><td></td><td></td><td></td><td>libraries/transformers</td></tr>
    85 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>libraries/unix</td></tr>
    86 <tr><td></td><td></td><td style="color: green;"></td><td></td><td></td><td>libraries/utf8-string</td></tr>
    87 <tr><td></td><td></td><td style="color: green;">git://</td><td></td><td></td><td>libraries/Win32</td></tr>
    88 <tr><td></td><td></td><td style="color: green;">git://</td><td></td><td></td><td>libraries/xhtml</td></tr>
    89 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>testsuite</td><td>testsuite</td></tr>
    90 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>nofib</td><td>nofib</td></tr>
    91 <tr><td style="color: green;"></td><td></td><td></td><td></td><td></td><td>libraries/primitive</td><td rowspan="3">dph</td></tr>
    92 <tr><td style="color: green;"></td><td></td><td></td><td></td><td></td><td>libraries/vector</td></tr>
    93 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>libraries/dph</td></tr>
    94 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></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;"></td><td>libraries/parallel</td></tr>
    96 <tr><td></td><td></td><td></td><td></td><td style="color: green;"></td><td>libraries/stm</td></tr>
    97 </table>
     120For libraries for which there no upstream repo, you can modify the GHC repo above directly.
     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 and you remove a function from it
     127then, as per the
     128[ Package versioning policy],
     129the version number should be bumped to 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
     134-- GHC 7.6.1 released with