Relocating (some of) GHC's core-libraries to

Herbert Valerio Riedel hvriedel at
Mon Apr 28 09:05:01 UTC 2014

On 2014-04-28 at 10:40:15 +0200, Simon Peyton Jones wrote:
> In general I'd like to make the infrastructure reflect the story of
> who is managing these packages. Moreover, those who are maintaining a
> package, in this case the core-libraries committee, should have the
> final word on where their infrastructure lives.

I've CC'ed Edward, in case he wants to chime in...

> Putting issue-tracking in a clearly-defined place (not mixed up with
> the GHC Trac) is a good idea.  (But please can it be clear, somehow,
> where each issue tracker is?)

For one, I plan to have the cabal 'bug-reports' & 'homepage' URL fields
reflect the new location as soon as possible (I need to check with
duncan, if there's a working way to manually edit the cabal meta-data
shown on Hackage other than uploading a patchlevel release of the
affected packages), when this relocation is done.

> But I agree with Simon that complicating the workflow ought to have a benefit.  What is the benefit in this case?  We could instead
>  * Leave the repos where they are

That's btw what's planned for haddock.git: have GitHub be merely a
mirror of the mother repo at; however, the workflow for
merging pull-requests filed at GitHub requires being more careful
(i.e. not use the "merge"-button in the GitHub web-gui, or any other
GitHub feature modifying the Git repo), as any changes made to the
GitHub copy of the mother Git repo would get overwritten
by the next automatic> mirroring.

So the only downside I can think of is that you'd have to educate
everyone working the GitHub mirrors how to modify the repository.

>  * Move the repos but have GHC builds pull directly from
>    the mother repo

You'd still want to have an automatic mirror of that repo at, as we need to traverse the sub-repo in order to
validate submodule gitlink refs in ghc.git

Also, you need to ensure that the upstream repo never loses the commits
you reference from ghc.git (afaik there's a way to ask the GitHub admins
to disable non-fast-forward updates for certain repos -- but that would
mean, that you should refrain from creating topic-branches in the
mother-repo, as those would not be allowed to be deleted -- GitHub
doesn't support branch-based ACLs)

> Both seem simpler than adding a new lagging repo.

> Having a lagging repo doesn't add anything, does it? 

It adds the ability to add temporary local changes if you don't have
full control over the upstream repo, or if you plan on re-basing your
work-in-progress patchsets (which would be disallowed inside the GitHub
upstream repo)

>  Indeed, does it *ever* help to have a lagging repo?  The SHA hash for
> a submodule uniquely determines that build depends on, so we don't
> need a whole repo for that!

That's right, but as pointed out above, we need a local copy for having
ghc.git's validation-script be able to verify the "foreign-key
constraint" property on the referenced SHA hash.

> (I'm hazy about how and when to make GHC's repo point to newer versions of the sub-module.)
> Regardless of the decision here, can I appeal, once more, for clear documentation of the workflows that a GHC developer will encounter?

More information about the ghc-devs mailing list