Fix more documentation wibbles
[ghc.git] / docs / users_guide / packages.rst
1 .. _packages:
2
3 Packages
4 ========
5
6 .. index::
7    single: packages
8
9 A package is a library of Haskell modules known to the compiler. GHC
10 comes with several packages: see the accompanying `library
11 documentation <../libraries/index.html>`__. More packages to install can
12 be obtained from
13 `HackageDB <http://hackage.haskell.org/packages/hackage.html>`__.
14
15 Using a package couldn't be simpler: if you're using ``--make`` or GHCi,
16 then most of the installed packages will be automatically available to
17 your program without any further options. The exceptions to this rule
18 are covered below in :ref:`using-packages`.
19
20 Building your own packages is also quite straightforward: we provide the
21 `Cabal <http://www.haskell.org/cabal/>`__ infrastructure which automates
22 the process of configuring, building, installing and distributing a
23 package. All you need to do is write a simple configuration file, put a
24 few files in the right places, and you have a package. See the `Cabal
25 documentation <http://www.haskell.org/cabal/users-guide/>`__ for
26 details, and also the Cabal libraries
27 (:cabal-ref:`Distribution.Simple <Distribution-Simple.html>`,
28 for example).
29
30 .. _using-packages:
31
32 Using Packages
33 --------------
34
35 .. index::
36    single: packages; using
37
38 GHC only knows about packages that are *installed*. Installed packages live in
39 package databases. For details on package databases and how to control which
40 package databases or specific set of packages are visible to GHC, see
41 :ref:`package-databases`.
42
43 To see which packages are currently available, use the ``ghc-pkg list`` command:
44
45 .. code-block:: none
46
47     $ ghc-pkg list
48     /usr/lib/ghc-6.12.1/package.conf.d:
49         Cabal-1.7.4
50         array-0.2.0.1
51         base-3.0.3.0
52         base-4.2.0.0
53         bin-package-db-0.0.0.0
54         binary-0.5.0.1
55         bytestring-0.9.1.4
56         containers-0.2.0.1
57         directory-1.0.0.2
58         (dph-base-0.4.0)
59         (dph-par-0.4.0)
60         (dph-prim-interface-0.4.0)
61         (dph-prim-par-0.4.0)
62         (dph-prim-seq-0.4.0)
63         (dph-seq-0.4.0)
64         extensible-exceptions-0.1.1.0
65         ffi-1.0
66         filepath-1.1.0.1
67         (ghc-6.12.1)
68         ghc-prim-0.1.0.0
69         haskeline-0.6.2
70         haskell98-1.0.1.0
71         hpc-0.5.0.2
72         integer-gmp-0.1.0.0
73         mtl-1.1.0.2
74         old-locale-1.0.0.1
75         old-time-1.0.0.1
76         pretty-1.0.1.0
77         process-1.0.1.1
78         random-1.0.0.1
79         rts-1.0
80         syb-0.1.0.0
81         template-haskell-2.4.0.0
82         terminfo-0.3.1
83         time-1.1.4
84         unix-2.3.1.0
85         utf8-string-0.3.4
86
87 An installed package is either *exposed* or *hidden* by default.
88 Packages hidden by default are listed in parentheses (e.g.
89 ``(lang-1.0)``), or possibly in blue if your terminal supports colour,
90 in the output of ``ghc-pkg list``. Command-line flags, described below,
91 allow you to expose a hidden package or hide an exposed one. Only
92 modules from exposed packages may be imported by your Haskell code; if
93 you try to import a module from a hidden package, GHC will emit an error
94 message. It should be noted that a hidden package might still get linked
95 with your program as a dependency of an exposed package, it is only restricted
96 from direct imports.
97
98 If there are multiple exposed versions of a package, GHC will
99 prefer the latest one. Additionally, some packages may be broken: that
100 is, they are missing from the package database, or one of their
101 dependencies are broken; in this case; these packages are excluded from
102 the default set of packages.
103
104 .. note::
105     If you're using Cabal, then the exposed or hidden status of a
106     package is irrelevant: the available packages are instead determined by
107     the dependencies listed in your ``.cabal`` specification. The
108     exposed/hidden status of packages is only relevant when using ``ghc`` or
109     ``ghci`` directly.
110
111 Similar to a package's hidden status is a package's trusted status. A
112 package can be either trusted or not trusted (distrusted). By default
113 packages are distrusted. This property of a package only plays a role
114 when compiling code using GHC's Safe Haskell feature (see
115 :ref:`safe-haskell`) with the ``-fpackage-trust`` flag enabled.
116
117 To see which modules are provided by a package use the ``ghc-pkg``
118 command (see :ref:`package-management`):
119
120 .. code-block:: none
121
122     $ ghc-pkg field network exposed-modules
123     exposed-modules: Network.BSD,
124                      Network.CGI,
125                      Network.Socket,
126                      Network.URI,
127                      Network
128
129 The GHC command line options that control packages are:
130
131 .. ghc-flag:: -package ⟨pkg⟩
132
133     This option causes the installed package ⟨pkg⟩ to be exposed. The
134     package ⟨pkg⟩ can be specified in full with its version number (e.g.
135     ``network-1.0``) or the version number can be omitted in which case GHC
136     will automatically expose the latest non-broken version from the installed
137     versions of the package.
138
139     By default (when :ghc-flag:`-hide-all-packages` is not specified), GHC
140     exposes only one version of a package, all other versions become hidden.
141     If `-package` option is specified multiple times for the same package the
142     last one overrides the previous ones. On the other hand, if
143     :ghc-flag:`-hide-all-packages` is used, GHC allows you to expose multiple
144     versions of a package by using the `-package` option multiple times with
145     different versions of the same package.
146
147     `-package` supports thinning and renaming described in
148     :ref:`package-thinning-and-renaming`.
149
150     The ``-package ⟨pkg⟩`` option also causes package ⟨pkg⟩ to be linked into
151     the resulting executable or shared object. Whether a packages'
152     library is linked statically or dynamically is controlled by the
153     flag pair :ghc-flag:`-static`\/ :ghc-flag:`-dynamic`.
154
155     In :ghc-flag:`--make` mode and :ghc-flag:`--interactive` mode (see :ref:`modes`),
156     the compiler normally determines which packages are required by the
157     current Haskell modules, and links only those. In batch mode
158     however, the dependency information isn't available, and explicit
159     ``-package`` options must be given when linking. The one other time
160     you might need to use ``-package`` to force linking a package is
161     when the package does not contain any Haskell modules (it might
162     contain a C library only, for example). In that case, GHC will never
163     discover a dependency on it, so it has to be mentioned explicitly.
164
165     For example, to link a program consisting of objects ``Foo.o`` and
166     ``Main.o``, where we made use of the ``network`` package, we need to
167     give GHC the ``-package`` flag thus:
168
169     .. code-block:: sh
170
171         $ ghc -o myprog Foo.o Main.o -package network
172
173     The same flag is necessary even if we compiled the modules from
174     source, because GHC still reckons it's in batch mode:
175
176     .. code-block:: sh
177
178         $ ghc -o myprog Foo.hs Main.hs -package network
179
180 .. ghc-flag:: -package-id ⟨unit-id⟩
181
182     Exposes a package like :ghc-flag:`-package ⟨pkg⟩`, but the package is named
183     by its unit ID (i.e. the value of ``id`` in its entry in the installed
184     package database, also previously known as an installed package ID) rather
185     than by name. This is a more robust way to name packages, and can be used
186     to select packages that would otherwise be shadowed. Cabal passes
187     ``-package-id`` flags to GHC.  ``-package-id`` supports thinning and
188     renaming described in :ref:`package-thinning-and-renaming`.
189
190 .. ghc-flag:: -hide-all-packages
191
192     Ignore the exposed flag on installed packages, and hide them all by
193     default. If you use this flag, then any packages you require
194     (including ``base``) need to be explicitly exposed using
195     :ghc-flag:`-package ⟨pkg⟩` options.
196
197     This is a good way to insulate your program from differences in the
198     globally exposed packages, and being explicit about package
199     dependencies is a Good Thing. Cabal always passes the
200     ``-hide-all-packages`` flag to GHC, for exactly this reason.
201
202 .. ghc-flag:: -hide-package ⟨pkg⟩
203
204     This option does the opposite of :ghc-flag:`-package ⟨pkg⟩`: it causes the
205     specified package to be hidden, which means that none of its modules
206     will be available for import by Haskell ``import`` directives.
207
208     Note that the package might still end up being linked into the final
209     program, if it is a dependency (direct or indirect) of another
210     exposed package.
211
212 .. ghc-flag:: -ignore-package ⟨pkg⟩
213
214     Causes the compiler to behave as if package ⟨pkg⟩, and any packages
215     that depend on ⟨pkg⟩, are not installed at all.
216
217     Saying ``-ignore-package ⟨pkg⟩`` is the same as giving
218     :ghc-flag:`-hide-package ⟨pkg⟩` flags for ⟨pkg⟩ and all the packages that
219     depend on ⟨pkg⟩. Sometimes we don't know ahead of time which packages will
220     be installed that depend on ⟨pkg⟩, which is when the
221     :ghc-flag:`-ignore-package ⟨pkg⟩` flag can be useful.
222
223 .. ghc-flag:: -no-auto-link-packages
224
225     By default, GHC will automatically link in the ``base`` and ``rts``
226     packages. This flag disables that behaviour.
227
228 .. ghc-flag:: -this-unit-id ⟨unit-id⟩
229
230     Tells GHC that the module being compiled forms part of unit ID
231     ⟨unit-id⟩; internally, these keys are used to determine type equality
232     and linker symbols.  As of GHC 8.0, unit IDs must consist solely
233     of alphanumeric characters, dashes, underscores and periods.  GHC
234     reserves the right to interpret other characters in a special
235     way in later releases.
236
237 .. ghc-flag:: -trust ⟨pkg⟩
238
239     This option causes the install package ⟨pkg⟩ to be both exposed and
240     trusted by GHC. This command functions in a very similar way
241     to the :ghc-flag:`-package ⟨pkg⟩` command but in addition sets the selected
242     packages to be trusted by GHC, regardless of the contents of the
243     package database. (see :ref:`safe-haskell`).
244
245 .. ghc-flag:: -distrust ⟨pkg⟩
246
247     This option causes the install package ⟨pkg⟩ to be both exposed and
248     distrusted by GHC. This command functions in a very similar way to the
249     :ghc-flag:`-package ⟨pkg⟩` command but in addition sets the selected
250     packages to be distrusted by GHC, regardless of the contents of the package
251     database. (see :ref:`safe-haskell`).
252
253 .. ghc-flag:: -distrust-all
254
255     Ignore the trusted flag on installed packages, and distrust them by
256     default. If you use this flag and Safe Haskell then any packages you
257     require to be trusted (including ``base``) need to be explicitly trusted
258     using :ghc-flag:`-trust ⟨pkg⟩` options. This option does not change the
259     exposed/hidden status of a package, so it isn't equivalent to applying
260     :ghc-flag:`-distrust ⟨pkg⟩` to all packages on the system. (see
261     :ref:`safe-haskell`).
262
263 .. _package-main:
264
265 The ``main`` package
266 --------------------
267
268 Every complete Haskell program must define ``main`` in module ``Main`` in
269 package ``main``. Omitting the :ghc-flag:`-this-unit-id ⟨unit-id⟩` flag
270 compiles code for package ``main``. Failure to do so leads to a somewhat
271 obscure link-time error of the form:
272
273 .. code-block:: none
274
275     /usr/bin/ld: Undefined symbols:
276     _ZCMain_main_closure
277
278 .. _package-overlaps:
279
280 Consequences of packages for the Haskell language
281 -------------------------------------------------
282
283 It is possible that by using packages you might end up with a program
284 that contains two modules with the same name: perhaps you used a package
285 ``P`` that has a *hidden* module ``M``, and there is also a module ``M`` in your
286 program. Or perhaps the dependencies of packages that you used contain
287 some overlapping modules. Perhaps the program even contains multiple
288 versions of a certain package, due to dependencies from other packages.
289
290 None of these scenarios gives rise to an error on its own [1]_, but they
291 may have some interesting consequences. For instance, if you have a type
292 ``M.T`` from version 1 of package ``P``, then this is *not* the same as
293 the type ``M.T`` from version 2 of package ``P``, and GHC will report an
294 error if you try to use one where the other is expected.
295
296 Formally speaking, in Haskell 98, an entity (function, type or class) in
297 a program is uniquely identified by the pair of the module name in which
298 it is defined and its name. In GHC, an entity is uniquely defined by a
299 triple: package, module, and name.
300
301 .. _package-thinning-and-renaming:
302
303 Thinning and renaming modules
304 -----------------------------
305
306 When incorporating packages from multiple sources, you may end up in a
307 situation where multiple packages publish modules with the same name.
308 Previously, the only way to distinguish between these modules was to use
309 :ref:`package-qualified-imports`. However, since GHC 7.10, the
310 :ghc-flag:`-package ⟨pkg⟩` flags (and their variants) have been extended to
311 allow a user to explicitly control what modules a package brings into scope, by
312 analogy to the import lists that users can attach to module imports.
313
314 The basic syntax is that instead of specifying a package name P to the
315 package flag ``-package``, instead we specify both a package name and a
316 parenthesized, comma-separated list of module names to import. For
317 example, ``-package "base (Data.List, Data.Bool)"`` makes only
318 ``Data.List`` and ``Data.Bool`` visible from package ``base``. We also
319 support renaming of modules, in case you need to refer to both modules
320 simultaneously; this is supporting by writing
321 ``OldModName as NewModName``, e.g.
322 ``-package "base (Data.Bool as Bool)``. You can also write
323 ``-package "base with (Data.Bool as Bool)`` to include all of the
324 original bindings (e.g. the renaming is strictly additive). It's
325 important to specify quotes so that your shell passes the package name
326 and thinning/renaming list as a single argument to GHC.
327
328 Package imports with thinning/renaming do not hide other versions of the
329 package: e.g. if containers-0.9 is already exposed,
330 ``-package "containers-0.8 (Data.List as ListV8)"`` will only add an
331 additional binding to the environment. Similarly,
332 ``-package "base (Data.Bool as Bool)" -package "base (Data.List as List)"``
333 is equivalent to
334 ``-package "base (Data.Bool as Bool, Data.List as List)"``. Literal
335 names must refer to modules defined by the original package, so for
336 example ``-package "base (Data.Bool as Bool, Bool as Baz)"`` is invalid
337 unless there was a ``Bool`` module defined in the original package.
338 Hiding a package also clears all of its renamings.
339
340 You can use renaming to provide an alternate prelude, e.g.
341 ``-hide-all-packages -package "basic-prelude (BasicPrelude as Prelude)"``,
342 in lieu of the :ref:`rebindable-syntax` extension.
343
344 .. _package-databases:
345
346 Package Databases
347 -----------------
348
349 A package database is where the details about installed packages are
350 stored. It is a directory, usually called ``package.conf.d``, that
351 contains a file for each package, together with a binary cache of the
352 package data in the file :file:`package.cache`. Normally you won't need to
353 look at or modify the contents of a package database directly; all
354 management of package databases can be done through the :command:`ghc-pkg` tool
355 (see :ref:`package-management`).
356
357 GHC knows about two package databases in particular:
358
359 -  The *global package database*, which comes with your GHC installation,
360    e.g. ``/usr/lib/ghc-6.12.1/package.conf.d``.
361
362 -  The *user package database* private to each user. On Unix systems this will
363    be ``$HOME/.ghc/arch-os-version/package.conf.d``, and on Windows it will
364    be something like
365    ``C:\Documents And Settings\user\ghc\package.conf.d``. The
366    ``ghc-pkg`` tool knows where this file should be located, and will
367    create it if it doesn't exist (see :ref:`package-management`).
368
369 *Package database stack:* Package databases are arranged in a stack structure.
370 When GHC starts up it adds the global and the user package databases to the
371 stack, in that order, unless :envvar:`GHC_PACKAGE_PATH` is specified. When
372 `GHC_PACKAGE_PATH` is specified then it will determine the initial database
373 stack. Several command line options described below can further manipulate this
374 initial stack. You can see GHC's effective package database stack by running
375 GHC with the :ghc-flag:`-v` flag.
376
377 This stack structure means that the order of :ghc-flag:`-package-db ⟨file⟩`
378 flags or :envvar:`GHC_PACKAGE_PATH` is important.  Each substack of the stack
379 must be well formed (packages in databases on top of the stack can refer to
380 packages below, but not vice versa).
381
382 *Package shadowing:* When multiple package databases are in use it
383 is possible, though rarely, that the same installed package id is present in
384 more than one database. In that case, packages closer to the top of the stack
385 will override (*shadow*) those below them. If the conflicting packages are
386 found to be equivalent (by ABI hash comparison) then one of them replaces all
387 references to the other, otherwise the overridden package and all those
388 depending on it will be removed.
389
390 *Package version selection:* When selecting a package, GHC will search for
391 packages in all available databases. If multiple versions of the same package
392 are available the latest non-broken version will be chosen.
393
394 *Version conflict resolution:* If multiple instances of a package version
395 chosen by GHC are available then GHC will choose an unspecified instance.
396
397 You can control GHC's package database stack using the following
398 options:
399
400 .. ghc-flag:: -package-db ⟨file⟩
401
402     Add the package database ⟨file⟩ on top of the current stack.
403
404 .. ghc-flag:: -no-global-package-db
405
406     Remove the global package database from the package database stack.
407
408 .. ghc-flag:: -no-user-package-db
409
410     Prevent loading of the user's local package database in the initial
411     stack.
412
413 .. ghc-flag:: -clear-package-db
414
415     Reset the current package database stack. This option removes every
416     previously specified package database (including those read from the
417     :envvar:`GHC_PACKAGE_PATH` environment variable) from the package database
418     stack.
419
420 .. ghc-flag:: -global-package-db
421
422     Add the global package database on top of the current stack. This
423     option can be used after :ghc-flag:`-no-global-package-db` to specify the
424     position in the stack where the global package database should be
425     loaded.
426
427 .. ghc-flag:: -user-package-db
428
429     Add the user's package database on top of the current stack. This
430     option can be used after :ghc-flag:`-no-user-package-db` to specify the
431     position in the stack where the user's package database should be
432     loaded.
433
434 .. _ghc-package-path:
435
436 The ``GHC_PACKAGE_PATH`` environment variable
437 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
438
439 .. envvar:: GHC_PACKAGE_PATH
440
441     The `GHC_PACKAGE_PATH` environment variable may be set to a
442     ``:``\-separated (``;``\-separated on Windows) list of files containing
443     package databases. This list of package databases, used by GHC and ghc-pkg,
444     specifies a stack of package databases from top to bottom. This order was
445     chosen to match the behaviour of the :envvar:`PATH` environment variable
446     where entries earlier in the PATH override ones that come later. See
447     :ref:`package-databases` for details on how the package database stack is
448     used.
449
450     Normally `GHC_PACKAGE_PATH` replaces the default package stack. For
451     example, all of the following commands are equivalent, creating a stack with
452     db1 at the top followed by db2 (use ``;`` instead of ``:`` on Windows):
453
454     .. code-block:: none
455
456         $ ghc -clear-package-db -package-db db2.conf -package-db db1.conf
457         $ env GHC_PACKAGE_PATH=db1.conf:db2.conf ghc
458         $ env GHC_PACKAGE_PATH=db2.conf ghc -package-db db1.conf
459
460     However, if `GHC_PACKAGE_PATH` ends in a separator, the default databases
461     (i.e. the user and global package databases, in that order) are appended
462     to the path. For example, to augment the usual set of packages with a
463     database of your own, you could say (on Unix):
464
465     .. code-block:: none
466
467         $ export GHC_PACKAGE_PATH=$HOME/.my-ghc-packages.conf:
468
469     To check whether your `GHC_PACKAGE_PATH` setting is doing the right
470     thing, ``ghc-pkg list`` will list all the databases in use, in the
471     reverse order they are searched.
472
473 .. _package-environments:
474
475 Package environments
476 ~~~~~~~~~~~~~~~~~~~~
477
478 .. index::
479    single: package environments
480    single: environment file
481
482 A *package environment file* is a file that tells ``ghc`` precisely which
483 packages should be visible. It can be used to create environments for ``ghc``
484 or ``ghci`` that are local to a shell session or to some file system location.
485 They are intended to be managed by build/package tools, to enable ``ghc`` and
486 ``ghci`` to automatically use an environment created by the tool.
487
488 The file contains package IDs and optionally package databases, one directive
489 per line:
490
491 .. code-block:: none
492
493     clear-package-db
494     global-package-db
495     user-package-db
496     package-db db.d/
497     package-id id_1
498     package-id id_2
499     ...
500     package-id id_n
501
502 If such a package environment is found, it is equivalent to passing these
503 command line arguments to ``ghc``:
504
505 .. code-block:: none
506
507     -hide-all-packages
508     -clear-package-db
509     -global-package-db
510     -user-package-db
511     -package-db db.d/
512     -package-id id_1
513     -package-id id_2
514     ...
515     -package-id id_n
516
517 Note the implicit :ghc-flag:`-hide-all-packages` and the fact that it is
518 :ghc-flag:`-package-id ⟨unit-id⟩`, not :ghc-flag:`-package ⟨pkg⟩`. This is
519 because the environment specifies precisely which packages should be visible.
520
521 Note that for the ``package-db`` directive, if a relative path is given it
522 must be relative to the location of the package environment file.
523
524 .. ghc-flag:: -package-env ⟨file⟩|⟨name⟩
525
526     Use the package environment in ⟨file⟩, or in
527     ``$HOME/.ghc/arch-os-version/environments/⟨name⟩``
528
529 In order, ``ghc`` will look for the package environment in the following
530 locations:
531
532 -  File ⟨file⟩ if you pass the option :ghc-flag:`-package-env ⟨file⟩|⟨name⟩`.
533
534 -  File ``$HOME/.ghc/arch-os-version/environments/name`` if you pass the
535    option ``-package-env ⟨name⟩``.
536
537 -  File ⟨file⟩ if the environment variable ``GHC_ENVIRONMENT`` is set to
538    ⟨file⟩.
539
540 -  File ``$HOME/.ghc/arch-os-version/environments/name`` if the
541    environment variable ``GHC_ENVIRONMENT`` is set to ⟨name⟩.
542
543 Additionally, unless ``-hide-all-packages`` is specified ``ghc`` will also
544 look for the package environment in the following locations:
545
546 -  File ``.ghc.environment.arch-os-version`` if it exists in the current
547    directory or any parent directory (but not the user's home directory).
548
549 -  File ``$HOME/.ghc/arch-os-version/environments/default`` if it
550    exists.
551
552 Package environments can be modified by further command line arguments;
553 for example, if you specify ``-package foo`` on the command line, then
554 package ⟨foo⟩ will be visible even if it's not listed in the currently
555 active package environment.
556
557 .. _package-ids:
558
559 Installed package IDs, dependencies, and broken packages
560 --------------------------------------------------------
561
562 Each installed package has a unique identifier (the "installed package
563 ID"), which distinguishes it from all other installed packages on the
564 system. To see the installed package IDs associated with each installed
565 package, use ``ghc-pkg list -v``:
566
567 .. code-block:: none
568
569     $ ghc-pkg list -v
570     using cache: /usr/lib/ghc-6.12.1/package.conf.d/package.cache
571     /usr/lib/ghc-6.12.1/package.conf.d
572        Cabal-1.7.4 (Cabal-1.7.4-48f5247e06853af93593883240e11238)
573        array-0.2.0.1 (array-0.2.0.1-9cbf76a576b6ee9c1f880cf171a0928d)
574        base-3.0.3.0 (base-3.0.3.0-6cbb157b9ae852096266e113b8fac4a2)
575        base-4.2.0.0 (base-4.2.0.0-247bb20cde37c3ef4093ee124e04bc1c)
576        ...
577
578 The string in parentheses after the package name is the installed
579 package ID: it normally begins with the package name and version, and
580 ends in a hash string derived from the compiled package. Dependencies
581 between packages are expressed in terms of installed package IDs, rather
582 than just packages and versions. For example, take a look at the
583 dependencies of the ``haskell98`` package:
584
585 .. code-block:: none
586
587     $ ghc-pkg field haskell98 depends
588     depends: array-0.2.0.1-9cbf76a576b6ee9c1f880cf171a0928d
589              base-4.2.0.0-247bb20cde37c3ef4093ee124e04bc1c
590              directory-1.0.0.2-f51711bc872c35ce4a453aa19c799008
591              old-locale-1.0.0.1-d17c9777c8ee53a0d459734e27f2b8e9
592              old-time-1.0.0.1-1c0d8ea38056e5087ef1e75cb0d139d1
593              process-1.0.1.1-d8fc6d3baf44678a29b9d59ca0ad5780
594              random-1.0.0.1-423d08c90f004795fd10e60384ce6561
595
596 The purpose of the installed package ID is to detect problems caused by
597 re-installing a package without also recompiling the packages that
598 depend on it. Recompiling dependencies is necessary, because the newly
599 compiled package may have a different ABI (Application Binary Interface)
600 than the previous version, even if both packages were built from the
601 same source code using the same compiler. With installed package IDs, a
602 recompiled package will have a different installed package ID from the
603 previous version, so packages that depended on the previous version are
604 now orphaned - one of their dependencies is not satisfied. Packages that
605 are broken in this way are shown in the ``ghc-pkg list`` output either
606 in red (if possible) or otherwise surrounded by braces. In the following
607 example, we have recompiled and reinstalled the ``filepath`` package,
608 and this has caused various dependencies including ``Cabal`` to break:
609
610 .. code-block:: none
611
612     $ ghc-pkg list
613     WARNING: there are broken packages.  Run 'ghc-pkg check' for more details.
614     /usr/lib/ghc-6.12.1/package.conf.d:
615         {Cabal-1.7.4}
616         array-0.2.0.1
617         base-3.0.3.0
618         ... etc ...
619
620 Additionally, ``ghc-pkg list`` reminds you that there are broken
621 packages and suggests ``ghc-pkg check``, which displays more information
622 about the nature of the failure:
623
624 .. code-block:: none
625
626     $ ghc-pkg check
627     There are problems in package ghc-6.12.1:
628       dependency "filepath-1.1.0.1-87511764eb0af2bce4db05e702750e63" doesn't exist
629     There are problems in package haskeline-0.6.2:
630       dependency "filepath-1.1.0.1-87511764eb0af2bce4db05e702750e63" doesn't exist
631     There are problems in package Cabal-1.7.4:
632       dependency "filepath-1.1.0.1-87511764eb0af2bce4db05e702750e63" doesn't exist
633     There are problems in package process-1.0.1.1:
634       dependency "filepath-1.1.0.1-87511764eb0af2bce4db05e702750e63" doesn't exist
635     There are problems in package directory-1.0.0.2:
636       dependency "filepath-1.1.0.1-87511764eb0af2bce4db05e702750e63" doesn't exist
637
638     The following packages are broken, either because they have a problem
639     listed above, or because they depend on a broken package.
640     ghc-6.12.1
641     haskeline-0.6.2
642     Cabal-1.7.4
643     process-1.0.1.1
644     directory-1.0.0.2
645     bin-package-db-0.0.0.0
646     hpc-0.5.0.2
647     haskell98-1.0.1.0
648
649 To fix the problem, you need to recompile the broken packages against
650 the new dependencies. The easiest way to do this is to use
651 ``cabal-install``, or download the packages from
652 `HackageDB <http://hackage.haskell.org/packages/hackage.html>`__ and
653 build and install them as normal.
654
655 Be careful not to recompile any packages that GHC itself depends on, as
656 this may render the ``ghc`` package itself broken, and ``ghc`` cannot be
657 simply recompiled. The only way to recover from this would be to
658 re-install GHC.
659
660 .. _package-management:
661
662 Package management (the ``ghc-pkg`` command)
663 --------------------------------------------
664
665 .. index::
666    single: packages; management
667
668 The :command:`ghc-pkg` tool is for querying and modifying package databases. To
669 see what package databases are in use, use ``ghc-pkg list``. The stack of
670 databases that :command:`ghc-pkg` knows about can be modified using the
671 :envvar:`GHC_PACKAGE_PATH` environment variable (see :ref:`ghc-package-path`,
672 and using :ghc-flag:`-package-db ⟨file⟩` options on the :command:`ghc-pkg`
673 command line.
674
675 When asked to modify a database, ``ghc-pkg`` modifies the global
676 database by default. Specifying ``--user`` causes it to act on the user
677 database, or ``--package-db`` can be used to act on another database
678 entirely. When multiple of these options are given, the rightmost one is
679 used as the database to act upon.
680
681 Commands that query the package database (list, latest, describe, field,
682 dot) operate on the list of databases specified by the flags ``--user``,
683 ``--global``, and ``--package-db``. If none of these flags are given,
684 the default is ``--global --user``.
685
686 If the environment variable :envvar:`GHC_PACKAGE_PATH` is set, and its value
687 does not end in a separator (``:`` on Unix, ``;`` on Windows), then the
688 last database is considered to be the global database, and will be
689 modified by default by ``ghc-pkg``. The intention here is that
690 ``GHC_PACKAGE_PATH`` can be used to create a virtual package environment
691 into which Cabal packages can be installed without setting anything
692 other than ``GHC_PACKAGE_PATH``.
693
694 The ``ghc-pkg`` program may be run in the ways listed below. Where a
695 package name is required, the package can be named in full including the
696 version number (e.g. ``network-1.0``), or without the version number.
697 Naming a package without the version number matches all versions of the
698 package; the specified action will be applied to all the matching
699 packages. A package specifier that matches all version of the package
700 can also be written ``⟨pkg⟩ -*``, to make it clearer that multiple
701 packages are being matched. To match against the installed package ID
702 instead of just package name and version, pass the ``--ipid`` flag.
703
704 ``ghc-pkg init path``
705     Creates a new, empty, package database at ⟨path⟩, which must not
706     already exist.
707
708 ``ghc-pkg register ⟨file⟩``
709     Reads a package specification from ⟨file⟩ (which may be "``-``"
710     to indicate standard input), and adds it to the database of
711     installed packages. The syntax of ⟨file⟩ is given in
712     :ref:`installed-pkg-info`.
713
714     The package specification must be a package that isn't already
715     installed.
716
717 ``ghc-pkg update ⟨file⟩``
718     The same as ``register``, except that if a package of the same name
719     is already installed, it is replaced by the new one.
720
721 ``ghc-pkg unregister ⟨P⟩``
722     Remove the specified package from the database.
723
724 ``ghc-pkg check``
725     Check consistency of dependencies in the package database, and
726     report packages that have missing dependencies.
727
728 ``ghc-pkg expose ⟨P⟩``
729     Sets the ``exposed`` flag for package ⟨P⟩ to ``True``.
730
731 ``ghc-pkg hide ⟨P⟩``
732     Sets the ``exposed`` flag for package ⟨P⟩ to ``False``.
733
734 ``ghc-pkg trust ⟨P⟩``
735     Sets the ``trusted`` flag for package ⟨P⟩ to ``True``.
736
737 ``ghc-pkg distrust ⟨P⟩``
738     Sets the ``trusted`` flag for package ⟨P⟩ to ``False``.
739
740 ``ghc-pkg list [⟨P⟩] [--simple-output]``
741     This option displays the currently installed packages, for each of
742     the databases known to ``ghc-pkg``. That includes the global
743     database, the user's local database, and any further files specified
744     using the ``-f`` option on the command line.
745
746     Hidden packages (those for which the ``exposed`` flag is ``False``)
747     are shown in parentheses in the list of packages.
748
749     If an optional package identifier ⟨P⟩ is given, then only packages
750     matching that identifier are shown.
751
752     If the option ``--simple-output`` is given, then the packages are
753     listed on a single line separated by spaces, and the database names
754     are not included. This is intended to make it easier to parse the
755     output of ``ghc-pkg list`` using a script.
756
757 ``ghc-pkg find-module ⟨M⟩ [--simple-output]``
758     This option lists registered packages exposing module ⟨M⟩. Examples:
759
760     ::
761
762         $ ghc-pkg find-module Var
763         c:/fptools/validate/ghc/driver/package.conf.inplace:
764             (ghc-6.9.20080428)
765
766         $ ghc-pkg find-module Data.Sequence
767         c:/fptools/validate/ghc/driver/package.conf.inplace:
768             containers-0.1
769
770     Otherwise, it behaves like ``ghc-pkg list``, including options.
771
772 ``ghc-pkg latest ⟨P⟩``
773     Prints the latest available version of package ⟨P⟩.
774
775 ``ghc-pkg describe ⟨P⟩``
776     Emit the full description of the specified package. The description
777     is in the form of an ``InstalledPackageInfo``, the same as the input
778     file format for ``ghc-pkg register``. See :ref:`installed-pkg-info`
779     for details.
780
781     If the pattern matches multiple packages, the description for each
782     package is emitted, separated by the string ``---`` on a line by
783     itself.
784
785 ``ghc-pkg field ⟨P⟩ ⟨field⟩[,⟨field⟩]*``
786     Show just a single field of the installed package description for
787     ``P``. Multiple fields can be selected by separating them with
788     commas
789
790 ``ghc-pkg dot``
791     Generate a graph of the package dependencies in a form suitable for
792     input for the `graphviz <http://www.graphviz.org/>`__ tools. For
793     example, to generate a PDF of the dependency graph:
794
795     ::
796
797         ghc-pkg dot | tred | dot -Tpdf >pkgs.pdf
798
799 ``ghc-pkg dump``
800     Emit the full description of every package, in the form of an
801     ``InstalledPackageInfo``. Multiple package descriptions are
802     separated by the string ``---`` on a line by itself.
803
804     This is almost the same as ``ghc-pkg describe '*'``, except that
805     ``ghc-pkg dump`` is intended for use by tools that parse the
806     results, so for example where ``ghc-pkg describe '*'`` will emit an
807     error if it can't find any packages that match the pattern,
808     ``ghc-pkg dump`` will simply emit nothing.
809
810 ``ghc-pkg recache``
811     Re-creates the binary cache file ``package.cache`` for the selected
812     database. This may be necessary if the cache has somehow become
813     out-of-sync with the contents of the database (``ghc-pkg`` will warn
814     you if this might be the case).
815
816     The other time when ``ghc-pkg recache`` is useful is for registering
817     packages manually: it is possible to register a package by simply
818     putting the appropriate file in the package database directory and
819     invoking ``ghc-pkg recache`` to update the cache. This method of
820     registering packages may be more convenient for automated packaging
821     systems.
822
823 Substring matching is supported for ⟨M⟩ in ``find-module`` and for ⟨P⟩
824 in ``list``, ``describe``, and ``field``, where a ``'*'`` indicates open
825 substring ends (``prefix*``, ``*suffix``, ``*infix*``). Examples (output
826 omitted):
827
828 .. code-block:: none
829
830     -- list all regex-related packages
831     ghc-pkg list '*regex*' --ignore-case
832     -- list all string-related packages
833     ghc-pkg list '*string*' --ignore-case
834     -- list OpenGL-related packages
835     ghc-pkg list '*gl*' --ignore-case
836     -- list packages exporting modules in the Data hierarchy
837     ghc-pkg find-module 'Data.*'
838     -- list packages exporting Monad modules
839     ghc-pkg find-module '*Monad*'
840     -- list names and maintainers for all packages
841     ghc-pkg field '*' name,maintainer
842     -- list location of haddock htmls for all packages
843     ghc-pkg field '*' haddock-html
844     -- dump the whole database
845     ghc-pkg describe '*'
846
847 Additionally, the following flags are accepted by ``ghc-pkg``:
848
849 ``-f ⟨file⟩``, ``-package-db ⟨file⟩``
850     .. index::
851        single: -f; ghc-pkg option
852        single: -package-db; ghc-pkg option
853
854     Adds ⟨file⟩ to the stack of package databases. Additionally, ⟨file⟩
855     will also be the database modified by a ``register``,
856     ``unregister``, ``expose`` or ``hide`` command, unless it is
857     overridden by a later ``--package-db``, ``--user`` or ``--global``
858     option.
859
860 ``--force``
861     .. index::
862        single: --force; ghc-pkg option
863
864     Causes ``ghc-pkg`` to ignore missing dependencies, directories and
865     libraries when registering a package, and just go ahead and add it
866     anyway. This might be useful if your package installation system
867     needs to add the package to GHC before building and installing the
868     files.
869
870 ``--global``
871     .. index::
872        single: --global; ghc-pkg option
873
874     Operate on the global package database (this is the default). This
875     flag affects the ``register``, ``update``, ``unregister``,
876     ``expose``, and ``hide`` commands.
877
878 ``--help``, ``-?``
879     .. index::
880        single: --help; ghc-pkg option
881        single: -?; ghc-pkg option
882
883     Outputs the command-line syntax.
884
885 ``--user``
886     .. index::
887        single: --user; ghc-pkg option
888
889     Operate on the current user's local package database. This flag
890     affects the ``register``, ``update``, ``unregister``, ``expose``,
891     and ``hide`` commands.
892
893 ``-v [⟨n⟩]``, ``--verbose [=⟨n⟩]``
894     .. index::
895        single: -v; ghc-pkg option
896        single: --verbose; ghc-pkg option
897
898     Control verbosity. Verbosity levels range from 0-2, where the
899     default is 1, and ``-v`` alone selects level 2.
900
901 ``-V``; \ ``--version``
902     .. index::
903        single: -V; ghc-pkg option
904        single: --version; ghc-pkg option
905
906     Output the ``ghc-pkg`` version number.
907
908 ``--ipid``
909     .. index::
910        single: --ipid; ghc-pkg option
911
912     Causes ``ghc-pkg`` to interpret arguments as installed package IDs
913     (e.g., an identifier like
914     ``unix-2.3.1.0-de7803f1a8cd88d2161b29b083c94240``). This is useful
915     if providing just the package name and version are ambiguous (in old
916     versions of GHC, this was guaranteed to be unique, but this
917     invariant no longer necessarily holds).
918
919 ``--package-key``
920     .. index::
921        single: --package-key; ghc-pkg option
922
923     Causes ``ghc-pkg`` to interpret arguments as unit IDs (e.g., an
924     identifier like ``I5BErHzyOm07EBNpKBEeUv``). Package keys are used
925     to prefix symbol names GHC produces (e.g.,
926     ``6VWy06pWzzJq9evDvK2d4w6_DataziByteStringziInternal_unsafePackLenChars_info``),
927     so if you need to figure out what package a symbol belongs to, use
928     ``ghc-pkg`` with this flag.
929
930 .. _building-packages:
931
932 Building a package from Haskell source
933 --------------------------------------
934
935 .. index::
936    single: packages; building
937
938 We don't recommend building packages the hard way. Instead, use the
939 `Cabal <http://www.haskell.org/cabal/users-guide/>`__ infrastructure if
940 possible. If your package is particularly complicated or requires a lot
941 of configuration, then you might have to fall back to the low-level
942 mechanisms, so a few hints for those brave souls follow.
943
944 You need to build an "installed package info" file for passing to
945 ``ghc-pkg`` when installing your package. The contents of this file are
946 described in :ref:`installed-pkg-info`.
947
948 The Haskell code in a package may be built into one or more archive
949 libraries (e.g. ``libHSfoo.a``), or a single shared object (e.g.
950 ``libHSfoo.dll/.so/.dylib``). The restriction to a single shared object
951 is because the package system is used to tell the compiler when it
952 should make an inter-shared-object call rather than an
953 intra-shared-object-call call (inter-shared-object calls require an
954 extra indirection).
955
956 -  Building a static library is done by using the :command:`ar` tool, like so:
957
958    .. code-block:: sh
959
960        ar cqs libHSfoo-1.0.a A.o B.o C.o ...
961
962    where ``A.o``, ``B.o`` and so on are the compiled Haskell modules,
963    and ``libHSfoo.a`` is the library you wish to create. The syntax may
964    differ slightly on your system, so check the documentation if you run
965    into difficulties.
966
967 -  To load a package ``foo``, GHCi can load its ``libHSfoo.a`` library
968    directly, but it can also load a package in the form of a single
969    ``HSfoo.o`` file that has been pre-linked. Loading the ``.o`` file is
970    slightly quicker, but at the expense of having another copy of the
971    compiled package. The rule of thumb is that if the modules of the
972    package were compiled with :ghc-flag:`-split-objs` then building the
973    ``HSfoo.o`` is worthwhile because it saves time when loading the
974    package into GHCi. Without :ghc-flag:`-split-objs`, there is not much
975    difference in load time between the ``.o`` and ``.a`` libraries, so
976    it is better to save the disk space and only keep the ``.a`` around.
977    In a GHC distribution we provide ``.o`` files for most packages
978    except the GHC package itself.
979
980    The ``HSfoo.o`` file is built by Cabal automatically; use
981    ``--disable-library-for-ghci`` to disable it. To build one manually,
982    the following GNU ``ld`` command can be used:
983
984    .. code-block:: sh
985
986        ld -r --whole-archive -o HSfoo.o libHSfoo.a
987
988    (replace ``--whole-archive`` with ``-all_load`` on MacOS X)
989
990 -  When building the package as shared library, GHC can be used to
991    perform the link step. This hides some of the details out the
992    underlying linker and provides a common interface to all shared
993    object variants that are supported by GHC (DLLs, ELF DSOs, and Mac OS
994    dylibs). The shared object must be named in specific way for two
995    reasons: (1) the name must contain the GHC compiler version, so that
996    two library variants don't collide that are compiled by different
997    versions of GHC and that therefore are most likely incompatible with
998    respect to calling conventions, (2) it must be different from the
999    static name otherwise we would not be able to control the linker as
1000    precisely as necessary to make the :ghc-flag:`-static`\/:ghc-flag:`-dynamic`
1001    flags work, see :ref:`options-linker`.
1002
1003    .. code-block:: sh
1004
1005        ghc -shared libHSfoo-1.0-ghcGHCVersion.so A.o B.o C.o
1006
1007    Using GHC's version number in the shared object name allows different
1008    library versions compiled by different GHC versions to be installed
1009    in standard system locations, e.g. under \*nix ``/usr/lib``. To obtain
1010    the version number of GHC invoke ``ghc --numeric-version`` and use
1011    its output in place of ⟨GHCVersion⟩. See also :ref:`options-codegen`
1012    on how object files must be prepared for shared object linking.
1013
1014 To compile a module which is to be part of a new package, use the
1015 ``-package-name`` (to identify the name of the package) and
1016 ``-library-name`` (to identify the version and the version hashes of its
1017 identities.) options (:ref:`using-packages`). Failure to use these
1018 options when compiling a package will probably result in disaster, but
1019 you will only discover later when you attempt to import modules from the
1020 package. At this point GHC will complain that the package name it was
1021 expecting the module to come from is not the same as the package name
1022 stored in the ``.hi`` file.
1023
1024 It is worth noting with shared objects, when each package is built as a
1025 single shared object file, since a reference to a shared object costs an
1026 extra indirection, intra-package references are cheaper than
1027 inter-package references. Of course, this applies to the ``main``
1028 package as well.
1029
1030 .. _installed-pkg-info:
1031
1032 ``InstalledPackageInfo``: a package specification
1033 -------------------------------------------------
1034
1035 A package specification is a Haskell record; in particular, it is the
1036 record
1037 :cabal-ref:`InstalledPackageInfo <Distribution-InstalledPackageInfo.html#%tInstalledPackageInfo>`
1038 in the module Distribution.InstalledPackageInfo, which is part of the
1039 Cabal package distributed with GHC.
1040
1041 An ``InstalledPackageInfo`` has a human readable/writable syntax. The
1042 functions ``parseInstalledPackageInfo`` and ``showInstalledPackageInfo``
1043 read and write this syntax respectively. Here's an example of the
1044 ``InstalledPackageInfo`` for the ``unix`` package:
1045
1046 .. code-block:: none
1047
1048     $ ghc-pkg describe unix
1049     name: unix
1050     version: 2.3.1.0
1051     id: unix-2.3.1.0-de7803f1a8cd88d2161b29b083c94240
1052     license: BSD3
1053     copyright:
1054     maintainer: libraries@haskell.org
1055     stability:
1056     homepage:
1057     package-url:
1058     description: This package gives you access to the set of operating system
1059                  services standardised by POSIX 1003.1b (or the IEEE Portable
1060                  Operating System Interface for Computing Environments -
1061                  IEEE Std. 1003.1).
1062                  .
1063                  The package is not supported under Windows (except under Cygwin).
1064     category: System
1065     author:
1066     exposed: True
1067     exposed-modules: System.Posix System.Posix.DynamicLinker.Module
1068                      System.Posix.DynamicLinker.Prim System.Posix.Directory
1069                      System.Posix.DynamicLinker System.Posix.Env System.Posix.Error
1070                      System.Posix.Files System.Posix.IO System.Posix.Process
1071                      System.Posix.Process.Internals System.Posix.Resource
1072                      System.Posix.Temp System.Posix.Terminal System.Posix.Time
1073                      System.Posix.Unistd System.Posix.User System.Posix.Signals
1074                      System.Posix.Signals.Exts System.Posix.Semaphore
1075                      System.Posix.SharedMem
1076     hidden-modules:
1077     trusted: False
1078     import-dirs: /usr/lib/ghc-6.12.1/unix-2.3.1.0
1079     library-dirs: /usr/lib/ghc-6.12.1/unix-2.3.1.0
1080     hs-libraries: HSunix-2.3.1.0
1081     extra-libraries: rt util dl
1082     extra-ghci-libraries:
1083     include-dirs: /usr/lib/ghc-6.12.1/unix-2.3.1.0/include
1084     includes: HsUnix.h execvpe.h
1085     depends: base-4.2.0.0-247bb20cde37c3ef4093ee124e04bc1c
1086     hugs-options:
1087     cc-options:
1088     ld-options:
1089     framework-dirs:
1090     frameworks:
1091     haddock-interfaces: /usr/share/doc/ghc/html/libraries/unix/unix.haddock
1092     haddock-html: /usr/share/doc/ghc/html/libraries/unix
1093
1094 Here is a brief description of the syntax of this file:
1095
1096 A package description consists of a number of field/value pairs. A field
1097 starts with the field name in the left-hand column followed by a
1098 "``:``", and the value continues until the next line that begins in
1099 the left-hand column, or the end of file.
1100
1101 The syntax of the value depends on the field. The various field types
1102 are:
1103
1104 freeform
1105     Any arbitrary string, no interpretation or parsing is done.
1106
1107 string
1108     A sequence of non-space characters, or a sequence of arbitrary
1109     characters surrounded by quotes ``"...."``.
1110
1111 string list
1112     A sequence of strings, separated by commas. The sequence may be
1113     empty.
1114
1115 In addition, there are some fields with special syntax (e.g. package
1116 names, version, dependencies).
1117
1118 The allowed fields, with their types, are:
1119
1120 ``name``
1121     .. index::
1122        single: name; package specification
1123
1124     (string) The package's name (without the version).
1125
1126 ``id``
1127     .. index::
1128        single: id; package specification
1129
1130     (string) The installed package ID. It is up to you to choose a suitable one.
1131
1132 ``version``
1133     .. index::
1134        single: version; package specification
1135
1136     (string) The package's version, usually in the form ``A.B`` (any number of
1137     components are allowed).
1138
1139 ``license``
1140     .. index::
1141        single: auto; package specification
1142
1143     (string) The type of license under which this package is
1144     distributed. This field is a value of the
1145     :cabal-ref:`License <Distribution-License.html#t:License>` type.
1146
1147 ``license-file``
1148     .. index::
1149        single: license-file; package specification
1150
1151     (optional string) The name of a file giving detailed license
1152     information for this package.
1153
1154 ``copyright``
1155     .. index::
1156        single: copyright; package specification
1157
1158     (optional freeform) The copyright string.
1159
1160 ``maintainer``
1161     .. index::
1162        single: maintainer; package specification
1163
1164     (optional freeform) The email address of the package's maintainer.
1165
1166 ``stability``
1167     .. index::
1168        single: stability; package specification
1169
1170     (optional freeform) A string describing the stability of the package
1171     (e.g. stable, provisional or experimental).
1172
1173 ``homepage``
1174     .. index::
1175        single: homepage; package specification
1176
1177     (optional freeform) URL of the package's home page.
1178
1179 ``package-url``
1180     .. index::
1181        single: package-url; package specification
1182
1183     (optional freeform) URL of a downloadable distribution for this
1184     package. The distribution should be a Cabal package.
1185
1186 ``description``
1187     .. index::
1188        single: description; package specification
1189
1190     (optional freeform) Description of the package.
1191
1192 ``category``
1193     .. index::
1194        single: category; package specification
1195
1196     (optional freeform) Which category the package belongs to. This
1197     field is for use in conjunction with a future centralised package
1198     distribution framework, tentatively titled Hackage.
1199
1200 ``author``
1201     .. index::
1202        single: author; package specification
1203
1204     (optional freeform) Author of the package.
1205
1206 ``exposed``
1207     .. index::
1208        single: exposed; package specification
1209
1210     (bool) Whether the package is exposed or not.
1211
1212 ``exposed-modules``
1213     .. index::
1214        single: exposed-modules; package specification
1215
1216     (string list) modules exposed by this package.
1217
1218 ``hidden-modules``
1219     .. index::
1220        single: hidden-modules; package specification
1221
1222     (string list) modules provided by this package, but not exposed to
1223     the programmer. These modules cannot be imported, but they are still
1224     subject to the overlapping constraint: no other package in the same
1225     program may provide a module of the same name.
1226
1227 ``reexported-modules``
1228     .. index::
1229        single: reexported-modules; reexport specification
1230
1231     Modules reexported by this package. This list takes the form of
1232     ``pkg:OldName as NewName (A@orig-pkg-0.1-HASH)``: the first portion
1233     of the string is the user-written reexport specification (possibly
1234     omitting the package qualifier and the renaming), while the
1235     parenthetical is the original package which exposed the module under
1236     are particular name. Reexported modules have a relaxed overlap
1237     constraint: it's permissible for two packages to reexport the same
1238     module as the same name if the reexported moduleis identical.
1239
1240 ``trusted``
1241     .. index::
1242        single: trusted; package specification
1243
1244     (bool) Whether the package is trusted or not.
1245
1246 ``import-dirs``
1247     .. index::
1248        single: import-dirs; package specification
1249
1250     (string list) A list of directories containing interface files
1251     (``.hi`` files) for this package.
1252
1253     If the package contains profiling libraries, then the interface
1254     files for those library modules should have the suffix ``.p_hi``. So
1255     the package can contain both normal and profiling versions of the
1256     same library without conflict (see also ``library_dirs`` below).
1257
1258 ``library-dirs``
1259     .. index::
1260        single: library-dirs; package specification
1261
1262     (string list) A list of directories containing libraries for this
1263     package.
1264
1265 ``hs-libraries``
1266     .. index::
1267        single: hs-libraries; package specification
1268
1269     (string list) A list of libraries containing Haskell code for this
1270     package, with the ``.a`` or ``.dll`` suffix omitted. When packages
1271     are built as libraries, the ``lib`` prefix is also omitted.
1272
1273     For use with GHCi, each library should have an object file too. The
1274     name of the object file does *not* have a ``lib`` prefix, and has
1275     the normal object suffix for your platform.
1276
1277     For example, if we specify a Haskell library as ``HSfoo`` in the
1278     package spec, then the various flavours of library that GHC actually
1279     uses will be called:
1280
1281     ``libHSfoo.a``
1282         The name of the library on Unix and Windows (mingw) systems.
1283         Note that we don't support building dynamic libraries of Haskell
1284         code on Unix systems.
1285
1286     ``HSfoo.dll``
1287         The name of the dynamic library on Windows systems (optional).
1288
1289     ``HSfoo.o``; \ ``HSfoo.obj``
1290         The object version of the library used by GHCi.
1291
1292 ``extra-libraries``
1293     .. index::
1294        single: extra-libraries; package specification
1295
1296     (string list) A list of extra libraries for this package. The
1297     difference between ``hs-libraries`` and ``extra-libraries`` is that
1298     ``hs-libraries`` normally have several versions, to support
1299     profiling, parallel and other build options. The various versions
1300     are given different suffixes to distinguish them, for example the
1301     profiling version of the standard prelude library is named
1302     ``libHSbase_p.a``, with the ``_p`` indicating that this is a
1303     profiling version. The suffix is added automatically by GHC for
1304     ``hs-libraries`` only, no suffix is added for libraries in
1305     ``extra-libraries``.
1306
1307     The libraries listed in ``extra-libraries`` may be any libraries
1308     supported by your system's linker, including dynamic libraries
1309     (``.so`` on Unix, ``.DLL`` on Windows).
1310
1311     Also, ``extra-libraries`` are placed on the linker command line
1312     after the ``hs-libraries`` for the same package. If your package has
1313     dependencies in the other direction (i.e. ``extra-libraries``
1314     depends on ``hs-libraries``), and the libraries are static, you
1315     might need to make two separate packages.
1316
1317 ``include-dirs``
1318     .. index::
1319        single: include-dirs; package specification
1320
1321     (string list) A list of directories containing C includes for this
1322     package.
1323
1324 ``includes``
1325     .. index::
1326        single: includes; package specification
1327
1328     (string list) A list of files to include for via-C compilations
1329     using this package. Typically the include file(s) will contain
1330     function prototypes for any C functions used in the package, in case
1331     they end up being called as a result of Haskell functions from the
1332     package being inlined.
1333
1334 ``depends``
1335     .. index::
1336        single: depends; package specification
1337
1338     (package id list) Packages on which this package depends.
1339
1340 ``hugs-options``
1341     .. index::
1342        single: hugs-options; package specification
1343
1344     (string list) Options to pass to Hugs for this package.
1345
1346 ``cc-options``
1347     .. index::
1348        single: cc-options; package specification
1349
1350     (string list) Extra arguments to be added to the gcc command line
1351     when this package is being used (only for via-C compilations).
1352
1353 ``ld-options``
1354     .. index::
1355        single: ld-options; package specification
1356
1357     (string list) Extra arguments to be added to the ``gcc`` command
1358     line (for linking) when this package is being used.
1359
1360 ``framework-dirs``
1361     .. index::
1362        single: framework-dirs; package specification
1363
1364     (string list) On Darwin/MacOS X, a list of directories containing
1365     frameworks for this package. This corresponds to the
1366     ``-framework-path`` option. It is ignored on all other platforms.
1367
1368 ``frameworks``
1369     .. index::
1370        single: frameworks; package specification
1371
1372     (string list) On Darwin/MacOS X, a list of frameworks to link to.
1373     This corresponds to the ``-framework`` option. Take a look at
1374     Apple's developer documentation to find out what frameworks actually
1375     are. This entry is ignored on all other platforms.
1376
1377 ``haddock-interfaces``
1378     .. index::
1379        single: haddock-interfaces; package specification
1380
1381     (string list) A list of filenames containing
1382     `Haddock <http://www.haskell.org/haddock/>`__ interface files
1383     (``.haddock`` files) for this package.
1384
1385 ``haddock-html``
1386     .. index::
1387        single: haddock-html; package specification
1388
1389     (optional string) The directory containing the Haddock-generated
1390     HTML for this package.
1391
1392 .. [1] it used to in GHC 6.4, but not since 6.6