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.
+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.
+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.
+The proposed actions of the scheme are listed below.
+This was done 7 March. It's p.masked.
+Ie, only the modular libs from ghc-extralibs meant for GHC 6.6. They should +also be p.masked.
+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.
+This is only required for applications that can be compiled with GHC 6.6, as +described above.
+Packages that only compiles with GHC 6.6 can be added to, if p.masked.
+ +