Skip to content
  • Simon Marlow's avatar
    [project @ 2002-02-12 15:17:13 by simonmar] · 2cc5b907
    Simon Marlow authored
    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 :-(
    2cc5b907