Manuel M T Chakravarty wrote:
Iavor Diatchki wrote:
The mirroring idea seems complex and fragile.  Is there a reason why
GHC has to depend on the repository versions of the "external" (i.e.,
the ones marked with 'darcs') packages?  It seems to me that it should
be possible (and desirable!) to make GHC depend on particular released
versions of those packages, and so the source could be obtained in the
same way that it is for other Haskell programs (e.g., hackage).  Then,
the revision control system used to maintain those packages would not
be important from the point of view of GHC.

That is basically what I meant to say, too. Only Iavor says it more clearly!

Which is basically suggesting that there should be no (b) packages, only (c) (using the classification from Simon's email below).

I think that is probably ok, and desirable as it reduces the number of different scenarios that the GHC developer has to think about. For the (c) packages where the GHC git repo contains a snapshot of the package, I can imagine also checking out the darcs repo into the GHC tree in order to work on the library, and as long as git ignores the _darcs directory everything should work fine. We can push changes to darcs, and also commit the new snapshot with git in the same tree.

Of course, we don't plan to do this often, because we'll be using released versions of these packages. But I can imagine it being useful sometimes: for example, we'll need to work on Cabal a bit for the new build system, but after that I hope we'll be more decoupled from it.

Cheers,
        Simon


Manuel

On Mon, Sep 15, 2008 at 5:58 PM, Manuel M T Chakravarty
<[EMAIL PROTECTED]> wrote:
Simon Peyton-Jones wrote:

In what follows the "Boot Libraries" are the ones required to build GHC.

* So we propose the following:
- The GHC repo will be in Git

- Each Boot Library will
     (a) either be mastered in Git, with a read-only Darcs mirror
     (b) or be mastered in Darcs, with a read-only Git mirror
   (c) or be mastered in Darcs, with an occasional, manual
        process to copy a snapshot of the library from Darcs
        into GHC's Git repo.  (Those Git files should be
        considered read-only.)

For (b), will the Git-mirror be automatically updated or patches from darcs
be pulled manually?

- That means that if we want to modify a Darcs-mastered library
  we'll have to get the Darcs version, make the patch, test it,
  push it, and then the Git mirror will be right.  Inconvenient,
  but we can live with that.  We might even arrange it to be possible
  for super-developers to use the Darcs repo (rather than the mirror)
  direct from their tree.  Ordinary developers can continue to be
  Git-only.

[..]

* Our specific proposals for the master VCS for each boot library are:
 hsc2hs                          darcs
 haddock2                        either: up to David Waern
 packages/array                  git
 packages/base                   git
 packages/base3-compat           git
 packages/bytestring             darcs
 packages/Cabal                  darcs
 packages/containers             darcs
 packages/directory              darcs
 packages/editline               darcs
 packages/filepath               darcs
 packages/ghc-prim               git
 packages/haskell98              darcs
 packages/hpc                    either: up to Andy Gill
 packages/integer-gmp            git
 packages/old-locale             darcs
 packages/old-time               darcs
 packages/packedstring           darcs
 packages/pretty                 darcs
 packages/process                git
 packages/random                 darcs
 packages/syb                    either: up to Utrecht
 packages/template-haskell       git
 packages/unix                   git
 packages/Win32                  git

You do not distinguish between (b) and (c) in that list.  Personally, I
think, every (b) library is a Bad Thing if the Git-mirror update is
*automatic*.  Why?  The setup discourages the library developer from
validating their library changes against the GHC build.

In other words, every single library that is marked as "darcs" above should
be used by ghc at arms length.  That is, ghc should not use the bleeding
edge development version, but  the latest stable version (or something
similar). When there is a new stable version, the person maintaining the
GHC Git mirror of the library ought to validate GHC with the new library
version and only then update the mirror (or the in-place copy in GHC's Git repo). If it is not possible to use a library's latest stable version, the
library is too tightly coupled with GHC to live in a darcs repo.

Manuel

_______________________________________________
Libraries mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/libraries

_______________________________________________
Libraries mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/libraries

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to