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