[project @ 2004-11-26 16:22:11 by simonmar]
authorsimonmar <unknown>
Fri, 26 Nov 2004 16:22:11 +0000 (16:22 +0000)
committersimonmar <unknown>
Fri, 26 Nov 2004 16:22:11 +0000 (16:22 +0000)
Further integration with the new package story.  GHC now supports
pretty much everything in the package proposal.

  - GHC now works in terms of PackageIds (<pkg>-<version>) rather than
    just package names.  You can still specify package names without
    versions on the command line, as long as the name is unambiguous.

  - GHC understands hidden/exposed modules in a package, and will refuse
    to import a hidden module.  Also, the hidden/eposed status of packages
    is taken into account.

  - I had to remove the old package syntax from ghc-pkg, backwards
    compatibility isn't really practical.

  - All the package.conf.in files have been rewritten in the new syntax,
    and contain a complete list of modules in the package.  I've set all
    the versions to 1.0 for now - please check your package(s) and fix the
    version number & other info appropriately.

  - New options:

-hide-package P    sets the expose flag on package P to False
-ignore-package P  unregisters P for this compilation

For comparison, -package P sets the expose flag on package P
        to True, and also causes P to be linked in eagerly.

        -package-name is no longer officially supported.  Unofficially, it's
a synonym for -ignore-package, which has more or less the same effect
as -package-name used to.

Note that a package may be hidden and yet still be linked into
the program, by virtue of being a dependency of some other package.
To completely remove a package from the compiler's internal database,
        use -ignore-package.

The compiler will complain if any two packages in the
        transitive closure of exposed packages contain the same
        module.

You *must* use -ignore-package P when compiling modules for
        package P, if package P (or an older version of P) is already
        registered.  The compiler will helpfully complain if you don't.
The fptools build system does this.

   - Note: the Cabal library won't work yet.  It still thinks GHC uses
     the old package config syntax.

Internal changes/cleanups:

   - The ModuleName type has gone away.  Modules are now just (a
     newtype of) FastStrings, and don't contain any package information.
     All the package-related knowledge is in DynFlags, which is passed
     down to where it is needed.

   - DynFlags manipulation has been cleaned up somewhat: there are no
     global variables holding DynFlags any more, instead the DynFlags
     are passed around properly.

   - There are a few less global variables in GHC.  Lots more are
     scheduled for removal.

   - -i is now a dynamic flag, as are all the package-related flags (but
     using them in {-# OPTIONS #-} is Officially Not Recommended).

   - make -j now appears to work under fptools/libraries/.  Probably
     wouldn't take much to get it working for a whole build.

Makefile
package.conf.in

index 3f7b42b..f23341c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -7,6 +7,7 @@ ALL_DIRS = \
        Control/Monad
 
 PACKAGE = mtl
+VERSION = 1.0
 PACKAGE_DEPS = base
 
 SRC_HC_OPTS += -fglasgow-exts
index 2e73941..3ce760d 100644 (file)
@@ -1,23 +1,34 @@
-Package {
-        name           = "mtl",
-       auto           = True,
-#ifdef INSTALLING
-       import_dirs    = [ "$libdir/imports" ],
-#else
-       import_dirs    = [ "$libdir/libraries/mtl" ],
-#endif
-        source_dirs    = [],
-#ifdef INSTALLING
-        library_dirs   = [ "$libdir" ],
-#else
-        library_dirs   = [ "$libdir/libraries/mtl" ],
-#endif
-        hs_libraries   = [ "HSmtl" ],
-       extra_libraries = [],
-        include_dirs   = [],
-        c_includes     = [],
-        package_deps   = [ "base" ],
-        extra_ghc_opts = [],
-        extra_cc_opts  = [],
-        extra_ld_opts  = []
-}
+name:          PACKAGE
+version:       VERSION
+license:       BSD3
+maintainer:    libraries@haskell.org
+exposed:       True
+
+exposed-modules:
+       Control.Monad.Error,
+       Control.Monad.Cont,
+       Control.Monad.Identity,
+       Control.Monad.List,
+       Control.Monad.RWS,
+       Control.Monad.Reader,
+       Control.Monad.State,
+       Control.Monad.Trans,
+       Control.Monad.Writer
+
+hidden-modules:
+
+import-dirs:   IMPORT_DIR
+library-dirs:  LIB_DIR
+hs-libraries:   "HSmtl"
+extra-libs:
+include-dirs:
+includes:              
+depends:        base
+extra-hugs-opts:
+extra-cc-opts:
+extra-ld-opts:
+framework-dirs:
+extra-frameworks:
+haddock-interfaces:
+haddock-html:
+