€cdocutils.nodes document q)q}q(U nametypesq}q(XpvpqˆXalexqˆXabnfqˆXsimilar systemsq NX introductionq NX a tool for working with packagesq NXwhat's in a packageq NXcabal featuresetq NXhackageqˆXhaddockqˆXpackage versioning policyqˆXhoogleqˆXhaskellqˆXhscolourqˆXcpphsqˆXhappyqˆuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUpvpqhUalexq hUabnfq!h Usimilar-systemsq"h U introductionq#h U a-tool-for-working-with-packagesq$h Uwhat-s-in-a-packageq%h Ucabal-featuresetq&hUhackageq'hUhaddockq(hUpackage-versioning-policyq)hUhoogleq*hUhaskellq+hUhscolourq,hUcpphsq-hUhappyq.uUchildrenq/]q0(csphinx.addnodes highlightlang q1)q2}q3(U rawsourceq4UUparentq5hUsourceq6X7/home/refold/code/haskell/cabal-2.2/Cabal/doc/intro.rstq7Utagnameq8U highlightlangq9U attributesq:}q;(UlangXconsoleUlinenothresholdI9223372036854775807 Uidsq<]Ubackrefsq=]Udupnamesq>]Uclassesq?]Unamesq@]uUlineqAKUdocumentqBhh/]ubcdocutils.nodes paragraph qC)qD}qE(h4X·Cabal is the standard package system for Haskell_ software. It helps people to configure, build and install Haskell software and to distribute it easily to other users and developers.h5hh6h7h8U paragraphqFh:}qG(h>]h?]h=]h<]h@]uhAKhBhh/]qH(cdocutils.nodes Text qIX)Cabal is the standard package system for qJ…qK}qL(h4X)Cabal is the standard package system for h6NhANhBhh5hDubcdocutils.nodes reference qM)qN}qO(h4XHaskell_UresolvedqPKh5hDh8U referenceqQh:}qR(UnameXHaskellUrefuriqSXhttp://www.haskell.org/qTh<]h=]h>]h?]h@]uh/]qUhIXHaskellqV…qW}qX(h4Uh5hNubaubhIX† software. It helps people to configure, build and install Haskell software and to distribute it easily to other users and developers.qY…qZ}q[(h4X† software. It helps people to configure, build and install Haskell software and to distribute it easily to other users and developers.h6NhANhBhh5hDubeubhC)q\}q](h4XéThere is a command line tool called ``cabal`` for working with Cabal packages. It helps with installing existing packages and also helps people developing their own packages. It can be used to work with local packages or to install packages from online package archives, including automatically installing dependencies. By default it is configured to use Hackage_ which is Haskell's central package archive that contains thousands of libraries and applications in the Cabal package format.h5hh6h7h8hFh:}q^(h>]h?]h=]h<]h@]uhAKhBhh/]q_(hIX$There is a command line tool called q`…qa}qb(h4X$There is a command line tool called h6NhANhBhh5h\ubcdocutils.nodes literal qc)qd}qe(h4X ``cabal``h:}qf(h>]h?]h=]h<]h@]uh5h\h/]qghIXcabalqh…qi}qj(h4Uh5hdubah8UliteralqkubhIX6 for working with Cabal packages. It helps with installing existing packages and also helps people developing their own packages. It can be used to work with local packages or to install packages from online package archives, including automatically installing dependencies. By default it is configured to use ql…qm}qn(h4X6 for working with Cabal packages. It helps with installing existing packages and also helps people developing their own packages. It can be used to work with local packages or to install packages from online package archives, including automatically installing dependencies. By default it is configured to use h6NhANhBhh5h\ubhM)qo}qp(h4XHackage_hPKh5h\h8hQh:}qq(UnameXHackagehSXhttp://hackage.haskell.org/qrh<]h=]h>]h?]h@]uh/]qshIXHackageqt…qu}qv(h4Uh5houbaubhIX€ which is Haskell’s central package archive that contains thousands of libraries and applications in the Cabal package format.qw…qx}qy(h4X~ which is Haskell's central package archive that contains thousands of libraries and applications in the Cabal package format.h6NhANhBhh5h\ubeubcdocutils.nodes section qz)q{}q|(h4Uh5hh6h7h8Usectionq}h:}q~(h>]h?]h=]h<]qh#ah@]q€h auhAKhBhh/]q(cdocutils.nodes title q‚)qƒ}q„(h4X Introductionq…h5h{h6h7h8Utitleq†h:}q‡(h>]h?]h=]h<]h@]uhAKhBhh/]qˆhIX Introductionq‰…qŠ}q‹(h4h…h6NhANhBhh5hƒubaubhC)qŒ}q(h4XŠCabal is a package system for Haskell software. The point of a package system is to enable software developers and users to easily distribute, use and reuse software. A package system makes it easier for developers to get their software into the hands of users. Equally importantly, it makes it easier for software developers to be able to reuse software components written by other developers.qŽh5h{h6h7h8hFh:}q(h>]h?]h=]h<]h@]uhAKhBhh/]qhIXŠCabal is a package system for Haskell software. The point of a package system is to enable software developers and users to easily distribute, use and reuse software. A package system makes it easier for developers to get their software into the hands of users. Equally importantly, it makes it easier for software developers to be able to reuse software components written by other developers.q‘…q’}q“(h4hŽh6NhANhBhh5hŒubaubhC)q”}q•(h4XôPackaging systems deal with packages and with Cabal we call them *Cabal packages*. The Cabal package is the unit of distribution. Every Cabal package has a name and a version number which are used to identify the package, e.g. ``filepath-1.0``.h5h{h6h7h8hFh:}q–(h>]h?]h=]h<]h@]uhAKhBhh/]q—(hIXAPackaging systems deal with packages and with Cabal we call them q˜…q™}qš(h4XAPackaging systems deal with packages and with Cabal we call them h6NhANhBhh5h”ubcdocutils.nodes emphasis q›)qœ}q(h4X*Cabal packages*h:}qž(h>]h?]h=]h<]h@]uh5h”h/]qŸhIXCabal packagesq …q¡}q¢(h4Uh5hœubah8Uemphasisq£ubhIX’. The Cabal package is the unit of distribution. Every Cabal package has a name and a version number which are used to identify the package, e.g. q¤…q¥}q¦(h4X’. The Cabal package is the unit of distribution. Every Cabal package has a name and a version number which are used to identify the package, e.g. h6NhANhBhh5h”ubhc)q§}q¨(h4X``filepath-1.0``h:}q©(h>]h?]h=]h<]h@]uh5h”h/]qªhIX filepath-1.0q«…q¬}q­(h4Uh5h§ubah8hkubhIX.…q®}q¯(h4X.h6NhANhBhh5h”ubeubhC)q°}q±(h4XnCabal packages can depend on other Cabal packages. There are tools to enable automated package management. This means it is possible for developers and users to install a package plus all of the other Cabal packages that it depends on. It also means that it is practical to make very modular systems using lots of packages that reuse code written by many developers.q²h5h{h6h7h8hFh:}q³(h>]h?]h=]h<]h@]uhAK hBhh/]q´hIXnCabal packages can depend on other Cabal packages. There are tools to enable automated package management. This means it is possible for developers and users to install a package plus all of the other Cabal packages that it depends on. It also means that it is practical to make very modular systems using lots of packages that reuse code written by many developers.qµ…q¶}q·(h4h²h6NhANhBhh5h°ubaubhC)q¸}q¹(h4XCabal packages are source based and are typically (but not necessarily) portable to many platforms and Haskell implementations. The Cabal package format is designed to make it possible to translate into other formats, including binary packages for various systems.qºh5h{h6h7h8hFh:}q»(h>]h?]h=]h<]h@]uhAK'hBhh/]q¼hIXCabal packages are source based and are typically (but not necessarily) portable to many platforms and Haskell implementations. The Cabal package format is designed to make it possible to translate into other formats, including binary packages for various systems.q½…q¾}q¿(h4hºh6NhANhBhh5h¸ubaubhC)qÀ}qÁ(h4XWhen distributed, Cabal packages use the standard compressed tarball format, with the file extension ``.tar.gz``, e.g. ``filepath-1.0.tar.gz``.h5h{h6h7h8hFh:}qÂ(h>]h?]h=]h<]h@]uhAK,hBhh/]qÃ(hIXeWhen distributed, Cabal packages use the standard compressed tarball format, with the file extension qÄ…qÅ}qÆ(h4XeWhen distributed, Cabal packages use the standard compressed tarball format, with the file extension h6NhANhBhh5hÀubhc)qÇ}qÈ(h4X ``.tar.gz``h:}qÉ(h>]h?]h=]h<]h@]uh5hÀh/]qÊhIX.tar.gzqË…qÌ}qÍ(h4Uh5hÇubah8hkubhIX, e.g. qÎ…qÏ}qÐ(h4X, e.g. h6NhANhBhh5hÀubhc)qÑ}qÒ(h4X``filepath-1.0.tar.gz``h:}qÓ(h>]h?]h=]h<]h@]uh5hÀh/]qÔhIXfilepath-1.0.tar.gzqÕ…qÖ}q×(h4Uh5hÑubah8hkubhIX.…qØ}qÙ(h4X.h6NhANhBhh5hÀubeubhC)qÚ}qÛ(h4X¬Note that packages are not part of the Haskell language, rather they are a feature provided by the combination of Cabal and GHC (and several other Haskell implementations).qÜh5h{h6h7h8hFh:}qÝ(h>]h?]h=]h<]h@]uhAK0hBhh/]qÞhIX¬Note that packages are not part of the Haskell language, rather they are a feature provided by the combination of Cabal and GHC (and several other Haskell implementations).qß…qà}qá(h4hÜh6NhANhBhh5hÚubaubhz)qâ}qã(h4Uh5h{h6h7h8h}h:}qä(h>]h?]h=]h<]qåh$ah@]qæh auhAK5hBhh/]qç(h‚)qè}qé(h4X A tool for working with packagesqêh5hâh6h7h8h†h:}që(h>]h?]h=]h<]h@]uhAK5hBhh/]qìhIX A tool for working with packagesqí…qî}qï(h4hêh6NhANhBhh5hèubaubhC)qð}qñ(h4X/There is a command line tool, called "``cabal``", that users and developers can use to build and install Cabal packages. It can be used for both local packages and for packages available remotely over the network. It can automatically install Cabal packages plus any other Cabal packages they depend on.h5hâh6h7h8hFh:}qò(h>]h?]h=]h<]h@]uhAK7hBhh/]qó(hIX(There is a command line tool, called “qô…qõ}qö(h4X&There is a command line tool, called "h6NhANhBhh5hðubhc)q÷}qø(h4X ``cabal``h:}qù(h>]h?]h=]h<]h@]uh5hðh/]qúhIXcabalqû…qü}qý(h4Uh5h÷ubah8hkubhIXâ€, that users and developers can use to build and install Cabal packages. It can be used for both local packages and for packages available remotely over the network. It can automatically install Cabal packages plus any other Cabal packages they depend on.qþ…qÿ}r(h4X", that users and developers can use to build and install Cabal packages. It can be used for both local packages and for packages available remotely over the network. It can automatically install Cabal packages plus any other Cabal packages they depend on.h6NhANhBhh5hðubeubhC)r}r(h4XDDevelopers can use the tool with packages in local directories, e.g.rh5hâh6h7h8hFh:}r(h>]h?]h=]h<]h@]uhAK=hBhh/]rhIXDDevelopers can use the tool with packages in local directories, e.g.r…r}r(h4jh6NhANhBhh5jubaubcdocutils.nodes literal_block r )r }r (h4X$ cd foo/ $ cabal installh5hâh6h7h8U literal_blockr h:}r (U xml:spacerUpreserverh<]h=]h>]h?]h@]uhAKAhBhh/]rhIX$ cd foo/ $ cabal installr…r}r(h4Uh5j ubaubhC)r}r(h4X´While working on a package in a local directory, developers can run the individual steps to configure and build, and also generate documentation and run test suites and benchmarks.rh5hâh6h7h8hFh:}r(h>]h?]h=]h<]h@]uhAKDhBhh/]rhIX´While working on a package in a local directory, developers can run the individual steps to configure and build, and also generate documentation and run test suites and benchmarks.r…r}r(h4jh6NhANhBhh5jubaubhC)r}r(h4XCIt is also possible to install several local packages at once, e.g.rh5hâh6h7h8hFh:}r(h>]h?]h=]h<]h@]uhAKHhBhh/]r hIXCIt is also possible to install several local packages at once, e.g.r!…r"}r#(h4jh6NhANhBhh5jubaubj )r$}r%(h4X$ cabal install foo/ bar/h5hâh6h7h8j h:}r&(jjh<]h=]h>]h?]h@]uhAKLhBhh/]r'hIX$ cabal install foo/ bar/r(…r)}r*(h4Uh5j$ubaubhC)r+}r,(h4XDevelopers and users can use the tool to install packages from remote Cabal package archives. By default, the ``cabal`` tool is configured to use the central Haskell package archive called Hackage_ but it is possible to use it with any other suitable archive.h5hâh6h7h8hFh:}r-(h>]h?]h=]h<]h@]uhAKNhBhh/]r.(hIXnDevelopers and users can use the tool to install packages from remote Cabal package archives. By default, the r/…r0}r1(h4XnDevelopers and users can use the tool to install packages from remote Cabal package archives. By default, the h6NhANhBhh5j+ubhc)r2}r3(h4X ``cabal``h:}r4(h>]h?]h=]h<]h@]uh5j+h/]r5hIXcabalr6…r7}r8(h4Uh5j2ubah8hkubhIXF tool is configured to use the central Haskell package archive called r9…r:}r;(h4XF tool is configured to use the central Haskell package archive called h6NhANhBhh5j+ubhM)r<}r=(h4XHackage_hPKh5j+h8hQh:}r>(UnameXHackagehShrh<]h=]h>]h?]h@]uh/]r?hIXHackager@…rA}rB(h4Uh5j<ubaubhIX> but it is possible to use it with any other suitable archive.rC…rD}rE(h4X> but it is possible to use it with any other suitable archive.h6NhANhBhh5j+ubeubj )rF}rG(h4X$ cabal install xmonadh5hâh6h7h8j h:}rH(jjh<]h=]h>]h?]h@]uhAKVhBhh/]rIhIX$ cabal install xmonadrJ…rK}rL(h4Uh5jFubaubhC)rM}rN(h4XFThis will install the ``xmonad`` package plus all of its dependencies.rOh5hâh6h7h8hFh:}rP(h>]h?]h=]h<]h@]uhAKXhBhh/]rQ(hIXThis will install the rR…rS}rT(h4XThis will install the h6NhANhBhh5jMubhc)rU}rV(h4X ``xmonad``h:}rW(h>]h?]h=]h<]h@]uh5jMh/]rXhIXxmonadrY…rZ}r[(h4Uh5jUubah8hkubhIX& package plus all of its dependencies.r\…r]}r^(h4X& package plus all of its dependencies.h6NhANhBhh5jMubeubhC)r_}r`(h4XIn addition to packages that have been published in an archive, developers can install packages from local or remote tarball files, for examplerah5hâh6h7h8hFh:}rb(h>]h?]h=]h<]h@]uhAKZhBhh/]rchIXIn addition to packages that have been published in an archive, developers can install packages from local or remote tarball files, for examplerd…re}rf(h4jah6NhANhBhh5j_ubaubj )rg}rh(h4XP$ cabal install foo-1.0.tar.gz $ cabal install http://example.com/foo-1.0.tar.gzh5hâh6h7h8j h:}ri(jjh<]h=]h>]h?]h@]uhAK`hBhh/]rjhIXP$ cabal install foo-1.0.tar.gz $ cabal install http://example.com/foo-1.0.tar.gzrk…rl}rm(h4Uh5jgubaubhC)rn}ro(h4XdCabal provides a number of ways for a user to customise how and where a package is installed. They can decide where a package will be installed, which Haskell implementation to use and whether to build optimised code or build with the ability to profile code. It is not expected that users will have to modify any of the information in the ``.cabal`` file.h5hâh6h7h8hFh:}rp(h>]h?]h=]h<]h@]uhAKchBhh/]rq(hIXTCabal provides a number of ways for a user to customise how and where a package is installed. They can decide where a package will be installed, which Haskell implementation to use and whether to build optimised code or build with the ability to profile code. It is not expected that users will have to modify any of the information in the rr…rs}rt(h4XTCabal provides a number of ways for a user to customise how and where a package is installed. They can decide where a package will be installed, which Haskell implementation to use and whether to build optimised code or build with the ability to profile code. It is not expected that users will have to modify any of the information in the h6NhANhBhh5jnubhc)ru}rv(h4X ``.cabal``h:}rw(h>]h?]h=]h<]h@]uh5jnh/]rxhIX.cabalry…rz}r{(h4Uh5juubah8hkubhIX file.r|…r}}r~(h4X file.h6NhANhBhh5jnubeubhC)r}r€(h4XeFor full details, see the section on `building and installing packages `__.h5hâh6h7h8hFh:}r(h>]h?]h=]h<]h@]uhAKihBhh/]r‚(hIX%For full details, see the section on rƒ…r„}r…(h4X%For full details, see the section on h6NhANhBhh5jubhM)r†}r‡(h4X?`building and installing packages `__h:}rˆ(UnameX building and installing packageshSXinstalling-packages.htmlh<]h=]h>]h?]h@]uh5jh/]r‰hIX building and installing packagesrŠ…r‹}rŒ(h4Uh5j†ubah8hQubhIX.…r}rŽ(h4X.h6NhANhBhh5jubeubhC)r}r(h4XÃNote that ``cabal`` is not the only tool for working with Cabal packages. Due to the standardised format and a library for reading ``.cabal`` files, there are several other special-purpose tools.h5hâh6h7h8hFh:}r‘(h>]h?]h=]h<]h@]uhAKlhBhh/]r’(hIX Note that r“…r”}r•(h4X Note that h6NhANhBhh5jubhc)r–}r—(h4X ``cabal``h:}r˜(h>]h?]h=]h<]h@]uh5jh/]r™hIXcabalrš…r›}rœ(h4Uh5j–ubah8hkubhIXp is not the only tool for working with Cabal packages. Due to the standardised format and a library for reading r…rž}rŸ(h4Xp is not the only tool for working with Cabal packages. Due to the standardised format and a library for reading h6NhANhBhh5jubhc)r }r¡(h4X ``.cabal``h:}r¢(h>]h?]h=]h<]h@]uh5jh/]r£hIX.cabalr¤…r¥}r¦(h4Uh5j ubah8hkubhIX6 files, there are several other special-purpose tools.r§…r¨}r©(h4X6 files, there are several other special-purpose tools.h6NhANhBhh5jubeubeubhz)rª}r«(h4Uh5h{h6h7h8h}h:}r¬(h>]h?]h=]h<]r­h%ah@]r®h auhAKqhBhh/]r¯(h‚)r°}r±(h4XWhat's in a packager²h5jªh6h7h8h†h:}r³(h>]h?]h=]h<]h@]uhAKqhBhh/]r´hIXWhat’s in a packagerµ…r¶}r·(h4j²h6NhANhBhh5j°ubaubhC)r¸}r¹(h4XA Cabal package consists of:rºh5jªh6h7h8hFh:}r»(h>]h?]h=]h<]h@]uhAKshBhh/]r¼hIXA Cabal package consists of:r½…r¾}r¿(h4jºh6NhANhBhh5j¸ubaubcdocutils.nodes bullet_list rÀ)rÁ}rÂ(h4Uh5jªh6h7h8U bullet_listrÃh:}rÄ(UbulletrÅX-h<]h=]h>]h?]h@]uhAKuhBhh/]rÆ(cdocutils.nodes list_item rÇ)rÈ}rÉ(h4X<Haskell software, including libraries, executables and testsrÊh5jÁh6h7h8U list_itemrËh:}rÌ(h>]h?]h=]h<]h@]uhANhBhh/]rÍhC)rÎ}rÏ(h4jÊh5jÈh6h7h8hFh:}rÐ(h>]h?]h=]h<]h@]uhAKuh/]rÑhIX<Haskell software, including libraries, executables and testsrÒ…rÓ}rÔ(h4jÊh5jÎubaubaubjÇ)rÕ}rÖ(h4Xbmetadata about the package in a standard human and machine readable format (the "``.cabal``" file)h5jÁh6h7h8jËh:}r×(h>]h?]h=]h<]h@]uhANhBhh/]rØhC)rÙ}rÚ(h4Xbmetadata about the package in a standard human and machine readable format (the "``.cabal``" file)h5jÕh6h7h8hFh:}rÛ(h>]h?]h=]h<]h@]uhAKvh/]rÜ(hIXSmetadata about the package in a standard human and machine readable format (the “rÝ…rÞ}rß(h4XQmetadata about the package in a standard human and machine readable format (the "h5jÙubhc)rà}rá(h4X ``.cabal``h:}râ(h>]h?]h=]h<]h@]uh5jÙh/]rãhIX.cabalrä…rå}ræ(h4Uh5jàubah8hkubhIX †file)rç…rè}ré(h4X" file)h5jÙubeubaubjÇ)rê}rë(h4XDa standard interface to build the package (the "``Setup.hs``" file) h5jÁh6h7h8jËh:}rì(h>]h?]h=]h<]h@]uhANhBhh/]ríhC)rî}rï(h4XCa standard interface to build the package (the "``Setup.hs``" file)h5jêh6h7h8hFh:}rð(h>]h?]h=]h<]h@]uhAKxh/]rñ(hIX2a standard interface to build the package (the “rò…ró}rô(h4X0a standard interface to build the package (the "h5jîubhc)rõ}rö(h4X ``Setup.hs``h:}r÷(h>]h?]h=]h<]h@]uh5jîh/]røhIXSetup.hsrù…rú}rû(h4Uh5jõubah8hkubhIX †file)rü…rý}rþ(h4X" file)h5jîubeubaubeubhC)rÿ}r(h4X¨The ``.cabal`` file contains information about the package, supplied by the package author. In particular it lists the other Cabal packages that the package depends on.h5jªh6h7h8hFh:}r(h>]h?]h=]h<]h@]uhAKzhBhh/]r(hIXThe r…r}r(h4XThe h6NhANhBhh5jÿubhc)r}r(h4X ``.cabal``h:}r(h>]h?]h=]h<]h@]uh5jÿh/]r hIX.cabalr …r }r (h4Uh5jubah8hkubhIXš file contains information about the package, supplied by the package author. In particular it lists the other Cabal packages that the package depends on.r …r}r(h4Xš file contains information about the package, supplied by the package author. In particular it lists the other Cabal packages that the package depends on.h6NhANhBhh5jÿubeubhC)r}r(h4XËFor full details on what goes in the ``.cabal`` and ``Setup.hs`` files, and for all the other features provided by the build system, see the section on `developing packages `__.h5jªh6h7h8hFh:}r(h>]h?]h=]h<]h@]uhAK~hBhh/]r(hIX%For full details on what goes in the r…r}r(h4X%For full details on what goes in the h6NhANhBhh5jubhc)r}r(h4X ``.cabal``h:}r(h>]h?]h=]h<]h@]uh5jh/]rhIX.cabalr…r}r(h4Uh5jubah8hkubhIX and r…r}r (h4X and h6NhANhBhh5jubhc)r!}r"(h4X ``Setup.hs``h:}r#(h>]h?]h=]h<]h@]uh5jh/]r$hIXSetup.hsr%…r&}r'(h4Uh5j!ubah8hkubhIXX files, and for all the other features provided by the build system, see the section on r(…r)}r*(h4XX files, and for all the other features provided by the build system, see the section on h6NhANhBhh5jubhM)r+}r,(h4X2`developing packages `__h:}r-(UnameXdeveloping packageshSXdeveloping-packages.htmlh<]h=]h>]h?]h@]uh5jh/]r.hIXdeveloping packagesr/…r0}r1(h4Uh5j+ubah8hQubhIX.…r2}r3(h4X.h6NhANhBhh5jubeubeubhz)r4}r5(h4Uh5h{h6h7h8h}h:}r6(h>]h?]h=]h<]r7h&ah@]r8h auhAKƒhBhh/]r9(h‚)r:}r;(h4XCabal featuresetr<h5j4h6h7h8h†h:}r=(h>]h?]h=]h<]h@]uhAKƒhBhh/]r>hIXCabal featuresetr?…r@}rA(h4j<h6NhANhBhh5j:ubaubhC)rB}rC(h4X3Cabal and its associated tools and websites covers:rDh5j4h6h7h8hFh:}rE(h>]h?]h=]h<]h@]uhAK…hBhh/]rFhIX3Cabal and its associated tools and websites covers:rG…rH}rI(h4jDh6NhANhBhh5jBubaubjÀ)rJ}rK(h4Uh5j4h6h7h8jÃh:}rL(jÅX-h<]h=]h>]h?]h@]uhAK‡hBhh/]rM(jÇ)rN}rO(h4Xa software build systemrPh5jJh6h7h8jËh:}rQ(h>]h?]h=]h<]h@]uhANhBhh/]rRhC)rS}rT(h4jPh5jNh6h7h8hFh:}rU(h>]h?]h=]h<]h@]uhAK‡h/]rVhIXa software build systemrW…rX}rY(h4jPh5jSubaubaubjÇ)rZ}r[(h4Xsoftware configurationr\h5jJh6h7h8jËh:}r](h>]h?]h=]h<]h@]uhANhBhh/]r^hC)r_}r`(h4j\h5jZh6h7h8hFh:}ra(h>]h?]h=]h<]h@]uhAKˆh/]rbhIXsoftware configurationrc…rd}re(h4j\h5j_ubaubaubjÇ)rf}rg(h4Xpackaging for distributionrhh5jJh6h7h8jËh:}ri(h>]h?]h=]h<]h@]uhANhBhh/]rjhC)rk}rl(h4jhh5jfh6h7h8hFh:}rm(h>]h?]h=]h<]h@]uhAK‰h/]rnhIXpackaging for distributionro…rp}rq(h4jhh5jkubaubaubjÇ)rr}rs(h4X•automated package management - natively using the ``cabal`` command line tool; or - by translation into native package formats such as RPM or deb h5jJh6Nh8jËh:}rt(h>]h?]h=]h<]h@]uhANhBhh/]ru(hC)rv}rw(h4Xautomated package managementrxh5jrh6h7h8hFh:}ry(h>]h?]h=]h<]h@]uhAKŠh/]rzhIXautomated package managementr{…r|}r}(h4jxh5jvubaubjÀ)r~}r(h4Uh5jrh6h7h8jÃh:}r€(jÅX-h<]h=]h>]h?]h@]uhAKŒh/]r(jÇ)r‚}rƒ(h4X2natively using the ``cabal`` command line tool; orr„h:}r…(h>]h?]h=]h<]h@]uh5j~h/]r†hC)r‡}rˆ(h4j„h5j‚h6h7h8hFh:}r‰(h>]h?]h=]h<]h@]uhAKŒh/]rŠ(hIXnatively using the r‹…rŒ}r(h4Xnatively using the h5j‡ubhc)rŽ}r(h4X ``cabal``h:}r(h>]h?]h=]h<]h@]uh5j‡h/]r‘hIXcabalr’…r“}r”(h4Uh5jŽubah8hkubhIX command line tool; orr•…r–}r—(h4X command line tool; orh5j‡ubeubah8jËubjÇ)r˜}r™(h4X>by translation into native package formats such as RPM or deb h:}rš(h>]h?]h=]h<]h@]uh5j~h/]r›hC)rœ}r(h4X=by translation into native package formats such as RPM or debržh5j˜h6h7h8hFh:}rŸ(h>]h?]h=]h<]h@]uhAKh/]r hIX=by translation into native package formats such as RPM or debr¡…r¢}r£(h4jžh5jœubaubah8jËubeubeubjÇ)r¤}r¥(h4X_web and local Cabal package archives - central Hackage website with 1000's of Cabal packages h5jJh6Nh8jËh:}r¦(h>]h?]h=]h<]h@]uhANhBhh/]r§(hC)r¨}r©(h4X$web and local Cabal package archivesrªh5j¤h6h7h8hFh:}r«(h>]h?]h=]h<]h@]uhAKh/]r¬hIX$web and local Cabal package archivesr­…r®}r¯(h4jªh5j¨ubaubjÀ)r°}r±(h4Uh5j¤h6h7h8jÃh:}r²(jÅX-h<]h=]h>]h?]h@]uhAK‘h/]r³jÇ)r´}rµ(h4X6central Hackage website with 1000's of Cabal packages h:}r¶(h>]h?]h=]h<]h@]uh5j°h/]r·hC)r¸}r¹(h4X5central Hackage website with 1000's of Cabal packagesrºh5j´h6h7h8hFh:}r»(h>]h?]h=]h<]h@]uhAK‘h/]r¼hIX7central Hackage website with 1000’s of Cabal packagesr½…r¾}r¿(h4jºh5j¸ubaubah8jËubaubeubeubhC)rÀ}rÁ(h4X©Some parts of the system can be used without others. In particular the built-in build system for simple packages is optional: it is possible to use custom build systems.rÂh5j4h6h7h8hFh:}rÃ(h>]h?]h=]h<]h@]uhAK“hBhh/]rÄhIX©Some parts of the system can be used without others. In particular the built-in build system for simple packages is optional: it is possible to use custom build systems.rÅ…rÆ}rÇ(h4jÂh6NhANhBhh5jÀubaubeubhz)rÈ}rÉ(h4Uh5h{h6h7h8h}h:}rÊ(h>]h?]h=]h<]rËh"ah@]rÌh auhAK˜hBhh/]rÍ(h‚)rÎ}rÏ(h4XSimilar systemsrÐh5jÈh6h7h8h†h:}rÑ(h>]h?]h=]h<]h@]uhAK˜hBhh/]rÒhIXSimilar systemsrÓ…rÔ}rÕ(h4jÐh6NhANhBhh5jÎubaubhC)rÖ}r×(h4XèThe Cabal system is roughly comparable with the system of Python Eggs, Ruby Gems or Perl distributions. Each system has a notion of distributable packages, and has tools to manage the process of distributing and installing packages.rØh5jÈh6h7h8hFh:}rÙ(h>]h?]h=]h<]h@]uhAKšhBhh/]rÚhIXèThe Cabal system is roughly comparable with the system of Python Eggs, Ruby Gems or Perl distributions. Each system has a notion of distributable packages, and has tools to manage the process of distributing and installing packages.rÛ…rÜ}rÝ(h4jØh6NhANhBhh5jÖubaubhC)rÞ}rß(h4X‰Hackage is an online archive of Cabal packages. It is roughly comparable to CPAN but with rather fewer packages (around 5,000 vs 28,000).ràh5jÈh6h7h8hFh:}rá(h>]h?]h=]h<]h@]uhAKŸhBhh/]râhIX‰Hackage is an online archive of Cabal packages. It is roughly comparable to CPAN but with rather fewer packages (around 5,000 vs 28,000).rã…rä}rå(h4jàh6NhANhBhh5jÞubaubhC)ræ}rç(h4XCabal is often compared with autoconf and automake and there is some overlap in functionality. The most obvious similarity is that the command line interface for actually configuring and building packages follows the same steps and has many of the same configuration parameters.rèh5jÈh6h7h8hFh:}ré(h>]h?]h=]h<]h@]uhAK¢hBhh/]rêhIXCabal is often compared with autoconf and automake and there is some overlap in functionality. The most obvious similarity is that the command line interface for actually configuring and building packages follows the same steps and has many of the same configuration parameters.rë…rì}rí(h4jèh6NhANhBhh5jæubaubj )rî}rï(h4X0$ ./configure --prefix=... $ make $ make installh5jÈh6h7h8j h:}rð(jjh<]h=]h>]h?]h@]uhAKªhBhh/]rñhIX0$ ./configure --prefix=... $ make $ make installrò…ró}rô(h4Uh5jîubaubhC)rõ}rö(h4X compared tor÷h5jÈh6h7h8hFh:}rø(h>]h?]h=]h<]h@]uhAK®hBhh/]rùhIX compared torú…rû}rü(h4j÷h6NhANhBhh5jõubaubj )rý}rþ(h4X<$ cabal configure --prefix=... $ cabal build $ cabal installh5jÈh6h7h8j h:}rÿ(jjh<]h=]h>]h?]h@]uhAK²hBhh/]rhIX<$ cabal configure --prefix=... $ cabal build $ cabal installr…r}r(h4Uh5jýubaubhC)r}r(h4X9Cabal's build system for simple packages is considerably less flexible than make/automake, but has builtin knowledge of how to build Haskell code and requires very little manual configuration. Cabal's simple build system is also portable to Windows, without needing a Unix-like environment such as cygwin/mingwin.rh5jÈh6h7h8hFh:}r(h>]h?]h=]h<]h@]uhAK¶hBhh/]rhIX=Cabal’s build system for simple packages is considerably less flexible than make/automake, but has builtin knowledge of how to build Haskell code and requires very little manual configuration. Cabal’s simple build system is also portable to Windows, without needing a Unix-like environment such as cygwin/mingwin.r …r }r (h4jh6NhANhBhh5jubaubhC)r }r (h4XŒCompared to autoconf, Cabal takes a somewhat different approach to package configuration. Cabal's approach is designed for automated package management. Instead of having a configure script that tests for whether dependencies are available, Cabal packages specify their dependencies. There is some scope for optional and conditional dependencies. By having package authors specify dependencies it makes it possible for tools to install a package and all of its dependencies automatically. It also makes it possible to translate (in a mostly-automatically way) into another package format like RPM or deb which also have automatic dependency resolution.rh5jÈh6h7h8hFh:}r(h>]h?]h=]h<]h@]uhAK¼hBhh/]rhIXŽCompared to autoconf, Cabal takes a somewhat different approach to package configuration. Cabal’s approach is designed for automated package management. Instead of having a configure script that tests for whether dependencies are available, Cabal packages specify their dependencies. There is some scope for optional and conditional dependencies. By having package authors specify dependencies it makes it possible for tools to install a package and all of its dependencies automatically. It also makes it possible to translate (in a mostly-automatically way) into another package format like RPM or deb which also have automatic dependency resolution.r…r}r(h4jh6NhANhBhh5j ubaubcdocutils.nodes comment r)r}r(h4X[-*- rst -*- This file contains commonly used link-references See also "extlinks" in conf.pyh5jÈh6cdocutils.nodes reprunicode rXdoc/references.incr…r}rbh8Ucommentrh:}r(jjh<]h=]h>]h?]h@]uhAKhBhh/]rhIX[-*- rst -*- This file contains commonly used link-references See also "extlinks" in conf.pyr…r}r (h4Uh5jubaubcdocutils.nodes target r!)r"}r#(h4X .. _`Package Versioning Policy`:h5jÈh6jh8Utargetr$h:}r%(h<]h=]h>]h?]h@]Urefidr&h)uhAKÎhBhh/]ubj!)r'}r((h4X .. _PVP: http://pvp.haskell.org/h5jÈh6jUexpect_referenced_by_namer)}r*hj"sh8j$h:}r+(hSXhttp://pvp.haskell.org/h<]r,(hh)eh=]h>]h?]h@]r-(hheuhAKÏhBhUexpect_referenced_by_idr.}r/h)j"sh/]ubj!)r0}r1(h4X(.. _Hackage: http://hackage.haskell.org/U referencedr2Kh5jÈh6jh8j$h:}r3(hShrh<]r4h'ah=]h>]h?]h@]r5hauhAKÑhBhh/]ubj!)r6}r7(h4X$.. _Haskell: http://www.haskell.org/j2Kh5jÈh6jh8j$h:}r8(hShTh<]r9h+ah=]h>]h?]h@]r:hauhAKÓhBhh/]ubj!)r;}r<(h4X,.. _Haddock: http://www.haskell.org/haddock/h5jÈh6jh8j$h:}r=(hSXhttp://www.haskell.org/haddock/h<]r>h(ah=]h>]h?]h@]r?hauhAKÕhBhh/]ubj!)r@}rA(h4X&.. _Alex: http://www.haskell.org/alex/h5jÈh6jh8j$h:}rB(hSXhttp://www.haskell.org/alex/h<]rCh ah=]h>]h?]h@]rDhauhAK×hBhh/]ubj!)rE}rF(h4X(.. _Happy: http://www.haskell.org/happy/h5jÈh6jh8j$h:}rG(hSXhttp://www.haskell.org/happy/h<]rHh.ah=]h>]h?]h@]rIhauhAKÙhBhh/]ubj!)rJ}rK(h4X*.. _Hoogle: http://www.haskell.org/hoogle/h5jÈh6jh8j$h:}rL(hSXhttp://www.haskell.org/hoogle/h<]rMh*ah=]h>]h?]h@]rNhauhAKÛhBhh/]ubj!)rO}rP(h4X9.. _HsColour: http://www.cs.york.ac.uk/fp/darcs/hscolour/h5jÈh6jh8j$h:}rQ(hSX+http://www.cs.york.ac.uk/fp/darcs/hscolour/h<]rRh,ah=]h>]h?]h@]rShauhAKÝhBhh/]ubj!)rT}rU(h4X-.. _cpphs: http://projects.haskell.org/cpphs/h5jÈh6jh8j$h:}rV(hSX"http://projects.haskell.org/cpphs/h<]rWh-ah=]h>]h?]h@]rXhauhAKßhBhh/]ubj!)rY}rZ(h4X-.. _ABNF: https://tools.ietf.org/html/rfc5234h5jÈh6jh8j$h:}r[(hSX#https://tools.ietf.org/html/rfc5234h<]r\h!ah=]h>]h?]h@]r]hauhAKáhBhh/]ubeubeubeh4UU transformerr^NU footnote_refsr_}r`Urefnamesra}rb(Xhaskell]rchNaXhackage]rd(hoj<euUsymbol_footnotesre]rfUautofootnote_refsrg]rhUsymbol_footnote_refsri]rjU citationsrk]rlhBhU current_linermNUtransform_messagesrn]ro(cdocutils.nodes system_message rp)rq}rr(h4Uh:}rs(h>]UlevelKh<]h=]Usourcejh?]h@]UlineKÎUtypeUINFOrtuh/]ruhC)rv}rw(h4Uh:}rx(h>]h?]h=]h<]h@]uh5jqh/]ryhIX?Hyperlink target "package-versioning-policy" is not referenced.rz…r{}r|(h4Uh5jvubah8hFubah8Usystem_messager}ubjp)r~}r(h4Uh:}r€(h>]UlevelKh<]h=]Usourcejh?]h@]UlineKÏUtypejtuh/]rhC)r‚}rƒ(h4Uh:}r„(h>]h?]h=]h<]h@]uh5j~h/]r…hIX)Hyperlink target "pvp" is not referenced.r†…r‡}rˆ(h4Uh5j‚ubah8hFubah8j}ubjp)r‰}rŠ(h4Uh:}r‹(h>]UlevelKh<]h=]Usourcejh?]h@]UlineKÕUtypejtuh/]rŒhC)r}rŽ(h4Uh:}r(h>]h?]h=]h<]h@]uh5j‰h/]rhIX-Hyperlink target "haddock" is not referenced.r‘…r’}r“(h4Uh5jubah8hFubah8j}ubjp)r”}r•(h4Uh:}r–(h>]UlevelKh<]h=]Usourcejh?]h@]UlineK×Utypejtuh/]r—hC)r˜}r™(h4Uh:}rš(h>]h?]h=]h<]h@]uh5j”h/]r›hIX*Hyperlink target "alex" is not referenced.rœ…r}rž(h4Uh5j˜ubah8hFubah8j}ubjp)rŸ}r (h4Uh:}r¡(h>]UlevelKh<]h=]Usourcejh?]h@]UlineKÙUtypejtuh/]r¢hC)r£}r¤(h4Uh:}r¥(h>]h?]h=]h<]h@]uh5jŸh/]r¦hIX+Hyperlink target "happy" is not referenced.r§…r¨}r©(h4Uh5j£ubah8hFubah8j}ubjp)rª}r«(h4Uh:}r¬(h>]UlevelKh<]h=]Usourcejh?]h@]UlineKÛUtypejtuh/]r­hC)r®}r¯(h4Uh:}r°(h>]h?]h=]h<]h@]uh5jªh/]r±hIX,Hyperlink target "hoogle" is not referenced.r²…r³}r´(h4Uh5j®ubah8hFubah8j}ubjp)rµ}r¶(h4Uh:}r·(h>]UlevelKh<]h=]Usourcejh?]h@]UlineKÝUtypejtuh/]r¸hC)r¹}rº(h4Uh:}r»(h>]h?]h=]h<]h@]uh5jµh/]r¼hIX.Hyperlink target "hscolour" is not referenced.r½…r¾}r¿(h4Uh5j¹ubah8hFubah8j}ubjp)rÀ}rÁ(h4Uh:}rÂ(h>]UlevelKh<]h=]Usourcejh?]h@]UlineKßUtypejtuh/]rÃhC)rÄ}rÅ(h4Uh:}rÆ(h>]h?]h=]h<]h@]uh5jÀh/]rÇhIX+Hyperlink target "cpphs" is not referenced.rÈ…rÉ}rÊ(h4Uh5jÄubah8hFubah8j}ubjp)rË}rÌ(h4Uh:}rÍ(h>]UlevelKh<]h=]Usourcejh?]h@]UlineKáUtypejtuh/]rÎhC)rÏ}rÐ(h4Uh:}rÑ(h>]h?]h=]h<]h@]uh5jËh/]rÒhIX*Hyperlink target "abnf" is not referenced.rÓ…rÔ}rÕ(h4Uh5jÏubah8hFubah8j}ubeUreporterrÖNUid_startr×KU autofootnotesrØ]rÙU citation_refsrÚ}rÛUindirect_targetsrÜ]rÝUsettingsrÞ(cdocutils.frontend Values rßorà}rá(Ufootnote_backlinksrâKUrecord_dependenciesrãNU language_coderäUenråU tracebackræˆUpep_referencesrçNUstrip_commentsrèNU toc_backlinksréUentryrêU rfc_base_urlrëUhttps://tools.ietf.org/html/rìU datestampríNU report_levelrîKUsmartquotes_localesrïNU _destinationrðNU halt_levelrñKU strip_classesròNh†NUerror_encoding_error_handlerróUbackslashreplacerôUdebugrõNUembed_stylesheetrö‰Uoutput_encoding_error_handlerr÷UstrictrøU sectnum_xformrùKUdump_transformsrúNU docinfo_xformrûKUwarning_streamrüNUpep_file_url_templaterýUpep-%04drþUexit_status_levelrÿKUconfigrNUstrict_visitorrNUcloak_email_addressesrˆUtrim_footnote_reference_spacer‰UenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformr‰U source_linkrNUrfc_referencesr NUoutput_encodingr Uutf-8r U source_urlr NUinput_encodingr U utf-8-sigrU_disable_configrNU id_prefixrUUcharacter_level_inline_markupr‰U tab_widthrKUerror_encodingrUUTF-8rU_sourcerh7Ugettext_compactrˆU generatorrNUdump_internalsrNU smart_quotesrˆU pep_base_urlrU https://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjøUauto_id_prefixrUidr Udoctitle_xformr!‰Ustrip_elements_with_classesr"NU _config_filesr#]Ufile_insertion_enabledr$ˆU raw_enabledr%KU dump_settingsr&NubUsymbol_footnote_startr'KUidsr(}r)(hj'h,jOh j@h!jYh"jÈh#h{h)j'h'j0h$hâh+j6h%jªh*jJh.jEh&j4h-jTh(j;uUsubstitution_namesr*}r+h8hBh:}r,(h>]h<]h=]Usourceh7h?]h@]uU footnotesr-]r.Urefidsr/}r0h)]r1j"asub.