[project @ 2002-02-12 15:17:34 by simonmar]
authorsimonmar <unknown>
Tue, 12 Feb 2002 15:17:34 +0000 (15:17 +0000)
committersimonmar <unknown>
Tue, 12 Feb 2002 15:17:34 +0000 (15:17 +0000)
commit86c1b5f399bd0a6c1f66c2ee20e51ea5c5bf691b
treee91773845b4b104744c27b9401efb43eb3b03e8e
parent1565fbb3532f3b308d7017b0f84bc8e932dd965a
[project @ 2002-02-12 15:17:34 by simonmar]
Switch over to the new hierarchical libraries
---------------------------------------------

This commit reorganises our libraries to use the new hierarchical
module namespace extension.

The basic story is this:

   - fptools/libraries contains the new hierarchical libraries.
     Everything in here is "clean", i.e. most deprecated stuff has
     been removed.

- fptools/libraries/base is the new base package
  (replacing "std") and contains roughly what was previously
  in std, lang, and concurrent, minus deprecated stuff.
  Things that are *not allowed* in libraries/base include:
Addr, ForeignObj, ByteArray, MutableByteArray,
_casm_, _ccall_, ``'', PrimIO

  For ByteArrays and MutableByteArrays we use UArray and
  STUArray/IOUArray respectively now.

  Modules previously called PrelFoo are now under
  fptools/libraries/GHC.  eg. PrelBase is now GHC.Base.

- fptools/libraries/haskell98 provides the Haskell 98 std.
  libraries (Char, IO, Numeric etc.) as a package.  This
  package is enabled by default.

- fptools/libraries/network is a rearranged version of
  the existing net package (the old package net is still
  available; see below).

- Other packages will migrate to fptools/libraries in
  due course.

     NB. you need to checkout fptools/libraries as well as
     fptools/hslibs now.  The nightly build scripts will need to be
     tweaked.

   - fptools/hslibs still contains (almost) the same stuff as before.
     Where libraries have moved into the new hierarchy, the hslibs
     version contains a "stub" that just re-exports the new version.
     The idea is that code will gradually migrate from fptools/hslibs
     into fptools/libraries as it gets cleaned up, and in a version or
     two we can remove the old packages altogether.

   - I've taken the opportunity to make some changes to the build
     system, ripping out the old hslibs Makefile stuff from
     mk/target.mk; the new package building Makefile code is in
     mk/package.mk (auto-included from mk/target.mk).

     The main improvement is that packages now register themselves at
     make boot time using ghc-pkg, and the monolithic package.conf
     in ghc/driver is gone.

     I've updated the standard packages but haven't tested win32,
     graphics, xlib, object-io, or OpenGL yet.  The Makefiles in
     these packages may need some further tweaks, and they'll need
     pkg.conf.in files added.

   - Unfortunately all this rearrangement meant I had to bump the
     interface-file version and create a bunch of .hi-boot-6 files :-(
Makefile
doc/libraries.sgml