build process

Mark Lentczner mark.lentczner at gmail.com
Sun May 13 19:14:26 BST 2012


If you don't use the Haskell Platform source repo to produce distributions
or installers... you can skip this.

Currently, the platform is built via a twisty maze of scripts and short
Haskell programs. It is further complicated by having to run in various
phases each possibly in a different execution environment.

For example: prepare.sh and Build.hs are run to build a source tar ball,
including building scripts which.....  are run on some target to build the
packages after that source tar ball is unpacked (build.sh).... and the Mac
install builder does those two steps in a sandbox (via huge Makefile), then
after more prep it runs PackageMaker to build an installer... which when
run on the final target copies stuff into place, and runs a final fix up
script (hp-postinstall.sh)   OY!

While most of this in unavoidable - the nature of building such things - I
think it can be cleaned up considerably. In particular, the "source of
truth" about what makes up the platform and how it is built are scattered
around the tree. For example, both haskell-platform.cabal and
src/generic/tarball/packages/core.packages need to be updated in sync. In
another, the magic incantations for building sandboxed and building a full
haddock tree are hiding in src/macos/Makefile and possibly in other
distribution scripts.

I'd like to start unifying, simplifying, and cleaning this up. First thing
I'd like to change is to put the official list of packages and versions
into three master files at the top (those from GHC, and those HP adds, and
executables HP adds), and drive all the rest from those.

To do this, I need to know which parts of the process other systems are
relying on.  For example, the mac build uses the prepare.sh script to build
a tarball, then uses the ./configure and scripts/build.sh scripts in that
tarball, and it parses haskell-platform.cabal to get a version numbers of
GHC and the platform.

If you are a packager, please let me know here which parts you rely on.

I don't think these changes will be done for this release - but I will
probably apply them as soon as it is out so there is plenty of lead time
for the next.

- Mark
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://projects.haskell.org/pipermail/haskell-platform/attachments/20120513/ee038075/attachment.htm>


More information about the Haskell-platform mailing list