[HTML version of the ghc 6.6 launch plan Lennart Kolmodin **20070310232009] { addfile ./projects/GHC-6.6-launch.html hunk ./projects/GHC-6.6-launch.html 1 + + + + + + +GHC 6.6 Launch + + + + +
+

GHC 6.6 Launch

+ +++ + + + + + +
Author:Lennart Kolmodin <kolmodin@gentoo.org>, +Gentoo Haskell Herd <haskell@gentoo.org>
Updated:2007-03-10
+

Due to the restructure of bundled libraries from GHC 6.4 -> 6.6 we've had to +rewrite ebuild dependencies between packages and libraries.

+

This document describes some background on what's new in GHC 6.6 and the +plan that has been carefully crafted on how to deal with it.

+

I have tried to summarize what the Gentoo Haskell Heard has been up to the +past months.

+
+

1   Introduction

+

In GHC 6.4 a lot of packages where bundled with the compiler. In GHC 6.6 +this has changed, all but the packages used by the compiler itself are now +available as a separate download. That bundle is called ghc-extralibs.

+

This makes the GHC installation much faster, as you only compile the libs +you need. Also, it gives the advantage that when you'd like to update a +library, you only have to recompile exactly that one, instead of recompiling +everything like before.

+

This can be modeled in Gentoo Linux' package management system, as +we'll see next.

+
+
+

2   The plan

+

Each library in the ghc-extralibs will be represented by a separate +package in the tree. Packages that can be compiled with GHC 6.6 (possibly +also GHC 6.4) should depend on the modular libraries.

+

To mirror this behavior for GHC 6.4 where the compiler already provides the +libraries, we use dummy libraries as place holders. They will not do or +install anything, but mearly exist to depended upon by packages that need +those libraries. The dummy libraries will only depend on the GHC 6.4 +compiler, while the real modular libs will depend on the GHC 6.6 series or +newer. If an application/library is compiled against GHC 6.4 the dummy +libraries will be used, and in the case of GHC 6.6 the modular libraries. +This way it'll be easy to write the ebuilds, just depend on the libraries +you need, regardless of compiler version.

+

Note though, packages that cannot be built with GHC 6.6 doesn't gain +anything from depending on the modular libraries, as they are guarantied to +all be dummy libraries. Thus there should be no requirement for those +packages to use the modular libs.

+

We won't use any dependency blocks to indicate when an ebuild can't be +compiled with GHC 6.6. Rather we'll use:

+
+DEPEND="<virtual/ghc-6.6"
+
+

to indicate that a package cannot be compiled with GHC 6.6. Similarly we'll +use:

+
+DEPEND="=virtual/ghc-6.4*"
+
+

to indicate when a package only can be compiled with the GHC 6.4 series.

+ +

As many packages has been changed recently, it's recommended that once this +plan is implemented, users that have used the Gentoo Haskell overlay should +remove their packages and install fresh from the tree.

+
+
+

3   Step by step

+

The proposed actions of the scheme are listed below.

+
+

3.1   Add GHC 6.6 to the tree

+

This was done 7 March. It's p.masked.

+
+
+

3.2   Add modular libs

+

Ie, only the modular libs from ghc-extralibs meant for GHC 6.6. They should +also be p.masked.

+
+
+

3.3   Add dummy libs

+

The about 15 packages of ghc-extralibs has to be modeled as dummy libs +too. They should be added as ~arch and then be stabilized by the arch teams +asap.

+
+
+

3.4   Start rewrite other libs and apps to use the dummy libs

+

This is only required for applications that can be compiled with GHC 6.6, as +described above.

+
+
+

3.5   Make new libs use the p.masked modular libs

+

Packages that only compiles with GHC 6.6 can be added to, if p.masked.

+ +
+
+
+ + }