[Haskell-cafe] Experiments in Haskell Packaging
chris at chrisdornan.com
Mon Jan 2 16:45:06 CET 2012
The http://justhub.org Haskell distribution for Enterprize Linux
(RHEL/CentOS 5 & 6)
is now live.
The distribution deviates from current practice. When you upgrade to a
from justhub.org you add the new platform to your Haskell
infrastructure rather than
replacing the old platform with a new one.
**Stability**: Enterprise Linux places a strong emphasis on stability
packages should not break things. (This has provided some challenges for us as
RHEL 5 is still using GCC 4.1.2 and Binutils 2.17.50.)
**Flexibility**: Different projects will in general need to work with
different versions of the
platform and toolkits and upgrade according to their own schedules. I
strong-typing sharpens the need for this. Production projects will
need to upgrade
according to their own schedules while other projects will want to
In general when you check out a source tree you want to build with the tools and
libraries that it has been tested with and move on according to the
**Sandboxes**: The same mechanism for managing the multiple toolkits
can be adapted to provide an integrated sandbox utility. The logic
that dictates that
projects have different tool-chain requirements applies to the user
(‘Handbox’ doesn’t really work so we use **Hubs** instead.)
**Package Deletion**: The infrastructure can also be expanded to complete the
package management tools with package removal and garbage collection
of library code.
**The Catalogue**: All of the GHC releases can be added as they become
In general the distribution works just like any other – after an
upgrade invoking ‘ghc’
without any other configuration will invoke the compiler for that
latest platform, which
should behave as it would on any other (working) distribution.
But after an upgrade:
o any projects configured to work with specific tool chains and
libraries will continue
o you can create a new hub based on the new platform and experiment with it on
newly-checked-out source tree without disturbing an existing
working tree (or
just swap the hub into an existing work tree and back out again if
o even on release of a new version of a package (or if you want to
your existing packages) you can easily duplicate an existing hub and delete,
upgrade and add packages on a topic branch.
Of course ‘serious developers’ have been doing this with home-brew
for ever. Nevertheless I have found doing it with well-integrated
tools to be quite liberating.
It might also help new users to make the transition to serious
developers more quickly.
More information about the Haskell-Cafe