[[project @ 2005-01-21 12:48:38 by simonmar]
simonmar**20050121124839
Update packages documentation (phew)
] {
hunk ./ghc/docs/users_guide/flags.xml 454
- name
- Use package name
+ P
+ Expose package P
+ static
+ -
+
+
+ name
+ Hide package P
+ static
+ -
+
+
+ name
+ Ignore package P
hunk ./ghc/docs/users_guide/flags.xml 478
- name
- Compile code for package name
+
+ Don't load the user's package config file.
hunk ./ghc/docs/users_guide/packages.xml 3
- Packages
- packages
+
+Packages
+
+ packages
+
+ A package is a library of Haskell modules known to the compiler. GHC
+ comes with several packages: see the accompanying
+ library documentation.
hunk ./ghc/docs/users_guide/packages.xml 12
- Packages are collections of libraries, conveniently grouped
- together as a single entity. The package system is flexible: a
- package may consist of Haskell code, foreign language code (eg. C
- libraries), or a mixture of the two. A package is a good way to
- group together related Haskell modules, and is essential if you
- intend to make the modules into a Windows DLL (see below).
+ Using a package couldn't be simpler: if you're using
+ or GHCi, then most of the installed packages will be
+ automatically available to your program without any further options. The
+ exceptions to this rule are covered below in .
hunk ./ghc/docs/users_guide/packages.xml 18
- Because packages can contain both Haskell and C libraries, they
- are also a good way to provide convenient access to a Haskell
- layer over a C library.
+ Building your own packages is also quite straightforward: we provide
+ the Cabal infrastructure which
+ automates the process of configuring, building, installing and distributing
+ a package. All you need to do is write a simple configuration file, put a
+ few files in the right places, and you have a package. See the Cabal
+ documentation for details, and also the Cabal libraries (Distribution.Simple,
+ for example).
hunk ./ghc/docs/users_guide/packages.xml 26
- GHC comes with several packages (see the accompanying
- library documentation), and packages can be added to or removed
- from an existing GHC installation, using the supplied
- ghc-pkgghc-pkg
- tool, described in .
+
+ Using Packages
+
+ packages
+ using
+
+ To see which packages are installed, use the
+ ghc-pkg command:
hunk ./ghc/docs/users_guide/packages.xml 35
-
- Using a package
- packages
- using
-
- Some packages, called auto packages,
- are automatically available: you don't need
- to specify any extra flags to use them (except in certain
- circumstances; see below). All the packages which contain
- hierarchical libraries fall into this category.
+
+$ ghc-pkg list
+/usr/lib/ghc-6.4/package.conf:
+ base-1.0, haskell98-1.0, template-haskell-1.0, mtl-1.0, unix-1.0,
+ Cabal-1.0, haskell-src-1.0, parsec-1.0, network-1.0,
+ QuickCheck-1.0, HUnit-1.1, fgl-1.0, X11-1.1, HGL-3.1, OpenGL-2.0,
+ GLUT-2.0, stm-1.0, readline-1.0, (lang-1.0), (concurrent-1.0),
+ (posix-1.0), (util-1.0), (data-1.0), (text-1.0), (net-1.0),
+ (hssource-1.0), rts-1.0
+
hunk ./ghc/docs/users_guide/packages.xml 46
- Some other packages are not
- automatically available: those are normally the packages
- containing old non-hierarchical libraries. To gain access to a
- non-auto package, use the command-line
- flag:
+ Packages are either exposed or hidden. Only
+ modules from exposed packages may be imported by your Haskell code; if
+ you try to import a module from a hidden package, GHC will emit an error
+ message.
hunk ./ghc/docs/users_guide/packages.xml 51
-
-
-
-
- -package lib option
-
-
- This option brings into scope all the modules from
- package lib (they still have to
- be imported in your Haskell source, however). It also
- causes the relevant libraries to be linked when linking is
- being done.
- Some packages depend on other packages, for example the
- text package makes use of some of the modules
- in the lang package. The package system
- takes care of all these dependencies, so that when you say
- -package text on the command line, you
- automatically get -package lang too.
-
-
-
+ Each package has an exposed flag, which says whether it is exposed by
+ default or not. Packages hidden by default are listed in
+ parentheses (eg. (lang-1.0)) in the output from
+ ghc-pkg list. To expose a package which is hidden by
+ default, use the
+ flag (see below).
+
+ To see which modules are exposed by a package:
+
+
+$ ghc-pkg field network exposed-modules
+exposed-modules: Network.BSD,
+ Network.CGI,
+ Network.Socket,
+ Network.URI,
+ Network
+
+
+ In general, packages containing hierarchical modules are usually
+ exposed by default. However, it is possible for two packages to contain
+ the same module: in this case, only one of the packages can be
+ exposed. This might happen if you have two versions of the same package
+ installed, for example. The general rule is:
+
+
There must be no overlaps in the modules provided by all
+ of the exposed packages, and the packages they depend on, and so
+ on.
hunk ./ghc/docs/users_guide/packages.xml 79
- There's one case where you need to use the
- option even for auto packages: when
- linking a program in batch mode mode ()
- This is because
- GHC can't figure out from the object files which packages are
- required; in mode and in
- GHCi the compiler has more information available to figure out
- the package dependencies. We might try to lift this restriction
- in the future.. For example, to link a
- program consisting of objects Foo.o and
- Main.o, where we made use of the
- network package, we need to give GHC the -package flag thus:
+ The GHC command line options that control packages are:
+
+
+
+
+
+
+
+
+ This option causes package P to be
+ exposed. The package P can be specified
+ in full with its version number
+ (e.g. network-1.0) or the version number can be
+ omitted if there is only one version of the package
+ installed.
+
+ If there are multiple versions of P
+ installed, then all other versions will become hidden.
+
+ The
+ option also causes package P to be
+ linked into the resulting executable. In
+ mode and GHCi, the compiler
+ normally determines which packages are required by the current
+ Haskell modules, and links only those. In batch mode however, the
+ dependency information isn't available, and explicit
+ options must be given when linking.
+
+ For example, to link a program consisting of objects
+ Foo.o and Main.o, where
+ we made use of the network package, we need to
+ give GHC the -package flag thus:
hunk ./ghc/docs/users_guide/packages.xml 114
- The same flag is necessary even if we compiled the modules from source, because GHC still
- reckons it's in batch mode:
-$ ghc -o myprog Foo.hs Main.hs -package network
-In --make and --interactive modes (), however, GHC figures out
-the auto packages required for linking without further assistance.
-
+ The same flag is necessary even if we compiled the modules from
+ source, because GHC still reckons it's in batch mode:
hunk ./ghc/docs/users_guide/packages.xml 117
-
+$ ghc -o myprog Foo.hs Main.hs -package network
hunk ./ghc/docs/users_guide/packages.xml 119
+ In --make and --interactive
+ modes (), however, GHC figures out the
+ packages required for linking without further assistance.
hunk ./ghc/docs/users_guide/packages.xml 123
-
- Maintaining a local set of packages
+ The one other time you might need to use
+ to force linking a package is when the
+ package does not contain any Haskell modules (it might contain a C
+ library only, for example). In that case, GHC
+ will never discover a dependency on it, so it has to be mentioned
+ explicitly.
+
+
hunk ./ghc/docs/users_guide/packages.xml 132
- When GHC starts up, it automatically reads the default set
- of packages from a configuration file, normally named
- package.conf in your GHC installation
- directory.
+
+ P
+
+
+
+ This option does the opposite of : it
+ causes the specified package to be hidden,
+ which means that none of its modules will be available for import
+ by Haskell import directives.
hunk ./ghc/docs/users_guide/packages.xml 142
- You can load in additional package configuration files
- using the option:
+ Note that the package might still end up being linked into the
+ final program, if it is a dependency (direct or indirect) of
+ another exposed package.
+
+
hunk ./ghc/docs/users_guide/packages.xml 148
-
-
-
-
-
-
-
- Read in the package configuration file
- file in addition to the system
- default file. This allows the user to have a local set of
- packages in addition to the system-wide ones.
-
-
-
+
+ P
+
+
+
+ Causes the compiler to behave as if package
+ P is not installed at all. This is not
+ the same as , because under
+ the package might still be present
+ in the program if another package depends on it.
+
+ P
+ not only causes package P to be removed,
+ but also everything that depends on P,
+ and so on.
hunk ./ghc/docs/users_guide/packages.xml 164
- To create your own package configuration file, just create
- a new file and put the string
- [] in it. Packages can be
- added to the new configuration file using the
- ghc-pkg tool, described in .
-
+ Why do we need ? Well, it is
+ particularly useful when you're actually compiling package
+ P itself. The compiler will refuse to
+ compile module M if
+ M is already part of a package. So we
+ might try
+ P; but then if
+ P is a dependency of another package
+ P' we would have to
+ P' too;
+ and the author of the code can't know in advance which packages are
+ installed on the system and hence which
+ flags are required. So, we provide
+ which does the Right Thing.
+
+
+
+
+
+
+ Package Databases
+
+ A package database is a file, normally called
+ package.conf which contains descriptions of installed
+ packages. GHC usually knows about two package databases:
hunk ./ghc/docs/users_guide/packages.xml 190
-
- Building a package from Haskell source
- packages
- building
+
+
+ The global package database, which comes with your GHC
+ installation.
+
+
+ A package database private to each user. On Unix
+ systems this will be
+ $HOME/.ghc/arch-os-version/package.conf, and on
+ Windows it will be something like
+ C:\Documents And Settings\user\ghc.
+ The ghc-pkg tool knows where this file should be
+ located, and will create it if it doesn't exist (see ).
+
+
hunk ./ghc/docs/users_guide/packages.xml 207
- It takes some special considerations to build a new
- package:
+ When GHC starts up, it reads the contents of these two package
+ databases, and builds up a list of the packages it knows about. You can
+ see GHC's package table by running GHC with the
+ flag.
hunk ./ghc/docs/users_guide/packages.xml 212
-
+ Package databases may overlap: for example, packages in the user
+ database will override those of the same name in the global
+ database.
+
+ You can control the loading of package databses using the following
+ GHC options:
+
+
+
+
+
+
+
hunk ./ghc/docs/users_guide/packages.xml 226
- A package may contain several Haskell modules. A
- package may span many directories, or many packages may
- exist in a single directory. Packages may not be mutually
- recursive.
+ Read in the package configuration file
+ file in addition to the system
+ default file and the user's local file. Packages in additional
+ files read this way will override those in the global and user
+ databases.
hunk ./ghc/docs/users_guide/packages.xml 232
+
hunk ./ghc/docs/users_guide/packages.xml 234
+
+
+
+
+
hunk ./ghc/docs/users_guide/packages.xml 240
- A package has a name
- (e.g. base)
+ Prevent loading of the user's local package database.
hunk ./ghc/docs/users_guide/packages.xml 242
+
+
hunk ./ghc/docs/users_guide/packages.xml 245
-
- The Haskell code in a package may be built into one or
+ To create a new package database, just create
+ a new file and put the string
+ [] in it. Packages can be
+ added to the file using the
+ ghc-pkg tool, described in .
+
+
+
+ Building a package from Haskell source
+ packages
+ building
+
+ We don't recommend building packages the hard way. Instead, use the
+ Cabal infrastructure
+ if possible. If your package is particularly complicated or requires a
+ lot of configuration, then you might have to fall back to the low-level
+ mechanisms, so a few hints for those brave souls follow.
+
+
+
+ You need to build an "installed package info" file for
+ passing to ghc-pkg when installing your
+ package. The contents of this file are described in .
+
+
+
+ The Haskell code in a package may be built into one or
hunk ./ghc/docs/users_guide/packages.xml 286
- Building a static library is done by using the
+ Building a static library is done by using the
hunk ./ghc/docs/users_guide/packages.xml 291
- where A.o,
+ where A.o,
hunk ./ghc/docs/users_guide/packages.xml 298
- Versions of the Haskell libraries for use with GHCi
+ Versions of the Haskell libraries for use with GHCi
hunk ./ghc/docs/users_guide/packages.xml 310
-
hunk ./ghc/docs/users_guide/packages.xml 311
-
- (replace
+ (replace
hunk ./ghc/docs/users_guide/packages.xml 314
-
+
hunk ./ghc/docs/users_guide/packages.xml 319
-
-
-
- To compile a module which is to be part of a new package,
- use the -package-name option:
-
-
-
-
-
- -package-nameoption
-
-
- This option is added to the command line when
- compiling a module that is destined to be part of package
- foo. If this flag is omitted then the
- default package Main is assumed.
-
-
-
+
hunk ./ghc/docs/users_guide/packages.xml 321
- Failure to use the -package-name option
- when compiling a package will result in disaster on Windows, but
- is relatively harmless on Unix at the moment (it will just cause
- a few extra dependencies in some interface files). However,
- bear in mind that we might add support for Unix shared libraries
- at some point in the future.
-
- It is worth noting that on Windows, when each package
+
+ When compiling a Haskell module which is to be part of a new package
+ P, use
+ P.
+
+
+
+ It is worth noting that on Windows, when each package
hunk ./ghc/docs/users_guide/packages.xml 335
-
- Package management
- packages
- management
-
- The ghc-pkg tool allows packages to be
- added or removed from a package configuration file. By default,
- the system-wide configuration file is used, but alternatively
- packages can be added, updated or removed from a user-specified
- configuration file using the
- option. An empty package configuration file consists of the
- string [].
+
+ Package management (the ghc-pkg command)
+ packages
+ management
+
+ The ghc-pkg tool allows packages to be
+ added or removed from a package database. By default,
+ the system-wide package database is used, but alternatively
+ the user's local package database or another specified
+ file can be used.
hunk ./ghc/docs/users_guide/packages.xml 346
- The ghc-pkg program accepts the
- following options:
+ The ghc-pkg program may be run in the following
+ ways. Where a package name is required, the package can be named either
+ in full including the version number
+ (e.g. network-1.0), or without the version number if
+ that is unambiguous.
hunk ./ghc/docs/users_guide/packages.xml 352
-
-
-
-
-
-
-
-
-
-
- Reads package specification from the input (see below),
- and adds it to the database of installed packages. The
- package specification must be a package that isn't already
+
+
+ ghc-pkg register file
+
+ Reads a package specification from
+ file (which may be “-”
+ to indicate standard input),
+ and adds it to the database of installed packages. The syntax of
+ file is given in .
+
+ The package specification must be a package that isn't already
hunk ./ghc/docs/users_guide/packages.xml 365
-
-
+
+
hunk ./ghc/docs/users_guide/packages.xml 368
-
-
-
-
-
-
-
-
-
- Read new package specifications from file
- file. If a value of
- "-" is given, standard input is used.
- If no is present on the command-line,
- an input file of "-" is assumed.
-
-
-
+
+ ghc-pkg update file
+
+ The same as register, except that if a
+ package of the same name is already installed, it is
+ replaced by the new one.
+
+
hunk ./ghc/docs/users_guide/packages.xml 377
-
-
-
-
-
-
-
-
-
- Automatically generate the GHCi
+
+ ghc-pkg unregister P
+
+ Remove the specified package from the database.
+
+
+
+
+ ghc-pkg expose P
+
+ Sets the exposed flag for package
+ P to True.
+
+
+
+
+ ghc-pkg hide P
+
+ Sets the exposed flag for package
+ P to False.
+
+
+
+
+ ghc-pkg list
+
+ This option displays the currently installed
+ packages, for each of the databases known to
+ ghc-pkg. That includes the global database, the
+ user's local database, and any further files
+ specified using the option on the command
+ line.
+
+ Hidden packages (those for which the exposed
+ flag is False) are shown in parentheses in the
+ list of packages.
+
+
+
+
+ ghc-pkg describe P
+
+ Emit the full description of the specified package. The
+ description is in the form of an
+ InstalledPackageInfo, the same as the input file
+ format for ghc-pkg register. See for details.
+
+
+
+
+ ghc-pkg field Pfield
+
+ Show just a single field of the installed package description
+ for P.
+
+
+
+
+ Additionally, the following flags are accepted by
+ ghc-pkg:
+
+
+
+
+
+
+
+
+ Automatically generate the GHCi
hunk ./ghc/docs/users_guide/packages.xml 459
-
-
+
+
+
+
+
+ file
+
+
+
+
+ file
+
+
+
+
+ Operate on the package database in
+ file.
+ This flag affects the register,
+ update, unregister,
+ expose, and hide
+ commands.
+
+ When multiple options are given, or
+ is used in conjunction with
+ or , the last
+ one on the command-line takes precedence. When listing packages
+ with ghc-pkg list, the contents of all the
+ databases specified on the command-line are listed.
+
+
+
+
+
+
+
+
+
+
+
+ Causes ghc-pkg to ignore missing
+ dependencies, directories and libraries when registering a package,
+ and just go ahead and add it anyway. This might be useful if your
+ package installation system needs to add the package to
+ GHC before building and installing the files.
+
+
+
+
+
+
+
+
+
+ Operate on the global package database (this is the default).
+ This flag affects the register,
+ update, unregister,
+ expose, and hide
+ commands.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Outputs the command-line syntax.
+
+
+
+
+
+
+
+
+
+ Operate on the current user's local package database.
+ This flag affects the register,
+ update, unregister,
+ expose, and hide
+ commands.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Output the ghc-pkg version number.
+
+
+
+
+ When modifying the package database
+ file, a copy of the original file is
+ saved in file.old,
+ so in an emergency you can always restore the old settings by
+ copying the old file back again.
+
+
+
+
+
+ InstalledPackageInfo: a package specification
+
+
+ A package specification is a Haskell record; in particular, it is the
+ record InstalledPackageInfo in the module Distribution.InstalledPackageInfo, which is part of the Cabal package distributed with GHC.
+
+ An InstalledPackageInfo has a human
+ readable/writable syntax. The functions
+ parseInstalledPackageInfo and
+ showInstalledPackageInfo read and write this syntax
+ respectively. Here's an example of the
+ InstalledPackageInfo for the unix package:
+
+
+$ ghc-pkg describe unix
+name: unix
+version: 1.0
+license: BSD3
+copyright:
+maintainer: libraries@haskell.org
+stability:
+homepage:
+package-url:
+description:
+category:
+author:
+exposed: True
+exposed-modules: System.Posix,
+ System.Posix.DynamicLinker.Module,
+ System.Posix.DynamicLinker.Prim,
+ System.Posix.Directory,
+ System.Posix.DynamicLinker,
+ System.Posix.Env,
+ System.Posix.Error,
+ System.Posix.Files,
+ System.Posix.IO,
+ System.Posix.Process,
+ System.Posix.Resource,
+ System.Posix.Temp,
+ System.Posix.Terminal,
+ System.Posix.Time,
+ System.Posix.Unistd,
+ System.Posix.User,
+ System.Posix.Signals.Exts
+import-dirs: /usr/lib/ghc-6.4/libraries/unix
+library-dirs: /usr/lib/ghc-6.4/libraries/unix
+hs-libraries: HSunix
+extra-libs: HSunix_cbits, dl
+include-dirs: /usr/lib/ghc-6.4/libraries/unix/include
+includes: HsUnix.h
+depends: base-1.0
+
+
+ The full Cabal documentation is still in preparation (at time of
+ writing), so in the meantime here is a brief description of the syntax of
+ this file:
+
+ A package description consists of a number of field/value pairs. A
+ field starts with the field name in the left-hand column followed by a
+ “:”, and the value continues until the next line that begins in the
+ left-hand column, or the end of file.
+
+ The syntax of the value depends on the field. The various field
+ types are:
+
+
+
+ freeform
+
+ Any arbitrary string, no interpretation or parsing is
+ done.
+
+
+
+ string
+
+ A sequence of non-space characters, or a sequence of arbitrary
+ characters surrounded by quotes "....".
+
+
+
+ string list
+
+ A sequence of strings, separated by commas. The sequence may
+ be empty.
+
+
+
+
+ In addition, there are some fields with special syntax (e.g. package
+ names, version, dependencies).
+
+ The allowed fields, with their types, are:
+
+
+
+
+ name
+ namepackage specification
+
+
+ The package's name (without the version).
+
+
+
+
+
+ version
+ versionpackage specification
+
+
+ The package's version, usually in the form
+ A.B (any number of components are allowed).
+
+
+
+
+
+ license
+ autopackage specification
+
+
+ (string) The type of license under which this package is distributed.
+ This field is a value of the License type.
+
+
hunk ./ghc/docs/users_guide/packages.xml 704
-
-
+ license-file
+ license-filepackage specification
hunk ./ghc/docs/users_guide/packages.xml 707
+
+ (optional string) The name of a file giving detailed license
+ information for this package.
+
+
+
+
hunk ./ghc/docs/users_guide/packages.xml 715
-
+ copyright
+ copyrightpackage specification
hunk ./ghc/docs/users_guide/packages.xml 719
- Use file as an additional
- package configuration file. This is used to modify
- configuration files for use with GHC's
- option.
-
- There may be any number of configuration files named
- on the command line; files mentioned later on the
- command-line override those mentioned earlier. The
- last configuration file mentioned on
- the command-line is the only one that is actually modified
- by ghc-pkg.
-
+ (optional freeform) The copyright string.
hunk ./ghc/docs/users_guide/packages.xml 725
-
-
+ maintainer
+ maintainerpackage specification
hunk ./ghc/docs/users_guide/packages.xml 728
+
+ (optinoal freeform) The email address of the package's maintainer.
+
+
+
+
hunk ./ghc/docs/users_guide/packages.xml 735
-
+ stability
+ stabilitypackage specification
hunk ./ghc/docs/users_guide/packages.xml 739
- This option displays the list of currently installed
- packages, including those in extra configuration files
- specified with the
- option.
-
-
- $ ghc-pkg ––list-packages
- /usr/local/lib/ghc-5.05/package.conf:
- hdirect, readline, lang, concurrent, posix, util, data, text, net,
- hssource, rts, haskell98, network, haskell-src, unix, base
-
-
- Note that your GHC installation might have a
- slightly different set of packages installed.
-
- The rts package is always
- present, and represents the runtime system library. The
- base package contains the Haskell
- prelude and basic hierarchical libraries, and the
- haskell98 package contains the Haskell
- 98 standard libraries. The rest of the packages are
- optional libraries.
+ (optional freeform) A string describing the stability of the package
+ (eg. stable, provisional or experimental).
hunk ./ghc/docs/users_guide/packages.xml 746
-
-
+ homepage
+ homepagepackage specification
hunk ./ghc/docs/users_guide/packages.xml 749
-
-
+
+ (optional freeform) URL of the package's home page.
+
+
+
+
+
+ package-url
+ package-urlpackage specification
hunk ./ghc/docs/users_guide/packages.xml 760
- Displays the list of packages installed in the
- topmost configuration file only: that will be the
- configuration file specified using on
- the command line, or the system configuration file
- otherwise.
-
- This option may be more convenient than
- when the output needs to be parsed by
- a script.
+ (optional freeform) URL of a downloadable distribution for this
+ package. The distribution should be a Cabal package.
hunk ./ghc/docs/users_guide/packages.xml 767
-
-
+ description
+ descriptionpackage specification
hunk ./ghc/docs/users_guide/packages.xml 770
+
+ (optional freeform) Description of the package.
+
+
+
+
hunk ./ghc/docs/users_guide/packages.xml 777
-
+ category
+ categorypackage specification
hunk ./ghc/docs/users_guide/packages.xml 781
- Removes the specified package from the installed
- configuration.
+ (optinoal freeform) Which category the package belongs to. This field
+ is for use in conjunction with a future centralised package
+ distribution framework, tentatively titled Hackage.
hunk ./ghc/docs/users_guide/packages.xml 786
+
hunk ./ghc/docs/users_guide/packages.xml 789
-
-
-
-
-
+ author
+ authorpackage specification
hunk ./ghc/docs/users_guide/packages.xml 793
- Reads package specification from the input, and
- adds it to the database of installed packages. If a package
- with the same name is already installed, its configuration
- data is replaced with the new information. If the package
- doesn't already exist, it's added.
-
+ (optional freeform) Author of the package.
hunk ./ghc/docs/users_guide/packages.xml 796
+
hunk ./ghc/docs/users_guide/packages.xml 799
-
-
+ exposed
+ exposedpackage specification
hunk ./ghc/docs/users_guide/packages.xml 803
- Causes ghc-pkg to ignore missing
- directories and libraries when adding a package, and just
- go ahead and add it anyway. This might be useful if your
- package installation system needs to add the package to
- GHC before building and installing the files.
+ (bool) Whether the package is exposed or not.
hunk ./ghc/docs/users_guide/packages.xml 806
-
-
- When modifying the configuration file
- file, a copy of the original file is
- saved in file.old,
- so in an emergency you can always restore the old settings by
- copying the old file back again.
-
- A package specification looks like this:
-
-
- Package {
- name = "mypkg",
- auto = True,
- import_dirs = ["${installdir}/imports/mypkg"],
- source_dirs = [],
- library_dirs = ["${installdir}"],
- hs_libraries = ["HSmypkg" ],
- extra_libraries = ["HSmypkg_cbits"],
- include_dirs = [],
- c_includes = ["HsMyPkg.h"],
- package_deps = ["text", "data"],
- extra_ghc_opts = [],
- extra_cc_opts = [],
- extra_ld_opts = ["-lmy_clib"]
- }
-
hunk ./ghc/docs/users_guide/packages.xml 807
- Components of a package specification may be specified in
- any order, and are:
-
-
hunk ./ghc/docs/users_guide/packages.xml 809
- name
- namepackage specification
+ exposed-modules
+ exposed-modulespackage specification
hunk ./ghc/docs/users_guide/packages.xml 813
- The package's name, for use with
- the -package flag and as listed in the
- ––list-packages list.
-
+ (string list) modules exposed by this package.
hunk ./ghc/docs/users_guide/packages.xml 819
- auto
- autopackage specification
+ hidden-modules
+ hidden-modulespackage specification
hunk ./ghc/docs/users_guide/packages.xml 823
- Set to True if the package should
- be automatically available (see ). This is normally set to
- True for packages which contain
- hierarchical libraries, because in that case there is no
- danger of polluting the module namespace.
-
+ (string list) modules provided by this package,
+ but not exposed to the programmer. These modules cannot be
+ imported, but they are still subject to the overlapping constraint:
+ no other package in the same program may provide a module of the
+ same name.
+
hunk ./ghc/docs/users_guide/packages.xml 833
- import_dirs
- import_dirspackage specification
+ import-dirs
+ import-dirspackage specification
hunk ./ghc/docs/users_guide/packages.xml 837
- A list of directories containing interface files
+ (string list) A list of directories containing interface files
hunk ./ghc/docs/users_guide/packages.xml 851
- source_dirs
- source_dirspackage specification
+ library-dirs
+ library-dirspackage specification
hunk ./ghc/docs/users_guide/packages.xml 855
- A list of directories containing Haskell source
- files for this package. This field isn't used by GHC, but
- could potentially be used by an all-interpreted system
- like Hugs.
-
-
-
-
-
- library_dirs
- library_dirspackage specification
-
-
- A list of directories containing libraries for this
+ (string list) A list of directories containing libraries for this
hunk ./ghc/docs/users_guide/packages.xml 862
- hs_libraries
- hs_librariespackage specification
+ hs-libraries
+ hs-librariespackage specification
hunk ./ghc/docs/users_guide/packages.xml 866
- A list of libraries containing Haskell code for this
+ (string list) A list of libraries containing Haskell code for this
hunk ./ghc/docs/users_guide/packages.xml 908
-
hunk ./ghc/docs/users_guide/packages.xml 913
- extra_libraries
- extra_librariespackage specification
+ extra-libs
+ extra-libspackage specification
hunk ./ghc/docs/users_guide/packages.xml 917
- A list of extra libraries for this package. The
- difference between hs_libraries and
- extra_libraries is that
- hs_libraries normally have several
+ (string list) A list of extra libraries for this package. The
+ difference between hs-libraries and
+ extra-libs is that
+ hs-libraries normally have several
hunk ./ghc/docs/users_guide/packages.xml 925
- libHSstd_p.a, with the
+ libHSbase_p.a, with the
hunk ./ghc/docs/users_guide/packages.xml 928
- hs_libraries only, no suffix is added
+ hs-libraries only, no suffix is added
hunk ./ghc/docs/users_guide/packages.xml 930
- extra_libraries.
+ extra-libs.
hunk ./ghc/docs/users_guide/packages.xml 933
- extra_libraries may be any libraries
+ extra-libs may be any libraries
hunk ./ghc/docs/users_guide/packages.xml 938
- Also, extra_libraries are placed
+ Also, extra-libs are placed
hunk ./ghc/docs/users_guide/packages.xml 940
- hs_libraries for the same package. If
+ hs-libraries for the same package. If
hunk ./ghc/docs/users_guide/packages.xml 942
- extra_libraries depends on
- hs_libraries), and the libraries are
+ extra-libs depends on
+ hs-libraries), and the libraries are
hunk ./ghc/docs/users_guide/packages.xml 951
- include_dirs
- include_dirspackage specification
+ include-dirs
+ include-dirspackage specification
hunk ./ghc/docs/users_guide/packages.xml 955
- A list of directories containing C includes for this
- package (maybe the empty list).
+ (string list) A list of directories containing C includes for this
+ package.
hunk ./ghc/docs/users_guide/packages.xml 962
- c_includes
- c_includespackage specification
+ includes
+ includespackage specification
hunk ./ghc/docs/users_guide/packages.xml 966
- A list of files to include for via-C compilations
- using this package. Typically this include file will
+ (string list) A list of files to include for via-C compilations
+ using this package. Typically the include file(s) will
hunk ./ghc/docs/users_guide/packages.xml 977
- package_deps
- package_depspackage specification
+ depends
+ dependspackage specification
hunk ./ghc/docs/users_guide/packages.xml 981
- A list of packages which this package depends
- on.
+ (package name list) Packages on which this package depends. This field contains
+ packages with explicit versions are required, except that when
+ submitting a package to ghc-pkg register, the
+ versions will be filled in if they are unambiguous.
hunk ./ghc/docs/users_guide/packages.xml 990
- extra_ghc_opts
- extra_ghc_optspackage specification
+ extra-hugs-opts
+ extra-hugs-optspackage specification
hunk ./ghc/docs/users_guide/packages.xml 994
- Extra arguments to be added to the GHC command line
- when this package is being used.
+ (string list) Options to pass to Hugs for this package.
hunk ./ghc/docs/users_guide/packages.xml 1000
- extra_cc_opts
- extra_cc_optspackage specification
+ extra-cc-opts
+ extra-cc-optspackage specification
hunk ./ghc/docs/users_guide/packages.xml 1004
- Extra arguments to be added to the gcc command line
+ (string list) Extra arguments to be added to the gcc command line
hunk ./ghc/docs/users_guide/packages.xml 1012
- extra_ld_opts
- extra_ld_optspackage specification
+ extra-ld-opts
+ extra-ld-optspackage specification
hunk ./ghc/docs/users_guide/packages.xml 1016
- Extra arguments to be added to the
+ (string list) Extra arguments to be added to the
hunk ./ghc/docs/users_guide/packages.xml 1024
- framework_dirs
- framework_dirspackage specification
+ framework-dirs
+ framework-dirspackage specification
+
+
+ (string list) On Darwin/MacOS X, a list of directories containing
+ frameworks for this package. This corresponds to the
+ option. It is ignored on all other
+ platforms.
+
+
+
+
+
+ extra-frameworks
+ extra-frameworkspackage specification
hunk ./ghc/docs/users_guide/packages.xml 1041
- On Darwin/MacOS X, a list of directories containing frameworks for this
- package. This corresponds to the option.
- It is ignored on all other platforms.
+ (string list) On Darwin/MacOS X, a list of frameworks to link to. This
+ corresponds to the option. Take a look
+ at Apple's developer documentation to find out what frameworks
+ actually are. This entry is ignored on all other platforms.
hunk ./ghc/docs/users_guide/packages.xml 1050
- extra_frameworks
- extra_frameworkspackage specification
+ haddock-interfaces
+ haddock-interfacespackage specification
hunk ./ghc/docs/users_guide/packages.xml 1054
- On Darwin/MacOS X, a list of frameworks to link to. This corresponds to the
- option. Take a look at Apple's developer documentation
- to find out what frameworks actually are. This entry is ignored on all other platforms.
+ (string list) A list of filenames containing Haddock interface
+ files (.haddock files) for this package.
+
+
+
+
+
+ haddock-html
+ haddock-htmlpackage specification
+
+
+ (optional string) The directory containing the Haddock-generated HTML
+ for this package.
hunk ./ghc/docs/users_guide/packages.xml 1072
+
+
}