how to checkout proper submodules

Simon Peyton-Jones simonpj at
Thu Aug 22 22:14:39 CEST 2013

There was a long discussion about this a couple of months ago.  It did not reach a conclusion, but it is merely parked, not abandoned. I hope that you can all pick it up again after the release.


From: ghc-devs [mailto:ghc-devs-bounces at] On Behalf Of Austin Seipp
Sent: 22 August 2013 20:31
To: Ryan Newton
Cc: ghc-devs at; Edward Kmett
Subject: Re: how to checkout proper submodules

Simon and I discussed this a little today. I think there are several legitimate points made throughout the threads here, but the problem is clear: consistent builds are difficult, if not legitimately impossible. That's a very big problem.

Right now, it is far too late into release cycle to do anything drastic I'm afraid. Once we branch, we can feasibly start making good changes in this direction. One problem however is that we don't even have a clear writeup over what all the relevant points are (aside from this + all the ranting I did elsewhere, which is loosely in my head still.) Earlier today, I preemptively created this page, but have not jotted down any of my notes:

For a short recap, here is what I think:

 1) Several repositories should really just become part of GHC's repository. I'd argue that includes testsuite, nofib, and several others (integer-gmp/integer-simple, hpc, etc.) They don't need to be submodules and making them so is unnecessary complexity, when they can realistically never be used with anything else. This cuts down on something like 10 repositories, IIRC.

 2) Several more should become submodules, where 'more' = the libraries under the new Core Libraries Committee. They will be taking over several of the other free floating repositories that are not currently submodules. We no longer will 'own' them, as it is.

 3) 'base' and 'ghc-prim' are up for more debate it seems. Roman wants them in particular for haskell-suite, but really he only wants a repository to work with from what I remember. I'm not sure what to do here. Making them a submodule is realistic, but I'm honestly a little afraid of submodules for a package which is so highly traffic'd by developers (another reason I don't want e.g. testsuite as a submodule, either.)

The first two points alone should help a lot in making builds more reliable and reproducible, but it will require changes in the development workflow. In particular, it's much easier to lose work with submodules - especially for those among us who are not Git masters. So we should take the time to clearly explain all of this. But 1 & 2 should cover a large part the current setup, and most repos are very low traffic. Also, I'd like to take the time to have a discussion with Edward Kmett (who I have CC'd) about point 2 to make sure we're on the same page here. But I haven't done this yet.

Point 3 seems to really be the most contentious, since a few other things come with it. Should we give up on 'base' being usable by other compilers? Historically that's why it's separate. But really it's easy to write code against 'base' that will never work with another compiler anyway. But maybe that can be fixed. And will the base split - also slated for post 7.8 - also change the ownership of significant parts of the library, based on how it is implemented? There were several things floating around this.

Regardless of point 3 and all that, something should and will be done soon. I'll put this up on the wiki later when I have time. We just need a directly spelled out plan of attack.

On Thu, Aug 22, 2013 at 2:04 PM, Ryan Newton <rrnewton at<mailto:rrnewton at>> wrote:
Hi all,

I just reread this thread again.  Is this one of these situations where almost everyone agrees, but the fix just didn't happen?

In particular, there is still no formal relationship between versions of the compiler and versions of the testsuite that tests it -- that seems odd!  Can we please make testsuite at least a sub-module?  If we count this long email thread as rough consensus, is it just waiting on someone of sufficient authority typing a "git submodule add" command (and tweaking sync-all accordingly)?

Also, Jan's suggestion sounded good -- that once all child repos are git submodules then sync-all can be replaced with something that helps out with git submodule branching, as it helps out with multi-repo branching now (a little bit).


On Wed, Jun 5, 2013 at 2:02 PM, Jan Stolarek <jan.stolarek at<mailto:jan.stolarek at>> wrote:
I think that testsuite should be included in the main GHC repo. I don't recall any other project
that has its tests placed in a separate repository. The nhc argument doesn't convince me - after
all, most test that are added nowadays are GHC specific.


ghc-devs mailing list
ghc-devs at<mailto:ghc-devs at>

Austin - PGP: 4096R/0x91384671
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the ghc-devs mailing list