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