csphinx.environment BuildEnvironment q)q}q(Udlfilesqcsphinx.util DownloadFiles q)q}qbUappqNUtoc_secnumbersq }q (Xbugs-and-stabilityq }q UKsXfile-format-changelogq }q(UKU#cabal-version-1-16qKK U#cabal-version-2-4qKKU#cabal-version-1-12qKK U#cabal-version-1-20qKKU#cabal-version-3-0qKKU#cabal-version-1-18qKKU#cabal-version-1-22qKKU#cabal-version-1-24qKKU#cabal-version-2-2qKKU#cabal-version-2-0qKKuXnix-local-buildq}q(UKKU#global-configuration-optionsqKKKU#cabal-v2-haddockqKKK U#cabal-v2-updateqKKKU#cabal-v2-installqKKK U#package-configuration-optionsqKKKU#where-are-my-build-productsq KKKU#cabal-v2-buildq!KKKU#cabal-v2-testq"KKKU #cabal-v2-runq#KKKU#cabal-v2-replq$KKKU#local-versus-external-packagesq%KKKU #cookbookq&KKU#solver-configuration-optionsq'KKKU#cabal-v2-sdistq(KKK U#cabal-v2-benchq)KKKU)#how-can-i-profile-my-library-applicationq*KKKU#cabal-v2-execq+KKK U:#specifying-packages-from-remote-version-control-locationsq,(KKKKtU#developing-multiple-packagesq-KKKU#specifying-the-local-packagesq.KKKU#cabal-v2-configureq/KKKU&#advanced-global-configuration-optionsq0KKKU#cachingq1KKKU#cabal-v2-cleanq2KKK U #commandsq3KKU #how-it-worksq4KKU#cabal-v2-freezeq5KKKU&#configuring-builds-with-cabal-projectq6KKuXnix-local-build-overviewq7}q8UKsXinstalling-packagesq9}q:(UKKU #setup-cleanq;KKKU#miscellaneous-optionsq<(KKKKtU#installation-pathsq=(KKKKtU#controlling-flag-assignmentsq>(KKKKtU #overviewq?KKKU#prefix-independenceq@(KKKKKtU #setup-testqAKKKU #setup-buildqBKKKU#repository-specificationqCKKKU#secure-local-repositoriesqD(KKKKtU#setup-configureqEKKKU #setup-sdistqFKKKU'#building-and-installing-a-user-packageqGKKKU#programs-used-for-buildingqH(KKKKtU)#building-and-installing-a-system-packageqIKKKU#setup-unregisterqJKKK U#developing-with-sandboxesqKKKKU!#installing-packages-from-hackageqLKKKU#setup-haddockqMKKKU#setup-hscolourqNKKK U*#path-variables-in-the-simple-build-systemqO(KKKKKtU!#building-and-installing-packagesqPKKU#creating-a-binary-packageqQKKKU#setup-installqRKKK U#using-secure-repositoriesqS(KKKKtU#legacy-repositoriesqT(KKKKtU#building-test-suitesqU(KKKKtU#sandboxes-basic-usageqV(KKKKtU!#paths-in-the-simple-build-systemqW(KKKKKtU#sandboxes-advanced-usageqX(KKKKtU #setup-copyqYKKK U#setup-registerqZKKK uXconfig-and-installq[}q\UKsXnix-integrationq]}q^(UKU#further-readingq_KKU#creating-nix-expressionsq`KKU#nix-expression-evaluationqaKKU#enabling-nix-integrationqbKKuXmiscqc}qd(UKKU #unstable-apiqe(KKKKtU$#very-stable-command-line-interfacesqf(KKKKtU#stability-of-cabal-interfacesqgKKU#semi-stable-apiqh(KKKKtU#hackageqiKKKU#cabal-file-formatqjKKKU#unstable-command-lineqk(KKKKtU#very-stable-apiql(KKKKtU#command-line-interfaceqmKKKU#stable-command-line-interfacesqn(KKKKtU#functions-and-typesqoKKKuXdeveloping-packagesqp}qq(UKKU#custom-setup-scriptsqrKKKU3#example-package-using-exitcode-stdio-1-0-interfaceqs(KKKKKtU#example-using-autoconfqt(KKKKtU#opening-an-interpreter-sessionqu(KKKKtU0#meaning-of-field-values-when-using-conditionalsqv(KKKK tU#more-complex-packagesqwKKKU#package-names-and-versionsqxKKKU##autogenerated-modules-and-includesqyKKKU#id1qz(KKKKKtU#creating-a-packageq{KKKU#configuration-flagsq|(KKKK KtU #executablesq}(KKKKtU#libraryq~(KKKKtU #conditionsq(KKKK KtU#conditional-compilationqKKKU-#example-package-using-detailed-0-9-interfaceq(KKKKKtU #portabilityqKKKU#foreign-librariesq(KKKKtU.#example-a-package-containing-a-simple-libraryq(KKKKtU(#kinds-of-package-cabal-vs-ghc-vs-systemqKKKU#modules-and-preprocessorsq(KKKKtU'#accessing-data-files-from-package-codeqKKKU#layoutq(KKKK KtU#editing-the-cabal-fileqKKKU%#modules-imported-from-other-packagesqKKKU#source-repositoriesq(KKKKtU#conditional-blocksq(KKKK tU##resolution-of-conditions-and-flagsq(KKKK KtUA#example-using-explicit-braces-rather-than-indentation-for-layoutq(KKKK KtU#package-descriptionsqKKKU #test-suitesq(KKKKtU #modules-included-in-the-packageqKKKU7#explicit-dependencies-and-automatic-package-managementqKKKU%#generating-dependency-version-boundsq(KKKKKtU+#listing-outdated-dependency-version-boundsq(KKKKKtU#running-test-suitesq(KKKKKtU#system-dependent-parametersqKKKU#running-benchmarksq(KKKKKtU?#example-a-package-containing-a-library-and-executable-programsq(KKKKtU#id3q(KKKK KtU#unit-of-distributionqKKKU #next-stepsqKKKU#freezing-dependency-versionsq(KKKKKtU#the-point-of-packagesqKKKU#package-conceptsqKKU #benchmarksq(KKKKtU#configurationsq(KKKK tU#package-propertiesq(KKKKtU1#example-a-package-containing-executable-programsq(KKKKtU#accessing-the-package-versionq(KKKKtU#running-executablesq(KKKKKtU#downloading-a-package-s-sourceq(KKKKtU#build-informationq(KKKK tU#using-cabal-initqKKKU#common-stanzasq(KKKK tU(#backward-compatibility-and-custom-setupq(KKKKtU#developing-packagesqKKU#building-the-packageqKKKuXintroq}q(UKU#what-s-in-a-packageqKKU!#a-tool-for-working-with-packagesqKKU#cabal-featuresetqKKU#similar-systemsqKKuXconcepts-and-developmentq}qUKsuU reread_alwaysqc__builtin__ set q]RqUtitlesq}q(Xbugs-and-stabilityqcdocutils.nodes title q)q}q(U rawsourceqUU attributesq}q(Uidsq]Ubackrefsq]Udupnamesq]Uclassesq]Unamesq]U secnumberq]qKauUchildrenq]qcdocutils.nodes Text qX0Reporting Bugs and Stability of Cabal Interfacesqʅq}q(hX0Reporting Bugs and Stability of Cabal InterfacesqUparentqhubaUtagnameqUtitlequbXfile-format-changelogqh)q}q(hUh}q(h]h]h]h]h]h]qKauh]qhX0Package Description Format Specification Historyqׅq}q(hX0Package Description Format Specification HistoryqhhubahhubXnix-local-buildqh)q}q(hUh}q(h]h]h]h]h]h]q(KKeuh]qhX Quickstartqᅁq}q(hX QuickstartqhhubahhubXnix-local-build-overviewqh)q}q(hUh}q(h]h]h]h]h]h]qKauh]qhXNix-style Local Buildsq녁q}q(hXNix-style Local BuildsqhhubahhubXindexqh)q}q(hUh}q(h]h]h]h]h]uh]qhXWelcome to the Cabal User Guideqq}q(hXWelcome to the Cabal User GuideqhhubahhubXinstalling-packagesqh)q}q(hUh}q(h]h]h]h]h]h]q(KKeuh]qhX Configurationqq}r(hX ConfigurationrhhubahhubXconfig-and-installrh)r}r(hUh}r(h]h]h]h]h]h]rKauh]rhX%Configuration and Installing Packagesrr }r (hX%Configuration and Installing Packagesr hjubahhubXnix-integrationr h)r }r(hUh}r(h]h]h]h]h]h]rKauh]rhXNix Integrationrr}r(hXNix Integrationrhj ubahhubXmiscrh)r}r(hUh}r(h]h]h]h]h]h]r(KKeuh]rhXReporting bugs and deficienciesrr}r(hXReporting bugs and deficienciesrhjubahhubXdeveloping-packagesr h)r!}r"(hUh}r#(h]h]h]h]h]h]r$(KKeuh]r%hX Quickstartr&r'}r((hX Quickstartr)hj!ubahhubXintror*h)r+}r,(hUh}r-(h]h]h]h]h]h]r.Kauh]r/hX Introductionr0r1}r2(hX Introductionr3hj+ubahhubXconcepts-and-developmentr4h)r5}r6(hUh}r7(h]h]h]h]h]h]r8Kauh]r9hX Package Concepts and Developmentr:r;}r<(hX Package Concepts and Developmentr=hj5ubahhubuU domaindatar>}r?(Ustdr@}rA(U anonlabelsrB}rC(UgenindexrDjDUrEX setup-buildrFhU setup-buildrGX buildtoolsbcrHj U buildtoolsbcrIXsublibsrJj UsublibsrKUmodindexrLU py-modindexUrMUsearchrNUsearchUrOXcmdoption-project-filerPhUcmdoption-project-filerQXsetup-registerrRhUsetup-registerrSXpkg-descrTj Upkg-descrUXfoo-bench.cabalrVj Ufoo-bench-cabalrWXsetup-unregisterrXhUsetup-unregisterrYXsetup-configurerZhUsetup-configurer[X buildtoolsmapr\j U buildtoolsmapr]X setup-copyr^hU setup-copyr_Xinstalling-packagesr`hUinstalling-packagesraX setup-cleanrbhU setup-cleanrcX setup-sdistrdhU setup-sdistreX spec-historyrfhU spec-historyrgX setup-haddockrhhU setup-haddockriX setup-installrjhU setup-installrkXsetup-hscolourrlhUsetup-hscolourrmuUversionrnKU citationsro}Ulabelsrp}rq(jDjDUcsphinx.locale _TranslationProxy rr(csphinx.locale _lazy_translate rsUsphinxrtUgeneralruUIndexrvtrwjsjtjujvrxbjFhjGX setup buildjdhjeX setup sdistjLU py-modindexryUjr(jsjtjuU Module Indexrztr{jsjtjujzr|bjNjNUjr(jsjtjuU Search Pager}tr~jsjtjuj}rbjRhjSXsetup registerjTj jUXPackage descriptionsjVj jWX foo.cabaljXhjYXsetup unregisterjZhj[Xsetup configurej^hj_X setup copyjbhjcX setup cleanj`hjaX Building and installing packagesjfhjgX0Package Description Format Specification HistoryjhhjiX setup haddockjjhjkX setup installjlhjmXsetup hscolouruUobjectsr}U citation_refsr}U progoptionsr}r(Xsetup-configurerX--enable-profilingrhU*cmdoption-setup-configure-enable-profilingrjX--enable-library-profilingrhU2cmdoption-setup-configure-enable-library-profilingrXsetup-registerrX--userrhUcmdoption-setup-register-userrjX--disable-optimizationrhU.cmdoption-setup-configure-disable-optimizationrjX--exact-configurationrhU-cmdoption-setup-configure-exact-configurationrjX--disable-library-profilingrhU3cmdoption-setup-configure-disable-library-profilingrX setup-haddockrX --internalrhU cmdoption-setup-haddock-internalrjX--prefixrhU cmdoption-setup-configure-prefixrjX--ghcrhUcmdoption-setup-configure-ghcrjX--ipidrhUcmdoption-setup-configure-ipidrjX--disable-coveragerhU*cmdoption-setup-configure-disable-coveragerjX--program-prefixrhU(cmdoption-setup-configure-program-prefixrjX--enable-executable-strippingrhU5cmdoption-setup-configure-enable-executable-strippingrjX--uhcrhjjX--gen-pkg-config[rhU'cmdoption-setup-register-gen-pkg-configrjX--disable-library-vanillarhU1cmdoption-setup-configure-disable-library-vanillarjX --htmldirrhU!cmdoption-setup-configure-htmldirrXsetup-unregisterrX--userrhUcmdoption-setup-unregister-userrjX --gen-scriptrhU%cmdoption-setup-unregister-gen-scriptrjX--hooglerhUcmdoption-setup-haddock-hooglerjX --dependency[rhU$cmdoption-setup-configure-dependencyrjX--default-user-configrhU-cmdoption-setup-configure-default-user-configrX setup-testrX--test-optionsrhU!cmdoption-setup-test-test-optionsrjX--html-locationrhU%cmdoption-setup-haddock-html-locationrNX --store-dirrhUcmdoption-store-dirrX setup-copyX --destdirrhUcmdoption-setup-copy-destdirrjX--disable-split-objsrhU,cmdoption-setup-configure-disable-split-objsrjX--allow-newer[rhU%cmdoption-setup-configure-allow-newerrjX--disable-staticrhU(cmdoption-setup-configure-disable-staticrjX--cssrhUcmdoption-setup-haddock-cssrjX--disable-executable-staticrhU3cmdoption-setup-configure-disable-executable-staticrX setup-buildrX--prog-optionsrhU"cmdoption-setup-build-prog-optionsrjX--lhcrhjjX--libexecsubdirrhU'cmdoption-setup-configure-libexecsubdirrjX --with-progrhU#cmdoption-setup-configure-with-progrjX --executablesrhU#cmdoption-setup-haddock-executablesrjX--prog-optionsrhU&cmdoption-setup-configure-prog-optionsrjX--enable-executable-dynamicrhU3cmdoption-setup-configure-enable-executable-dynamicrjX--flagsrhUcmdoption-setup-configure-flagsrjX--globalrhU cmdoption-setup-configure-globalrjX--extra-include-dirs[rhU,cmdoption-setup-configure-extra-include-dirsrjX--disable-response-filesrhU0cmdoption-setup-configure-disable-response-filesrjX--enable-testsrhU&cmdoption-setup-configure-enable-testsrjX--enable-optimization[rhU-cmdoption-setup-configure-enable-optimizationrjX --prog-optionrhjjX --with-hc-pkgrhU%cmdoption-setup-configure-with-hc-pkgrjX --test-optionrhU cmdoption-setup-test-test-optionrNX --builddirrhUcmdoption-builddirrjX --libexecdirrhU$cmdoption-setup-configure-libexecdirrjXGiverhUcmdoption-setup-test-arg-giverX setup-cleanrX-srhU$cmdoption-setup-clean-save-configurerjX --datadirrhU!cmdoption-setup-configure-datadirrjX--save-configurerhjjX--library-profiling-detail[rhU2cmdoption-setup-configure-library-profiling-detailrjX--hscolour-cssrhU$cmdoption-setup-haddock-hscolour-cssrjX--extra-framework-dirs[rhU.cmdoption-setup-configure-extra-framework-dirsrXsetup-hscolourrX --executablesrhU$cmdoption-setup-hscolour-executablesrjX--enable-library-for-ghcirhU1cmdoption-setup-configure-enable-library-for-ghcirjX--libdirrhU cmdoption-setup-configure-libdirrjX--enable-sharedrhU'cmdoption-setup-configure-enable-sharedrjX--disable-library-for-ghcirhU2cmdoption-setup-configure-disable-library-for-ghcirXsetuprX-hrhUcmdoption-setup-helprjX--allow-older[rhjjX--enable-staticrhU'cmdoption-setup-configure-enable-staticrjX--disable-executable-dynamicrhU4cmdoption-setup-configure-disable-executable-dynamicr jX--enable-library-vanillar hU0cmdoption-setup-configure-enable-library-vanillar X setup-installr X--globalr hUcmdoption-setup-install-globalrjX--disable-sharedrhU(cmdoption-setup-configure-disable-sharedrjX --verboserhUcmdoption-setup-verboserj X--userrhUcmdoption-setup-install-userrNX--project-filerhUid1rjX--disable-testsrhU'cmdoption-setup-configure-disable-testsrjX--program-suffixrhU(cmdoption-setup-configure-program-suffixrjX--profiling-detail[rhU*cmdoption-setup-configure-profiling-detailrX setup-sdistX --snapshotrhUcmdoption-setup-sdist-snapshotrjX--bindirrhU cmdoption-setup-configure-bindirr jX--test-wrapperr!hU!cmdoption-setup-test-test-wrapperr"jX--docdirr#hU cmdoption-setup-configure-docdirr$jX--enable-coverager%hU)cmdoption-setup-configure-enable-coverager&jX--show-detailsr'hU!cmdoption-setup-test-show-detailsr(jX --sysconfdirr)hU$cmdoption-setup-configure-sysconfdirr*jX--hyperlink-sourcer+hU(cmdoption-setup-haddock-hyperlink-sourcer,jX --inplacer-hU cmdoption-setup-register-inplacer.jX--helpr/hjjX--globalr0hUcmdoption-setup-register-globalr1jX--with-compilerr2hU'cmdoption-setup-configure-with-compilerr3jX --libsubdirr4hU#cmdoption-setup-configure-libsubdirr5jX --prog-optionr6hU%cmdoption-setup-configure-prog-optionr7jX --gen-scriptr8hU#cmdoption-setup-register-gen-scriptr9jX-fr:hUcmdoption-setup-configure-fr;jX--userr<hUcmdoption-setup-configure-userr=jX--extra-lib-dirs[r>hU(cmdoption-setup-configure-extra-lib-dirsr?jX --builddirr@hUcmdoption-setup-test-builddirrAjX --datasubdirrBhU$cmdoption-setup-configure-datasubdirrCjX--globalrDhU!cmdoption-setup-unregister-globalrEjX --constraintrFhU$cmdoption-setup-configure-constraintrGjX --preferencerHhU$cmdoption-setup-configure-preferencerIjX--disable-executable-strippingrJhU6cmdoption-setup-configure-disable-executable-strippingrKjX --machine-logrLhU cmdoption-setup-test-machine-logrMjX--cssrNhUcmdoption-setup-hscolour-cssrOjX--cidrPhUcmdoption-setup-configure-cidrQjX --dynlibdirrRhU#cmdoption-setup-configure-dynlibdirrSjX--enable-executable-staticrThU2cmdoption-setup-configure-enable-executable-staticrUjX --human-logrVhUcmdoption-setup-test-human-logrWjX--disable-profilingrXhU+cmdoption-setup-configure-disable-profilingrYjX--jhcrZhjjX --package-dbr[hU$cmdoption-setup-configure-package-dbr\jX--enable-split-objsr]hU+cmdoption-setup-configure-enable-split-objsr^jX--configure-optionr_hU*cmdoption-setup-configure-configure-optionr`uuU changesetra}rb(jnKUchangesrc}uUc}rd(j}jnKuUcabalre}rf(U pkg-fieldsrg}rh(NXmixinsrij Xpkg-field-mixinsrjccabaldomain Meta rk)rl}rm(UindexrnKOhXBuild informationUbuild-informationroU deprecatedrpNUsectionrqNUsincerr(cdistutils.version StrictVersion rso}rt(jnKKKU prereleaseruNubUsynopsisrvNUremovedrwNubNXdata-dirrxj Xpkg-field-data-dirryjk)rz}r{(jnKhXPackage propertiesUpackage-propertiesr|jpNjqNjrNjvNjwNubX custom-setupr}X setup-dependsr~j X$pkg-field-custom-setup-setup-dependsrjk)r}r(jnK]hXCustom setup scriptsUcustom-setup-scriptsrjpNjqNjr(jso}r(jnKKKjuNubjvNjwNubNX ld-optionsrj Xpkg-field-ld-optionsrjk)r}r(jnKKhXBuild informationjojpNjqNjrNjvNjwNubXforeign-libraryrXoptionsrj X!pkg-field-foreign-library-optionsrjk)r}r(jnK*hXForeign librariesUforeign-librariesrjpNjqNjrNjvNjwNubX benchmarkrXtyperj Xpkg-field-benchmark-typerjk)r}r(jnK&hX BenchmarksU benchmarksrjpNjqNjrNjvNjwNubNX build-dependsrj Xpkg-field-build-dependsrjk)r}r(jnK.hXBuild informationjojpNjqNjrNjvNjwNubNX buildablerj Xpkg-field-buildablerjk)r}r(jnK6hXBuild informationjojpNjqNjrNjvNjwNubjXmain-isrj Xpkg-field-benchmark-main-isrjk)r}r(jnK'hX BenchmarksjjpNjqNjrNjvNjwNubXsource-repositoryrXlocationrj X$pkg-field-source-repository-locationrjk)r}r(jnKWhXSource RepositoriesUsource-repositoriesrjpNjqNjrNjvNjwNubX executablerXscoperj Xpkg-field-executable-scoperjk)r}r(jnK hX ExecutablesU executablesrjpNjqNjr(jso}r(jnKKKjuNubjvNjwNubX test-suiterX test-modulerj X pkg-field-test-suite-test-modulerjk)r}r(jnK$hX Test suitesU test-suitesrjpNjqNjrNjvNjwNubNXextra-ghci-librariesrj Xpkg-field-extra-ghci-librariesrjk)r}r(jnKChXBuild informationjojpNjqNjrNjvNjwNubNX package-urlrj Xpkg-field-package-urlrjk)r}r(jnK hXPackage propertiesj|jpNjqNjrNjvNjwNubNXextra-lib-dirsrj Xpkg-field-extra-lib-dirsrjk)r}r(jnKEhXBuild informationjojpNjqNjrNjvNjwNubjX mod-def-filerj X&pkg-field-foreign-library-mod-def-filerjk)r}r(jnK+hXForeign librariesjjpNjqNjrNjvNjwNubNXinstall-includesrj Xpkg-field-install-includesrjk)r}r(jnK;hXBuild informationjojpNjqNjrNjvNjwNubNX asm-optionsrj Xpkg-field-asm-optionsrjk)r}r(jnKJhXBuild informationjojpNjqNjr(jso}r(jnKKKjuNubjvNjwNubNXother-extensionsrj Xpkg-field-other-extensionsrjk)r}r(jnK2hXBuild informationjojpNjqNjrNjvNjwNubjXmodulerj X"pkg-field-source-repository-modulerjk)r}r(jnKXhXSource RepositoriesjjpNjqNjrNjvNjwNubNX bug-reportsrj Xpkg-field-bug-reportsrjk)r}r(jnK hXPackage propertiesj|jpNjqNjrNjvNjwNubXlibraryrX signaturesrj Xpkg-field-library-signaturesrjk)r}r(jnKhXLibraryUlibraryrjpNjqNjr(jso}r(jnKKKjuNubjvNjwNubNX cabal-versionrj Xpkg-field-cabal-versionrjk)r}r(jnKhXPackage propertiesj|jpNjqNjrNjvNjwNubjXtagrj Xpkg-field-source-repository-tagrjk)r}r(jnKZhXSource RepositoriesjjpNjqNjrNjvNjwNubj}Xautogen-modulesrj X&pkg-field-custom-setup-autogen-modulesrjk)r}r(jnK^hX"Autogenerated modules and includesU"autogenerated-modules-and-includesrjpNjqNjr(jso}r(jnKKKjuNubjvNjwNubNX copyrightrj Xpkg-field-copyrightrjk)r}r(jnKhXPackage propertiesj|jpNjqNjrNjvNjwNubjXexposed-modulesrj X!pkg-field-library-exposed-modulesrjk)r}r(jnKhXLibraryjjpNjqNjrNjvNjwNubjXtyperj Xpkg-field-foreign-library-typerjk)r}r(jnK)hXForeign librariesjjpNjqNjrNjvNjwNubNXextra-tmp-filesrj Xpkg-field-extra-tmp-filesrjk)r}r(jnKhXPackage propertiesj|jpNjqNjrNjvNjwNubjXlib-version-inforj X*pkg-field-foreign-library-lib-version-inforjk)r}r(jnK,hXForeign librariesjjpNjqNjrNjvNjwNubNXauthorrj Xpkg-field-authorrjk)r}r(jnKhXPackage propertiesj|jpNjqNjrNjvNjwNubNX ghc-optionsrj Xpkg-field-ghc-optionsrjk)r}r(jnK7hXBuild informationjojpNjqNjrNjvNjwNubjXsubdirr j X"pkg-field-source-repository-subdirr jk)r }r (jnK[hXSource RepositoriesjjpNjqNjrNjvNjwNubjXtyper j X pkg-field-source-repository-typerjk)r}r(jnKVhXSource RepositoriesjjpNjqNjrNjvNjwNubj}Xautogen-includesrj X'pkg-field-custom-setup-autogen-includesrjk)r}r(jnK_hX"Autogenerated modules and includesjjpNjqNjr(jso}r(jnKKKjuNubjvNjwNubNXpkgconfig-dependsrj Xpkg-field-pkgconfig-dependsrjk)r}r(jnKLhXBuild informationjojpNjqNjrNjvNjwNubNXcategoryrj Xpkg-field-categoryrjk)r}r(jnKhXPackage propertiesj|jpNjqNjrNjvNjwNubjXmain-isrj Xpkg-field-executable-main-isrjk)r }r!(jnKhX ExecutablesjjpNjqNjrNjvNjwNubNX cxx-optionsr"j Xpkg-field-cxx-optionsr#jk)r$}r%(jnKHhXBuild informationjojpNjqNjr(jso}r&(jnKKKjuNubjvNjwNubNX frameworksr'j Xpkg-field-frameworksr(jk)r)}r*(jnKMhXBuild informationjojpNjqNjrNjvNjwNubNX stabilityr+j Xpkg-field-stabilityr,jk)r-}r.(jnK hXPackage propertiesj|jpNjqNjrNjvNjwNubNXextra-doc-filesr/j Xpkg-field-extra-doc-filesr0jk)r1}r2(jnKhXPackage propertiesj|jpNjqNjr(jso}r3(jnKKKjuNubjvNjwNubNX cc-optionsr4j Xpkg-field-cc-optionsr5jk)r6}r7(jnKFhXBuild informationjojpNjqNjrNjvNjwNubNX cxx-sourcesr8j Xpkg-field-cxx-sourcesr9jk)r:}r;(jnK>hXBuild informationjojpNjqNjr(jso}r<(jnKKKjuNubjvNjwNubNXincludesr=j Xpkg-field-includesr>jk)r?}r@(jnK:hXBuild informationjojpNjqNjrNjvNjwNubjX visibilityrAj Xpkg-field-library-visibilityrBjk)rC}rD(jnKhXLibraryjjpNjqNjrNjvNjwNubXflagrEXdefaultrFj Xpkg-field-flag-defaultrGjk)rH}rI(jnKRhXConfiguration FlagsUconfiguration-flagsrJjpNjqNjrNjvNjwNubjEX descriptionrKj Xpkg-field-flag-descriptionrLjk)rM}rN(jnKQhXConfiguration FlagsjJjpNjqNjrNjvNjwNubNX c-sourcesrOj Xpkg-field-c-sourcesrPjk)rQ}rR(jnK=hXBuild informationjojpNjqNjrNjvNjwNubNX descriptionrSj Xpkg-field-descriptionrTjk)rU}rV(jnKhXPackage propertiesj|jpNjqNjrNjvNjwNubNXextra-librariesrWj Xpkg-field-extra-librariesrXjk)rY}rZ(jnKBhXBuild informationjojpNjqNjrNjvNjwNubjXlib-version-linuxr[j X+pkg-field-foreign-library-lib-version-linuxr\jk)r]}r^(jnK-hXForeign librariesjjpNjqNjrNjvNjwNubNXhomepager_j Xpkg-field-homepager`jk)ra}rb(jnK hXPackage propertiesj|jpNjqNjrNjvNjwNubNX build-toolsrcj Xpkg-field-build-toolsrdjk)re}rf(jnK5hXBuild informationjojp(jso}rg(jnKKKjuNubjqNjrNjvNjw(jso}rh(jnKKKjuNububjXbranchrij X"pkg-field-source-repository-branchrjjk)rk}rl(jnKYhXSource RepositoriesjjpNjqNjrNjvNjwNubjXreexported-modulesrmj X$pkg-field-library-reexported-modulesrnjk)ro}rp(jnKhXLibraryjjpNjqNjr(jso}rq(jnKKKjuNubjvNjwNubNXextra-bundled-librariesrrj X!pkg-field-extra-bundled-librariesrsjk)rt}ru(jnKDhXBuild informationjojpNjqNjr(jso}rv(jnKKKjuNubjvNjwNubNXnamerwj Xpkg-field-namerxjk)ry}rz(jnKhXPackage propertiesj|jpNjqNjrNjvNjwNubjXvirtual-modulesr{j X!pkg-field-library-virtual-modulesr|jk)r}}r~(jnKhXLibraryjjpNjqNjr(jso}r(jnKKKjuNubjvNjwNubNX maintainerrj Xpkg-field-maintainerrjk)r}r(jnK hXPackage propertiesj|jpNjqNjrNjvNjwNubNXhs-source-dirsrj Xpkg-field-hs-source-dirsrjk)r}r(jnK0hXBuild informationjojpNjqNjrNjvNjwNubNXghc-prof-optionsrj Xpkg-field-ghc-prof-optionsrjk)r}r(jnK8hXBuild informationjojpNjqNjrNjvNjwNubNX extensionsrj Xpkg-field-extensionsrjk)r}r(jnK3hXBuild informationjojp(jso}r(jnKK KjuNubjqNjrNjvNjw(jso}r(jnKKKjuNububNXextra-source-filesrj Xpkg-field-extra-source-filesrjk)r}r(jnKhXPackage propertiesj|jpNjqNjrNjvNjwNubNXextra-frameworks-dirsrj Xpkg-field-extra-frameworks-dirsrjk)r}r(jnKNhXBuild informationjojpNjqNjr(jso}r(jnKKKjuNubjvNjwNubNX cpp-optionsrj Xpkg-field-cpp-optionsrjk)r}r(jnKGhXBuild informationjojpNjqNjrNjvNjwNubjXmain-isrj Xpkg-field-test-suite-main-isrjk)r}r(jnK#hX Test suitesjjpNjqNjrNjvcdocutils.nodes reprunicode rX&Module containing tests main function.rr}rbjwNubjXexposedrj Xpkg-field-library-exposedrjk)r}r(jnKhXLibraryjjpNjqNjrNjvNjwNubNX build-typerj Xpkg-field-build-typerjk)r}r(jnKhXPackage propertiesj|jpNjqNjrNjvNjwNubNXsynopsisrj Xpkg-field-synopsisrjk)r}r(jnKhXPackage propertiesj|jpNjqNjrNjvNjwNubNX license-filerj Xpkg-field-license-filerjk)r}r(jnKhXPackage propertiesj|jpNjqNjrNjvNjwNubjXtyperj Xpkg-field-test-suite-typerjk)r}r(jnK"hX Test suitesjjpNjqNjrNjvNjwNubjEXmanualrj Xpkg-field-flag-manualrjk)r}r(jnKShXConfiguration FlagsjJjpNjqNjrNjvNjwNubNX cmm-optionsrj Xpkg-field-cmm-optionsrjk)r}r(jnKIhXBuild informationjojpNjqNjr(jso}r(jnKKKjuNubjvNjwNubNX data-filesrj Xpkg-field-data-filesrjk)r}r(jnKhXPackage propertiesj|jpNjqNjrNjvNjwNubNX include-dirsrj Xpkg-field-include-dirsrjk)r}r(jnKjk)r?}r@(jnKBhX%Advanced global configuration optionsj jpNjqNjrNjvjXBuild summaries location.rArB}rCbjwNubNX--no-count-conflictsrDhXcfg-flag---no-count-conflictsrEjk)rF}rG(jnKHhX%Advanced global configuration optionsj jpNjqNjrNjvjX,Solver prefers versions with less conflicts.rHrI}rJbjwNubNX--jobsrKhXcfg-flag---jobsrLjk)rM}rN(jnKhXGlobal configuration optionsUglobal-configuration-optionsrOjpNjqNjrNjvjX%Number of builds running in parallel.rPrQ}rRbjwNubNX--disable-executable-strippingrShX'cfg-flag---disable-executable-strippingrTjk)rU}rV(jnKhXPackage configuration optionsjjpNjqNjrNjvjXStrip installed programs.rWrX}rYbjwNubNX--enable-library-strippingrZhX#cfg-flag---enable-library-strippingr[jk)r\}r](jnKhXPackage configuration optionsjjpNjqNjr(jso}r^(jnKKKjuNubjvjXStrip installed libraries.r_r`}rabjwNubNX--ignore-expiryrbhXcfg-flag---ignore-expiryrcjk)rd}re(jnK?hX%Advanced global configuration optionsj jpNjqNjrNjvjX Ignore Hackage expiration dates.rfrg}rhbjwNubNX--disable-debug-inforihXcfg-flag---disable-debug-inforjjk)rk}rl(jnKhXPackage configuration optionsjjpNjqNjr(jso}rm(jnKKKjuNubjvjXBuild with debug info enabled.rnro}rpbjwNubNX--disable-executable-dynamicrqhX%cfg-flag---disable-executable-dynamicrrjk)rs}rt(jnKhXPackage configuration optionsjjpNjqNjrNjvjXLink executables dynamically.rurv}rwbjwNubNX--disable-library-profilingrxhX$cfg-flag---disable-library-profilingryjk)rz}r{(jnK*hXPackage configuration optionsjjpNjqNjr(jso}r|(jnKKKjuNubjvjX'Build libraries with profiling enabled.r}r~}rbjwNubNX--solverrhXcfg-flag---solverrjk)r}r(jnKEhX%Advanced global configuration optionsj jpNjqNjrNjvjXWhich solver to use.rr}rbjwNubNX--enable-optimizationrhXcfg-flag---enable-optimizationrjk)r}r(jnKhXPackage configuration optionsjjpNjqNjrNjvjXBuild with optimization.rr}rbjwNubNX --relocatablerhXcfg-flag---relocatablerjk)r}r(jnK hXPackage configuration optionsjjpNjqNjr(jso}r(jnKKKjuNubjvjXBuild relocatable package.rr}rbjwNubNX--enable-documentationrhXcfg-flag---enable-documentationrj1NX--enable-executable-staticrhX#cfg-flag---enable-executable-staticrjk)r}r(jnK"hXPackage configuration optionsjjpNjqNjrNjvjXBuild fully static executables.rr}rbjwNubNX--library-profiling-detailrhX#cfg-flag---library-profiling-detailrjk)r}r(jnK(hXPackage configuration optionsjjpNjqNjr(jso}r(jnKKKjuNubjvjX!Libraries profiling detail level.rr}rbjwNubNX--disable-library-coveragerhX#cfg-flag---disable-library-coveragerjk)r}r(jnK-hXPackage configuration optionsjjpjqNjr(jso}r(jnKKKjuNubjvNjwNubNX --keep-goingrhXcfg-flag---keep-goingrjk)r}r(jnKhXGlobal configuration optionsjOjpNjqNjrNjvjX$Try to continue building on failure.rr}rbjwNubNX--profiling-detailrhXcfg-flag---profiling-detailrjk)r}r(jnK'hXPackage configuration optionsjjpNjqNjr(jso}r(jnKKKjuNubjvjXProfiling detail level.rr}rbjwNubNX--enable-coveragerhXcfg-flag---enable-coveragerjNX--program-suffixrhXcfg-flag---program-suffixrjk)r}r(jnKhXPackage configuration optionsjjpNjqNjrNjvjXAppend refix to program names.rr}rbjwNubNX--enable-library-profilingrhX#cfg-flag---enable-library-profilingrjzNX--allow-boot-library-installsrhX&cfg-flag---allow-boot-library-installsrjk)r}r(jnKKhX%Advanced global configuration optionsj jpNjqNjrNjvjX.Allow cabal to install or upgrade any package.rr}rbjwNubNX--enable-executable-strippingrhX&cfg-flag---enable-executable-strippingrjUNX--enable-sharedrhXcfg-flag---enable-sharedrjk)r}r(jnKhXPackage configuration optionsjjpNjqNjrNjvjXBuild shared library.rr}rbjwNubNX--disable-staticrhXcfg-flag---disable-staticrjk)r}r(jnK!hXPackage configuration optionsjjpNjqNjrNjvjXBuild static library.rr}rbjwNubNX--enable-executable-profilingrhX&cfg-flag---enable-executable-profilingrjk)r}r(jnK+hXPackage configuration optionsjjpNjqNjr(jso}r(jnKKKjuNubjvjX)Build executables with profiling enabled.rr}rbjwNubNX --allow-newerrhXcfg-flag---allow-newerrjk)r}r(jnKhXSolver configuration optionsj*jpNjqNjrNjvjX)Lift dependencies upper bound constaints.rr}rbjwNubNX--enable-library-coveragerhX"cfg-flag---enable-library-coveragerjNX--no-minimize-conflict-setrhX#cfg-flag---no-minimize-conflict-setrjk)r}r(jnKIhX%Advanced global configuration optionsj jpNjqNjrNjvjXBTry to improve the solver error message when there is no solution.rr}rbjwNubNX--program-prefixrhXcfg-flag---program-prefixrjk)r}r(jnKhXPackage configuration optionsjjpNjqNjrNjvjX Prepend prefix to program names.rr}rbjwNubNX --world-filerhXcfg-flag---world-filerjk)r}r(jnKDhX%Advanced global configuration optionsj jpjqNjrNjvNjwNubNX --run-testsrhXcfg-flag---run-testsrjk)r}r(jnKhXPackage configuration optionsjjpNjqNjrNjvjX)Run package test suite upon installation.rr}rbjwNubNX--extra-include-dirsrhXcfg-flag---extra-include-dirsrjk)r }r (jnK#hXPackage configuration optionsjjpNjqNjrNjvjXAdds C header search path.r r }r bjwNubNX--disable-profilingrhXcfg-flag---disable-profilingrjk)r}r(jnK&hXPackage configuration optionsjjpNjqNjr(jso}r(jnKKKjuNubjvjXEnable profiling builds.rr}rbjwNubNX--disable-split-objsrhXcfg-flag---disable-split-objsrjk)r}r(jnKhXPackage configuration optionsjjpNjqNjrNjvjX Use GHC's split objects feature.rr}rbjwNubNX--enable-executable-dynamicrhX$cfg-flag---enable-executable-dynamicrjsNX--disable-executable-staticrhX$cfg-flag---disable-executable-staticr jNX--max-backjumpsr!hXcfg-flag---max-backjumpsr"jk)r#}r$(jnKFhX%Advanced global configuration optionsj jpNjqNjrNjvjX#Maximum number of solver backjumps.r%r&}r'bjwNubNX --with-hc-pkgr(hXcfg-flag---with-hc-pkgr)jk)r*}r+(jnKhXPackage configuration optionsjjpNjqNjrNjvjXSpecifies package tool.r,r-}r.bjwNubNX--enable-debug-infor/hXcfg-flag---enable-debug-infor0jkNX--enable-library-for-ghcir1hX"cfg-flag---enable-library-for-ghcir2jk)r3}r4(jnKhXPackage configuration optionsjjpNjqNjrNjvjX+Build libraries suitable for use with GHCi.r5r6}r7bjwNubNX--enable-benchmarksr8hXcfg-flag---enable-benchmarksr9j8NX--disable-testsr:hXcfg-flag---disable-testsr;jk)r<}r=(jnKhXPackage configuration optionsjjpNjqNjrNjvjX Build tests.r>r?}r@bjwNubNX--count-conflictsrAhXcfg-flag---count-conflictsrBjFNX--disable-library-for-ghcirChX#cfg-flag---disable-library-for-ghcirDj3NX--http-transportrEhXcfg-flag---http-transportrFjk)rG}rH(jnK>hX%Advanced global configuration optionsj jpNjqNjrNjvjX'Transport to use with http(s) requests.rIrJ}rKbjwNubNX#--reject-unconstrained-dependenciesrLhX,cfg-flag---reject-unconstrained-dependenciesrMjk)rN}rO(jnK hXSolver configuration optionsj*jpNjqNjrNjvjX>Restrict the solver to packages that have constraints on them.rPrQ}rRbjwNubNX --compilerrShXcfg-flag---compilerrTjk)rU}rV(jnKhXPackage configuration optionsjjpNjqNjrNjvjXCompiler to build with.rWrX}rYbjwNubNX--disable-executable-profilingrZhX'cfg-flag---disable-executable-profilingr[jNX--enable-staticr\hXcfg-flag---enable-staticr]jNX--strong-flagsr^hXcfg-flag---strong-flagsr_jk)r`}ra(jnKJhX%Advanced global configuration optionsj jpNjqNjrNjvjX'Do not defer flag choices when solving.rbrc}rdbjwNubNX--write-ghc-environment-filesrehX&cfg-flag---write-ghc-environment-filesrfjk)rg}rh(jnK=hX%Advanced global configuration optionsj jpNjqNjrNjvjXJWhether a ``.ghc.environment`` should be created after a successful build.rirj}rkbjwNubNX--enable-testsrlhXcfg-flag---enable-testsrmj<NX--extra-framework-dirsrnhXcfg-flag---extra-framework-dirsrojk)rp}rq(jnK%hXPackage configuration optionsjjpNjqNjrNjvjX,Adds framework search directory (OS X only).rrrs}rtbjwNubNX--minimize-conflict-setruhX cfg-flag---minimize-conflict-setrvjNX --no-allow-boot-library-installsrwhX)cfg-flag---no-allow-boot-library-installsrxjNX--extra-prog-pathryhXcfg-flag---extra-prog-pathrzjk)r{}r|(jnKhXPackage configuration optionsjjpNjqNjr(jso}r}(jnKKKjuNubjvjX'Add directories to program search path.r~r}rbjwNubNX --logs-dirrhXcfg-flag---logs-dirrjk)r}r(jnKAhX%Advanced global configuration optionsj jpNjqNjrNjvjXDirectory to store build logs.rr}rbjwNubNX--disable-sharedrhXcfg-flag---disable-sharedrjNX --verboserhXcfg-flag---verboserjk)r}r(jnKhXGlobal configuration optionsjOjpNjqNjrNjvjXBuild verbosity level.rr}rbjwNubNX--disable-optimizationrhXcfg-flag---disable-optimizationrjNX--no-strong-flagsrhXcfg-flag---no-strong-flagsrj`NX--remote-repo-cacherhXcfg-flag---remote-repo-cacherjk)r}r(jnK@hX%Advanced global configuration optionsj jpNjqNjrNjvjXLocation of packages cache.rr}rbjwNubNX --local-reporhXcfg-flag---local-reporjk)r}r(jnKChX%Advanced global configuration optionsj jpjqNjrNjvNjwNubNX--extra-lib-dirsrhXcfg-flag---extra-lib-dirsrjk)r}r(jnK$hXPackage configuration optionsjjpNjqNjrNjvjXAdds library search directory.rr}rbjwNubNX--enable-profilingrhXcfg-flag---enable-profilingrjNX--doc-index-filerhXcfg-flag---doc-index-filerjk)r}r(jnK/hXPackage configuration optionsjjpNjqNjrNjvjXPath to haddock templates.rr}rbjwNubNX --constraintrhXcfg-flag---constraintrjk)r}r(jnKhXSolver configuration optionsj*jpNjqNjrNjvjXExtra dependencies constraints.rr}rbjwNubNX--configure-optionrhXcfg-flag---configure-optionrjk)r}r(jnKhXPackage configuration optionsjjpNjqNjrNjvjX$Options to pass to configure script.rr}rbjwNubNX--reorder-goalsrhXcfg-flag---reorder-goalsrj!NX--enable-library-vanillarhX!cfg-flag---enable-library-vanillarjk)r}r(jnK)hXPackage configuration optionsjjpNjqNjrNjvjX"Build libraries without profiling.rr}rbjwNubNX--enable-split-objsrhXcfg-flag---enable-split-objsrjNX --preferencerhXcfg-flag---preferencerjk)r}r(jnKhXSolver configuration optionsj*jpNjqNjrNjvjXPrefered dependency versions.rr}rbjwNubNX--disable-library-strippingrhX$cfg-flag---disable-library-strippingrj\NX--disable-library-vanillarhX"cfg-flag---disable-library-vanillarjNX--flagsrhXcfg-flag---flagsrjk)r}r(jnK hXPackage configuration optionsjjpNjqNjrNjvjX Enable or disable package flags.rr}rbjwNubNX--disable-split-sectionsrhX!cfg-flag---disable-split-sectionsrjuU cfg-fieldsr}r(NX benchmarksrhXcfg-field-benchmarksrj8NXremote-repo-cacherhXcfg-field-remote-repo-cacherjNXlibrary-profiling-detailrhX"cfg-field-library-profiling-detailrjNX haddock-htmlrhXcfg-field-haddock-htmlrjk)r}r(jnK1hXPackage configuration optionsjjpNjqNjrNjvjXBuild HTML documentation.rr}rbjwNubNXwrite-ghc-environment-filesrhX%cfg-field-write-ghc-environment-filesrjgNX split-objsrhXcfg-field-split-objsrjNXdoc-index-filerhXcfg-field-doc-index-filerjNXpackagesrhXcfg-field-packagesrjk)r}r(jnKhXSpecifying the local packagesUspecifying-the-local-packagesrjpNjqNjrNjvjXProject packages.rr}rbjwNubNXcabal-lib-versionrhXcfg-field-cabal-lib-versionrj NXconfigure-optionsrhXcfg-field-configure-optionsrjNX optimizationrhXcfg-field-optimizationrjNXprogram-suffixrhXcfg-field-program-suffixrjNX local-reporhXcfg-field-local-reporjNXcompilerrhXcfg-field-compilerrjUNX!reject-unconstrained-dependenciesrhX+cfg-field-reject-unconstrained-dependenciesrjNNXhaddock-executablesrhXcfg-field-haddock-executablesr jk)r }r (jnK3hXPackage configuration optionsjjpNjqNjrNjvjX'Generate documentation for executables.r r }rbjwNubNX debug-inforhXcfg-field-debug-inforjkNXminimize-conflict-setrhXcfg-field-minimize-conflict-setrjNXprogram-prefixrhXcfg-field-program-prefixrjNX build-summaryrhXcfg-field-build-summaryrj?NXsharedrhXcfg-field-sharedrjNXextra-packagesrhXcfg-field-extra-packagesrjk)r}r(jnKhXSpecifying the local packagesjjpNjqNjrNjvjXAdds external pacakges as localrr}rbjwNubNX with-hc-pkgr hXcfg-field-with-hc-pkgr!j*NXexecutable-profilingr"hXcfg-field-executable-profilingr#jNXhaddock-hoogler$hXcfg-field-haddock-hoogler%jk)r&}r'(jnK0hXPackage configuration optionsjjpNjqNjrNjvjXGenerate Hoogle file.r(r)}r*bjwNubNX strong-flagsr+hXcfg-field-strong-flagsr,j`NX max-backjumpsr-hXcfg-field-max-backjumpsr.j#NXlibrary-strippingr/hXcfg-field-library-strippingr0j\NXexecutable-staticr1hXcfg-field-executable-staticr2jNXoptional-packagesr3hXcfg-field-optional-packagesr4jk)r5}r6(jnKhXSpecifying the local packagesjjpNjqNjrNjvjXOptional project packages.r7r8}r9bjwNubNX reorder-goalsr:hXcfg-field-reorder-goalsr;j!NX world-filer<hXcfg-field-world-filer=jNX constraintsr>hXcfg-field-constraintsr?jNXlogs-dirr@hXcfg-field-logs-dirrAjNXhaddock-benchmarksrBhXcfg-field-haddock-benchmarksrCjk)rD}rE(jnK5hXPackage configuration optionsjjpNjqNjrNjvjX&Generate documentation for benchmarks.rFrG}rHbjwNubNX with-compilerrIhXcfg-field-with-compilerrJjNX allow-newerrKhXcfg-field-allow-newerrLjNXcount-conflictsrMhXcfg-field-count-conflictsrNjFNX index-staterOhXcfg-field-index-staterPjk)rQ}rR(jnK hXSolver configuration optionsj*jpNjqNjr(jso}rS(jnKKKjuNubjvjX@Use source package index state as it existed at a previous time.rTrU}rVbjwNubNXlibrary-coveragerWhXcfg-field-library-coveragerXjNXhaddock-keep-temp-filesrYhX!cfg-field-haddock-keep-temp-filesrZjk)r[}r\(jnKKUsphinx.domains.javascriptr?KUsphinx.domains.pythonr@KuUtodo_all_todosrA]rB(}rC(j%j UsourcerDXE/home/refold/code/haskell/cabal-3.0/Cabal/doc/developing-packages.rstrEUtodorFcsphinx.ext.todo todo_node rG)rH}rI(hXdocument autogen-modules fieldrJjDjEhU todo_noderKh}rL(U targetrefXdeveloping-packages:index-0rMh]h]h]rNUadmonition-todorOah]uUlinerPM h]rQ(h)rR}rS(hXTodorThjHjDjEhhh}rU(h]h]h]h]h]ujPM h]rVhXTodorWrX}rY(hUhjRubaubcdocutils.nodes paragraph rZ)r[}r\(hjJhjHjDjEhU paragraphr]h}r^(h]h]h]h]h]ujPM h]r_hXdocument autogen-modules fieldr`ra}rb(hjJhj[ubaubeubUlinenorcM Utargetrdcdocutils.nodes target re)rf}rg(hUhcsphinx.addnodes desc_content rh)ri}rj(hUhcsphinx.addnodes desc rk)rl}rm(hUhcdocutils.nodes section rn)ro}rp(hUhjn)rq}rr(hUhcdocutils.nodes document rs)rt}ru(U nametypesrv}rw(X executablesrxNXpvpryX&accessing data files from package coderzNX quickstartr{NXrunning executablesr|NX.example: a package containing a simple libraryr}NXthe point of packagesr~NX6explicit dependencies and automatic package managementrNXdownloading a package's sourcerNXpackage descriptionsrNXlibraryrNX test suitesrNXcommon stanzasrNXmodules included in the packagerNXabnfrXhooglerXold-style-build-tool-dependsrX*listing outdated dependency version boundsrNXconditional compilationrNX$generating dependency version boundsrNXhackagerXediting the .cabal filerNX'backward compatibility and custom-setuprNjJXsystem-dependent parametersrNXhscolourrXmore elaborate solutionsrX/meaning of field values when using conditionalsrNXfreezing dependency versionsrNXhaddockrXbuilding the packagerNXaccessing the package versionrNXdeveloping packagesrNX1example: a package containing executable programsrNXalexrX"resolution of conditions and flagsrNXrunning benchmarksrNXconfiguration flagsrNX conditionsrNXcpphsrXhappyrXforeign librariesrNXsource repositoriesrNXexample: using autoconfrNX-example: package using detailed-0.9 interfacerNXpackage propertiesrNXcreating a packagerNXghcrXpackage names and versionsrNjTjVj\X"autogenerated modules and includesrNXAexample: using explicit braces rather than indentation for layoutrNXmore complex packagesrNX next stepsrNXunit of distributionrNX$modules imported from other packagesrNXmodules and preprocessorsrNXlayoutrNX?example: a package containing a library and executable programsrNjHXusing "cabal init"rNX portabilityrNXbgnu autoconf places restrictions on paths, including the path that the user builds a package from.rXrunning test suitesrNXbuild informationrNX(kinds of package: cabal vs ghc vs systemrNXpackage conceptsrNXconditional blocksrNXcustom setup scriptsrNXpackage versioning policyrXopening an interpreter sessionrNX benchmarksrNX3example: package using exitcode-stdio-1.0 interfacerNXhaskellrXfind these files at run-timerXbackpackrXconfigurationsrNuUsubstitution_defsr}rUparse_messagesr]r(cdocutils.nodes system_message r)r}r(hUhjn)r}r(hUU referencedrKhjn)r}r(hUhjn)r}r(hUjKhjqjDjEUexpect_referenced_by_namer}rjTje)r}r(hX .. _pkg-desc:hjn)r}r(hUjKhjn)r}r(hUhjqjDjEhjqh}r(h]h]h]h]rUcreating-a-packagerah]rjaujPMUdocumentrjth]r(h)r}r(hXCreating a packagerhjjDjEhhh}r(h]h]h]h]h]ujPMjjth]rhXCreating a packagerr}r(hjjDNjPNjjthjubaubjZ)r}r(hXSuppose you have a directory hierarchy containing the source files that make up your package. You will need to add two more files to the root directory of the package:rhjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]rhXSuppose you have a directory hierarchy containing the source files that make up your package. You will need to add two more files to the root directory of the package:rr}r(hjjDNjPNjjthjubaubcdocutils.nodes definition_list r)r}r(hUhjjDjEhUdefinition_listrh}r(h]h]h]h]h]ujPNjjth]r(cdocutils.nodes definition_list_item r)r}r(hX:file:`{package-name}.cabal` a Unicode UTF-8 text file containing a package description. For details of the syntax of this file, see the section on `package descriptions`_. hjjDjEhUdefinition_list_itemrh}r(h]h]h]h]h]ujPMh]r(cdocutils.nodes term r)r}r(hX:file:`{package-name}.cabal`rhjjDjEhUtermrh}r(h]h]h]h]h]ujPMh]rcdocutils.nodes literal r)r}r(hXpackage-name.cabalh}r(h]h]h]h]rXfileraUrolejh]uhjh]r(cdocutils.nodes emphasis r)r }r (hX{package-name}.cabalh}r (h]h]h]h]h]uhjh]r hX package-namer r}r(hUhj ubahUemphasisrubhX.cabalrr}r(hX.cabalhjubehUliteralrubaubcdocutils.nodes definition r)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hXa Unicode UTF-8 text file containing a package description. For details of the syntax of this file, see the section on `package descriptions`_.hjjDjEhj]h}r(h]h]h]h]h]ujPMh]r(hXwa Unicode UTF-8 text file containing a package description. For details of the syntax of this file, see the section on rr}r (hXwa Unicode UTF-8 text file containing a package description. For details of the syntax of this file, see the section on hjubcdocutils.nodes reference r!)r"}r#(hX`package descriptions`_Uresolvedr$KhjhU referencer%h}r&(UnameXpackage descriptionsh]h]h]h]h]Urefidr'Upackage-descriptionsr(uh]r)hXpackage descriptionsr*r+}r,(hXpackage descriptionshj"ubaubhX.r-}r.(hX.hjubeubahU definitionr/ubeubj)r0}r1(hX:file:`Setup.hs` a single-module Haskell program to perform various setup tasks (with the interface described in the section on :ref:`installing-packages`). This module should import only modules that will be present in all Haskell implementations, including modules of the Cabal library. The content of this file is determined by the :pkg-field:`build-type` setting in the ``.cabal`` file. In most cases it will be trivial, calling on the Cabal library to do most of the work. hjjDjEhjh}r2(h]h]h]h]h]ujPM jjth]r3(j)r4}r5(hX:file:`Setup.hs`r6hj0jDjEhjh}r7(h]h]h]h]h]ujPM h]r8j)r9}r:(hXSetup.hsh}r;(h]h]h]h]r<Xfiler=aUrolej=h]uhj4h]r>hXSetup.hsr?r@}rA(hXSetup.hshj9ubahjubaubj)rB}rC(hUh}rD(h]h]h]h]h]uhj0h]rEjZ)rF}rG(hXa single-module Haskell program to perform various setup tasks (with the interface described in the section on :ref:`installing-packages`). This module should import only modules that will be present in all Haskell implementations, including modules of the Cabal library. The content of this file is determined by the :pkg-field:`build-type` setting in the ``.cabal`` file. In most cases it will be trivial, calling on the Cabal library to do most of the work.hjBjDjEhj]h}rH(h]h]h]h]h]ujPMh]rI(hXoa single-module Haskell program to perform various setup tasks (with the interface described in the section on rJrK}rL(hXoa single-module Haskell program to perform various setup tasks (with the interface described in the section on hjFubcsphinx.addnodes pending_xref rM)rN}rO(hX:ref:`installing-packages`hjFjDjEhU pending_xrefrPh}rQ(UreftypeXrefUrefwarnrRU reftargetrSXinstalling-packagesrTU refdomainXstdrUh]h]U refexplicith]h]h]UrefdocrVj ujPMh]rWcdocutils.nodes inline rX)rY}rZ(hjTh}r[(h]h]r\(Uxrefr]jUXstd-refr^eh]h]h]uhjNh]r_hXinstalling-packagesr`ra}rb(hUhjYubahUinlinercubaubhX). This module should import only modules that will be present in all Haskell implementations, including modules of the Cabal library. The content of this file is determined by the rdre}rf(hX). This module should import only modules that will be present in all Haskell implementations, including modules of the Cabal library. The content of this file is determined by the hjFubjM)rg}rh(hX:pkg-field:`build-type`hjFjDjEhjPh}ri(UreftypeX pkg-fieldjRjSX build-typerjU refdomainXcabalrkh]h]U refexplicith]h]h]jVj Ucabal:pkg-sectionrlNujPMh]rmj)rn}ro(hjjh}rp(h]h]rq(j]jkXcabal-pkg-fieldrreh]h]h]uhjgh]rshX build-typertru}rv(hUhjnubahjubaubhX setting in the rwrx}ry(hX setting in the hjFubj)rz}r{(hX ``.cabal``h}r|(h]h]h]h]h]uhjFh]r}hX.cabalr~r}r(hX.cabalhjzubahjubhX] file. In most cases it will be trivial, calling on the Cabal library to do most of the work.rr}r(hX] file. In most cases it will be trivial, calling on the Cabal library to do most of the work.hjFubeubahj/ubeubeubjZ)r}r(hXOnce you have these, you can create a source bundle of this directory for distribution. Building of the package is discussed in the section on :ref:`installing-packages`.hjjDjEhj]h}r(h]h]h]h]h]ujPM"jjth]r(hXOnce you have these, you can create a source bundle of this directory for distribution. Building of the package is discussed in the section on rr}r(hXOnce you have these, you can create a source bundle of this directory for distribution. Building of the package is discussed in the section on jDNjPNjjthjubjM)r}r(hX:ref:`installing-packages`hjjDjEhjPh}r(UreftypeXrefjRjSXinstalling-packagesrU refdomainXstdrh]h]U refexplicith]h]h]jVj ujPM"h]rjX)r}r(hjh}r(h]h]r(j]jXstd-refreh]h]h]uhjh]rhXinstalling-packagesrr}r(hUhjubahjcubaubhX.r}r(hX.jDNjPNjjthjubeubjZ)r}r(hXOne of the purposes of Cabal is to make it easier to build a package with different Haskell implementations. So it provides abstractions of features present in different Haskell implementations and wherever possible it is best to take advantage of these to increase portability. Where necessary however it is possible to use specific features of specific implementations. For example one of the pieces of information a package author can put in the package's ``.cabal`` file is what language extensions the code uses. This is far preferable to specifying flags for a specific compiler as it allows Cabal to pick the right flags for the Haskell implementation that the user picks. It also allows Cabal to figure out if the language extension is even supported by the Haskell implementation that the user picks. Where compiler-specific options are needed however, there is an "escape hatch" available. The developer can specify implementation-specific options and more generally there is a configuration mechanism to customise many aspects of how a package is built depending on the Haskell implementation, the Operating system, computer architecture and user-specified configuration flags.hjjDjEhj]h}r(h]h]h]h]h]ujPM&jjth]r(hXOne of the purposes of Cabal is to make it easier to build a package with different Haskell implementations. So it provides abstractions of features present in different Haskell implementations and wherever possible it is best to take advantage of these to increase portability. Where necessary however it is possible to use specific features of specific implementations. For example one of the pieces of information a package author can put in the package’s rr}r(hXOne of the purposes of Cabal is to make it easier to build a package with different Haskell implementations. So it provides abstractions of features present in different Haskell implementations and wherever possible it is best to take advantage of these to increase portability. Where necessary however it is possible to use specific features of specific implementations. For example one of the pieces of information a package author can put in the package's jDNjPNjjthjubj)r}r(hX ``.cabal``h}r(h]h]h]h]h]uhjh]rhX.cabalrr}r(hX.cabalhjubahjubhX file is what language extensions the code uses. This is far preferable to specifying flags for a specific compiler as it allows Cabal to pick the right flags for the Haskell implementation that the user picks. It also allows Cabal to figure out if the language extension is even supported by the Haskell implementation that the user picks. Where compiler-specific options are needed however, there is an “escape hatch” available. The developer can specify implementation-specific options and more generally there is a configuration mechanism to customise many aspects of how a package is built depending on the Haskell implementation, the Operating system, computer architecture and user-specified configuration flags.rr}r(hX file is what language extensions the code uses. This is far preferable to specifying flags for a specific compiler as it allows Cabal to pick the right flags for the Haskell implementation that the user picks. It also allows Cabal to figure out if the language extension is even supported by the Haskell implementation that the user picks. Where compiler-specific options are needed however, there is an "escape hatch" available. The developer can specify implementation-specific options and more generally there is a configuration mechanism to customise many aspects of how a package is built depending on the Haskell implementation, the Operating system, computer architecture and user-specified configuration flags.jDNjPNjjthjubeubcdocutils.nodes literal_block r)r}r(hXname: Foo version: 1.0 library build-depends: base >= 4 && < 5 exposed-modules: Foo extensions: ForeignFunctionInterface ghc-options: -Wall if os(windows) build-depends: Win32 >= 2.1 && < 2.6hjjDjEhU literal_blockrh}r(U xml:spacerUpreserverh]h]h]h]h]ujPM:jjth]rhXname: Foo version: 1.0 library build-depends: base >= 4 && < 5 exposed-modules: Foo extensions: ForeignFunctionInterface ghc-options: -Wall if os(windows) build-depends: Win32 >= 2.1 && < 2.6rr}r(hUhjubaubjn)r}r(hUhjjDjEhjqh}r(h]h]h]h]rU-example-a-package-containing-a-simple-libraryrah]rj}aujPMFjjth]r(h)r}r(hX.Example: A package containing a simple libraryrhjjDjEhhh}r(h]h]h]h]h]ujPMFjjth]rhX.Example: A package containing a simple libraryrr}r(hjjDNjPNjjthjubaubjZ)r}r(hX=The HUnit package contains a file ``HUnit.cabal`` containing:rhjjDjEhj]h}r(h]h]h]h]h]ujPMHjjth]r(hX"The HUnit package contains a file rr}r(hX"The HUnit package contains a file jDNjPNjjthjubj)r}r(hX``HUnit.cabal``h}r(h]h]h]h]h]uhjh]rhX HUnit.cabalrr}r(hX HUnit.cabalhjubahjubhX containing:rr}r(hX containing:jDNjPNjjthjubeubj)r}r(hXname: HUnit version: 1.1.1 synopsis: A unit testing framework for Haskell homepage: http://hunit.sourceforge.net/ category: Testing author: Dean Herington license: BSD3 license-file: LICENSE cabal-version: 1.12 build-type: Simple library build-depends: base >= 2 && < 4 exposed-modules: Test.HUnit.Base, Test.HUnit.Lang, Test.HUnit.Terminal, Test.HUnit.Text, Test.HUnit default-extensions: CPPhjjDjEhjh}r(jjh]h]h]h]h]ujPMLjjth]rhXname: HUnit version: 1.1.1 synopsis: A unit testing framework for Haskell homepage: http://hunit.sourceforge.net/ category: Testing author: Dean Herington license: BSD3 license-file: LICENSE cabal-version: 1.12 build-type: Simple library build-depends: base >= 2 && < 4 exposed-modules: Test.HUnit.Base, Test.HUnit.Lang, Test.HUnit.Terminal, Test.HUnit.Text, Test.HUnit default-extensions: CPPrr}r(hUhjubaubjZ)r}r(hXand the following ``Setup.hs``:rhjjDjEhj]h}r(h]h]h]h]h]ujPM]jjth]r(hXand the following rr}r(hXand the following jDNjPNjjthjubj)r}r(hX ``Setup.hs``h}r(h]h]h]h]h]uhjh]rhXSetup.hsrr}r(hXSetup.hshjubahjubhX:r}r(hX:jDNjPNjjthjubeubj)r}r(hX-import Distribution.Simple main = defaultMainhjjDjEhjh}r(UlinenosrUlanguagerXhaskelljjh]h]h]Uhighlight_argsr}h]h]ujPM_jjth]rhX-import Distribution.Simple main = defaultMainrr}r(hUhjubaubeubjn)r}r(hUhjjDjEhjqh}r(h]h]h]h]rU0example-a-package-containing-executable-programsrah]r jaujPMejjth]r (h)r }r (hX1Example: A package containing executable programsr hjjDjEhhh}r (h]h]h]h]h]ujPMejjth]r hX1Example: A package containing executable programsr r }r (hj jDNjPNjjthj ubaubj)r }r (hXname: TestPackage version: 0.0 synopsis: Small package with two programs author: Angela Author license: BSD3 build-type: Simple cabal-version: >= 1.8 executable program1 build-depends: HUnit >= 1.1.1 && < 1.2 main-is: Main.hs hs-source-dirs: prog1 executable program2 main-is: Main.hs build-depends: HUnit >= 1.1.1 && < 1.2 hs-source-dirs: prog2 other-modules: UtilshjjDjEhjh}r (jjh]h]h]h]h]ujPMijjth]r hXname: TestPackage version: 0.0 synopsis: Small package with two programs author: Angela Author license: BSD3 build-type: Simple cabal-version: >= 1.8 executable program1 build-depends: HUnit >= 1.1.1 && < 1.2 main-is: Main.hs hs-source-dirs: prog1 executable program2 main-is: Main.hs build-depends: HUnit >= 1.1.1 && < 1.2 hs-source-dirs: prog2 other-modules: Utilsr r }r (hUhj ubaubjZ)r }r (hX$with ``Setup.hs`` the same as above.r hjjDjEhj]h}r (h]h]h]h]h]ujPM|jjth]r (hXwith r r }r (hXwith jDNjPNjjthj ubj)r }r (hX ``Setup.hs``h}r (h]h]h]h]h]uhj h]r hXSetup.hsr r }r (hXSetup.hshj ubahjubhX the same as above.r r! }r" (hX the same as above.jDNjPNjjthj ubeubeubjeubjDjEhjqh}r# (h]r$ X?example: a package containing a library and executable programsr% ah]h]h]r& U>example-a-package-containing-a-library-and-executable-programsr' ah]ujPMjjth]r( (h)r) }r* (hX?Example: A package containing a library and executable programsr+ hjjDjEhhh}r, (h]h]h]h]h]ujPMjjth]r- hX?Example: A package containing a library and executable programsr. r/ }r0 (hj+ jDNjPNjjthj) ubaubj)r1 }r2 (hXname: TestPackage version: 0.0 synopsis: Package with library and two programs license: BSD3 author: Angela Author build-type: Simple cabal-version: >= 1.8 library build-depends: HUnit >= 1.1.1 && < 1.2 exposed-modules: A, B, C executable program1 main-is: Main.hs hs-source-dirs: prog1 other-modules: A, B executable program2 main-is: Main.hs hs-source-dirs: prog2 other-modules: A, C, UtilshjjDjEhjh}r3 (jjh]h]h]h]h]ujPMjjth]r4 hXname: TestPackage version: 0.0 synopsis: Package with library and two programs license: BSD3 author: Angela Author build-type: Simple cabal-version: >= 1.8 library build-depends: HUnit >= 1.1.1 && < 1.2 exposed-modules: A, B, C executable program1 main-is: Main.hs hs-source-dirs: prog1 other-modules: A, B executable program2 main-is: Main.hs hs-source-dirs: prog2 other-modules: A, C, Utilsr5 r6 }r7 (hUhj1 ubaubjZ)r8 }r9 (hXwith ``Setup.hs`` the same as above. Note that any library modules required (directly or indirectly) by an executable must be listed again.hjjDjEhj]h}r: (h]h]h]h]h]ujPMjjth]r; (hXwith r< r= }r> (hXwith jDNjPNjjthj8 ubj)r? }r@ (hX ``Setup.hs``h}rA (h]h]h]h]h]uhj8 h]rB hXSetup.hsrC rD }rE (hXSetup.hshj? ubahjubhXz the same as above. Note that any library modules required (directly or indirectly) by an executable must be listed again.rF rG }rH (hXz the same as above. Note that any library modules required (directly or indirectly) by an executable must be listed again.jDNjPNjjthj8 ubeubjZ)rI }rJ (hXThe trivial setup script used in these examples uses the *simple build infrastructure* provided by the Cabal library (see `Distribution.Simple <../release/cabal-latest/doc/API/Cabal/Distribution-Simple.html>`__). The simplicity lies in its interface rather that its implementation. It automatically handles preprocessing with standard preprocessors, and builds packages for all the Haskell implementations.hjjDjEhj]h}rK (h]h]h]h]h]ujPMjjth]rL (hX9The trivial setup script used in these examples uses the rM rN }rO (hX9The trivial setup script used in these examples uses the jDNjPNjjthjI ubj)rP }rQ (hX*simple build infrastructure*h}rR (h]h]h]h]h]uhjI h]rS hXsimple build infrastructurerT rU }rV (hXsimple build infrastructurehjP ubahjubhX$ provided by the Cabal library (see rW rX }rY (hX$ provided by the Cabal library (see jDNjPNjjthjI ubj!)rZ }r[ (hXX`Distribution.Simple <../release/cabal-latest/doc/API/Cabal/Distribution-Simple.html>`__h}r\ (UnameXDistribution.SimpleUrefurir] X>../release/cabal-latest/doc/API/Cabal/Distribution-Simple.htmlh]h]h]h]h]uhjI h]r^ hXDistribution.Simpler_ r` }ra (hXDistribution.SimplehjZ ubahj%ubhX). The simplicity lies in its interface rather that its implementation. It automatically handles preprocessing with standard preprocessors, and builds packages for all the Haskell implementations.rb rc }rd (hX). The simplicity lies in its interface rather that its implementation. It automatically handles preprocessing with standard preprocessors, and builds packages for all the Haskell implementations.jDNjPNjjthjI ubeubjZ)re }rf (hXThe simple build infrastructure can also handle packages where building is governed by system-dependent parameters, if you specify a little more (see the section on `system-dependent parameters`_). A few packages require `more elaborate solutions `_.hjjDjEhj]h}rg (h]h]h]h]h]ujPMjjth]rh (hXThe simple build infrastructure can also handle packages where building is governed by system-dependent parameters, if you specify a little more (see the section on ri rj }rk (hXThe simple build infrastructure can also handle packages where building is governed by system-dependent parameters, if you specify a little more (see the section on jDNjPNjjthje ubj!)rl }rm (hX`system-dependent parameters`_j$Khje hj%h}rn (UnameXsystem-dependent parametersh]h]h]h]h]j'Usystem-dependent-parametersro uh]rp hXsystem-dependent parametersrq rr }rs (hXsystem-dependent parametershjl ubaubhX). A few packages require rt ru }rv (hX). A few packages require jDNjPNjjthje ubj!)rw }rx (hX3`more elaborate solutions `_h}ry (UnameXmore elaborate solutionsj] Xmorecomplexpackagesrz h]h]h]h]h]uhje h]r{ hXmore elaborate solutionsr| r} }r~ (hXmore elaborate solutionshjw ubahj%ubje)r }r (hX jKhje hjdh}r (Urefurijz h]r Umore-elaborate-solutionsr ah]h]h]h]r jauh]ubhX.r }r (hX.jDNjPNjjthje ubeubjeubjDjEhjdh}r (h]h]h]h]h]j'jUujPMjjth]ubshjqh}r (h]h]h]h]r (j(jUeh]r (jjTeujPMjjtUexpect_referenced_by_idr }r jUjsh]r (h)r }r (hXPackage descriptionsr hjjDjEhhh}r (h]h]h]h]h]ujPMjjth]r hXPackage descriptionsr r }r (hj jDNjPNjjthj ubaubjZ)r }r (hXuThe package description file must have a name ending in "``.cabal``". It must be a Unicode text file encoded using valid UTF-8. There must be exactly one such file in the directory. The first part of the name is usually the package name, and some of the tools that operate on Cabal packages require this; specifically, Hackage rejects packages which don't follow this rule.hjjDjEhj]h}r (h]h]h]h]h]ujPMjjth]r (hX;The package description file must have a name ending in “r r }r (hX9The package description file must have a name ending in "jDNjPNjjthj ubj)r }r (hX ``.cabal``h}r (h]h]h]h]h]uhj h]r hX.cabalr r }r (hX.cabalhj ubahjubhX6”. It must be a Unicode text file encoded using valid UTF-8. There must be exactly one such file in the directory. The first part of the name is usually the package name, and some of the tools that operate on Cabal packages require this; specifically, Hackage rejects packages which don’t follow this rule.r r }r (hX2". It must be a Unicode text file encoded using valid UTF-8. There must be exactly one such file in the directory. The first part of the name is usually the package name, and some of the tools that operate on Cabal packages require this; specifically, Hackage rejects packages which don't follow this rule.jDNjPNjjthj ubeubjZ)r }r (hX~In the package description file, lines whose first non-whitespace characters are "``--``" are treated as comments and ignored.hjjDjEhj]h}r (h]h]h]h]h]ujPMjjth]r (hXTIn the package description file, lines whose first non-whitespace characters are “r r }r (hXRIn the package description file, lines whose first non-whitespace characters are "jDNjPNjjthj ubj)r }r (hX``--``h}r (h]h]h]h]h]uhj h]r hX--r r }r (hX--hj ubahjubhX(” are treated as comments and ignored.r r }r (hX&" are treated as comments and ignored.jDNjPNjjthj ubeubjZ)r }r (hXWThis file should contain of a number global property descriptions and several sections.r hjjDjEhj]h}r (h]h]h]h]h]ujPMjjth]r hXWThis file should contain of a number global property descriptions and several sections.r r }r (hj jDNjPNjjthj ubaubcdocutils.nodes bullet_list r )r }r (hUhjjDjEhU bullet_listr h}r (Ubulletr X-h]h]h]h]h]ujPMjjth]r (cdocutils.nodes list_item r )r }r (hX_The `package properties`_ describe the package as a whole, such as name, license, author, etc. hj jDjEhU list_itemr h}r (h]h]h]h]h]ujPNjjth]r jZ)r }r (hX^The `package properties`_ describe the package as a whole, such as name, license, author, etc.hj jDjEhj]h}r (h]h]h]h]h]ujPMh]r (hXThe r r }r (hXThe hj ubj!)r }r (hX`package properties`_j$Khj hj%h}r (UnameXpackage propertiesh]h]h]h]h]j'j|uh]r hXpackage propertiesr r }r (hXpackage propertieshj ubaubhXE describe the package as a whole, such as name, license, author, etc.r r }r (hXE describe the package as a whole, such as name, license, author, etc.hj ubeubaubj )r }r (hXOptionally, a number of *configuration flags* can be declared. These can be used to enable or disable certain features of a package. (see the section on `configurations`_). hj jDjEhj h}r (h]h]h]h]h]ujPNjjth]r jZ)r }r (hXOptionally, a number of *configuration flags* can be declared. These can be used to enable or disable certain features of a package. (see the section on `configurations`_).hj jDjEhj]h}r (h]h]h]h]h]ujPMh]r (hXOptionally, a number of r r }r (hXOptionally, a number of hj ubj)r }r (hX*configuration flags*h}r (h]h]h]h]h]uhj h]r hXconfiguration flagsr r }r (hXconfiguration flagshj ubahjubhXl can be declared. These can be used to enable or disable certain features of a package. (see the section on r r }r (hXl can be declared. These can be used to enable or disable certain features of a package. (see the section on hj ubj!)r }r (hX`configurations`_j$Khj hj%h}r (UnameXconfigurationsr h]h]h]h]h]j'Uconfigurationsr uh]r hXconfigurationsr r }r (hj hj ubaubhX).r r }r (hX).hj ubeubaubj )r }r (hXfThe (optional) library section specifies the `library`_ properties and relevant `build information`_. hj jDjEhj h}r (h]h]h]h]h]ujPNjjth]r jZ)r }r (hXeThe (optional) library section specifies the `library`_ properties and relevant `build information`_.hj jDjEhj]h}r (h]h]h]h]h]ujPMh]r (hX-The (optional) library section specifies the r r }r (hX-The (optional) library section specifies the hj ubj!)r }r (hX `library`_j$Khj hj%h}r (UnameXlibraryr h]h]h]h]h]j'juh]r hXlibraryr r }r (hj hj ubaubhX properties and relevant r r }r (hX properties and relevant hj ubj!)r }r (hX`build information`_j$Khj hj%h}r (UnameXbuild informationh]h]h]h]h]j'jouh]r hXbuild informationr r }r (hXbuild informationhj ubaubhX.r }r (hX.hj ubeubaubj )r }r (hXFollowing is an arbitrary number of executable sections which describe an executable program and relevant `build information`_. hj jDjEhj h}r (h]h]h]h]h]ujPNjjth]r! jZ)r" }r# (hXFollowing is an arbitrary number of executable sections which describe an executable program and relevant `build information`_.hj jDjEhj]h}r$ (h]h]h]h]h]ujPMh]r% (hXjFollowing is an arbitrary number of executable sections which describe an executable program and relevant r& r' }r( (hXjFollowing is an arbitrary number of executable sections which describe an executable program and relevant hj" ubj!)r) }r* (hX`build information`_j$Khj" hj%h}r+ (UnameXbuild informationh]h]h]h]h]j'jouh]r, hXbuild informationr- r. }r/ (hXbuild informationhj) ubaubhX.r0 }r1 (hX.hj" ubeubaubeubjZ)r2 }r3 (hXEach section consists of a number of property descriptions in the form of field/value pairs, with a syntax roughly like mail message headers.r4 hjjDjEhj]h}r5 (h]h]h]h]h]ujPMjjth]r6 hXEach section consists of a number of property descriptions in the form of field/value pairs, with a syntax roughly like mail message headers.r7 r8 }r9 (hj4 jDNjPNjjthj2 ubaubj )r: }r; (hUhjjDjEhj h}r< (j X-h]h]h]h]h]ujPMjjth]r= (j )r> }r? (hXLCase is not significant in field names, but is significant in field values. hj: jDjEhj h}r@ (h]h]h]h]h]ujPNjjth]rA jZ)rB }rC (hXKCase is not significant in field names, but is significant in field values.rD hj> jDjEhj]h}rE (h]h]h]h]h]ujPMh]rF hXKCase is not significant in field names, but is significant in field values.rG rH }rI (hjD hjB ubaubaubj )rJ }rK (hXLTo continue a field value, indent the next line relative to the field name. hj: jDjEhj h}rL (h]h]h]h]h]ujPNjjth]rM jZ)rN }rO (hXKTo continue a field value, indent the next line relative to the field name.rP hjJ jDjEhj]h}rQ (h]h]h]h]h]ujPMh]rR hXKTo continue a field value, indent the next line relative to the field name.rS rT }rU (hjP hjN ubaubaubj )rV }rW (hXeField names may be indented, but all field values in the same section must use the same indentation. hj: jDjEhj h}rX (h]h]h]h]h]ujPNjjth]rY jZ)rZ }r[ (hXdField names may be indented, but all field values in the same section must use the same indentation.r\ hjV jDjEhj]h}r] (h]h]h]h]h]ujPMh]r^ hXdField names may be indented, but all field values in the same section must use the same indentation.r_ r` }ra (hj\ hjZ ubaubaubj )rb }rc (hXhTabs are *not* allowed as indentation characters due to a missing standard interpretation of tab width. hj: jDjEhj h}rd (h]h]h]h]h]ujPNjjth]re jZ)rf }rg (hXgTabs are *not* allowed as indentation characters due to a missing standard interpretation of tab width.hjb jDjEhj]h}rh (h]h]h]h]h]ujPMh]ri (hX Tabs are rj rk }rl (hX Tabs are hjf ubj)rm }rn (hX*not*h}ro (h]h]h]h]h]uhjf h]rp hXnotrq rr }rs (hXnothjm ubahjubhXY allowed as indentation characters due to a missing standard interpretation of tab width.rt ru }rv (hXY allowed as indentation characters due to a missing standard interpretation of tab width.hjf ubeubaubj )rw }rx (hXPBefore Cabal 3.0, to get a blank line in a field value, use an indented "``.``" hj: jDjEhj h}ry (h]h]h]h]h]ujPNjjth]rz jZ)r{ }r| (hXOBefore Cabal 3.0, to get a blank line in a field value, use an indented "``.``"hjw jDjEhj]h}r} (h]h]h]h]h]ujPMh]r~ (hXKBefore Cabal 3.0, to get a blank line in a field value, use an indented “r r }r (hXIBefore Cabal 3.0, to get a blank line in a field value, use an indented "hj{ ubj)r }r (hX``.``h}r (h]h]h]h]h]uhj{ h]r hX.r }r (hX.hj ubahjubhX”r }r (hX"hj{ ubeubaubeubjZ)r }r (hXBThe syntax of the value depends on the field. Field types include:r hjjDjEhj]h}r (h]h]h]h]h]ujPMjjth]r hXBThe syntax of the value depends on the field. Field types include:r r }r (hj jDNjPNjjthj ubaubj)r }r (hUhjjDjEhjh}r (h]h]h]h]h]ujPNjjth]r (j)r }r (hXk*token*, *filename*, *directory* Either a sequence of one or more non-space non-comma characters, or a quoted string in Haskell 98 lexical syntax. The latter can be used for escaping whitespace, for example: ``ghc-options: -Wall "-with-rtsopts=-T -I1"``. Unless otherwise stated, relative filenames and directories are interpreted from the package root directory.hj jDjEhjh}r (h]h]h]h]h]ujPMh]r (j)r }r (hX *token*, *filename*, *directory*r hj jDjEhjh}r (h]h]h]h]h]ujPMh]r (j)r }r (hX*token*h}r (h]h]h]h]h]uhj h]r hXtokenr r }r (hXtokenhj ubahjubhX, r r }r (hX, r hj ubj)r }r (hX *filename*h}r (h]h]h]h]h]uhj h]r hXfilenamer r }r (hXfilenamehj ubahjubhX, r r }r (hj hj ubj)r }r (hX *directory*h}r (h]h]h]h]h]uhj h]r hX directoryr r }r (hX directoryhj ubahjubeubj)r }r (hUh}r (h]h]h]h]h]uhj h]r jZ)r }r (hXJEither a sequence of one or more non-space non-comma characters, or a quoted string in Haskell 98 lexical syntax. The latter can be used for escaping whitespace, for example: ``ghc-options: -Wall "-with-rtsopts=-T -I1"``. Unless otherwise stated, relative filenames and directories are interpreted from the package root directory.hj jDjEhj]h}r (h]h]h]h]h]ujPMh]r (hXEither a sequence of one or more non-space non-comma characters, or a quoted string in Haskell 98 lexical syntax. The latter can be used for escaping whitespace, for example: r r }r (hXEither a sequence of one or more non-space non-comma characters, or a quoted string in Haskell 98 lexical syntax. The latter can be used for escaping whitespace, for example: hj ubj)r }r (hX-``ghc-options: -Wall "-with-rtsopts=-T -I1"``h}r (h]h]h]h]h]uhj h]r hX)ghc-options: -Wall "-with-rtsopts=-T -I1"r r }r (hX)ghc-options: -Wall "-with-rtsopts=-T -I1"hj ubahjubhXn. Unless otherwise stated, relative filenames and directories are interpreted from the package root directory.r r }r (hXn. Unless otherwise stated, relative filenames and directories are interpreted from the package root directory.hj ubeubahj/ubeubj)r }r (hX@*freeform*, *URL*, *address* An arbitrary, uninterpreted string.hj jDjEhjh}r (h]h]h]h]h]ujPMjjth]r (j)r }r (hX*freeform*, *URL*, *address*r hj jDjEhjh}r (h]h]h]h]h]ujPMh]r (j)r }r (hX *freeform*h}r (h]h]h]h]h]uhj h]r hXfreeformr r }r (hXfreeformhj ubahjubhX, r r }r (hX, r hj ubj)r }r (hX*URL*h}r (h]h]h]h]h]uhj h]r hXURLr r }r (hXURLhj ubahjubhX, r r }r (hj hj ubj)r }r (hX *address*h}r (h]h]h]h]h]uhj h]r hXaddressr r }r (hXaddresshj ubahjubeubj)r }r (hUh}r (h]h]h]h]h]uhj h]r jZ)r }r (hX#An arbitrary, uninterpreted string.r hj jDjEhj]h}r (h]h]h]h]h]ujPMh]r hX#An arbitrary, uninterpreted string.r r }r (hj hj ubaubahj/ubeubj)r }r (hXL*identifier* A letter followed by zero or more alphanumerics or underscores.hj jDjEhjh}r (h]h]h]h]h]ujPMjjth]r (j)r }r (hX *identifier*r hj jDjEhjh}r (h]h]h]h]h]ujPMh]r j)r }r (hj h}r (h]h]h]h]h]uhj h]r hX identifierr r }r (hX identifierhj ubahjubaubj)r }r (hUh}r (h]h]h]h]h]uhj h]r jZ)r }r (hX?A letter followed by zero or more alphanumerics or underscores.r hj jDjEhj]h}r (h]h]h]h]h]ujPMh]r hX?A letter followed by zero or more alphanumerics or underscores.r r }r (hj hj ubaubahj/ubeubj)r }r (hX*compiler* A compiler flavor (one of: ``GHC``, ``UHC`` or ``LHC``) followed by a version range. For example, ``GHC ==6.10.3``, or ``LHC >=0.6 && <0.8``. hj jDjEhjh}r (h]h]h]h]h]ujPMjjth]r (j)r! }r" (hX *compiler*r# hj jDjEhjh}r$ (h]h]h]h]h]ujPMh]r% j)r& }r' (hj# h}r( (h]h]h]h]h]uhj! h]r) hXcompilerr* r+ }r, (hXcompilerhj& ubahjubaubj)r- }r. (hUh}r/ (h]h]h]h]h]uhj h]r0 jZ)r1 }r2 (hXA compiler flavor (one of: ``GHC``, ``UHC`` or ``LHC``) followed by a version range. For example, ``GHC ==6.10.3``, or ``LHC >=0.6 && <0.8``.hj- jDjEhj]h}r3 (h]h]h]h]h]ujPMh]r4 (hXA compiler flavor (one of: r5 r6 }r7 (hXA compiler flavor (one of: hj1 ubj)r8 }r9 (hX``GHC``h}r: (h]h]h]h]h]uhj1 h]r; hXGHCr< r= }r> (hXGHChj8 ubahjubhX, r? r@ }rA (hX, hj1 ubj)rB }rC (hX``UHC``h}rD (h]h]h]h]h]uhj1 h]rE hXUHCrF rG }rH (hXUHChjB ubahjubhX or rI rJ }rK (hX or hj1 ubj)rL }rM (hX``LHC``h}rN (h]h]h]h]h]uhj1 h]rO hXLHCrP rQ }rR (hXLHChjL ubahjubhX,) followed by a version range. For example, rS rT }rU (hX,) followed by a version range. For example, hj1 ubj)rV }rW (hX``GHC ==6.10.3``h}rX (h]h]h]h]h]uhj1 h]rY hX GHC ==6.10.3rZ r[ }r\ (hX GHC ==6.10.3hjV ubahjubhX, or r] r^ }r_ (hX, or hj1 ubj)r` }ra (hX``LHC >=0.6 && <0.8``h}rb (h]h]h]h]h]uhj1 h]rc hXLHC >=0.6 && <0.8rd re }rf (hXLHC >=0.6 && <0.8hj` ubahjubhX.rg }rh (hX.hj1 ubeubahj/ubeubeubjn)ri }rj (hUhjjDjEhjqh}rk (h]h]h]h]rl Umodules-and-preprocessorsrm ah]rn jaujPMjjth]ro (h)rp }rq (hXModules and preprocessorsrr hji jDjEhhh}rs (h]h]h]h]h]ujPMjjth]rt hXModules and preprocessorsru rv }rw (hjr jDNjPNjjthjp ubaubjZ)rx }ry (hX<Haskell module names listed in the :pkg-field:`library:exposed-modules` and :pkg-field:`library:other-modules` fields may correspond to Haskell source files, i.e. with names ending in "``.hs``" or "``.lhs``", or to inputs for various Haskell preprocessors. The simple build infrastructure understands the extensions:hji jDjEhj]h}rz (h]h]h]h]h]ujPMjjth]r{ (hX#Haskell module names listed in the r| r} }r~ (hX#Haskell module names listed in the jDNjPNjjthjx ubjM)r }r (hX$:pkg-field:`library:exposed-modules`hjx jDjEhjPh}r (UreftypeX pkg-fieldjRjSXexposed-modulesU refdomainXcabalr h]h]U refexplicith]h]h]jVj jlXlibraryujPMh]r j)r }r (hXlibrary:exposed-modulesh}r (h]h]r (j]j Xcabal-pkg-fieldr eh]h]h]uhj h]r hXlibrary:exposed-modulesr r }r (hUhj ubahjubaubhX and r r }r (hX and jDNjPNjjthjx ubjM)r }r (hX":pkg-field:`library:other-modules`hjx jDjEhjPh}r (UreftypeX pkg-fieldjRjSX other-modulesU refdomainXcabalr h]h]U refexplicith]h]h]jVj jlXlibraryujPMh]r j)r }r (hXlibrary:other-modulesh}r (h]h]r (j]j Xcabal-pkg-fieldr eh]h]h]uhj h]r hXlibrary:other-modulesr r }r (hUhj ubahjubaubhXM fields may correspond to Haskell source files, i.e. with names ending in “r r }r (hXK fields may correspond to Haskell source files, i.e. with names ending in "jDNjPNjjthjx ubj)r }r (hX``.hs``h}r (h]h]h]h]h]uhjx h]r hX.hsr r }r (hX.hshj ubahjubhX ” or “r r }r (hX" or "jDNjPNjjthjx ubj)r }r (hX``.lhs``h}r (h]h]h]h]h]uhjx h]r hX.lhsr r }r (hX.lhshj ubahjubhXp”, or to inputs for various Haskell preprocessors. The simple build infrastructure understands the extensions:r r }r (hXn", or to inputs for various Haskell preprocessors. The simple build infrastructure understands the extensions:jDNjPNjjthjx ubeubj )r }r (hUhji jDjEhj h}r (j X-h]h]h]h]h]ujPMjjth]r (j )r }r (hX"``.gc`` (:hackage-pkg:`greencard`)r hj jDjEhj h}r (h]h]h]h]h]ujPNjjth]r jZ)r }r (hj hj jDjEhj]h}r (h]h]h]h]h]ujPMh]r (j)r }r (hX``.gc``h}r (h]h]h]h]h]uhj h]r hX.gcr r }r (hX.gchj ubahjubhX (r r }r (hX (hj ubj!)r }r (hX greencardr h}r (UrefuriX,http://hackage.haskell.org/package/greencardh]h]h]h]h]Uinternaluhj h]r hX greencardr r }r (hj hj ubahj%ubhX)r }r (hX)hj ubeubaubj )r }r (hX``.chs`` (:hackage-pkg:`c2hs`)r hj jDjEhj h}r (h]h]h]h]h]ujPNjjth]r jZ)r }r (hj hj jDjEhj]h}r (h]h]h]h]h]ujPMh]r (j)r }r (hX``.chs``h}r (h]h]h]h]h]uhj h]r hX.chsr r }r (hX.chshj ubahjubhX (r r }r (hX (hj ubj!)r }r (hXc2hsr h}r (UrefuriX'http://hackage.haskell.org/package/c2hsh]h]h]h]h]Uinternaluhj h]r hXc2hsr r }r (hj hj ubahj%ubhX)r }r (hX)hj ubeubaubj )r }r (hX ``.hsc`` (:hackage-pkg:`hsc2hs`)r hj jDjEhj h}r (h]h]h]h]h]ujPNjjth]r jZ)r }r (hj hj jDjEhj]h}r (h]h]h]h]h]ujPMh]r (j)r }r (hX``.hsc``h}r (h]h]h]h]h]uhj h]r hX.hscr r }r (hX.hschj ubahjubhX (r r }r (hX (hj ubj!)r }r (hXhsc2hsr h}r (UrefuriX)http://hackage.haskell.org/package/hsc2hsh]h]h]h]h]Uinternaluhj h]r hXhsc2hsr r }r (hj hj ubahj%ubhX)r }r (hX)hj ubeubaubj )r }r (hX``.y`` and ``.ly`` (happy_)r hj jDjEhj h}r (h]h]h]h]h]ujPNjjth]r jZ)r }r (hj hj jDjEhj]h}r (h]h]h]h]h]ujPMh]r (j)r }r (hX``.y``h}r (h]h]h]h]h]uhj h]r hX.yr r }r (hX.yhj ubahjubhX and r r! }r" (hX and hj ubj)r# }r$ (hX``.ly``h}r% (h]h]h]h]h]uhj h]r& hX.lyr' r( }r) (hX.lyhj# ubahjubhX (r* r+ }r, (hX (hj ubj!)r- }r. (hXhappy_j$Khj hj%h}r/ (UnameXhappyr0 j] Xhttp://www.haskell.org/happy/r1 h]h]h]h]h]uh]r2 hXhappyr3 r4 }r5 (hj0 hj- ubaubhX)r6 }r7 (hX)hj ubeubaubj )r8 }r9 (hX``.x`` (alex_)r: hj jDjEhj h}r; (h]h]h]h]h]ujPNjjth]r< jZ)r= }r> (hj: hj8 jDjEhj]h}r? (h]h]h]h]h]ujPMh]r@ (j)rA }rB (hX``.x``h}rC (h]h]h]h]h]uhj= h]rD hX.xrE rF }rG (hX.xhjA ubahjubhX (rH rI }rJ (hX (hj= ubj!)rK }rL (hXalex_j$Khj= hj%h}rM (UnameXalexrN j] Xhttp://www.haskell.org/alex/rO h]h]h]h]h]uh]rP hXalexrQ rR }rS (hjN hjK ubaubhX)rT }rU (hX)hj= ubeubaubj )rV }rW (hX``.cpphs`` (cpphs_) hj jDjEhj h}rX (h]h]h]h]h]ujPNjjth]rY jZ)rZ }r[ (hX``.cpphs`` (cpphs_)hjV jDjEhj]h}r\ (h]h]h]h]h]ujPMh]r] (j)r^ }r_ (hX ``.cpphs``h}r` (h]h]h]h]h]uhjZ h]ra hX.cpphsrb rc }rd (hX.cpphshj^ ubahjubhX (re rf }rg (hX (hjZ ubj!)rh }ri (hXcpphs_j$KhjZ hj%h}rj (UnameXcpphsrk j] X"http://projects.haskell.org/cpphs/rl h]h]h]h]h]uh]rm hXcpphsrn ro }rp (hjk hjh ubaubhX)rq }rr (hX)hjZ ubeubaubeubjZ)rs }rt (hXWhen building, Cabal will automatically run the appropriate preprocessor and compile the Haskell module it produces. For the ``c2hs`` and ``hsc2hs`` preprocessors, Cabal will also automatically add, compile and link any C sources generated by the preprocessor (produced by ``hsc2hs``'s ``#def`` feature or ``c2hs``'s auto-generated wrapper functions). Dependencies on pre-processors are specified via the :pkg-field:`build-tools` or :pkg-field:`build-tool-depends` fields.hji jDjEhj]h}ru (h]h]h]h]h]ujPMjjth]rv (hX}When building, Cabal will automatically run the appropriate preprocessor and compile the Haskell module it produces. For the rw rx }ry (hX}When building, Cabal will automatically run the appropriate preprocessor and compile the Haskell module it produces. For the jDNjPNjjthjs ubj)rz }r{ (hX``c2hs``h}r| (h]h]h]h]h]uhjs h]r} hXc2hsr~ r }r (hXc2hshjz ubahjubhX and r r }r (hX and jDNjPNjjthjs ubj)r }r (hX ``hsc2hs``h}r (h]h]h]h]h]uhjs h]r hXhsc2hsr r }r (hXhsc2hshj ubahjubhX} preprocessors, Cabal will also automatically add, compile and link any C sources generated by the preprocessor (produced by r r }r (hX} preprocessors, Cabal will also automatically add, compile and link any C sources generated by the preprocessor (produced by jDNjPNjjthjs ubj)r }r (hX ``hsc2hs``h}r (h]h]h]h]h]uhjs h]r hXhsc2hsr r }r (hXhsc2hshj ubahjubhX’s r r }r (hX's jDNjPNjjthjs ubj)r }r (hX``#def``h}r (h]h]h]h]h]uhjs h]r hX#defr r }r (hX#defhj ubahjubhX feature or r r }r (hX feature or jDNjPNjjthjs ubj)r }r (hX``c2hs``h}r (h]h]h]h]h]uhjs h]r hXc2hsr r }r (hXc2hshj ubahjubhX]’s auto-generated wrapper functions). Dependencies on pre-processors are specified via the r r }r (hX['s auto-generated wrapper functions). Dependencies on pre-processors are specified via the jDNjPNjjthjs ubjM)r }r (hX:pkg-field:`build-tools`hjs jDjEhjPh}r (UreftypeX pkg-fieldjRjSX build-toolsr U refdomainXcabalr h]h]U refexplicith]h]h]jVj jlNujPMh]r j)r }r (hj h}r (h]h]r (j]j Xcabal-pkg-fieldr eh]h]h]uhj h]r hX build-toolsr r }r (hUhj ubahjubaubhX or r r }r (hX or jDNjPNjjthjs ubjM)r }r (hX:pkg-field:`build-tool-depends`hjs jDjEhjPh}r (UreftypeX pkg-fieldjRjSXbuild-tool-dependsr U refdomainXcabalr h]h]U refexplicith]h]h]jVj jlNujPMh]r j)r }r (hj h}r (h]h]r (j]j Xcabal-pkg-fieldr eh]h]h]uhj h]r hXbuild-tool-dependsr r }r (hUhj ubahjubaubhX fields.r r }r (hX fields.jDNjPNjjthjs ubeubjZ)r }r (hXSome fields take lists of values, which are optionally separated by commas, except for the :pkg-field:`build-depends` field, where the commas are mandatory.hji jDjEhj]h}r (h]h]h]h]h]ujPMjjth]r (hX[Some fields take lists of values, which are optionally separated by commas, except for the r r }r (hX[Some fields take lists of values, which are optionally separated by commas, except for the jDNjPNjjthj ubjM)r }r (hX:pkg-field:`build-depends`hj jDjEhjPh}r (UreftypeX pkg-fieldjRjSX build-dependsr U refdomainXcabalr h]h]U refexplicith]h]h]jVj jlNujPMh]r j)r }r (hj h}r (h]h]r (j]j Xcabal-pkg-fieldr eh]h]h]uhj h]r hX build-dependsr r }r (hUhj ubahjubaubhX' field, where the commas are mandatory.r r }r (hX' field, where the commas are mandatory.jDNjPNjjthj ubeubjZ)r }r (hXvSome fields are marked as required. All others are optional, and unless otherwise specified have empty default values.r hji jDjEhj]h}r (h]h]h]h]h]ujPMjjth]r hXvSome fields are marked as required. All others are optional, and unless otherwise specified have empty default values.r r }r (hj jDNjPNjjthj ubaubeubjn)r }r (hUjKhjjDjEhjqh}r (h]h]h]h]r j|ah]r jaujPM jjth]r (h)r }r (hXPackage propertiesr hj jDjEhhh}r (h]h]h]h]h]ujPM jjth]r hXPackage propertiesr r }r (hj jDNjPNjjthj ubaubjZ)r }r (hXeThese fields may occur in the first top-level properties section and describe the package as a whole:r hj jDjEhj]h}r (h]h]h]h]h]ujPM jjth]r hXeThese fields may occur in the first top-level properties section and describe the package as a whole:r r }r (hj jDNjPNjjthj ubaubcsphinx.addnodes index r )r }r (hUhj jDNhjnh}r (h]h]h]h]h]Uentries]ujPNjjth]ubjk)r }r (hUhj jDNhUdescr h}r (Unoindexr Udomainr Xcabalh]h]h]h]h]Uobjtyper X pkg-fieldr Udesctyper j ujPNjjth]r (csphinx.addnodes desc_signature r )r }r (hXname: package-name (required)hj jDjEhUdesc_signaturer h}r (h]r jxah]h]h]h]Ufirstr ujPM)jjth]r (j )r }r (hUhj jDjEhjnh}r (h]h]h]h]h]Uentries]r (Upairr! Xname; package.cabal fieldjxUNtr" aujPM)jjth]ubcsphinx.addnodes desc_name r# )r$ }r% (hjwhj jDjEhU desc_namer& h}r' (jjh]h]h]h]h]ujPM)jjth]r( hXnamer) r* }r+ (hUjDNjPNjjthj$ ubaubcsphinx.addnodes desc_addname r, )r- }r. (hU: r/ hj jDjEhU desc_addnamer0 h}r1 (jjh]h]h]h]h]ujPM)jjth]r2 hX: r3 r4 }r5 (hUjDNjPNjjthj- ubaubcsphinx.addnodes desc_annotation r6 )r7 }r8 (hXpackage-name (required)hj jDjEhUdesc_annotationr9 h}r: (jjh]h]h]h]h]ujPM)jjth]r; hXpackage-name (required)r< r= }r> (hUjDNjPNjjthj7 ubaubeubjh)r? }r@ (hUhj jDjEhU desc_contentrA h}rB (h]h]h]h]h]ujPM)jjth]rC (jZ)rD }rE (hX;The unique name of the package, without the version number.rF hj? jDjEhj]h}rG (h]h]h]h]h]ujPMjjth]rH hX;The unique name of the package, without the version number.rI rJ }rK (hjF jDNjPNjjthjD ubaubjZ)rL }rM (hXAs pointed out in the section on `package descriptions`_, some tools require the package-name specified for this field to match the package description's file-name :file:`{package-name}.cabal`.hj? jDjEhj]h}rN (h]h]h]h]h]ujPMjjth]rO (hX!As pointed out in the section on rP rQ }rR (hX!As pointed out in the section on jDNjPNjjthjL ubj!)rS }rT (hX`package descriptions`_j$KhjL hj%h}rU (UnameXpackage descriptionsh]h]h]h]h]j'j(uh]rV hXpackage descriptionsrW rX }rY (hXpackage descriptionshjS ubaubhXn, some tools require the package-name specified for this field to match the package description’s file-name rZ r[ }r\ (hXl, some tools require the package-name specified for this field to match the package description's file-name jDNjPNjjthjL ubj)r] }r^ (hXpackage-name.cabalh}r_ (h]h]h]h]r` Xfilera aUroleja h]uhjL h]rb (j)rc }rd (hX{package-name}.cabalh}re (h]h]h]h]h]uhj] h]rf hX package-namerg rh }ri (hUhjc ubahjubhX.cabalrj rk }rl (hX.cabalhj] ubehjubhX.rm }rn (hX.jDNjPNjjthjL ubeubjZ)ro }rp (hXPackage names are case-sensitive and must match the regular expression (i.e. alphanumeric "words" separated by dashes; each alphanumeric word must contain at least one letter): ``[[:digit:]]*[[:alpha:]][[:alnum:]]*(-[[:digit:]]*[[:alpha:]][[:alnum:]]*)*``.hj? jDjEhj]h}rq (h]h]h]h]h]ujPMjjth]rr (hXPackage names are case-sensitive and must match the regular expression (i.e. alphanumeric “words” separated by dashes; each alphanumeric word must contain at least one letter): rs rt }ru (hXPackage names are case-sensitive and must match the regular expression (i.e. alphanumeric "words" separated by dashes; each alphanumeric word must contain at least one letter): jDNjPNjjthjo ubj)rv }rw (hXN``[[:digit:]]*[[:alpha:]][[:alnum:]]*(-[[:digit:]]*[[:alpha:]][[:alnum:]]*)*``h}rx (h]h]h]h]h]uhjo h]ry hXJ[[:digit:]]*[[:alpha:]][[:alnum:]]*(-[[:digit:]]*[[:alpha:]][[:alnum:]]*)*rz r{ }r| (hXJ[[:digit:]]*[[:alpha:]][[:alnum:]]*(-[[:digit:]]*[[:alpha:]][[:alnum:]]*)*hjv ubahjubhX.r} }r~ (hX.jDNjPNjjthjo ubeubjZ)r }r (hXOr, expressed in ABNF_:hj? jDjEhj]h}r (h]h]h]h]h]ujPMjjth]r (hXOr, expressed in r r }r (hXOr, expressed in jDNjPNjjthj ubj!)r }r (hXABNF_j$Khj hj%h}r (UnameXABNFr j] X#https://tools.ietf.org/html/rfc5234r h]h]h]h]h]uh]r hXABNFr r }r (hj hj ubaubhX:r }r (hX:jDNjPNjjthj ubeubj)r }r (hXpackage-name = package-name-part *("-" package-name-part) package-name-part = *DIGIT UALPHA *UALNUM UALNUM = UALPHA / DIGIT UALPHA = ... ; set of alphabetic Unicode code-pointshj? jDjEhjh}r (jjXabnfjjh]h]h]j}h]h]ujPMjjth]r hXpackage-name = package-name-part *("-" package-name-part) package-name-part = *DIGIT UALPHA *UALNUM UALNUM = UALPHA / DIGIT UALPHA = ... ; set of alphabetic Unicode code-pointsr r }r (hUhj ubaubcdocutils.nodes note r )r }r (hX4Hackage restricts package names to the ASCII subset.r hj? jDjEhUnoter h}r (h]h]h]h]h]ujPNjjth]r jZ)r }r (hj hj jDjEhj]h}r (h]h]h]h]h]ujPM(h]r hX4Hackage restricts package names to the ASCII subset.r r }r (hj hj ubaubaubeubeubj )r }r (hUhj jDNhjnh}r (h]h]h]h]h]Uentries]ujPNjjth]ubjk)r }r (hUhj jDNhj h}r (j j Xcabalh]h]h]h]h]j X pkg-fieldr j j ujPNjjth]r (j )r }r (hXversion: numbers (required)hj jDjEhj h}r (h]r jah]h]h]h]j ujPM3jjth]r (j )r }r (hUhj jDjEhjnh}r (h]h]h]h]h]Uentries]r (j! Xversion; package.cabal fieldjUNtr aujPM3jjth]ubj# )r }r (hjhj jDjEhj& h}r (jjh]h]h]h]h]ujPM3jjth]r hXversionr r }r (hUjDNjPNjjthj ubaubj, )r }r (hj/ hj jDjEhj0 h}r (jjh]h]h]h]h]ujPM3jjth]r hX: r r }r (hUjDNjPNjjthj ubaubj6 )r }r (hXnumbers (required)hj jDjEhj9 h}r (jjh]h]h]h]h]ujPM3jjth]r hXnumbers (required)r r }r (hUjDNjPNjjthj ubaubeubjh)r }r (hUhj jDjEhjA h}r (h]h]h]h]h]ujPM3jjth]r (jZ)r }r (hXThe package version number, usually consisting of a sequence of natural numbers separated by dots, i.e. as the regular expression ``[0-9]+([.][0-9]+)*`` or expressed in ABNF_:hj jDjEhj]h}r (h]h]h]h]h]ujPM,jjth]r (hXThe package version number, usually consisting of a sequence of natural numbers separated by dots, i.e. as the regular expression r r }r (hXThe package version number, usually consisting of a sequence of natural numbers separated by dots, i.e. as the regular expression jDNjPNjjthj ubj)r }r (hX``[0-9]+([.][0-9]+)*``h}r (h]h]h]h]h]uhj h]r hX[0-9]+([.][0-9]+)*r r }r (hX[0-9]+([.][0-9]+)*hj ubahjubhX or expressed in r r }r (hX or expressed in jDNjPNjjthj ubj!)r }r (hXABNF_j$Khj hj%h}r (UnameXABNFr j] j h]h]h]h]h]uh]r hXABNFr r }r (hj hj ubaubhX:r }r (hX:jDNjPNjjthj ubeubj)r }r (hX(package-version = 1*DIGIT *("." 1*DIGIT)hj jDjEhjh}r (jjXabnfjjh]h]h]j}h]h]ujPM0jjth]r hX(package-version = 1*DIGIT *("." 1*DIGIT)r r }r (hUhj ubaubeubeubj )r }r (hUhj jDNhjnh}r (h]h]h]h]h]Uentries]ujPNjjth]ubjk)r }r (hUhj jDNhj h}r (j j Xcabalh]h]h]h]h]j X pkg-fieldr j j ujPNjjth]r (j )r }r (hXcabal-version: x.y[.z]hj jDjEhj h}r (h]r jah]h]h]h]j ujPMwjjth]r (j )r}r(hUhj jDjEhjnh}r(h]h]h]h]h]Uentries]r(j! X"cabal-version; package.cabal fieldjUNtraujPMwjjth]ubj# )r}r(hjhj jDjEhj& h}r(jjh]h]h]h]h]ujPMwjjth]rhX cabal-versionr r }r (hUjDNjPNjjthjubaubj, )r }r (hj/ hj jDjEhj0 h}r(jjh]h]h]h]h]ujPMwjjth]rhX: rr}r(hUjDNjPNjjthj ubaubj6 )r}r(hXx.y[.z]hj jDjEhj9 h}r(jjh]h]h]h]h]ujPMwjjth]rhXx.y[.z]rr}r(hUjDNjPNjjthjubaubeubjh)r}r(hUhj jDjEhjA h}r(h]h]h]h]h]ujPMwjjth]r(jZ)r}r(hXThe version of the Cabal specification that this package description uses. The Cabal specification does slowly evolve (see also :ref:`spec-history`), introducing new features and occasionally changing the meaning of existing features. By specifying which version of the specification you are using it enables programs which process the package description to know what syntax to expect and what each part means.hjjDjEhj]h}r (h]h]h]h]h]ujPM6jjth]r!(hXThe version of the Cabal specification that this package description uses. The Cabal specification does slowly evolve (see also r"r#}r$(hXThe version of the Cabal specification that this package description uses. The Cabal specification does slowly evolve (see also jDNjPNjjthjubjM)r%}r&(hX:ref:`spec-history`hjjDjEhjPh}r'(UreftypeXrefjRjSX spec-historyr(U refdomainXstdr)h]h]U refexplicith]h]h]jVj ujPM6h]r*jX)r+}r,(hj(h}r-(h]h]r.(j]j)Xstd-refr/eh]h]h]uhj%h]r0hX spec-historyr1r2}r3(hUhj+ubahjcubaubhX), introducing new features and occasionally changing the meaning of existing features. By specifying which version of the specification you are using it enables programs which process the package description to know what syntax to expect and what each part means.r4r5}r6(hX), introducing new features and occasionally changing the meaning of existing features. By specifying which version of the specification you are using it enables programs which process the package description to know what syntax to expect and what each part means.jDNjPNjjthjubeubjZ)r7}r8(hX/The version number you specify will affect both compatibility and behaviour. Most tools (including the Cabal library and the ``cabal`` program) understand a range of versions of the Cabal specification. Older tools will of course only work with older versions of the Cabal specification that was known at the time. Most of the time, tools that are too old will recognise this fact and produce a suitable error message. Likewise, ``cabal check`` will tell you whether the version number is sufficiently high for the features you use in the package description.hjjDjEhj]h}r9(h]h]h]h]h]ujPM>jjth]r:(hX}The version number you specify will affect both compatibility and behaviour. Most tools (including the Cabal library and the r;r<}r=(hX}The version number you specify will affect both compatibility and behaviour. Most tools (including the Cabal library and the jDNjPNjjthj7ubj)r>}r?(hX ``cabal``h}r@(h]h]h]h]h]uhj7h]rAhXcabalrBrC}rD(hXcabalhj>ubahjubhX' program) understand a range of versions of the Cabal specification. Older tools will of course only work with older versions of the Cabal specification that was known at the time. Most of the time, tools that are too old will recognise this fact and produce a suitable error message. Likewise, rErF}rG(hX' program) understand a range of versions of the Cabal specification. Older tools will of course only work with older versions of the Cabal specification that was known at the time. Most of the time, tools that are too old will recognise this fact and produce a suitable error message. Likewise, jDNjPNjjthj7ubj)rH}rI(hX``cabal check``h}rJ(h]h]h]h]h]uhj7h]rKhX cabal checkrLrM}rN(hX cabal checkhjHubahjubhXs will tell you whether the version number is sufficiently high for the features you use in the package description.rOrP}rQ(hXs will tell you whether the version number is sufficiently high for the features you use in the package description.jDNjPNjjthj7ubeubjZ)rR}rS(hXMAs for behaviour, new versions of the Cabal specification can change the meaning of existing syntax. This means if you want to take advantage of the new meaning or behaviour then you must specify the newer Cabal version. Tools are expected to use the meaning and behaviour appropriate to the version given in the package description.rThjjDjEhj]h}rU(h]h]h]h]h]ujPMHjjth]rVhXMAs for behaviour, new versions of the Cabal specification can change the meaning of existing syntax. This means if you want to take advantage of the new meaning or behaviour then you must specify the newer Cabal version. Tools are expected to use the meaning and behaviour appropriate to the version given in the package description.rWrX}rY(hjTjDNjPNjjthjRubaubjZ)rZ}r[(hXIn particular, the syntax of package descriptions changed significantly with Cabal version 1.2 and the :pkg-field:`cabal-version` field is now required. Files written in the old syntax are still recognized, so if you require compatibility with very old Cabal versions then you may write your package description file using the old syntax. Please consult the user's guide of an older Cabal version for a description of that syntax.hjjDjEhj]h}r\(h]h]h]h]h]ujPMNjjth]r](hXgIn particular, the syntax of package descriptions changed significantly with Cabal version 1.2 and the r^r_}r`(hXgIn particular, the syntax of package descriptions changed significantly with Cabal version 1.2 and the jDNjPNjjthjZubjM)ra}rb(hX:pkg-field:`cabal-version`hjZjDjEhjPh}rc(UreftypeX pkg-fieldjRjSX cabal-versionrdU refdomainXcabalreh]h]U refexplicith]h]h]jVj jlNujPMNh]rfj)rg}rh(hjdh}ri(h]h]rj(j]jeXcabal-pkg-fieldrkeh]h]h]uhjah]rlhX cabal-versionrmrn}ro(hUhjgubahjubaubhX/ field is now required. Files written in the old syntax are still recognized, so if you require compatibility with very old Cabal versions then you may write your package description file using the old syntax. Please consult the user’s guide of an older Cabal version for a description of that syntax.rprq}rr(hX- field is now required. Files written in the old syntax are still recognized, so if you require compatibility with very old Cabal versions then you may write your package description file using the old syntax. Please consult the user's guide of an older Cabal version for a description of that syntax.jDNjPNjjthjZubeubjZ)rs}rt(hXStarting with ``cabal-version: 2.2`` this field is only valid if fully contained in the very first line of a package description and ought to adhere to the ABNF_ grammarhjjDjEhj]h}ru(h]h]h]h]h]ujPMVjjth]rv(hXStarting with rwrx}ry(hXStarting with jDNjPNjjthjsubj)rz}r{(hX``cabal-version: 2.2``h}r|(h]h]h]h]h]uhjsh]r}hXcabal-version: 2.2r~r}r(hXcabal-version: 2.2hjzubahjubhXx this field is only valid if fully contained in the very first line of a package description and ought to adhere to the rr}r(hXx this field is only valid if fully contained in the very first line of a package description and ought to adhere to the jDNjPNjjthjsubj!)r}r(hXABNF_j$Khjshj%h}r(UnameXABNFrj] j h]h]h]h]h]uh]rhXABNFrr}r(hjhjubaubhX grammarrr}r(hX grammarjDNjPNjjthjsubeubj)r}r(hXnewstyle-spec-version-decl = "cabal-version" *WS ":" *WS newstyle-spec-version *WS newstyle-spec-version = NUM "." NUM [ "." NUM ] NUM = DIGIT0 / DIGITP 1*DIGIT0 DIGIT0 = %x30-39 DIGITP = %x31-39 WS = %20hjjDjEhjh}r(jjXabnfjjh]h]h]j}h]h]ujPMZjjth]rhXnewstyle-spec-version-decl = "cabal-version" *WS ":" *WS newstyle-spec-version *WS newstyle-spec-version = NUM "." NUM [ "." NUM ] NUM = DIGIT0 / DIGITP 1*DIGIT0 DIGIT0 = %x30-39 DIGITP = %x31-39 WS = %20rr}r(hUhjubaubj )r}r(hXcFor package descriptions using a format prior to ``cabal-version: 1.12`` the legacy syntax resembling a version range syntax .. code-block:: cabal cabal-version: >= 1.10 needs to be used. This legacy syntax is supported up until ``cabal-version: >= 2.0`` it is however strongly recommended to avoid using the legacy syntax. See also :issue:`4899`.hjjDjEhj h}r(h]h]h]h]h]ujPNjjth]r(jZ)r}r(hX|For package descriptions using a format prior to ``cabal-version: 1.12`` the legacy syntax resembling a version range syntaxhjjDjEhj]h}r(h]h]h]h]h]ujPMhh]r(hX1For package descriptions using a format prior to rr}r(hX1For package descriptions using a format prior to hjubj)r}r(hX``cabal-version: 1.12``h}r(h]h]h]h]h]uhjh]rhXcabal-version: 1.12rr}r(hXcabal-version: 1.12hjubahjubhX4 the legacy syntax resembling a version range syntaxrr}r(hX4 the legacy syntax resembling a version range syntaxhjubeubj)r}r(hXcabal-version: >= 1.10hjjDjEhjh}r(jjXcabaljjh]h]h]j}h]h]ujPMlh]rhXcabal-version: >= 1.10rr}r(hUhjubaubjZ)r}r(hXneeds to be used.rhjjDjEhj]h}r(h]h]h]h]h]ujPMph]rhXneeds to be used.rr}r(hjhjubaubjZ)r}r(hXThis legacy syntax is supported up until ``cabal-version: >= 2.0`` it is however strongly recommended to avoid using the legacy syntax. See also :issue:`4899`.hjjDjEhj]h}r(h]h]h]h]h]ujPMrh]r(hX)This legacy syntax is supported up until rr}r(hX)This legacy syntax is supported up until hjubj)r}r(hX``cabal-version: >= 2.0``h}r(h]h]h]h]h]uhjh]rhXcabal-version: >= 2.0rr}r(hXcabal-version: >= 2.0hjubahjubhXO it is however strongly recommended to avoid using the legacy syntax. See also rr}r(hXO it is however strongly recommended to avoid using the legacy syntax. See also hjubj!)r}r(hX#4899h}r(UrefuriX,https://github.com/haskell/cabal/issues/4899h]h]h]h]h]Uinternaluhjh]rhX#4899rr}r(hX4899hjubahj%ubhX.r}r(hX.hjubeubeubeubeubj )r}r(hUhj jDjEhjnh}r(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r}r(hUhj jDjEhj h}r(j j Xcabalh]h]h]h]h]j X pkg-fieldrj jujPNjjth]r(j )r}r(hXbuild-type: identifierhjjDjEhj h}r(h]rjah]h]h]h]j ujPMjjth]r(j )r}r(hUhjjDjEhjnh}r(h]h]h]h]h]Uentries]r(j! Xbuild-type; package.cabal fieldjUNtraujPMjjth]ubj# )r}r(hjhjjDjEhj& h}r(jjh]h]h]h]h]ujPMjjth]rhX build-typerr}r(hUjDNjPNjjthjubaubj, )r}r(hj/ hjjDjEhj0 h}r(jjh]h]h]h]h]ujPMjjth]rhX: rr}r(hUjDNjPNjjthjubaubj6 )r}r(hX identifierhjjDjEhj9 h}r(jjh]h]h]h]h]ujPMjjth]rhX identifierrr}r(hUjDNjPNjjthjubaubeubjh)r}r(hUhjjDjEhjA h}r(h]h]h]h]h]ujPMjjth]r(cdocutils.nodes field_list r)r}r(hUhjjDjEhU field_listrh}r(h]h]h]h]h]ujPNjjth]rcdocutils.nodes field r)r}r(hUh}r(h]h]h]h]h]uhjh]r (cdocutils.nodes field_name r )r }r (hX Default valuehjjDjEhU field_namer h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhj ubaubcdocutils.nodes field_body r)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hXCustom or Simpleh}r(h]h]h]h]h]uhjh]r(j)r}r(hX ``Custom``hjjDjEhjh}r(h]h]h]h]h]ujPNjjth]rhXCustomr r!}r"(hXCustomjDNjPNjjthjubaubhX or r#r$}r%(hX or jDNjPNjjthjubj)r&}r'(hX ``Simple``hjjDjEhjh}r((h]h]h]h]h]ujPNjjth]r)hXSimpler*r+}r,(hXSimplejDNjPNjjthj&ubaubehj]ubahU field_bodyr-ubehUfieldr.ubaubjZ)r/}r0(hX%The type of build used by this package. Build types are the constructors of the `BuildType <../release/cabal-latest/doc/API/Cabal/Distribution-PackageDescription.html#t:BuildType>`__ type. This field is optional and when missing, its default value is inferred according to the following rules:hjjDjEhj]h}r1(h]h]h]h]h]ujPM|jjth]r2(hXPThe type of build used by this package. Build types are the constructors of the r3r4}r5(hXPThe type of build used by this package. Build types are the constructors of the jDNjPNjjthj/ubj!)r6}r7(hXf`BuildType <../release/cabal-latest/doc/API/Cabal/Distribution-PackageDescription.html#t:BuildType>`__h}r8(UnameX BuildTypej] XV../release/cabal-latest/doc/API/Cabal/Distribution-PackageDescription.html#t:BuildTypeh]h]h]h]h]uhj/h]r9hX BuildTyper:r;}r<(hX BuildTypehj6ubahj%ubhXo type. This field is optional and when missing, its default value is inferred according to the following rules:r=r>}r?(hXo type. This field is optional and when missing, its default value is inferred according to the following rules:jDNjPNjjthj/ubeubcdocutils.nodes block_quote r@)rA}rB(hUhjjDNhU block_quoterCh}rD(h]h]h]h]h]ujPNjjth]rEj )rF}rG(hUhjAjDjEhj h}rH(j X-h]h]h]h]h]ujPMh]rI(j )rJ}rK(hXWhen :pkg-field:`cabal-version` is set to ``2.2`` or higher, the default is ``Simple`` unless a :pkg-section:`custom-setup` exists, in which case the inferred default is ``Custom``. h}rL(h]h]h]h]h]uhjFh]rMjZ)rN}rO(hXWhen :pkg-field:`cabal-version` is set to ``2.2`` or higher, the default is ``Simple`` unless a :pkg-section:`custom-setup` exists, in which case the inferred default is ``Custom``.hjJjDjEhj]h}rP(h]h]h]h]h]ujPMh]rQ(hXWhen rRrS}rT(hXWhen hjNubjM)rU}rV(hX:pkg-field:`cabal-version`hjNjDjEhjPh}rW(UreftypeX pkg-fieldjRjSX cabal-versionrXU refdomainXcabalrYh]h]U refexplicith]h]h]jVj jlNujPMh]rZj)r[}r\(hjXh}r](h]h]r^(j]jYXcabal-pkg-fieldr_eh]h]h]uhjUh]r`hX cabal-versionrarb}rc(hUhj[ubahjubaubhX is set to rdre}rf(hX is set to hjNubj)rg}rh(hX``2.2``h}ri(h]h]h]h]h]uhjNh]rjhX2.2rkrl}rm(hX2.2hjgubahjubhX or higher, the default is rnro}rp(hX or higher, the default is hjNubj)rq}rr(hX ``Simple``h}rs(h]h]h]h]h]uhjNh]rthXSimplerurv}rw(hXSimplehjqubahjubhX unless a rxry}rz(hX unless a hjNubjM)r{}r|(hX:pkg-section:`custom-setup`hjNjDjEhjPh}r}(UreftypeX pkg-sectionjRjSX custom-setupr~U refdomainXcabalrh]h]U refexplicith]h]h]jVj ujPMh]rj)r}r(hj~h}r(h]h]r(j]jXcabal-pkg-sectionreh]h]h]uhj{h]rhX custom-setuprr}r(hUhjubahjubaubhX/ exists, in which case the inferred default is rr}r(hX/ exists, in which case the inferred default is hjNubj)r}r(hX ``Custom``h}r(h]h]h]h]h]uhjNh]rhXCustomrr}r(hXCustomhjubahjubhX.r}r(hX.hjNubeubahj ubj )r}r(hXXFor lower :pkg-field:`cabal-version` values, the default is ``Custom`` unconditionally. h}r(h]h]h]h]h]uhjFh]rjZ)r}r(hXWFor lower :pkg-field:`cabal-version` values, the default is ``Custom`` unconditionally.hjjDjEhj]h}r(h]h]h]h]h]ujPMh]r(hX For lower rr}r(hX For lower hjubjM)r}r(hX:pkg-field:`cabal-version`hjjDjEhjPh}r(UreftypeX pkg-fieldjRjSX cabal-versionrU refdomainXcabalrh]h]U refexplicith]h]h]jVj jlNujPMh]rj)r}r(hjh}r(h]h]r(j]jXcabal-pkg-fieldreh]h]h]uhjh]rhX cabal-versionrr}r(hUhjubahjubaubhX values, the default is rr}r(hX values, the default is hjubj)r}r(hX ``Custom``h}r(h]h]h]h]h]uhjh]rhXCustomrr}r(hXCustomhjubahjubhX unconditionally.rr}r(hX unconditionally.hjubeubahj ubeubaubjZ)r}r(hX\If the build type is anything other than ``Custom``, then the ``Setup.hs`` file *must* be exactly the standardized content discussed below. This is because in these cases, ``cabal`` will ignore the ``Setup.hs`` file completely, whereas other methods of package management, such as ``runhaskell Setup.hs [CMD]``, still rely on the ``Setup.hs`` file.hjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hX)If the build type is anything other than rr}r(hX)If the build type is anything other than jDNjPNjjthjubj)r}r(hX ``Custom``h}r(h]h]h]h]h]uhjh]rhXCustomrr}r(hXCustomhjubahjubhX , then the rr}r(hX , then the jDNjPNjjthjubj)r}r(hX ``Setup.hs``h}r(h]h]h]h]h]uhjh]rhXSetup.hsrr}r(hXSetup.hshjubahjubhX file rr}r(hX file jDNjPNjjthjubj)r}r(hX*must*h}r(h]h]h]h]h]uhjh]rhXmustrr}r(hXmusthjubahjubhXV be exactly the standardized content discussed below. This is because in these cases, rr}r(hXV be exactly the standardized content discussed below. This is because in these cases, jDNjPNjjthjubj)r}r(hX ``cabal``h}r(h]h]h]h]h]uhjh]rhXcabalrr}r(hXcabalhjubahjubhX will ignore the rr}r(hX will ignore the jDNjPNjjthjubj)r}r(hX ``Setup.hs``h}r(h]h]h]h]h]uhjh]rhXSetup.hsrr}r(hXSetup.hshjubahjubhXG file completely, whereas other methods of package management, such as rr}r(hXG file completely, whereas other methods of package management, such as jDNjPNjjthjubj)r}r(hX``runhaskell Setup.hs [CMD]``h}r(h]h]h]h]h]uhjh]rhXrunhaskell Setup.hs [CMD]rr}r(hXrunhaskell Setup.hs [CMD]hjubahjubhX, still rely on the rr}r(hX, still rely on the jDNjPNjjthjubj)r}r(hX ``Setup.hs``h}r(h]h]h]h]h]uhjh]rhXSetup.hsrr}r(hXSetup.hshjubahjubhX file.rr}r (hX file.jDNjPNjjthjubeubjZ)r }r (hX@For build type ``Simple``, the contents of ``Setup.hs`` must be:hjjDjEhj]h}r (h]h]h]h]h]ujPMjjth]r (hXFor build type rr}r(hXFor build type jDNjPNjjthj ubj)r}r(hX ``Simple``h}r(h]h]h]h]h]uhj h]rhXSimplerr}r(hXSimplehjubahjubhX, the contents of rr}r(hX, the contents of jDNjPNjjthj ubj)r}r(hX ``Setup.hs``h}r(h]h]h]h]h]uhj h]rhXSetup.hsrr }r!(hXSetup.hshjubahjubhX must be:r"r#}r$(hX must be:jDNjPNjjthj ubeubj)r%}r&(hX-import Distribution.Simple main = defaultMainhjjDjEhjh}r'(jjXhaskelljjh]h]h]j}h]h]ujPMjjth]r(hX-import Distribution.Simple main = defaultMainr)r*}r+(hUhj%ubaubjZ)r,}r-(hX}For build type ``Configure`` (see the section on `system-dependent parameters`_ below), the contents of ``Setup.hs`` must be:hjjDjEhj]h}r.(h]h]h]h]h]ujPMjjth]r/(hXFor build type r0r1}r2(hXFor build type jDNjPNjjthj,ubj)r3}r4(hX ``Configure``h}r5(h]h]h]h]h]uhj,h]r6hX Configurer7r8}r9(hX Configurehj3ubahjubhX (see the section on r:r;}r<(hX (see the section on jDNjPNjjthj,ubj!)r=}r>(hX`system-dependent parameters`_j$Khj,hj%h}r?(UnameXsystem-dependent parametersh]h]h]h]h]j'jo uh]r@hXsystem-dependent parametersrArB}rC(hXsystem-dependent parametershj=ubaubhX below), the contents of rDrE}rF(hX below), the contents of jDNjPNjjthj,ubj)rG}rH(hX ``Setup.hs``h}rI(h]h]h]h]h]uhj,h]rJhXSetup.hsrKrL}rM(hXSetup.hshjGubahjubhX must be:rNrO}rP(hX must be:jDNjPNjjthj,ubeubj)rQ}rR(hXHimport Distribution.Simple main = defaultMainWithHooks autoconfUserHookshjjDjEhjh}rS(jjXhaskelljjh]h]h]j}h]h]ujPMjjth]rThXHimport Distribution.Simple main = defaultMainWithHooks autoconfUserHooksrUrV}rW(hUhjQubaubjZ)rX}rY(hXrFor build type ``Make`` (see the section on `more complex packages`_ below), the contents of ``Setup.hs`` must be:hjjDjEhj]h}rZ(h]h]h]h]h]ujPMjjth]r[(hXFor build type r\r]}r^(hXFor build type jDNjPNjjthjXubj)r_}r`(hX``Make``h}ra(h]h]h]h]h]uhjXh]rbhXMakercrd}re(hXMakehj_ubahjubhX (see the section on rfrg}rh(hX (see the section on jDNjPNjjthjXubj!)ri}rj(hX`more complex packages`_j$KhjXhj%h}rk(UnameXmore complex packagesh]h]h]h]h]j'Umore-complex-packagesrluh]rmhXmore complex packagesrnro}rp(hXmore complex packageshjiubaubhX below), the contents of rqrr}rs(hX below), the contents of jDNjPNjjthjXubj)rt}ru(hX ``Setup.hs``h}rv(h]h]h]h]h]uhjXh]rwhXSetup.hsrxry}rz(hXSetup.hshjtubahjubhX must be:r{r|}r}(hX must be:jDNjPNjjthjXubeubj)r~}r(hX+import Distribution.Make main = defaultMainhjjDjEhjh}r(jjXhaskelljjh]h]h]j}h]h]ujPMjjth]rhX+import Distribution.Make main = defaultMainrr}r(hUhj~ubaubjZ)r}r(hXwFor build type ``Custom``, the file ``Setup.hs`` can be customized, and will be used both by ``cabal`` and other tools.hjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hXFor build type rr}r(hXFor build type jDNjPNjjthjubj)r}r(hX ``Custom``h}r(h]h]h]h]h]uhjh]rhXCustomrr}r(hXCustomhjubahjubhX , the file rr}r(hX , the file jDNjPNjjthjubj)r}r(hX ``Setup.hs``h}r(h]h]h]h]h]uhjh]rhXSetup.hsrr}r(hXSetup.hshjubahjubhX- can be customized, and will be used both by rr}r(hX- can be customized, and will be used both by jDNjPNjjthjubj)r}r(hX ``cabal``h}r(h]h]h]h]h]uhjh]rhXcabalrr}r(hXcabalhjubahjubhX and other tools.rr}r(hX and other tools.jDNjPNjjthjubeubjZ)r}r(hX;For most packages, the build type ``Simple`` is sufficient.hjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hX"For most packages, the build type rr}r(hX"For most packages, the build type jDNjPNjjthjubj)r}r(hX ``Simple``h}r(h]h]h]h]h]uhjh]rhXSimplerr}r(hXSimplehjubahjubhX is sufficient.rr}r(hX is sufficient.jDNjPNjjthjubeubeubeubj )r}r(hUhj jDjEhjnh}r(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r}r(hUhj jDjEhj h}r(j j Xcabalh]h]h]h]h]j X pkg-fieldrj jujPNjjth]r(j )r}r(hXlicense: SPDX expressionhjjDjEhj h}r(h]rjah]h]h]h]j ujPMjjth]r(j )r}r(hUhjjDjEhjnh}r(h]h]h]h]h]Uentries]r(j! Xlicense; package.cabal fieldjUNtraujPMjjth]ubj# )r}r(hjhjjDjEhj& h}r(jjh]h]h]h]h]ujPMjjth]rhXlicenserr}r(hUjDNjPNjjthjubaubj, )r}r(hj/ hjjDjEhj0 h}r(jjh]h]h]h]h]ujPMjjth]rhX: rr}r(hUjDNjPNjjthjubaubj6 )r}r(hXSPDX expressionhjjDjEhj9 h}r(jjh]h]h]h]h]ujPMjjth]rhXSPDX expressionrr}r(hUjDNjPNjjthjubaubeubjh)r}r(hUhjjDjEhjA h}r(h]h]h]h]h]ujPMjjth]r(j)r}r(hUhjjDjEhjh}r(h]h]h]h]h]ujPNjjth]rj)r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hX Default valuehjjDjEhj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hXNONEh}r(h]h]h]h]h]uhjh]rj)r}r(hX``NONE``hjjDjEhjh}r(h]h]h]h]h]ujPNjjth]rhXNONErr}r(hXNONEjDNjPNjjthjubaubahj]ubahj-ubehj.ubaubjZ)r}r(hX<The type of license under which this package is distributed.rhjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]rhX<The type of license under which this package is distributed.r r }r (hjjDNjPNjjthjubaubjZ)r }r (hXkStarting with ``cabal-version: 2.2`` the ``license`` field takes a (case-sensitive) SPDX expression such ashjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hXStarting with rr}r(hXStarting with jDNjPNjjthj ubj)r}r(hX``cabal-version: 2.2``h}r(h]h]h]h]h]uhj h]rhXcabal-version: 2.2rr}r(hXcabal-version: 2.2hjubahjubhX the rr}r(hX the jDNjPNjjthj ubj)r}r(hX ``license``h}r(h]h]h]h]h]uhj h]r hXlicenser!r"}r#(hXlicensehjubahjubhX7 field takes a (case-sensitive) SPDX expression such asr$r%}r&(hX7 field takes a (case-sensitive) SPDX expression such asjDNjPNjjthj ubeubj)r'}r((hX1license: Apache-2.0 AND (MIT OR GPL-2.0-or-later)hjjDjEhjh}r)(jjXcabaljjh]h]h]j}h]h]ujPMjjth]r*hX1license: Apache-2.0 AND (MIT OR GPL-2.0-or-later)r+r,}r-(hUhj'ubaubjZ)r.}r/(hX^See `SPDX IDs: How to use `__ for more examples of SPDX expressions.hjjDjEhj]h}r0(h]h]h]h]h]ujPMjjth]r1(hXSee r2r3}r4(hXSee jDNjPNjjthj.ubj!)r5}r6(hX3`SPDX IDs: How to use `__h}r7(UnameXSPDX IDs: How to usej] Xhttps://spdx.org/ids-howh]h]h]h]h]uhj.h]r8hXSPDX IDs: How to user9r:}r;(hXSPDX IDs: How to usehj5ubahj%ubhX' for more examples of SPDX expressions.r<r=}r>(hX' for more examples of SPDX expressions.jDNjPNjjthj.ubeubjZ)r?}r@(hXThe version of the `list of SPDX license identifiers `__ is a function of the :pkg-field:`cabal-version` value as defined in the following table:hjjDjEhj]h}rA(h]h]h]h]h]ujPMjjth]rB(hXThe version of the rCrD}rE(hXThe version of the jDNjPNjjthj?ubj!)rF}rG(hXA`list of SPDX license identifiers `__h}rH(UnameX list of SPDX license identifiersj] Xhttps://spdx.org/licenses/h]h]h]h]h]uhj?h]rIhX list of SPDX license identifiersrJrK}rL(hX list of SPDX license identifiershjFubahj%ubhX is a function of the rMrN}rO(hX is a function of the jDNjPNjjthj?ubjM)rP}rQ(hX:pkg-field:`cabal-version`hj?jDjEhjPh}rR(UreftypeX pkg-fieldjRjSX cabal-versionrSU refdomainXcabalrTh]h]U refexplicith]h]h]jVj jlNujPMh]rUj)rV}rW(hjSh}rX(h]h]rY(j]jTXcabal-pkg-fieldrZeh]h]h]uhjPh]r[hX cabal-versionr\r]}r^(hUhjVubahjubaubhX) value as defined in the following table:r_r`}ra(hX) value as defined in the following table:jDNjPNjjthj?ubeubcdocutils.nodes table rb)rc}rd(hUhjjDjEhUtablereh}rf(h]h]h]h]h]ujPNjjth]rgcdocutils.nodes tgroup rh)ri}rj(hUh}rk(h]h]h]h]h]UcolsKuhjch]rl(cdocutils.nodes colspec rm)rn}ro(hUh}rp(h]h]h]h]h]UcolwidthKuhjih]hUcolspecrqubjm)rr}rs(hUh}rt(h]h]h]h]h]UcolwidthKuhjih]hjqubcdocutils.nodes thead ru)rv}rw(hUh}rx(h]h]h]h]h]uhjih]rycdocutils.nodes row rz)r{}r|(hUh}r}(h]h]h]h]h]uhjvh]r~(cdocutils.nodes entry r)r}r(hUh}r(h]h]h]h]h]uhj{h]rjZ)r}r(hXCabal specification versionrhjjDjEhj]h}r(h]h]h]h]h]ujPMh]rhXCabal specification versionrr}r(hjhjubaubahUentryrubj)r}r(hUh}r(h]h]h]h]h]uhj{h]rjZ)r}r(hXSPDX license list versionrhjjDjEhj]h}r(h]h]h]h]h]ujPMh]rhXSPDX license list versionrr}r(hjhjubaubahjubehUrowrubahUtheadrubcdocutils.nodes tbody r)r}r(hUh}r(h]h]h]h]h]uhjih]r(jz)r}r(hUh}r(h]h]h]h]h]uhjh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hX``cabal-version: 2.2``rhjjDjEhj]h}r(h]h]h]h]h]ujPMh]rj)r}r(hjh}r(h]h]h]h]h]uhjh]rhXcabal-version: 2.2rr}r(hXcabal-version: 2.2hjubahjubaubahjubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hX``3.0 2017-12-28``rhjjDjEhj]h}r(h]h]h]h]h]ujPMh]rj)r}r(hjh}r(h]h]h]h]h]uhjh]rhX3.0 2017-12-28rr}r(hX3.0 2017-12-28hjubahjubaubahjubehjubjz)r}r(hUh}r(h]h]h]h]h]uhjh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hX``cabal-version: 2.4``rhjjDjEhj]h}r(h]h]h]h]h]ujPMh]rj)r}r(hjh}r(h]h]h]h]h]uhjh]rhXcabal-version: 2.4rr}r(hXcabal-version: 2.4hjubahjubaubahjubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hX``3.2 2018-07-10``rhjjDjEhj]h}r(h]h]h]h]h]ujPMh]rj)r}r(hjh}r(h]h]h]h]h]uhjh]rhX3.2 2018-07-10rr}r(hX3.2 2018-07-10hjubahjubaubahjubehjubehUtbodyrubehUtgrouprubaubjZ)r}r(hX**Pre-SPDX Legacy Identifiers**rhjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]rcdocutils.nodes strong r)r}r(hjh}r(h]h]h]h]h]uhjh]rhXPre-SPDX Legacy Identifiersrr}r(hXPre-SPDX Legacy IdentifiershjubahUstrongrubaubjZ)r}r(hXThe license identifier in the table below are defined for ``cabal-version: 2.0`` and previous versions of the Cabal specification.hjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hX:The license identifier in the table below are defined for rr}r(hX:The license identifier in the table below are defined for jDNjPNjjthjubj)r}r(hX``cabal-version: 2.0``h}r(h]h]h]h]h]uhjh]rhXcabal-version: 2.0rr}r(hXcabal-version: 2.0hjubahjubhX2 and previous versions of the Cabal specification.rr}r(hX2 and previous versions of the Cabal specification.jDNjPNjjthjubeubjb)r }r (hUhjjDjEhjeh}r (h]h]h]h]h]ujPNjjth]r jh)r }r(hUh}r(h]h]h]h]h]UcolsKuhj h]r(jm)r}r(hUh}r(h]h]h]h]h]UcolwidthKuhj h]hjqubjm)r}r(hUh}r(h]h]h]h]h]UcolwidthKuhj h]hjqubju)r}r(hUh}r(h]h]h]h]h]uhj h]rjz)r}r(hUh}r(h]h]h]h]h]uhjh]r(j)r}r (hUh}r!(h]h]h]h]h]uhjh]r"jZ)r#}r$(hX:pkg-field:`license` identifierhjjDjEhj]h}r%(h]h]h]h]h]ujPMh]r&(jM)r'}r((hX:pkg-field:`license`hj#jDjEhjPh}r)(UreftypeX pkg-fieldjRjSXlicenser*U refdomainXcabalr+h]h]U refexplicith]h]h]jVj jlNujPMh]r,j)r-}r.(hj*h}r/(h]h]r0(j]j+Xcabal-pkg-fieldr1eh]h]h]uhj'h]r2hXlicenser3r4}r5(hUhj-ubahjubaubhX identifierr6r7}r8(hX identifierhj#ubeubahjubj)r9}r:(hUh}r;(h]h]h]h]h]uhjh]r<jZ)r=}r>(hXNoter?hj9jDjEhj]h}r@(h]h]h]h]h]ujPMh]rAhXNoterBrC}rD(hj?hj=ubaubahjubehjubahjubj)rE}rF(hUh}rG(h]h]h]h]h]uhj h]rH(jz)rI}rJ(hUh}rK(h]h]h]h]h]uhjEh]rL(j)rM}rN(hUh}rO(h]h]h]h]h]uhjIh]rPjZ)rQ}rR(hX``GPL`` ``GPL-2`` ``GPL-3``hjMjDjEhj]h}rS(h]h]h]h]h]ujPMh]rT(j)rU}rV(hX``GPL``h}rW(h]h]h]h]h]uhjQh]rXhXGPLrYrZ}r[(hXGPLhjUubahjubhX r\}r](hX hjQubj)r^}r_(hX ``GPL-2``h}r`(h]h]h]h]h]uhjQh]rahXGPL-2rbrc}rd(hXGPL-2hj^ubahjubhX re}rf(hX hjQubj)rg}rh(hX ``GPL-3``h}ri(h]h]h]h]h]uhjQh]rjhXGPL-3rkrl}rm(hXGPL-3hjgubahjubeubahjubj)rn}ro(hUh}rp(h]h]h]h]h]uhjIh]hjubehjubjz)rq}rr(hUh}rs(h]h]h]h]h]uhjEh]rt(j)ru}rv(hUh}rw(h]h]h]h]h]uhjqh]rxjZ)ry}rz(hX ``LGPL`` ``LGPL-2.1`` ``LGPL-3``hjujDjEhj]h}r{(h]h]h]h]h]ujPMh]r|(j)r}}r~(hX``LGPL``h}r(h]h]h]h]h]uhjyh]rhXLGPLrr}r(hXLGPLhj}ubahjubhX r}r(hX hjyubj)r}r(hX ``LGPL-2.1``h}r(h]h]h]h]h]uhjyh]rhXLGPL-2.1rr}r(hXLGPL-2.1hjubahjubhX r}r(hX hjyubj)r}r(hX ``LGPL-3``h}r(h]h]h]h]h]uhjyh]rhXLGPL-3rr}r(hXLGPL-3hjubahjubeubahjubj)r}r(hUh}r(h]h]h]h]h]uhjqh]hjubehjubjz)r}r(hUh}r(h]h]h]h]h]uhjEh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hX``AGPL`` ``AGPL-3``hjjDjEhj]h}r(h]h]h]h]h]ujPMh]r(j)r}r(hX``AGPL``h}r(h]h]h]h]h]uhjh]rhXAGPLrr}r(hXAGPLhjubahjubhX r}r(hX hjubj)r}r(hX ``AGPL-3``h}r(h]h]h]h]h]uhjh]rhXAGPL-3rr}r(hXAGPL-3hjubahjubeubahjubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hX since 1.18rhjjDjEhj]h}r(h]h]h]h]h]ujPMh]rhX since 1.18rr}r(hjhjubaubahjubehjubjz)r}r(hUh}r(h]h]h]h]h]uhjEh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hX``BSD2``rhjjDjEhj]h}r(h]h]h]h]h]ujPMh]rj)r}r(hjh}r(h]h]h]h]h]uhjh]rhXBSD2rr}r(hXBSD2hjubahjubaubahjubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hX since 1.20rhjjDjEhj]h}r(h]h]h]h]h]ujPMh]rhX since 1.20rr}r(hjhjubaubahjubehjubjz)r}r(hUh}r(h]h]h]h]h]uhjEh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hX``BSD3``rhjjDjEhj]h}r(h]h]h]h]h]ujPMh]rj)r}r(hjh}r(h]h]h]h]h]uhjh]rhXBSD3rr}r(hXBSD3hjubahjubaubahjubj)r}r(hUh}r(h]h]h]h]h]uhjh]hjubehjubjz)r}r(hUh}r(h]h]h]h]h]uhjEh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hX``MIT``rhjjDjEhj]h}r(h]h]h]h]h]ujPMh]rj)r}r(hjh}r(h]h]h]h]h]uhjh]rhXMITr r }r (hXMIThjubahjubaubahjubj)r }r (hUh}r(h]h]h]h]h]uhjh]hjubehjubjz)r}r(hUh}r(h]h]h]h]h]uhjEh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hX``ISC``rhjjDjEhj]h}r(h]h]h]h]h]ujPMh]rj)r}r(hjh}r(h]h]h]h]h]uhjh]rhXISCr r!}r"(hXISChjubahjubaubahjubj)r#}r$(hUh}r%(h]h]h]h]h]uhjh]r&jZ)r'}r((hX since 1.22r)hj#jDjEhj]h}r*(h]h]h]h]h]ujPMh]r+hX since 1.22r,r-}r.(hj)hj'ubaubahjubehjubjz)r/}r0(hUh}r1(h]h]h]h]h]uhjEh]r2(j)r3}r4(hUh}r5(h]h]h]h]h]uhj/h]r6jZ)r7}r8(hX ``MPL-2.0``r9hj3jDjEhj]h}r:(h]h]h]h]h]ujPMh]r;j)r<}r=(hj9h}r>(h]h]h]h]h]uhj7h]r?hXMPL-2.0r@rA}rB(hXMPL-2.0hj<ubahjubaubahjubj)rC}rD(hUh}rE(h]h]h]h]h]uhj/h]rFjZ)rG}rH(hX since 1.20rIhjCjDjEhj]h}rJ(h]h]h]h]h]ujPMh]rKhX since 1.20rLrM}rN(hjIhjGubaubahjubehjubjz)rO}rP(hUh}rQ(h]h]h]h]h]uhjEh]rR(j)rS}rT(hUh}rU(h]h]h]h]h]uhjOh]rVjZ)rW}rX(hX``Apache`` ``Apache-2.0``hjSjDjEhj]h}rY(h]h]h]h]h]ujPMh]rZ(j)r[}r\(hX ``Apache``h}r](h]h]h]h]h]uhjWh]r^hXApacher_r`}ra(hXApachehj[ubahjubhX rb}rc(hX hjWubj)rd}re(hX``Apache-2.0``h}rf(h]h]h]h]h]uhjWh]rghX Apache-2.0rhri}rj(hX Apache-2.0hjdubahjubeubahjubj)rk}rl(hUh}rm(h]h]h]h]h]uhjOh]hjubehjubjz)rn}ro(hUh}rp(h]h]h]h]h]uhjEh]rq(j)rr}rs(hUh}rt(h]h]h]h]h]uhjnh]rujZ)rv}rw(hX``PublicDomain``rxhjrjDjEhj]h}ry(h]h]h]h]h]ujPMh]rzj)r{}r|(hjxh}r}(h]h]h]h]h]uhjvh]r~hX PublicDomainrr}r(hX PublicDomainhj{ubahjubaubahjubj)r}r(hUh}r(h]h]h]h]h]uhjnh]hjubehjubjz)r}r(hUh}r(h]h]h]h]h]uhjEh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hX``AllRightsReserved``rhjjDjEhj]h}r(h]h]h]h]h]ujPMh]rj)r}r(hjh}r(h]h]h]h]h]uhjh]rhXAllRightsReservedrr}r(hXAllRightsReservedhjubahjubaubahjubj)r}r(hUh}r(h]h]h]h]h]uhjh]hjubehjubjz)r}r(hUh}r(h]h]h]h]h]uhjEh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hX``OtherLicense``rhjjDjEhj]h}r(h]h]h]h]h]ujPMh]rj)r}r(hjh}r(h]h]h]h]h]uhjh]rhX OtherLicenserr}r(hX OtherLicensehjubahjubaubahjubj)r}r(hUh}r(h]h]h]h]h]uhjh]hjubehjubehjubehjubaubeubeubj )r}r(hUhj jDjEhjnh}r(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r}r(hUhj jDjEhj h}r(j j Xcabalh]h]h]h]h]j X pkg-fieldrj jujPNjjth]r(j )r}r(hXlicense-file: filenamehjjDjEhj h}r(h]rjah]h]h]h]j ujPMjjth]r(j )r}r(hUhjjDjEhjnh}r(h]h]h]h]h]Uentries]r(j! X!license-file; package.cabal fieldjUNtraujPMjjth]ubj# )r}r(hjhjjDjEhj& h}r(jjh]h]h]h]h]ujPMjjth]rhX license-filerr}r(hUjDNjPNjjthjubaubj, )r}r(hj/ hjjDjEhj0 h}r(jjh]h]h]h]h]ujPMjjth]rhX: rr}r(hUjDNjPNjjthjubaubj6 )r}r(hXfilenamehjjDjEhj9 h}r(jjh]h]h]h]h]ujPMjjth]rhXfilenamerr}r(hUjDNjPNjjthjubaubeubjh)r}r(hUhjjDjEhjA h}r(h]h]h]h]h]ujPMjjth]rjZ)r}r(hXSee :pkg-field:`license-files`.hjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hXSee rr}r(hXSee jDNjPNjjthjubjM)r}r(hX:pkg-field:`license-files`hjjDjEhjPh}r(UreftypeX pkg-fieldjRjSX license-filesrU refdomainXcabalrh]h]U refexplicith]h]h]jVj jlNujPMh]rj)r}r(hjh}r(h]h]r(j]jXcabal-pkg-fieldreh]h]h]uhjh]rhX license-filesrr}r(hUhjubahjubaubhX.r}r(hX.jDNjPNjjthjubeubaubeubj )r}r(hUhj jDjEhjnh}r(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r}r(hUhj jDjEhj h}r(j j Xcabalh]h]h]h]h]j X pkg-fieldrj jujPNjjth]r(j )r}r(hXlicense-files: filename listhjjDjEhj h}r(h]rjah]h]h]h]j ujPNjjth]r(j )r}r(hUhjjDjEhjnh}r(h]h]h]h]h]Uentries]r(j! X"license-files; package.cabal fieldjUNtraujPNjjth]ubj# )r}r (hjhjjDjEhj& h}r (jjh]h]h]h]h]ujPNjjth]r hX license-filesr r }r(hUjDNjPNjjthjubaubj, )r}r(hj/ hjjDjEhj0 h}r(jjh]h]h]h]h]ujPNjjth]rhX: rr}r(hUjDNjPNjjthjubaubj6 )r}r(hX filename listhjjDjEhj9 h}r(jjh]h]h]h]h]ujPNjjth]rhX filename listrr}r(hUjDNjPNjjthjubaubeubjh)r}r(hUhjjDjEhjA h}r(h]h]h]h]h]ujPNjjth]r (j)r!}r"(hUhjjDjEhjh}r#(h]h]h]h]h]ujPNjjth]r$j)r%}r&(hUhj!jDjEhj.h}r'(h]h]h]h]h]ujPNjjth]r((j )r)}r*(hUSincer+hj%jDjEhj h}r,(h]h]h]h]h]ujPKh]r-hXSincer.r/}r0(hUhj)ubaubj)r1}r2(hU Cabal 1.20r3h}r4(h]h]h]h]h]uhj%h]r5jZ)r6}r7(hj3h}r8(h]h]h]h]h]uhj1h]r9hX Cabal 1.20r:r;}r<(hUhj6ubahj]ubahj-ubeubaubjZ)r=}r>(hXThe name of a file(s) containing the precise copyright license for this package. The license file(s) will be installed with the package.r?hjjDjEhj]h}r@(h]h]h]h]h]ujPMjjth]rAhXThe name of a file(s) containing the precise copyright license for this package. The license file(s) will be installed with the package.rBrC}rD(hj?jDNjPNjjthj=ubaubjZ)rE}rF(hXIf you have multiple license files then use the :pkg-field:`license-files` field instead of (or in addition to) the :pkg-field:`license-file` field.hjjDjEhj]h}rG(h]h]h]h]h]ujPMjjth]rH(hX0If you have multiple license files then use the rIrJ}rK(hX0If you have multiple license files then use the jDNjPNjjthjEubjM)rL}rM(hX:pkg-field:`license-files`hjEjDjEhjPh}rN(UreftypeX pkg-fieldjRjSX license-filesrOU refdomainXcabalrPh]h]U refexplicith]h]h]jVj jlNujPMh]rQj)rR}rS(hjOh}rT(h]h]rU(j]jPXcabal-pkg-fieldrVeh]h]h]uhjLh]rWhX license-filesrXrY}rZ(hUhjRubahjubaubhX* field instead of (or in addition to) the r[r\}r](hX* field instead of (or in addition to) the jDNjPNjjthjEubjM)r^}r_(hX:pkg-field:`license-file`hjEjDjEhjPh}r`(UreftypeX pkg-fieldjRjSX license-fileraU refdomainXcabalrbh]h]U refexplicith]h]h]jVj jlNujPMh]rcj)rd}re(hjah}rf(h]h]rg(j]jbXcabal-pkg-fieldrheh]h]h]uhj^h]rihX license-filerjrk}rl(hUhjdubahjubaubhX field.rmrn}ro(hX field.jDNjPNjjthjEubeubeubeubj )rp}rq(hUhj jDjEhjnh}rr(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rs}rt(hUhj jDjEhj h}ru(j j Xcabalh]h]h]h]h]j X pkg-fieldrvj jvujPNjjth]rw(j )rx}ry(hXcopyright: freeformhjsjDjEhj h}rz(h]r{jah]h]h]h]j ujPM jjth]r|(j )r}}r~(hUhjxjDjEhjnh}r(h]h]h]h]h]Uentries]r(j! Xcopyright; package.cabal fieldjUNtraujPM jjth]ubj# )r}r(hjhjxjDjEhj& h}r(jjh]h]h]h]h]ujPM jjth]rhX copyrightrr}r(hUjDNjPNjjthjubaubj, )r}r(hj/ hjxjDjEhj0 h}r(jjh]h]h]h]h]ujPM jjth]rhX: rr}r(hUjDNjPNjjthjubaubj6 )r}r(hXfreeformhjxjDjEhj9 h}r(jjh]h]h]h]h]ujPM jjth]rhXfreeformrr}r(hUjDNjPNjjthjubaubeubjh)r}r(hUhjsjDjEhjA h}r(h]h]h]h]h]ujPM jjth]r(jZ)r}r(hXThe content of a copyright notice, typically the name of the holder of the copyright on the package and the year(s) from which copyright is claimed. For example::hjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]rhXThe content of a copyright notice, typically the name of the holder of the copyright on the package and the year(s) from which copyright is claimed. For example:rr}r(hXThe content of a copyright notice, typically the name of the holder of the copyright on the package and the year(s) from which copyright is claimed. For example:jDNjPNjjthjubaubj)r}r(hX#copyright: (c) 2006-2007 Joe BloggshjjDjEhjh}r(jjh]h]h]h]h]ujPM jjth]rhX#copyright: (c) 2006-2007 Joe Bloggsrr}r(hUhjubaubeubeubj )r}r(hUhj jDjEhjnh}r(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r}r(hUhj jDjEhj h}r(j j Xcabalh]h]h]h]h]j X pkg-fieldrj jujPNjjth]r(j )r}r(hXauthor: freeformhjjDjEhj h}r(h]rjah]h]h]h]j ujPMjjth]r(j )r}r(hUhjjDjEhjnh}r(h]h]h]h]h]Uentries]r(j! Xauthor; package.cabal fieldjUNtraujPMjjth]ubj# )r}r(hjhjjDjEhj& h}r(jjh]h]h]h]h]ujPMjjth]rhXauthorrr}r(hUjDNjPNjjthjubaubj, )r}r(hj/ hjjDjEhj0 h}r(jjh]h]h]h]h]ujPMjjth]rhX: rr}r(hUjDNjPNjjthjubaubj6 )r}r(hXfreeformhjjDjEhj9 h}r(jjh]h]h]h]h]ujPMjjth]rhXfreeformrr}r(hUjDNjPNjjthjubaubeubjh)r}r(hUhjjDjEhjA h}r(h]h]h]h]h]ujPMjjth]r(jZ)r}r(hX#The original author of the package.rhjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]rhX#The original author of the package.rr}r(hjjDNjPNjjthjubaubjZ)r}r(hXERemember that ``.cabal`` files are Unicode, using the UTF-8 encoding.hjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hXRemember that rr}r(hXRemember that jDNjPNjjthjubj)r}r(hX ``.cabal``h}r(h]h]h]h]h]uhjh]rhX.cabalrr}r(hX.cabalhjubahjubhX- files are Unicode, using the UTF-8 encoding.rr}r(hX- files are Unicode, using the UTF-8 encoding.jDNjPNjjthjubeubeubeubj )r}r(hUhj jDjEhjnh}r(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r}r(hUhj jDjEhj h}r(j j Xcabalh]h]h]h]h]j X pkg-fieldrj jujPNjjth]r(j )r}r(hXmaintainer: addresshjjDjEhj h}r(h]rjah]h]h]h]j ujPMjjth]r(j )r}r(hUhjjDjEhjnh}r(h]h]h]h]h]Uentries]r(j! Xmaintainer; package.cabal fieldjUNtraujPMjjth]ubj# )r}r(hjhjjDjEhj& h}r(jjh]h]h]h]h]ujPMjjth]rhX maintainerrr}r(hUjDNjPNjjthjubaubj, )r}r(hj/ hjjDjEhj0 h}r(jjh]h]h]h]h]ujPMjjth]r hX: r r }r (hUjDNjPNjjthjubaubj6 )r }r(hXaddresshjjDjEhj9 h}r(jjh]h]h]h]h]ujPMjjth]rhXaddressrr}r(hUjDNjPNjjthj ubaubeubjh)r}r(hUhjjDjEhjA h}r(h]h]h]h]h]ujPMjjth]rjZ)r}r(hXThe current maintainer or maintainers of the package. This is an e-mail address to which users should send bug reports, feature requests and patches.rhjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]rhXThe current maintainer or maintainers of the package. This is an e-mail address to which users should send bug reports, feature requests and patches.rr}r(hjjDNjPNjjthjubaubaubeubj )r }r!(hUhj jDjEhjnh}r"(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r#}r$(hUhj jDjEhj h}r%(j j Xcabalh]h]h]h]h]j X pkg-fieldr&j j&ujPNjjth]r'(j )r(}r)(hXstability: freeformhj#jDjEhj h}r*(h]r+j,ah]h]h]h]j ujPMjjth]r,(j )r-}r.(hUhj(jDjEhjnh}r/(h]h]h]h]h]Uentries]r0(j! Xstability; package.cabal fieldj,UNtr1aujPMjjth]ubj# )r2}r3(hj+hj(jDjEhj& h}r4(jjh]h]h]h]h]ujPMjjth]r5hX stabilityr6r7}r8(hUjDNjPNjjthj2ubaubj, )r9}r:(hj/ hj(jDjEhj0 h}r;(jjh]h]h]h]h]ujPMjjth]r<hX: r=r>}r?(hUjDNjPNjjthj9ubaubj6 )r@}rA(hXfreeformhj(jDjEhj9 h}rB(jjh]h]h]h]h]ujPMjjth]rChXfreeformrDrE}rF(hUjDNjPNjjthj@ubaubeubjh)rG}rH(hUhj#jDjEhjA h}rI(h]h]h]h]h]ujPMjjth]rJjZ)rK}rL(hXbThe stability level of the package, e.g. ``alpha``, ``experimental``, ``provisional``, ``stable``.hjGjDjEhj]h}rM(h]h]h]h]h]ujPMjjth]rN(hX)The stability level of the package, e.g. rOrP}rQ(hX)The stability level of the package, e.g. jDNjPNjjthjKubj)rR}rS(hX ``alpha``h}rT(h]h]h]h]h]uhjKh]rUhXalpharVrW}rX(hXalphahjRubahjubhX, rYrZ}r[(hX, jDNjPNjjthjKubj)r\}r](hX``experimental``h}r^(h]h]h]h]h]uhjKh]r_hX experimentalr`ra}rb(hX experimentalhj\ubahjubhX, rcrd}re(hX, rfjDNjPNjjthjKubj)rg}rh(hX``provisional``h}ri(h]h]h]h]h]uhjKh]rjhX provisionalrkrl}rm(hX provisionalhjgubahjubhX, rnro}rp(hjfhjKubj)rq}rr(hX ``stable``h}rs(h]h]h]h]h]uhjKh]rthXstablerurv}rw(hXstablehjqubahjubhX.rx}ry(hX.jDNjPNjjthjKubeubaubeubj )rz}r{(hUhj jDjEhjnh}r|(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r}}r~(hUhj jDjEhj h}r(j j Xcabalh]h]h]h]h]j X pkg-fieldrj jujPNjjth]r(j )r}r(hX homepage: URLhj}jDjEhj h}r(h]rj`ah]h]h]h]j ujPM"jjth]r(j )r}r(hUhjjDjEhjnh}r(h]h]h]h]h]Uentries]r(j! Xhomepage; package.cabal fieldj`UNtraujPM"jjth]ubj# )r}r(hj_hjjDjEhj& h}r(jjh]h]h]h]h]ujPM"jjth]rhXhomepagerr}r(hUjDNjPNjjthjubaubj, )r}r(hj/ hjjDjEhj0 h}r(jjh]h]h]h]h]ujPM"jjth]rhX: rr}r(hUjDNjPNjjthjubaubj6 )r}r(hXURLhjjDjEhj9 h}r(jjh]h]h]h]h]ujPM"jjth]rhXURLrr}r(hUjDNjPNjjthjubaubeubjh)r}r(hUhj}jDjEhjA h}r(h]h]h]h]h]ujPM"jjth]rjZ)r}r(hXThe package homepage.rhjjDjEhj]h}r(h]h]h]h]h]ujPM!jjth]rhXThe package homepage.rr}r(hjjDNjPNjjthjubaubaubeubj )r}r(hUhj jDjEhjnh}r(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r}r(hUhj jDjEhj h}r(j j Xcabalh]h]h]h]h]j X pkg-fieldrj jujPNjjth]r(j )r}r(hXbug-reports: URLhjjDjEhj h}r(h]rjah]h]h]h]j ujPM2jjth]r(j )r}r(hUhjjDjEhjnh}r(h]h]h]h]h]Uentries]r(j! X bug-reports; package.cabal fieldjUNtraujPM2jjth]ubj# )r}r(hjhjjDjEhj& h}r(jjh]h]h]h]h]ujPM2jjth]rhX bug-reportsrr}r(hUjDNjPNjjthjubaubj, )r}r(hj/ hjjDjEhj0 h}r(jjh]h]h]h]h]ujPM2jjth]rhX: rr}r(hUjDNjPNjjthjubaubj6 )r}r(hXURLhjjDjEhj9 h}r(jjh]h]h]h]h]ujPM2jjth]rhXURLrr}r(hUjDNjPNjjthjubaubeubjh)r}r(hUhjjDjEhjA h}r(h]h]h]h]h]ujPM2jjth]r(jZ)r}r(hXMThe URL where users should direct bug reports. This would normally be either:rhjjDjEhj]h}r(h]h]h]h]h]ujPM%jjth]rhXMThe URL where users should direct bug reports. This would normally be either:rr}r(hjjDNjPNjjthjubaubj )r}r(hUhjjDjEhj h}r(j X-h]h]h]h]h]ujPM(jjth]r(j )r}r(hX8A ``mailto:`` URL, e.g. for a person or a mailing list. hjjDjEhj h}r(h]h]h]h]h]ujPNjjth]rjZ)r}r(hX7A ``mailto:`` URL, e.g. for a person or a mailing list.hjjDjEhj]h}r(h]h]h]h]h]ujPM(h]r(hXA rr}r(hXA hjubj)r}r(hX ``mailto:``h}r(h]h]h]h]h]uhjh]rhXmailto:rr}r(hXmailto:hjubahjubhX* URL, e.g. for a person or a mailing list.rr}r(hX* URL, e.g. for a person or a mailing list.hjubeubaubj )r}r(hXDAn ``http:`` (or ``https:``) URL for an online bug tracking system. hjjDjEhj h}r(h]h]h]h]h]ujPNjjth]rjZ)r}r(hXCAn ``http:`` (or ``https:``) URL for an online bug tracking system.hjjDjEhj]h}r(h]h]h]h]h]ujPM*h]r(hXAn rr}r(hXAn hjubj)r}r(hX ``http:``h}r(h]h]h]h]h]uhjh]rhXhttp:rr }r (hXhttp:hjubahjubhX (or r r }r (hX (or hjubj)r}r(hX ``https:``h}r(h]h]h]h]h]uhjh]rhXhttps:rr}r(hXhttps:hjubahjubhX() URL for an online bug tracking system.rr}r(hX() URL for an online bug tracking system.hjubeubaubeubjZ)r}r(hX=For example Cabal itself uses a web-based bug tracking systemrhjjDjEhj]h}r(h]h]h]h]h]ujPM-jjth]rhX=For example Cabal itself uses a web-based bug tracking systemrr}r(hjjDNjPNjjthjubaubj)r }r!(hX4bug-reports: https://github.com/haskell/cabal/issueshjjDjEhjh}r"(jjh]h]h]h]h]ujPM1jjth]r#hX4bug-reports: https://github.com/haskell/cabal/issuesr$r%}r&(hUhj ubaubeubeubj )r'}r((hUhj jDjEhjnh}r)(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r*}r+(hUhj jDjEhj h}r,(j j Xcabalh]h]h]h]h]j X pkg-fieldr-j j-ujPNjjth]r.(j )r/}r0(hXpackage-url: URLhj*jDjEhj h}r1(h]r2jah]h]h]h]j ujPM7jjth]r3(j )r4}r5(hUhj/jDjEhjnh}r6(h]h]h]h]h]Uentries]r7(j! X package-url; package.cabal fieldjUNtr8aujPM7jjth]ubj# )r9}r:(hjhj/jDjEhj& h}r;(jjh]h]h]h]h]ujPM7jjth]r<hX package-urlr=r>}r?(hUjDNjPNjjthj9ubaubj, )r@}rA(hj/ hj/jDjEhj0 h}rB(jjh]h]h]h]h]ujPM7jjth]rChX: rDrE}rF(hUjDNjPNjjthj@ubaubj6 )rG}rH(hXURLhj/jDjEhj9 h}rI(jjh]h]h]h]h]ujPM7jjth]rJhXURLrKrL}rM(hUjDNjPNjjthjGubaubeubjh)rN}rO(hUhj*jDjEhjA h}rP(h]h]h]h]h]ujPM7jjth]rQjZ)rR}rS(hX\The location of a source bundle for the package. The distribution should be a Cabal package.rThjNjDjEhj]h}rU(h]h]h]h]h]ujPM5jjth]rVhX\The location of a source bundle for the package. The distribution should be a Cabal package.rWrX}rY(hjTjDNjPNjjthjRubaubaubeubj )rZ}r[(hUhj jDjEhjnh}r\(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r]}r^(hUhj jDjEhj h}r_(j j Xcabalh]h]h]h]h]j X pkg-fieldr`j j`ujPNjjth]ra(j )rb}rc(hXsynopsis: freeformhj]jDjEhj h}rd(h]rejah]h]h]h]j ujPM>jjth]rf(j )rg}rh(hUhjbjDjEhjnh}ri(h]h]h]h]h]Uentries]rj(j! Xsynopsis; package.cabal fieldjUNtrkaujPM>jjth]ubj# )rl}rm(hjhjbjDjEhj& h}rn(jjh]h]h]h]h]ujPM>jjth]rohXsynopsisrprq}rr(hUjDNjPNjjthjlubaubj, )rs}rt(hj/ hjbjDjEhj0 h}ru(jjh]h]h]h]h]ujPM>jjth]rvhX: rwrx}ry(hUjDNjPNjjthjsubaubj6 )rz}r{(hXfreeformhjbjDjEhj9 h}r|(jjh]h]h]h]h]ujPM>jjth]r}hXfreeformr~r}r(hUjDNjPNjjthjzubaubeubjh)r}r(hUhj]jDjEhjA h}r(h]h]h]h]h]ujPM>jjth]rjZ)r}r(hXA very short description of the package, for use in a table of packages. This is your headline, so keep it short (one line) but as informative as possible. Save space by not including the package name or saying it's written in Haskell.rhjjDjEhj]h}r(h]h]h]h]h]ujPM:jjth]rhXA very short description of the package, for use in a table of packages. This is your headline, so keep it short (one line) but as informative as possible. Save space by not including the package name or saying it’s written in Haskell.rr}r(hjjDNjPNjjthjubaubaubeubj )r}r(hUhj jDjEhjnh}r(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r}r(hUhj jDjEhj h}r(j j Xcabalh]h]h]h]h]j X pkg-fieldrj jujPNjjth]r(j )r}r(hXdescription: freeformhjjDjEhj h}r(h]rjTah]h]h]h]j ujPMHjjth]r(j )r}r(hUhjjDjEhjnh}r(h]h]h]h]h]Uentries]r(j! X description; package.cabal fieldjTUNtraujPMHjjth]ubj# )r}r(hjShjjDjEhj& h}r(jjh]h]h]h]h]ujPMHjjth]rhX descriptionrr}r(hUjDNjPNjjthjubaubj, )r}r(hj/ hjjDjEhj0 h}r(jjh]h]h]h]h]ujPMHjjth]rhX: rr}r(hUjDNjPNjjthjubaubj6 )r}r(hXfreeformhjjDjEhj9 h}r(jjh]h]h]h]h]ujPMHjjth]rhXfreeformrr}r(hUjDNjPNjjthjubaubeubjh)r}r(hUhjjDjEhjA h}r(h]h]h]h]h]ujPMHjjth]r(jZ)r}r(hXDescription of the package. This may be several paragraphs, and should be aimed at a Haskell programmer who has never heard of your package before.rhjjDjEhj]h}r(h]h]h]h]h]ujPMAjjth]rhXDescription of the package. This may be several paragraphs, and should be aimed at a Haskell programmer who has never heard of your package before.rr}r(hjjDNjPNjjthjubaubjZ)r}r(hXFor library packages, this field is used as prologue text by :ref:`setup-haddock` and thus may contain the same markup as Haddock_ documentation comments.hjjDjEhj]h}r(h]h]h]h]h]ujPMEjjth]r(hX=For library packages, this field is used as prologue text by rr}r(hX=For library packages, this field is used as prologue text by jDNjPNjjthjubjM)r}r(hX:ref:`setup-haddock`hjjDjEhjPh}r(UreftypeXrefjRjSX setup-haddockrU refdomainXstdrh]h]U refexplicith]h]h]jVj ujPMEh]rjX)r}r(hjh}r(h]h]r(j]jXstd-refreh]h]h]uhjh]rhX setup-haddockrr}r(hUhjubahjcubaubhX) and thus may contain the same markup as rr}r(hX) and thus may contain the same markup as jDNjPNjjthjubj!)r}r(hXHaddock_j$Khjhj%h}r(UnameXHaddockrj] Xhttp://www.haskell.org/haddock/rh]h]h]h]h]uh]rhXHaddockrr}r(hjhjubaubhX documentation comments.rr}r(hX documentation comments.jDNjPNjjthjubeubeubeubj )r}r(hUhj jDjEhjnh}r(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r}r(hUhj jDjEhj h}r(j j Xcabalh]h]h]h]h]j X pkg-fieldrj jujPNjjth]r(j )r}r(hXcategory: freeformhjjDjEhj h}r(h]rjah]h]h]h]j ujPMOjjth]r(j )r}r(hUhjjDjEhjnh}r(h]h]h]h]h]Uentries]r(j! Xcategory; package.cabal fieldjUNtraujPMOjjth]ubj# )r}r(hjhjjDjEhj& h}r(jjh]h]h]h]h]ujPMOjjth]rhXcategoryrr}r(hUjDNjPNjjthjubaubj, )r}r(hj/ hjjDjEhj0 h}r(jjh]h]h]h]h]ujPMOjjth]rhX: rr}r(hUjDNjPNjjthjubaubj6 )r}r(hXfreeformhjjDjEhj9 h}r(jjh]h]h]h]h]ujPMOjjth]rhXfreeformr r }r (hUjDNjPNjjthjubaubeubjh)r }r (hUhjjDjEhjA h}r(h]h]h]h]h]ujPMOjjth]rjZ)r}r(hXA classification category for future use by the package catalogue Hackage_. These categories have not yet been specified, but the upper levels of the module hierarchy make a good start.hj jDjEhj]h}r(h]h]h]h]h]ujPMKjjth]r(hXBA classification category for future use by the package catalogue rr}r(hXBA classification category for future use by the package catalogue jDNjPNjjthjubj!)r}r(hXHackage_j$Khjhj%h}r(UnameXHackagerj] Xhttp://hackage.haskell.org/rh]h]h]h]h]uh]rhXHackagerr}r(hjhjubaubhXo. These categories have not yet been specified, but the upper levels of the module hierarchy make a good start.r r!}r"(hXo. These categories have not yet been specified, but the upper levels of the module hierarchy make a good start.jDNjPNjjthjubeubaubeubj )r#}r$(hUhj jDjEhjnh}r%(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r&}r'(hUhj jDjEhj h}r((j j Xcabalh]h]h]h]h]j X pkg-fieldr)j j)ujPNjjth]r*(j )r+}r,(hXtested-with: compiler listhj&jDjEhj h}r-(h]r.jah]h]h]h]j ujPMdjjth]r/(j )r0}r1(hUhj+jDjEhjnh}r2(h]h]h]h]h]Uentries]r3(j! X tested-with; package.cabal fieldjUNtr4aujPMdjjth]ubj# )r5}r6(hjhj+jDjEhj& h}r7(jjh]h]h]h]h]ujPMdjjth]r8hX tested-withr9r:}r;(hUjDNjPNjjthj5ubaubj, )r<}r=(hj/ hj+jDjEhj0 h}r>(jjh]h]h]h]h]ujPMdjjth]r?hX: r@rA}rB(hUjDNjPNjjthj<ubaubj6 )rC}rD(hX compiler listhj+jDjEhj9 h}rE(jjh]h]h]h]h]ujPMdjjth]rFhX compiler listrGrH}rI(hUjDNjPNjjthjCubaubeubjh)rJ}rK(hUhj&jDjEhjA h}rL(h]h]h]h]h]ujPMdjjth]rM(jZ)rN}rO(hXA list of compilers and versions against which the package has been tested (or at least built). The value of this field is not used by Cabal and is rather intended as extra metadata for use by third party tooling, such as e.g. CI tooling.rPhjJjDjEhj]h}rQ(h]h]h]h]h]ujPMRjjth]rRhXA list of compilers and versions against which the package has been tested (or at least built). The value of this field is not used by Cabal and is rather intended as extra metadata for use by third party tooling, such as e.g. CI tooling.rSrT}rU(hjPjDNjPNjjthjNubaubjZ)rV}rW(hXHere's a typical usage examplerXhjJjDjEhj]h}rY(h]h]h]h]h]ujPMWjjth]rZhX Here’s a typical usage exampler[r\}r](hjXjDNjPNjjthjVubaubj)r^}r_(hXtested-with: GHC == 8.6.3, GHC == 8.4.4, GHC == 8.2.2, GHC == 8.0.2, GHC == 7.10.3, GHC == 7.8.4, GHC == 7.6.3, GHC == 7.4.2hjJjDjEhjh}r`(jjh]h]h]h]h]ujPM[jjth]rahXtested-with: GHC == 8.6.3, GHC == 8.4.4, GHC == 8.2.2, GHC == 8.0.2, GHC == 7.10.3, GHC == 7.8.4, GHC == 7.6.3, GHC == 7.4.2rbrc}rd(hUhj^ubaubjZ)re}rf(hX^which can (starting with Cabal 3.0) also be written using the more concise set notation syntaxrghjJjDjEhj]h}rh(h]h]h]h]h]ujPM^jjth]rihX^which can (starting with Cabal 3.0) also be written using the more concise set notation syntaxrjrk}rl(hjgjDNjPNjjthjeubaubj)rm}rn(hXOtested-with: GHC == { 8.6.3, 8.4.4, 8.2.2, 8.0.2, 7.10.3, 7.8.4, 7.6.3, 7.4.2 }hjJjDjEhjh}ro(jjh]h]h]h]h]ujPMcjjth]rphXOtested-with: GHC == { 8.6.3, 8.4.4, 8.2.2, 8.0.2, 7.10.3, 7.8.4, 7.6.3, 7.4.2 }rqrr}rs(hUhjmubaubeubeubj )rt}ru(hUhj jDjEhjnh}rv(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rw}rx(hUhj jDjEhj h}ry(j j Xcabalh]h]h]h]h]j X pkg-fieldrzj jzujPNjjth]r{(j )r|}r}(hXdata-files: filename listhjwjDjEhj h}r~(h]rjah]h]h]h]j ujPMjjth]r(j )r}r(hUhj|jDjEhjnh}r(h]h]h]h]h]Uentries]r(j! Xdata-files; package.cabal fieldjUNtraujPMjjth]ubj# )r}r(hjhj|jDjEhj& h}r(jjh]h]h]h]h]ujPMjjth]rhX data-filesrr}r(hUjDNjPNjjthjubaubj, )r}r(hj/ hj|jDjEhj0 h}r(jjh]h]h]h]h]ujPMjjth]rhX: rr}r(hUjDNjPNjjthjubaubj6 )r}r(hX filename listhj|jDjEhj9 h}r(jjh]h]h]h]h]ujPMjjth]rhX filename listrr}r(hUjDNjPNjjthjubaubeubjh)r}r(hUhjwjDjEhjA h}r(h]h]h]h]h]ujPMjjth]r(jZ)r}r(hXA list of files to be installed for run-time use by the package. This is useful for packages that use a large amount of static data, such as tables of values or code templates. Cabal provides a way to `find these files at run-time <#accessing-data-files-from-package-code>`_.hjjDjEhj]h}r(h]h]h]h]h]ujPMgjjth]r(hXA list of files to be installed for run-time use by the package. This is useful for packages that use a large amount of static data, such as tables of values or code templates. Cabal provides a way to rr}r(hXA list of files to be installed for run-time use by the package. This is useful for packages that use a large amount of static data, such as tables of values or code templates. Cabal provides a way to jDNjPNjjthjubj!)r}r(hXI`find these files at run-time <#accessing-data-files-from-package-code>`_h}r(UnameXfind these files at run-timej] X'#accessing-data-files-from-package-coderh]h]h]h]h]uhjh]rhXfind these files at run-timerr}r(hXfind these files at run-timehjubahj%ubje)r}r(hX* <#accessing-data-files-from-package-code>jKhjhjdh}r(Urefurijh]rUfind-these-files-at-run-timerah]h]h]h]rjauh]ubhX.r}r(hX.jDNjPNjjthjubeubjZ)r}r(hX A limited form of ``*`` wildcards in file names, for example ``data-files: images/*.png`` matches all the ``.png`` files in the ``images`` directory. ``data-files: audio/**/*.mp3`` matches all the ``.mp3`` files in the ``audio`` directory, including subdirectories.hjjDjEhj]h}r(h]h]h]h]h]ujPMljjth]r(hXA limited form of rr}r(hXA limited form of jDNjPNjjthjubj)r}r(hX``*``h}r(h]h]h]h]h]uhjh]rhX*r}r(hX*hjubahjubhX& wildcards in file names, for example rr}r(hX& wildcards in file names, for example jDNjPNjjthjubj)r}r(hX``data-files: images/*.png``h}r(h]h]h]h]h]uhjh]rhXdata-files: images/*.pngrr}r(hXdata-files: images/*.pnghjubahjubhX matches all the rr}r(hX matches all the jDNjPNjjthjubj)r}r(hX``.png``h}r(h]h]h]h]h]uhjh]rhX.pngrr}r(hX.pnghjubahjubhX files in the rr}r(hX files in the jDNjPNjjthjubj)r}r(hX ``images``h}r(h]h]h]h]h]uhjh]rhXimagesrr}r(hXimageshjubahjubhX directory. rr}r(hX directory. jDNjPNjjthjubj)r}r(hX``data-files: audio/**/*.mp3``h}r(h]h]h]h]h]uhjh]rhXdata-files: audio/**/*.mp3rr}r(hXdata-files: audio/**/*.mp3hjubahjubhX matches all the rr}r(hX matches all the jDNjPNjjthjubj)r}r(hX``.mp3``h}r(h]h]h]h]h]uhjh]rhX.mp3rr}r(hX.mp3hjubahjubhX files in the rr}r(hX files in the jDNjPNjjthjubj)r}r(hX ``audio``h}r(h]h]h]h]h]uhjh]rhXaudiorr}r(hXaudiohjubahjubhX% directory, including subdirectories.rr}r(hX% directory, including subdirectories.jDNjPNjjthjubeubjZ)r}r(hX4The specific limitations of this wildcard syntax arerhjjDjEhj]h}r(h]h]h]h]h]ujPMrjjth]rhX4The specific limitations of this wildcard syntax arerr}r (hjjDNjPNjjthjubaubj )r }r (hUhjjDjEhj h}r (j X-h]h]h]h]h]ujPMtjjth]r (j )r}r(hX/``*`` wildcards are only allowed in place of the file name, not in the directory name or file extension. It must replace the whole file name (e.g., ``*.html`` is allowed, but ``chapter-*.html`` is not). If a wildcard is used, it must be used with an extension, so ``data-files: data/*`` is not allowed. hj jDjEhj h}r(h]h]h]h]h]ujPNjjth]rjZ)r}r(hX.``*`` wildcards are only allowed in place of the file name, not in the directory name or file extension. It must replace the whole file name (e.g., ``*.html`` is allowed, but ``chapter-*.html`` is not). If a wildcard is used, it must be used with an extension, so ``data-files: data/*`` is not allowed.hjjDjEhj]h}r(h]h]h]h]h]ujPMth]r(j)r}r(hX``*``h}r(h]h]h]h]h]uhjh]rhX*r}r(hX*hjubahjubhX wildcards are only allowed in place of the file name, not in the directory name or file extension. It must replace the whole file name (e.g., rr}r(hX wildcards are only allowed in place of the file name, not in the directory name or file extension. It must replace the whole file name (e.g., hjubj)r}r (hX ``*.html``h}r!(h]h]h]h]h]uhjh]r"hX*.htmlr#r$}r%(hX*.htmlhjubahjubhX is allowed, but r&r'}r((hX is allowed, but hjubj)r)}r*(hX``chapter-*.html``h}r+(h]h]h]h]h]uhjh]r,hXchapter-*.htmlr-r.}r/(hXchapter-*.htmlhj)ubahjubhXG is not). If a wildcard is used, it must be used with an extension, so r0r1}r2(hXG is not). If a wildcard is used, it must be used with an extension, so hjubj)r3}r4(hX``data-files: data/*``h}r5(h]h]h]h]h]uhjh]r6hXdata-files: data/*r7r8}r9(hXdata-files: data/*hj3ubahjubhX is not allowed.r:r;}r<(hX is not allowed.hjubeubaubj )r=}r>(hXPrior to Cabal 2.4, when matching a wildcard plus extension, a file's full extension must match exactly, so ``*.gz`` matches ``foo.gz`` but not ``foo.tar.gz``. This restriction has been lifted when ``cabal-version: 2.4`` or greater so that ``*.gz`` does match ``foo.tar.gz`` hj jDjEhj h}r?(h]h]h]h]h]ujPNjjth]r@jZ)rA}rB(hXPrior to Cabal 2.4, when matching a wildcard plus extension, a file's full extension must match exactly, so ``*.gz`` matches ``foo.gz`` but not ``foo.tar.gz``. This restriction has been lifted when ``cabal-version: 2.4`` or greater so that ``*.gz`` does match ``foo.tar.gz``hj=jDjEhj]h}rC(h]h]h]h]h]ujPM{h]rD(hXnPrior to Cabal 2.4, when matching a wildcard plus extension, a file’s full extension must match exactly, so rErF}rG(hXlPrior to Cabal 2.4, when matching a wildcard plus extension, a file's full extension must match exactly, so hjAubj)rH}rI(hX``*.gz``h}rJ(h]h]h]h]h]uhjAh]rKhX*.gzrLrM}rN(hX*.gzhjHubahjubhX matches rOrP}rQ(hX matches hjAubj)rR}rS(hX ``foo.gz``h}rT(h]h]h]h]h]uhjAh]rUhXfoo.gzrVrW}rX(hXfoo.gzhjRubahjubhX but not rYrZ}r[(hX but not hjAubj)r\}r](hX``foo.tar.gz``h}r^(h]h]h]h]h]uhjAh]r_hX foo.tar.gzr`ra}rb(hX foo.tar.gzhj\ubahjubhX(. This restriction has been lifted when rcrd}re(hX(. This restriction has been lifted when hjAubj)rf}rg(hX``cabal-version: 2.4``h}rh(h]h]h]h]h]uhjAh]rihXcabal-version: 2.4rjrk}rl(hXcabal-version: 2.4hjfubahjubhX or greater so that rmrn}ro(hX or greater so that hjAubj)rp}rq(hX``*.gz``h}rr(h]h]h]h]h]uhjAh]rshX*.gzrtru}rv(hX*.gzhjpubahjubhX does match rwrx}ry(hX does match hjAubj)rz}r{(hX``foo.tar.gz``h}r|(h]h]h]h]h]uhjAh]r}hX foo.tar.gzr~r}r(hX foo.tar.gzhjzubahjubeubaubj )r}r(hXj``*`` wildcards will not match if the file name is empty (e.g., ``*.html`` will not match ``foo/.html``). hj jDjEhj h}r(h]h]h]h]h]ujPNjjth]rjZ)r}r(hXi``*`` wildcards will not match if the file name is empty (e.g., ``*.html`` will not match ``foo/.html``).hjjDjEhj]h}r(h]h]h]h]h]ujPMh]r(j)r}r(hX``*``h}r(h]h]h]h]h]uhjh]rhX*r}r(hX*hjubahjubhX; wildcards will not match if the file name is empty (e.g., rr}r(hX; wildcards will not match if the file name is empty (e.g., hjubj)r}r(hX ``*.html``h}r(h]h]h]h]h]uhjh]rhX*.htmlrr}r(hX*.htmlhjubahjubhX will not match rr}r(hX will not match hjubj)r}r(hX ``foo/.html``h}r(h]h]h]h]h]uhjh]rhX foo/.htmlrr}r(hX foo/.htmlhjubahjubhX).rr}r(hX).hjubeubaubj )r}r(hX``**`` wildcards can only appear as the final path component before the file name (e.g., ``data/**/images/*.jpg`` is not allowed). If a ``**`` wildcard is used, then the file name must include a ``*`` wildcard (e.g., ``data/**/README.rst`` is not allowed). hj jDjEhj h}r(h]h]h]h]h]ujPNjjth]rjZ)r}r(hX``**`` wildcards can only appear as the final path component before the file name (e.g., ``data/**/images/*.jpg`` is not allowed). If a ``**`` wildcard is used, then the file name must include a ``*`` wildcard (e.g., ``data/**/README.rst`` is not allowed).hjjDjEhj]h}r(h]h]h]h]h]ujPMh]r(j)r}r(hX``**``h}r(h]h]h]h]h]uhjh]rhX**rr}r(hX**hjubahjubhXS wildcards can only appear as the final path component before the file name (e.g., rr}r(hXS wildcards can only appear as the final path component before the file name (e.g., hjubj)r}r(hX``data/**/images/*.jpg``h}r(h]h]h]h]h]uhjh]rhXdata/**/images/*.jpgrr}r(hXdata/**/images/*.jpghjubahjubhX is not allowed). If a rr}r(hX is not allowed). If a hjubj)r}r(hX``**``h}r(h]h]h]h]h]uhjh]rhX**rr}r(hX**hjubahjubhX5 wildcard is used, then the file name must include a rr}r(hX5 wildcard is used, then the file name must include a hjubj)r}r(hX``*``h}r(h]h]h]h]h]uhjh]rhX*r}r(hX*hjubahjubhX wildcard (e.g., rr}r(hX wildcard (e.g., hjubj)r}r(hX``data/**/README.rst``h}r(h]h]h]h]h]uhjh]rhXdata/**/README.rstrr}r(hXdata/**/README.rsthjubahjubhX is not allowed).rr}r(hX is not allowed).hjubeubaubj )r}r(hX6A wildcard that does not match any files is an error. hj jDjEhj h}r(h]h]h]h]h]ujPNjjth]rjZ)r}r(hX5A wildcard that does not match any files is an error.rhjjDjEhj]h}r(h]h]h]h]h]ujPMh]rhX5A wildcard that does not match any files is an error.rr}r(hjhjubaubaubeubjZ)r}r(hXThe reason for providing only a very limited form of wildcard is to concisely express the common case of a large number of related files of the same file type without making it too easy to accidentally include unwanted files.rhjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]rhXThe reason for providing only a very limited form of wildcard is to concisely express the common case of a large number of related files of the same file type without making it too easy to accidentally include unwanted files.rr}r(hjjDNjPNjjthjubaubjZ)r}r(hXMOn efficiency: if you use ``**`` patterns, the directory tree will be walked starting with the parent directory of the ``**``. If that's the root of the project, this might include ``.git/``, ``dist-newstyle/``, or other large directories! To avoid this behaviour, put the files that wildcards will match against in their own folder.hjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hXOn efficiency: if you use rr}r(hXOn efficiency: if you use jDNjPNjjthjubj)r}r(hX``**``h}r(h]h]h]h]h]uhjh]rhX**rr}r(hX**hjubahjubhXW patterns, the directory tree will be walked starting with the parent directory of the rr}r(hXW patterns, the directory tree will be walked starting with the parent directory of the jDNjPNjjthjubj)r}r(hX``**``h}r(h]h]h]h]h]uhjh]rhX**rr }r (hX**hjubahjubhX:. If that’s the root of the project, this might include r r }r (hX8. If that's the root of the project, this might include jDNjPNjjthjubj)r}r(hX ``.git/``h}r(h]h]h]h]h]uhjh]rhX.git/rr}r(hX.git/hjubahjubhX, rr}r(hX, jDNjPNjjthjubj)r}r(hX``dist-newstyle/``h}r(h]h]h]h]h]uhjh]rhXdist-newstyle/rr}r(hXdist-newstyle/hjubahjubhX{, or other large directories! To avoid this behaviour, put the files that wildcards will match against in their own folder.rr }r!(hX{, or other large directories! To avoid this behaviour, put the files that wildcards will match against in their own folder.jDNjPNjjthjubeubjZ)r"}r#(hX5``**`` wildcards are available starting in Cabal 2.4.hjjDjEhj]h}r$(h]h]h]h]h]ujPMjjth]r%(j)r&}r'(hX``**``h}r((h]h]h]h]h]uhj"h]r)hX**r*r+}r,(hX**hj&ubahjubhX/ wildcards are available starting in Cabal 2.4.r-r.}r/(hX/ wildcards are available starting in Cabal 2.4.jDNjPNjjthj"ubeubeubeubj )r0}r1(hUhj jDjEhjnh}r2(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r3}r4(hUhj jDjEhj h}r5(j j Xcabalh]h]h]h]h]j X pkg-fieldr6j j6ujPNjjth]r7(j )r8}r9(hXdata-dir: directoryhj3jDjEhj h}r:(h]r;jyah]h]h]h]j ujPMjjth]r<(j )r=}r>(hUhj8jDjEhjnh}r?(h]h]h]h]h]Uentries]r@(j! Xdata-dir; package.cabal fieldjyUNtrAaujPMjjth]ubj# )rB}rC(hjxhj8jDjEhj& h}rD(jjh]h]h]h]h]ujPMjjth]rEhXdata-dirrFrG}rH(hUjDNjPNjjthjBubaubj, )rI}rJ(hj/ hj8jDjEhj0 h}rK(jjh]h]h]h]h]ujPMjjth]rLhX: rMrN}rO(hUjDNjPNjjthjIubaubj6 )rP}rQ(hX directoryhj8jDjEhj9 h}rR(jjh]h]h]h]h]ujPMjjth]rShX directoryrTrU}rV(hUjDNjPNjjthjPubaubeubjh)rW}rX(hUhj3jDjEhjA h}rY(h]h]h]h]h]ujPMjjth]rZjZ)r[}r\(hXThe directory where Cabal looks for data files to install, relative to the source directory. By default, Cabal will look in the source directory itself.r]hjWjDjEhj]h}r^(h]h]h]h]h]ujPMjjth]r_hXThe directory where Cabal looks for data files to install, relative to the source directory. By default, Cabal will look in the source directory itself.r`ra}rb(hj]jDNjPNjjthj[ubaubaubeubj )rc}rd(hUhj jDjEhjnh}re(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rf}rg(hUhj jDjEhj h}rh(j j Xcabalh]h]h]h]h]j X pkg-fieldrij jiujPNjjth]rj(j )rk}rl(hX!extra-source-files: filename listhjfjDjEhj h}rm(h]rnjah]h]h]h]j ujPMjjth]ro(j )rp}rq(hUhjkjDjEhjnh}rr(h]h]h]h]h]Uentries]rs(j! X'extra-source-files; package.cabal fieldjUNtrtaujPMjjth]ubj# )ru}rv(hjhjkjDjEhj& h}rw(jjh]h]h]h]h]ujPMjjth]rxhXextra-source-filesryrz}r{(hUjDNjPNjjthjuubaubj, )r|}r}(hj/ hjkjDjEhj0 h}r~(jjh]h]h]h]h]ujPMjjth]rhX: rr}r(hUjDNjPNjjthj|ubaubj6 )r}r(hX filename listhjkjDjEhj9 h}r(jjh]h]h]h]h]ujPMjjth]rhX filename listrr}r(hUjDNjPNjjthjubaubeubjh)r}r(hUhjfjDjEhjA h}r(h]h]h]h]h]ujPMjjth]rjZ)r}r(hXA list of additional files to be included in source distributions built with :ref:`setup-sdist`. As with :pkg-field:`data-files` it can use a limited form of ``*`` wildcards in file names.hjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hXMA list of additional files to be included in source distributions built with rr}r(hXMA list of additional files to be included in source distributions built with jDNjPNjjthjubjM)r}r(hX:ref:`setup-sdist`hjjDjEhjPh}r(UreftypeXrefjRjSX setup-sdistrU refdomainXstdrh]h]U refexplicith]h]h]jVj ujPMh]rjX)r}r(hjh}r(h]h]r(j]jXstd-refreh]h]h]uhjh]rhX setup-sdistrr}r(hUhjubahjcubaubhX . As with rr}r(hX . As with jDNjPNjjthjubjM)r}r(hX:pkg-field:`data-files`hjjDjEhjPh}r(UreftypeX pkg-fieldjRjSX data-filesrU refdomainXcabalrh]h]U refexplicith]h]h]jVj jlNujPMh]rj)r}r(hjh}r(h]h]r(j]jXcabal-pkg-fieldreh]h]h]uhjh]rhX data-filesrr}r(hUhjubahjubaubhX it can use a limited form of rr}r(hX it can use a limited form of jDNjPNjjthjubj)r}r(hX``*``h}r(h]h]h]h]h]uhjh]rhX*r}r(hX*hjubahjubhX wildcards in file names.rr}r(hX wildcards in file names.jDNjPNjjthjubeubaubeubj )r}r(hUhj jDjEhjnh}r(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r}r(hUhj jDjEhj h}r(j j Xcabalh]h]h]h]h]j X pkg-fieldrj jujPNjjth]r(j )r}r(hXextra-doc-files: filename listhjjDjEhj h}r(h]rj0ah]h]h]h]j ujPNjjth]r(j )r}r(hUhjjDjEhjnh}r(h]h]h]h]h]Uentries]r(j! X$extra-doc-files; package.cabal fieldj0UNtraujPNjjth]ubj# )r}r(hj/hjjDjEhj& h}r(jjh]h]h]h]h]ujPNjjth]rhXextra-doc-filesrr}r(hUjDNjPNjjthjubaubj, )r}r(hj/ hjjDjEhj0 h}r(jjh]h]h]h]h]ujPNjjth]rhX: rr}r(hUjDNjPNjjthjubaubj6 )r}r(hX filename listhjjDjEhj9 h}r(jjh]h]h]h]h]ujPNjjth]rhX filename listrr}r(hUjDNjPNjjthjubaubeubjh)r}r(hUhjjDjEhjA h}r(h]h]h]h]h]ujPNjjth]r(j)r}r(hUhjjDjEhjh}r(h]h]h]h]h]ujPNjjth]rj)r}r(hUhjjDjEhj.h}r(h]h]h]h]h]ujPNjjth]r(j )r}r(hj+hjjDjEhj h}r(h]h]h]h]h]ujPKh]rhXSincerr}r(hUhjubaubj)r}r(hU Cabal 1.18rh}r(h]h]h]h]h]uhjh]rjZ)r}r(hjh}r(h]h]h]h]h]uhjh]rhX Cabal 1.18rr}r(hUhjubahj]ubahj-ubeubaubjZ)r}r (hXA list of additional files to be included in source distributions, and also copied to the html directory when Haddock documentation is generated. As with :pkg-field:`data-files` it can use a limited form of ``*`` wildcards in file names.hjjDjEhj]h}r (h]h]h]h]h]ujPMjjth]r (hXA list of additional files to be included in source distributions, and also copied to the html directory when Haddock documentation is generated. As with r r }r(hXA list of additional files to be included in source distributions, and also copied to the html directory when Haddock documentation is generated. As with jDNjPNjjthjubjM)r}r(hX:pkg-field:`data-files`hjjDjEhjPh}r(UreftypeX pkg-fieldjRjSX data-filesrU refdomainXcabalrh]h]U refexplicith]h]h]jVj jlNujPMh]rj)r}r(hjh}r(h]h]r(j]jXcabal-pkg-fieldreh]h]h]uhjh]rhX data-filesrr}r(hUhjubahjubaubhX it can use a limited form of rr}r (hX it can use a limited form of jDNjPNjjthjubj)r!}r"(hX``*``h}r#(h]h]h]h]h]uhjh]r$hX*r%}r&(hX*hj!ubahjubhX wildcards in file names.r'r(}r)(hX wildcards in file names.jDNjPNjjthjubeubeubeubj )r*}r+(hUhj jDjEhjnh}r,(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r-}r.(hUhj jDjEhj h}r/(j j Xcabalh]h]h]h]h]j X pkg-fieldr0j j0ujPNjjth]r1(j )r2}r3(hXextra-tmp-files: filename listhj-jDjEhj h}r4(h]r5jah]h]h]h]j ujPMjjth]r6(j )r7}r8(hUhj2jDjEhjnh}r9(h]h]h]h]h]Uentries]r:(j! X$extra-tmp-files; package.cabal fieldjUNtr;aujPMjjth]ubj# )r<}r=(hjhj2jDjEhj& h}r>(jjh]h]h]h]h]ujPMjjth]r?hXextra-tmp-filesr@rA}rB(hUjDNjPNjjthj<ubaubj, )rC}rD(hj/ hj2jDjEhj0 h}rE(jjh]h]h]h]h]ujPMjjth]rFhX: rGrH}rI(hUjDNjPNjjthjCubaubj6 )rJ}rK(hX filename listhj2jDjEhj9 h}rL(jjh]h]h]h]h]ujPMjjth]rMhX filename listrNrO}rP(hUjDNjPNjjthjJubaubeubjh)rQ}rR(hUhj-jDjEhjA h}rS(h]h]h]h]h]ujPMjjth]rTjZ)rU}rV(hXA list of additional files or directories to be removed by :ref:`setup-clean`. These would typically be additional files created by additional hooks, such as the scheme described in the section on `system-dependent parameters`_hjQjDjEhj]h}rW(h]h]h]h]h]ujPMjjth]rX(hX;A list of additional files or directories to be removed by rYrZ}r[(hX;A list of additional files or directories to be removed by jDNjPNjjthjUubjM)r\}r](hX:ref:`setup-clean`hjUjDjEhjPh}r^(UreftypeXrefjRjSX setup-cleanr_U refdomainXstdr`h]h]U refexplicith]h]h]jVj ujPMh]rajX)rb}rc(hj_h}rd(h]h]re(j]j`Xstd-refrfeh]h]h]uhj\h]rghX setup-cleanrhri}rj(hUhjbubahjcubaubhXy. These would typically be additional files created by additional hooks, such as the scheme described in the section on rkrl}rm(hXy. These would typically be additional files created by additional hooks, such as the scheme described in the section on jDNjPNjjthjUubj!)rn}ro(hX`system-dependent parameters`_j$KhjUhj%h}rp(UnameXsystem-dependent parametersh]h]h]h]h]j'jo uh]rqhXsystem-dependent parametersrrrs}rt(hXsystem-dependent parametershjnubaubeubaubeubeubjn)ru}rv(hUjKhjjDjEhjqh}rw(h]h]h]h]rxjah]ryjaujPMjjth]rz(h)r{}r|(hXLibraryr}hjujDjEhhh}r~(h]h]h]h]h]ujPMjjth]rhXLibraryrr}r(hj}jDNjPNjjthj{ubaubj )r}r(hUhjujDjEhjnh}r(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r}r(hUhjujDjEhj h}r(j j Xcabalh]h]h]h]h]j X pkg-sectionrj jujPNjjth]r(j )r}r(hX library namehjjDjEhj h}r(h]rjah]h]h]h]j ujPNjjth]r(j )r}r(hUhjjDjEhjnh}r(h]h]h]h]h]Uentries]r(j! X&library:library; package.cabal sectionjUNtraujPNjjth]ubj# )r}r(hjhjjDjEhj& h}r(jjh]h]h]h]h]ujPNjjth]rhXlibraryrr}r(hUjDNjPNjjthjubaubj, )r}r(hU hjjDjEhj0 h}r(jjh]h]h]h]h]ujPNjjth]rhX r}r(hUjDNjPNjjthjubaubj6 )r}r(hXnamehjjDjEhj9 h}r(jjh]h]h]h]h]ujPNjjth]rhXnamerr}r(hUjDNjPNjjthjubaubeubjh)r}r(hUhjjDjEhjA h}r(h]h]h]h]h]ujPNjjth]r(jZ)r}r(hX Build information for libraries.rhjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]rhX Build information for libraries.rr}r(hjjDNjPNjjthjubaubjZ)r}r(hXCurrently, there can only be one publicly exposed library in a package, and its name is the same as package name set by global :pkg-field:`name` field. In this case, the ``name`` argument to the :pkg-section:`library` section must be omitted.hjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hXCurrently, there can only be one publicly exposed library in a package, and its name is the same as package name set by global rr}r(hXCurrently, there can only be one publicly exposed library in a package, and its name is the same as package name set by global jDNjPNjjthjubjM)r}r(hX:pkg-field:`name`hjjDjEhjPh}r(UreftypeX pkg-fieldjRjSXnamerU refdomainXcabalrh]h]U refexplicith]h]h]jVj jljujPMh]rj)r}r(hjh}r(h]h]r(j]jXcabal-pkg-fieldreh]h]h]uhjh]rhXnamerr}r(hUhjubahjubaubhX field. In this case, the rr}r(hX field. In this case, the jDNjPNjjthjubj)r}r(hX``name``h}r(h]h]h]h]h]uhjh]rhXnamerr}r(hXnamehjubahjubhX argument to the rr}r(hX argument to the jDNjPNjjthjubjM)r}r(hX:pkg-section:`library`hjjDjEhjPh}r(UreftypeX pkg-sectionjRjSXlibraryrU refdomainXcabalrh]h]U refexplicith]h]h]jVj ujPMh]rj)r}r(hjh}r(h]h]r(j]jXcabal-pkg-sectionreh]h]h]uhjh]rhXlibraryrr}r(hUhjubahjubaubhX section must be omitted.rr}r(hX section must be omitted.jDNjPNjjthjubeubjZ)r}r(hXStarting with Cabal 2.0, private internal sub-library components can be defined by using setting the ``name`` field to a name different from the current package's name; see section on :ref:`Internal Libraries ` for more information.hjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hXeStarting with Cabal 2.0, private internal sub-library components can be defined by using setting the rr}r(hXeStarting with Cabal 2.0, private internal sub-library components can be defined by using setting the jDNjPNjjthjubj)r}r(hX``name``h}r(h]h]h]h]h]uhjh]rhXnamerr}r(hXnamehjubahjubhXM field to a name different from the current package’s name; see section on rr}r(hXK field to a name different from the current package's name; see section on jDNjPNjjthjubjM)r}r(hX#:ref:`Internal Libraries `hjjDjEhjPh}r(UreftypeXrefjRjSXsublibsU refdomainXstdrh]h]U refexplicith]h]h]jVj ujPMh]rjX)r}r(hXInternal Libraries h}r(h]h]r(j]jXstd-refreh]h]h]uhjh]rhXInternal Librariesrr}r(hUhjubahjcubaubhX for more information.r r }r (hX for more information.jDNjPNjjthjubeubeubeubjZ)r }r (hX8The library section should contain the following fields:rhjujDjEhj]h}r(h]h]h]h]h]ujPMjjth]rhX8The library section should contain the following fields:rr}r(hjjDNjPNjjthj ubaubj )r}r(hUhjujDjEhjnh}r(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r}r(hUhjujDjEhj h}r(j j Xcabalh]h]h]h]h]j X pkg-fieldrj jujPNjjth]r(j )r}r(hX exposed-modules: identifier listhjjDjEhj h}r(h]rjah]h]h]h]j ujPMjjth]r (j )r!}r"(hUhjjDjEhjnh}r#(h]h]h]h]h]Uentries]r$(j! X,library:exposed-modules; package.cabal fieldjUNtr%aujPMjjth]ubj# )r&}r'(hjhjjDjEhj& h}r((jjh]h]h]h]h]ujPMjjth]r)hXexposed-modulesr*r+}r,(hUjDNjPNjjthj&ubaubj, )r-}r.(hj/ hjjDjEhj0 h}r/(jjh]h]h]h]h]ujPMjjth]r0hX: r1r2}r3(hUjDNjPNjjthj-ubaubj6 )r4}r5(hXidentifier listhjjDjEhj9 h}r6(jjh]h]h]h]h]ujPMjjth]r7hXidentifier listr8r9}r:(hUjDNjPNjjthj4ubaubeubjh)r;}r<(hUhjjDjEhjA h}r=(h]h]h]h]h]ujPMjjth]r>(j)r?}r@(hUhj;jDjEhjh}rA(h]h]h]h]h]ujPNjjth]rBj)rC}rD(hUhj?jDjEhj.h}rE(h]h]h]h]h]ujPMjjth]rF(j )rG}rH(hXrequiredhjCjDjEhj h}rI(h]h]h]h]h]ujPKh]rJhXRequiredrKrL}rM(hUhjGubaubj)rN}rO(hX#if this package contains a library h}rP(h]h]h]h]h]uhjCh]rQjZ)rR}rS(hX"if this package contains a libraryrThjNjDjEhj]h}rU(h]h]h]h]h]ujPMh]rVhX"if this package contains a libraryrWrX}rY(hjThjRubaubahj-ubeubaubjZ)rZ}r[(hX(A list of modules added by this package.r\hj;jDjEhj]h}r](h]h]h]h]h]ujPMjjth]r^hX(A list of modules added by this package.r_r`}ra(hj\jDNjPNjjthjZubaubeubeubj )rb}rc(hUhjujDjEhjnh}rd(h]h]h]h]h]Uentries]ujPNjjth]ubjk)re}rf(hUhjujDjEhj h}rg(j j Xcabalh]h]h]h]h]j X pkg-fieldrhj jhujPNjjth]ri(j )rj}rk(hX virtual-modules: identifier listhjejDjEhj h}rl(h]rmj|ah]h]h]h]j ujPNjjth]rn(j )ro}rp(hUhjjjDjEhjnh}rq(h]h]h]h]h]Uentries]rr(j! X,library:virtual-modules; package.cabal fieldj|UNtrsaujPNjjth]ubj# )rt}ru(hj{hjjjDjEhj& h}rv(jjh]h]h]h]h]ujPNjjth]rwhXvirtual-modulesrxry}rz(hUjDNjPNjjthjtubaubj, )r{}r|(hj/ hjjjDjEhj0 h}r}(jjh]h]h]h]h]ujPNjjth]r~hX: rr}r(hUjDNjPNjjthj{ubaubj6 )r}r(hXidentifier listhjjjDjEhj9 h}r(jjh]h]h]h]h]ujPNjjth]rhXidentifier listrr}r(hUjDNjPNjjthjubaubeubjh)r}r(hUhjejDjEhjA h}r(h]h]h]h]h]ujPNjjth]r(j)r}r(hUhjjDjEhjh}r(h]h]h]h]h]ujPNjjth]rj)r}r(hUhjjDjEhj.h}r(h]h]h]h]h]ujPNjjth]r(j )r}r(hj+hjjDjEhj h}r(h]h]h]h]h]ujPKh]rhXSincerr}r(hUhjubaubj)r}r(hU Cabal 2.2rh}r(h]h]h]h]h]uhjh]rjZ)r}r(hjh}r(h]h]h]h]h]uhjh]rhX Cabal 2.2rr}r(hUhjubahj]ubahj-ubeubaubjZ)r}r(hXaA list of virtual modules provided by this package. Virtual modules are modules without a source file. See for example the ``GHC.Prim`` module from the ``ghc-prim`` package. Modules listed here will not be built, but still end up in the list of ``exposed-modules`` in the installed package info when the package is registered in the package database.hjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hX}A list of virtual modules provided by this package. Virtual modules are modules without a source file. See for example the rr}r(hX}A list of virtual modules provided by this package. Virtual modules are modules without a source file. See for example the jDNjPNjjthjubj)r}r(hX ``GHC.Prim``h}r(h]h]h]h]h]uhjh]rhXGHC.Primrr}r(hXGHC.PrimhjubahjubhX module from the rr}r(hX module from the jDNjPNjjthjubj)r}r(hX ``ghc-prim``h}r(h]h]h]h]h]uhjh]rhXghc-primrr}r(hXghc-primhjubahjubhXR package. Modules listed here will not be built, but still end up in the list of rr}r(hXR package. Modules listed here will not be built, but still end up in the list of jDNjPNjjthjubj)r}r(hX``exposed-modules``h}r(h]h]h]h]h]uhjh]rhXexposed-modulesrr}r(hXexposed-moduleshjubahjubhXV in the installed package info when the package is registered in the package database.rr}r(hXV in the installed package info when the package is registered in the package database.jDNjPNjjthjubeubeubeubj )r}r(hUhjujDjEhjnh}r(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r}r(hUhjujDjEhj h}r(j j Xcabalh]h]h]h]h]j X pkg-fieldrj jujPNjjth]r(j )r}r(hXexposed: booleanhjjDjEhj h}r(h]rjah]h]h]h]j ujPMjjth]r(j )r}r(hUhjjDjEhjnh}r(h]h]h]h]h]Uentries]r(j! X$library:exposed; package.cabal fieldjUNtraujPMjjth]ubj# )r}r(hjhjjDjEhj& h}r(jjh]h]h]h]h]ujPMjjth]rhXexposedrr}r(hUjDNjPNjjthjubaubj, )r}r(hj/ hjjDjEhj0 h}r(jjh]h]h]h]h]ujPMjjth]rhX: rr}r(hUjDNjPNjjthjubaubj6 )r}r(hXbooleanhjjDjEhj9 h}r(jjh]h]h]h]h]ujPMjjth]rhXbooleanrr}r(hUjDNjPNjjthjubaubeubjh)r}r(hUhjjDjEhjA h}r(h]h]h]h]h]ujPMjjth]r(j)r}r(hUhjjDjEhjh}r(h]h]h]h]h]ujPNjjth]rj)r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hX Default valuehjjDjEhj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r(hUh}r (h]h]h]h]h]uhjh]r jZ)r }r (hXTrueh}r (h]h]h]h]h]uhjh]rj)r}r(hX``True``hj jDjEhjh}r(h]h]h]h]h]ujPNjjth]rhXTruerr}r(hXTruejDNjPNjjthjubaubahj]ubahj-ubehj.ubaubjZ)r}r(hXmSome Haskell compilers (notably GHC) support the notion of packages being "exposed" or "hidden" which means the modules they provide can be easily imported without always having to specify which package they come from. However this only works effectively if the modules provided by all exposed packages do not overlap (otherwise a module import would be ambiguous).rhjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]rhXuSome Haskell compilers (notably GHC) support the notion of packages being “exposed” or “hidden” which means the modules they provide can be easily imported without always having to specify which package they come from. However this only works effectively if the modules provided by all exposed packages do not overlap (otherwise a module import would be ambiguous).rr}r(hjjDNjPNjjthjubaubjZ)r}r(hX>Almost all new libraries use hierarchical module names that do not clash, so it is very uncommon to have to use this field. However it may be necessary to set ``exposed: False`` for some old libraries that use a flat module namespace or where it is known that the exposed modules would clash with other common modules.hjjDjEhj]h}r (h]h]h]h]h]ujPMjjth]r!(hXAlmost all new libraries use hierarchical module names that do not clash, so it is very uncommon to have to use this field. However it may be necessary to set r"r#}r$(hXAlmost all new libraries use hierarchical module names that do not clash, so it is very uncommon to have to use this field. However it may be necessary to set jDNjPNjjthjubj)r%}r&(hX``exposed: False``h}r'(h]h]h]h]h]uhjh]r(hXexposed: Falser)r*}r+(hXexposed: Falsehj%ubahjubhX for some old libraries that use a flat module namespace or where it is known that the exposed modules would clash with other common modules.r,r-}r.(hX for some old libraries that use a flat module namespace or where it is known that the exposed modules would clash with other common modules.jDNjPNjjthjubeubeubeubj )r/}r0(hUhjujDjEhjnh}r1(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r2}r3(hUhjujDjEhj h}r4(j j Xcabalh]h]h]h]h]j X pkg-fieldr5j j5ujPNjjth]r6(j )r7}r8(hX visibility: visibilty specifiershj2jDjEhj h}r9(h]r:jBah]h]h]h]j ujPMjjth]r;(j )r<}r=(hUhj7jDjEhjnh}r>(h]h]h]h]h]Uentries]r?(j! X'library:visibility; package.cabal fieldjBUNtr@aujPMjjth]ubj# )rA}rB(hjAhj7jDjEhj& h}rC(jjh]h]h]h]h]ujPMjjth]rDhX visibilityrErF}rG(hUjDNjPNjjthjAubaubj, )rH}rI(hj/ hj7jDjEhj0 h}rJ(jjh]h]h]h]h]ujPMjjth]rKhX: rLrM}rN(hUjDNjPNjjthjHubaubj6 )rO}rP(hXvisibilty specifiershj7jDjEhj9 h}rQ(jjh]h]h]h]h]ujPMjjth]rRhXvisibilty specifiersrSrT}rU(hUjDNjPNjjthjOubaubeubjh)rV}rW(hUhj2jDjEhjA h}rX(h]h]h]h]h]ujPMjjth]rY(jZ)rZ}r[(hX :since 3.0r\hjVjDjEhj]h}r](h]h]h]h]h]ujPMjjth]r^hX :since 3.0r_r`}ra(hj\jDNjPNjjthjZubaubj)rb}rc(hUhjVjDjEhjh}rd(h]h]h]h]h]ujPNjjth]rej)rf}rg(hUh}rh(h]h]h]h]h]uhjbh]ri(j )rj}rk(hX Default valuehjfjDjEhj h}rl(h]h]h]h]h]ujPKh]rmhX Default valuernro}rp(hUhjjubaubj)rq}rr(hUh}rs(h]h]h]h]h]uhjfh]rtjZ)ru}rv(hXAprivate for internal libraries. Cannot be set for public library.h}rw(h]h]h]h]h]uhjqh]rx(j)ry}rz(hX ``private``hjujDjEhjh}r{(h]h]h]h]h]ujPNjjth]r|hXprivater}r~}r(hXprivatejDNjPNjjthjyubaubhX: for internal libraries. Cannot be set for public library.rr}r(hX: for internal libraries. Cannot be set for public library.jDNjPNjjthjuubehj]ubahj-ubehj.ubaubjZ)r}r(hX3Cabal recognizes ``public`` and ``private`` here...hjVjDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hXCabal recognizes rr}r(hXCabal recognizes jDNjPNjjthjubj)r}r(hX ``public``h}r(h]h]h]h]h]uhjh]rhXpublicrr}r(hXpublichjubahjubhX and rr}r(hX and jDNjPNjjthjubj)r}r(hX ``private``h}r(h]h]h]h]h]uhjh]rhXprivaterr}r(hXprivatehjubahjubhX here…rr}r(hX here...jDNjPNjjthjubeubjZ)r}r(hXMultiple public libraries...rhjVjDjEhj]h}r(h]h]h]h]h]ujPMjjth]rhXMultiple public libraries…rr}r(hjjDNjPNjjthjubaubeubeubj )r}r(hUhjujDjEhjnh}r(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r}r(hUhjujDjEhj h}r(j j Xcabalh]h]h]h]h]j X pkg-fieldrj jujPNjjth]r(j )r}r(hXreexported-modules: exportlisthjjDjEhj h}r(h]rjnah]h]h]h]j ujPNjjth]r(j )r}r(hUhjjDjEhjnh}r(h]h]h]h]h]Uentries]r(j! X/library:reexported-modules; package.cabal fieldjnUNtraujPNjjth]ubj# )r}r(hjmhjjDjEhj& h}r(jjh]h]h]h]h]ujPNjjth]rhXreexported-modulesrr}r(hUjDNjPNjjthjubaubj, )r}r(hj/ hjjDjEhj0 h}r(jjh]h]h]h]h]ujPNjjth]rhX: rr}r(hUjDNjPNjjthjubaubj6 )r}r(hX exportlisthjjDjEhj9 h}r(jjh]h]h]h]h]ujPNjjth]rhX exportlistrr}r(hUjDNjPNjjthjubaubeubjh)r}r(hUhjjDjEhjA h}r(h]h]h]h]h]ujPNjjth]r(j)r}r(hUhjjDjEhjh}r(h]h]h]h]h]ujPNjjth]rj)r}r(hUhjjDjEhj.h}r(h]h]h]h]h]ujPNjjth]r(j )r}r(hj+hjjDjEhj h}r(h]h]h]h]h]ujPKh]rhXSincerr}r(hUhjubaubj)r}r(hU Cabal 1.22rh}r(h]h]h]h]h]uhjh]rjZ)r}r(hjh}r(h]h]h]h]h]uhjh]rhX Cabal 1.22rr}r(hUhjubahj]ubahj-ubeubaubjZ)r}r(hXSupported only in GHC 7.10 and later. A list of modules to *reexport* from this package. The syntax of this field is ``orig-pkg:Name as NewName`` to reexport module ``Name`` from ``orig-pkg`` with the new name ``NewName``. We also support abbreviated versions of the syntax: if you omit ``as NewName``, we'll reexport without renaming; if you omit ``orig-pkg``, then we will automatically figure out which package to reexport from, if it's unambiguous.hjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hX;Supported only in GHC 7.10 and later. A list of modules to rr}r(hX;Supported only in GHC 7.10 and later. A list of modules to jDNjPNjjthjubj)r}r(hX *reexport*h}r(h]h]h]h]h]uhjh]rhXreexportrr}r(hXreexporthjubahjubhX0 from this package. The syntax of this field is rr}r(hX0 from this package. The syntax of this field is jDNjPNjjthjubj)r}r(hX``orig-pkg:Name as NewName``h}r(h]h]h]h]h]uhjh]rhXorig-pkg:Name as NewNamerr}r(hXorig-pkg:Name as NewNamehjubahjubhX to reexport module rr}r(hX to reexport module jDNjPNjjthjubj)r}r(hX``Name``h}r (h]h]h]h]h]uhjh]r hXNamer r }r (hXNamehjubahjubhX from rr}r(hX from jDNjPNjjthjubj)r}r(hX ``orig-pkg``h}r(h]h]h]h]h]uhjh]rhXorig-pkgrr}r(hXorig-pkghjubahjubhX with the new name rr}r(hX with the new name jDNjPNjjthjubj)r}r(hX ``NewName``h}r(h]h]h]h]h]uhjh]rhXNewNamerr }r!(hXNewNamehjubahjubhXB. We also support abbreviated versions of the syntax: if you omit r"r#}r$(hXB. We also support abbreviated versions of the syntax: if you omit jDNjPNjjthjubj)r%}r&(hX``as NewName``h}r'(h]h]h]h]h]uhjh]r(hX as NewNamer)r*}r+(hX as NewNamehj%ubahjubhX1, we’ll reexport without renaming; if you omit r,r-}r.(hX/, we'll reexport without renaming; if you omit jDNjPNjjthjubj)r/}r0(hX ``orig-pkg``h}r1(h]h]h]h]h]uhjh]r2hXorig-pkgr3r4}r5(hXorig-pkghj/ubahjubhX^, then we will automatically figure out which package to reexport from, if it’s unambiguous.r6r7}r8(hX\, then we will automatically figure out which package to reexport from, if it's unambiguous.jDNjPNjjthjubeubjZ)r9}r:(hXhReexported modules are useful for compatibility shims when a package has been split into multiple packages, and they have the useful property that if a package provides a module, and another package reexports it under the same name, these are not considered a conflict (as would be the case with a stub module.) They can also be used to resolve name conflicts.r;hjjDjEhj]h}r<(h]h]h]h]h]ujPMjjth]r=hXhReexported modules are useful for compatibility shims when a package has been split into multiple packages, and they have the useful property that if a package provides a module, and another package reexports it under the same name, these are not considered a conflict (as would be the case with a stub module.) They can also be used to resolve name conflicts.r>r?}r@(hj;jDNjPNjjthj9ubaubeubeubj )rA}rB(hUhjujDjEhjnh}rC(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rD}rE(hUhjujDjEhj h}rF(j j Xcabalh]h]h]h]h]j X pkg-fieldrGj jGujPNjjth]rH(j )rI}rJ(hXsignatures: signature listhjDjDjEhj h}rK(h]rLjah]h]h]h]j ujPNjjth]rM(j )rN}rO(hUhjIjDjEhjnh}rP(h]h]h]h]h]Uentries]rQ(j! X'library:signatures; package.cabal fieldjUNtrRaujPNjjth]ubj# )rS}rT(hjhjIjDjEhj& h}rU(jjh]h]h]h]h]ujPNjjth]rVhX signaturesrWrX}rY(hUjDNjPNjjthjSubaubj, )rZ}r[(hj/ hjIjDjEhj0 h}r\(jjh]h]h]h]h]ujPNjjth]r]hX: r^r_}r`(hUjDNjPNjjthjZubaubj6 )ra}rb(hXsignature listhjIjDjEhj9 h}rc(jjh]h]h]h]h]ujPNjjth]rdhXsignature listrerf}rg(hUjDNjPNjjthjaubaubeubjh)rh}ri(hUhjDjDjEhjA h}rj(h]h]h]h]h]ujPNjjth]rk(j)rl}rm(hUhjhjDjEhjh}rn(h]h]h]h]h]ujPNjjth]roj)rp}rq(hUhjljDjEhj.h}rr(h]h]h]h]h]ujPNjjth]rs(j )rt}ru(hj+hjpjDjEhj h}rv(h]h]h]h]h]ujPKh]rwhXSincerxry}rz(hUhjtubaubj)r{}r|(hU Cabal 2.0r}h}r~(h]h]h]h]h]uhjph]rjZ)r}r(hj}h}r(h]h]h]h]h]uhj{h]rhX Cabal 2.0rr}r(hUhjubahj]ubahj-ubeubaubjZ)r}r(hXSupported only in GHC 8.2 and later. A list of `module signatures `__ required by this package.hjhjDjEhj]h}r(h]h]h]h]h]ujPM jjth]r(hX/Supported only in GHC 8.2 and later. A list of rr}r(hX/Supported only in GHC 8.2 and later. A list of jDNjPNjjthjubj!)r}r(hXy`module signatures `__h}r(UnameXmodule signaturesj] Xahttps://downloads.haskell.org/~ghc/master/users-guide/separate_compilation.html#module-signaturesh]h]h]h]h]uhjh]rhXmodule signaturesrr}r(hXmodule signatureshjubahj%ubhX required by this package.rr}r(hX required by this package.jDNjPNjjthjubeubjZ)r}r(hXSModule signatures are part of the Backpack_ extension to the Haskell module system.hjhjDjEhj]h}r(h]h]h]h]h]ujPM jjth]r(hX"Module signatures are part of the rr}r(hX"Module signatures are part of the jDNjPNjjthjubj!)r}r(hX Backpack_j$Khjhj%h}r(UnameXBackpackrj] X.https://ghc.haskell.org/trac/ghc/wiki/Backpackrh]h]h]h]h]uh]rhXBackpackrr}r(hjhjubaubhX( extension to the Haskell module system.rr}r(hX( extension to the Haskell module system.jDNjPNjjthjubeubjZ)r}r(hXPackages that do not export any modules and only export required signatures are called "signature-only packages", and their signatures are subjected to `signature thinning `__.hjhjDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hXPackages that do not export any modules and only export required signatures are called “signature-only packages”, and their signatures are subjected to rr}r(hXPackages that do not export any modules and only export required signatures are called "signature-only packages", and their signatures are subjected to jDNjPNjjthjubj!)r}r(hXa`signature thinning `__h}r(UnameXsignature thinningj] XHhttps://wiki.haskell.org/Module_signature#How_to_use_a_signature_packageh]h]h]h]h]uhjh]rhXsignature thinningrr}r(hXsignature thinninghjubahj%ubhX.r}r(hX.jDNjPNjjthjubeubeubeubjZ)r}r(hXhThe library section may also contain build information fields (see the section on `build information`_).hjujDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hXRThe library section may also contain build information fields (see the section on rr}r(hXRThe library section may also contain build information fields (see the section on jDNjPNjjthjubj!)r}r(hX`build information`_j$Khjhj%h}r(UnameXbuild informationh]h]h]h]h]j'jouh]rhXbuild informationrr}r(hXbuild informationhjubaubhX).rr}r(hX).jDNjPNjjthjubeubje)r}r(hX .. _sublibs:hjujDjEhjdh}r(h]h]h]h]h]j'jKujPMjjth]ubjZ)r}r(hX**Internal Libraries**rhjujDjEj}rjJjshj]h}r(h]h]h]h]rjKah]rjJaujPMjjtj }rjKjsh]rj)r}r(hjh}r(h]h]h]h]h]uhjh]rhXInternal Librariesrr}r(hXInternal LibrarieshjubahjubaubjZ)r}r(hXCabal 2.0 and later support "internal libraries", which are extra named libraries (as opposed to the usual unnamed library section). For example, suppose that your test suite needs access to some internal modules in your library, which you do not otherwise want to export. You could put these modules in an internal library, which the main library and the test suite :pkg-field:`build-depends` upon. Then your Cabal file might look something like this:hjujDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hXsCabal 2.0 and later support “internal libraries”, which are extra named libraries (as opposed to the usual unnamed library section). For example, suppose that your test suite needs access to some internal modules in your library, which you do not otherwise want to export. You could put these modules in an internal library, which the main library and the test suite rr}r(hXoCabal 2.0 and later support "internal libraries", which are extra named libraries (as opposed to the usual unnamed library section). For example, suppose that your test suite needs access to some internal modules in your library, which you do not otherwise want to export. You could put these modules in an internal library, which the main library and the test suite jDNjPNjjthjubjM)r}r(hX:pkg-field:`build-depends`hjjDjEhjPh}r(UreftypeX pkg-fieldjRjSX build-dependsrU refdomainXcabalrh]h]U refexplicith]h]h]jVj jljujPMh]rj)r}r(hjh}r(h]h]r(j]jXcabal-pkg-fieldreh]h]h]uhjh]rhX build-dependsrr}r(hUhjubahjubaubhX; upon. Then your Cabal file might look something like this:rr}r(hX; upon. Then your Cabal file might look something like this:jDNjPNjjthjubeubj)r}r(hXcabal-version: 2.0 name: foo version: 0.1.0.0 license: BSD3 build-type: Simple library foo-internal exposed-modules: Foo.Internal -- NOTE: no explicit constraints on base needed -- as they're inherited from the 'library' stanza build-depends: base library exposed-modules: Foo.Public build-depends: foo-internal, base >= 4.3 && < 5 test-suite test-foo type: exitcode-stdio-1.0 main-is: test-foo.hs -- NOTE: no constraints on 'foo-internal' as same-package -- dependencies implicitly refer to the same package instance build-depends: foo-internal, basehjujDjEhjh}r(jjh]h]h]h]h]ujPM'jjth]rhXcabal-version: 2.0 name: foo version: 0.1.0.0 license: BSD3 build-type: Simple library foo-internal exposed-modules: Foo.Internal -- NOTE: no explicit constraints on base needed -- as they're inherited from the 'library' stanza build-depends: base library exposed-modules: Foo.Public build-depends: foo-internal, base >= 4.3 && < 5 test-suite test-foo type: exitcode-stdio-1.0 main-is: test-foo.hs -- NOTE: no constraints on 'foo-internal' as same-package -- dependencies implicitly refer to the same package instance build-depends: foo-internal, baserr}r(hUhjubaubjZ)r}r(hXEInternal libraries are also useful for packages that define multiple executables, but do not define a publically accessible library. Internal libraries are only visible internally in the package (so they can only be added to the :pkg-field:`build-depends` of same-package libraries, executables, test suites, etc.) Internal libraries locally shadow any packages which have the same name; consequently, don't name an internal library with the same name as an external dependency if you need to be able to refer to the external dependency in a :pkg-field:`build-depends` declaration.hjujDjEhj]h}r(h]h]h]h]h]ujPM>jjth]r(hXInternal libraries are also useful for packages that define multiple executables, but do not define a publically accessible library. Internal libraries are only visible internally in the package (so they can only be added to the rr}r(hXInternal libraries are also useful for packages that define multiple executables, but do not define a publically accessible library. Internal libraries are only visible internally in the package (so they can only be added to the jDNjPNjjthjubjM)r}r(hX:pkg-field:`build-depends`hjjDjEhjPh}r(UreftypeX pkg-fieldjRjSX build-dependsr U refdomainXcabalr h]h]U refexplicith]h]h]jVj jljujPM>h]r j)r }r (hj h}r(h]h]r(j]j Xcabal-pkg-fieldreh]h]h]uhjh]rhX build-dependsrr}r(hUhj ubahjubaubhX! of same-package libraries, executables, test suites, etc.) Internal libraries locally shadow any packages which have the same name; consequently, don’t name an internal library with the same name as an external dependency if you need to be able to refer to the external dependency in a rr}r(hX of same-package libraries, executables, test suites, etc.) Internal libraries locally shadow any packages which have the same name; consequently, don't name an internal library with the same name as an external dependency if you need to be able to refer to the external dependency in a jDNjPNjjthjubjM)r}r(hX:pkg-field:`build-depends`hjjDjEhjPh}r(UreftypeX pkg-fieldjRjSX build-dependsrU refdomainXcabalrh]h]U refexplicith]h]h]jVj jljujPM>h]rj)r}r(hjh}r (h]h]r!(j]jXcabal-pkg-fieldr"eh]h]h]uhjh]r#hX build-dependsr$r%}r&(hUhjubahjubaubhX declaration.r'r(}r)(hX declaration.jDNjPNjjthjubeubjZ)r*}r+(hXShadowing can be used to vendor an external dependency into a package and thus emulate *private dependencies*. Below is an example based on a real-world use case:hjujDjEhj]h}r,(h]h]h]h]h]ujPMHjjth]r-(hXWShadowing can be used to vendor an external dependency into a package and thus emulate r.r/}r0(hXWShadowing can be used to vendor an external dependency into a package and thus emulate jDNjPNjjthj*ubj)r1}r2(hX*private dependencies*h}r3(h]h]h]h]h]uhj*h]r4hXprivate dependenciesr5r6}r7(hXprivate dependencieshj1ubahjubhX5. Below is an example based on a real-world use case:r8r9}r:(hX5. Below is an example based on a real-world use case:jDNjPNjjthj*ubeubj)r;}r<(hXQcabal-version: 2.2 name: haddock-library version: 1.6.0 library build-depends: , base ^>= 4.11.1.0 , bytestring ^>= 0.10.2.0 , containers ^>= 0.4.2.1 || ^>= 0.5.0.0 , transformers ^>= 0.5.0.0 hs-source-dirs: src -- internal sub-lib build-depends: attoparsec exposed-modules: Documentation.Haddock library attoparsec build-depends: , base ^>= 4.11.1.0 , bytestring ^>= 0.10.2.0 , deepseq ^>= 1.4.0.0 hs-source-dirs: vendor/attoparsec-0.13.1.0 -- NB: haddock-library needs only small part of lib:attoparsec -- internally, so we only bundle that subset here exposed-modules: Data.Attoparsec.ByteString Data.Attoparsec.Combinator other-modules: Data.Attoparsec.Internal ghc-options: -funbox-strict-fields -Wall -fwarn-tabs -O2hjujDjEhjh}r=(jjh]h]h]h]h]ujPMNjjth]r>hXQcabal-version: 2.2 name: haddock-library version: 1.6.0 library build-depends: , base ^>= 4.11.1.0 , bytestring ^>= 0.10.2.0 , containers ^>= 0.4.2.1 || ^>= 0.5.0.0 , transformers ^>= 0.5.0.0 hs-source-dirs: src -- internal sub-lib build-depends: attoparsec exposed-modules: Documentation.Haddock library attoparsec build-depends: , base ^>= 4.11.1.0 , bytestring ^>= 0.10.2.0 , deepseq ^>= 1.4.0.0 hs-source-dirs: vendor/attoparsec-0.13.1.0 -- NB: haddock-library needs only small part of lib:attoparsec -- internally, so we only bundle that subset here exposed-modules: Data.Attoparsec.ByteString Data.Attoparsec.Combinator other-modules: Data.Attoparsec.Internal ghc-options: -funbox-strict-fields -Wall -fwarn-tabs -O2r?r@}rA(hUhj;ubaubeubjn)rB}rC(hUhjjDjEhjqh}rD(h]h]h]h]rEUopening-an-interpreter-sessionrFah]rGjaujPMvjjth]rH(h)rI}rJ(hXOpening an interpreter sessionrKhjBjDjEhhh}rL(h]h]h]h]h]ujPMvjjth]rMhXOpening an interpreter sessionrNrO}rP(hjKjDNjPNjjthjIubaubjZ)rQ}rR(hXWhile developing a package, it is often useful to make its code available inside an interpreter session. This can be done with the ``repl`` command:hjBjDjEhj]h}rS(h]h]h]h]h]ujPMxjjth]rT(hXWhile developing a package, it is often useful to make its code available inside an interpreter session. This can be done with the rUrV}rW(hXWhile developing a package, it is often useful to make its code available inside an interpreter session. This can be done with the jDNjPNjjthjQubj)rX}rY(hX``repl``h}rZ(h]h]h]h]h]uhjQh]r[hXreplr\r]}r^(hXreplhjXubahjubhX command:r_r`}ra(hX command:jDNjPNjjthjQubeubj)rb}rc(hX $ cabal replhjBjDjEhjh}rd(jjXconsolejjh]h]h]j}h]h]ujPM|jjth]rehX $ cabal replrfrg}rh(hUhjbubaubjZ)ri}rj(hXThe name comes from the acronym `REPL `__, which stands for "read-eval-print-loop". By default ``cabal repl`` loads the first component in a package. If the package contains several named components, the name can be given as an argument to ``repl``. The name can be also optionally prefixed with the component's type for disambiguation purposes. Example:hjBjDjEhj]h}rk(h]h]h]h]h]ujPMjjth]rl(hX The name comes from the acronym rmrn}ro(hX The name comes from the acronym jDNjPNjjthjiubj!)rp}rq(hXL`REPL `__h}rr(UnameXREPLj] XAhttp://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_looph]h]h]h]h]uhjih]rshXREPLrtru}rv(hXREPLhjpubahj%ubhX:, which stands for “read-eval-print-loop”. By default rwrx}ry(hX6, which stands for "read-eval-print-loop". By default jDNjPNjjthjiubj)rz}r{(hX``cabal repl``h}r|(h]h]h]h]h]uhjih]r}hX cabal replr~r}r(hX cabal replhjzubahjubhX loads the first component in a package. If the package contains several named components, the name can be given as an argument to rr}r(hX loads the first component in a package. If the package contains several named components, the name can be given as an argument to jDNjPNjjthjiubj)r}r(hX``repl``h}r(h]h]h]h]h]uhjih]rhXreplrr}r(hXreplhjubahjubhXl. The name can be also optionally prefixed with the component’s type for disambiguation purposes. Example:rr}r(hXj. The name can be also optionally prefixed with the component's type for disambiguation purposes. Example:jDNjPNjjthjiubeubj)r}r(hXR$ cabal repl foo $ cabal repl exe:foo $ cabal repl test:bar $ cabal repl bench:bazhjBjDjEhjh}r(jjXconsolejjh]h]h]j}h]h]ujPMjjth]rhXR$ cabal repl foo $ cabal repl exe:foo $ cabal repl test:bar $ cabal repl bench:bazrr}r(hUhjubaubjn)r}r(hUhjBjDjEhjqh}r(h]h]h]h]rUfreezing-dependency-versionsrah]rjaujPMjjth]r(h)r}r(hXFreezing dependency versionsrhjjDjEhhh}r(h]h]h]h]h]ujPMjjth]rhXFreezing dependency versionsrr}r(hjjDNjPNjjthjubaubjZ)r}r(hX,If a package is built in several different environments, such as a development environment, a staging environment and a production environment, it may be necessary or desirable to ensure that the same dependency versions are selected in each environment. This can be done with the ``freeze`` command:hjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hXIf a package is built in several different environments, such as a development environment, a staging environment and a production environment, it may be necessary or desirable to ensure that the same dependency versions are selected in each environment. This can be done with the rr}r(hXIf a package is built in several different environments, such as a development environment, a staging environment and a production environment, it may be necessary or desirable to ensure that the same dependency versions are selected in each environment. This can be done with the jDNjPNjjthjubj)r}r(hX ``freeze``h}r(h]h]h]h]h]uhjh]rhXfreezerr}r(hXfreezehjubahjubhX command:rr}r(hX command:jDNjPNjjthjubeubj)r}r(hX$ cabal freezehjjDjEhjh}r(jjXconsolejjh]h]h]j}h]h]ujPMjjth]rhX$ cabal freezerr}r(hUhjubaubjZ)r}r(hXThe command writes the selected version for all dependencies to the ``cabal.config`` file. All environments which share this file will use the dependency versions specified in it.hjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hXDThe command writes the selected version for all dependencies to the rr}r(hXDThe command writes the selected version for all dependencies to the jDNjPNjjthjubj)r}r(hX``cabal.config``h}r(h]h]h]h]h]uhjh]rhX cabal.configrr}r(hX cabal.confighjubahjubhX_ file. All environments which share this file will use the dependency versions specified in it.rr}r(hX_ file. All environments which share this file will use the dependency versions specified in it.jDNjPNjjthjubeubeubjn)r}r(hUhjBjDjEhjqh}r(h]h]h]h]rU$generating-dependency-version-boundsrah]rjaujPMjjth]r(h)r}r(hX$Generating dependency version boundsrhjjDjEhhh}r(h]h]h]h]h]ujPMjjth]rhX$Generating dependency version boundsrr}r(hjjDNjPNjjthjubaubjZ)r}r(hXCabal also has the ability to suggest dependency version bounds that conform to `Package Versioning Policy`_, which is a recommended versioning system for publicly released Cabal packages. This is done by running the ``gen-bounds`` command:hjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hXPCabal also has the ability to suggest dependency version bounds that conform to rr}r(hXPCabal also has the ability to suggest dependency version bounds that conform to jDNjPNjjthjubj!)r}r(hX`Package Versioning Policy`_j$Khjhj%h}r(UnameXPackage Versioning Policyj] Xhttp://pvp.haskell.org/rh]h]h]h]h]uh]rhXPackage Versioning Policyrr}r(hXPackage Versioning PolicyhjubaubhXm, which is a recommended versioning system for publicly released Cabal packages. This is done by running the rr}r(hXm, which is a recommended versioning system for publicly released Cabal packages. This is done by running the jDNjPNjjthjubj)r}r(hX``gen-bounds``h}r(h]h]h]h]h]uhjh]rhX gen-boundsrr}r(hX gen-boundshjubahjubhX command:rr}r(hX command:jDNjPNjjthjubeubj)r}r(hX$ cabal gen-boundshjjDjEhjh}r(jjXconsolejjh]h]h]j}h]h]ujPMjjth]rhX$ cabal gen-boundsrr}r(hUhjubaubjZ)r}r(hXVFor example, given the following dependencies specified in :pkg-field:`build-depends`:hjjDjEhj]h}r(h]h]h]h]h]ujPMjjth]r(hX;For example, given the following dependencies specified in rr}r(hX;For example, given the following dependencies specified in jDNjPNjjthjubjM)r}r(hX:pkg-field:`build-depends`hjjDjEhjPh}r(UreftypeX pkg-fieldjRjSX build-dependsr U refdomainXcabalr h]h]U refexplicith]h]h]jVj jljujPMh]r j)r }r (hj h}r(h]h]r(j]j Xcabal-pkg-fieldreh]h]h]uhjh]rhX build-dependsrr}r(hUhj ubahjubaubhX:r}r(hX:jDNjPNjjthjubeubj)r}r(hX*build-depends: foo == 0.5.2 bar == 1.1hjjDjEhjh}r(jjh]h]h]h]h]ujPMjjth]rhX*build-depends: foo == 0.5.2 bar == 1.1rr}r(hUhjubaubjZ)r}r(hX;``gen-bounds`` will suggest changing them to the following:r hjjDjEhj]h}r!(h]h]h]h]h]ujPMjjth]r"(j)r#}r$(hX``gen-bounds``h}r%(h]h]h]h]h]uhjh]r&hX gen-boundsr'r(}r)(hX gen-boundshj#ubahjubhX- will suggest changing them to the following:r*r+}r,(hX- will suggest changing them to the following:jDNjPNjjthjubeubj)r-}r.(hX<build-depends: foo >= 0.5.2 && < 0.6 bar >= 1.1 && < 1.2hjjDjEhjh}r/(jjh]h]h]h]h]ujPMjjth]r0hX<build-depends: foo >= 0.5.2 && < 0.6 bar >= 1.1 && < 1.2r1r2}r3(hUhj-ubaubeubjn)r4}r5(hUhjBjDjEhjqh}r6(h]h]h]h]r7U*listing-outdated-dependency-version-boundsr8ah]r9jaujPMjjth]r:(h)r;}r<(hX*Listing outdated dependency version boundsr=hj4jDjEhhh}r>(h]h]h]h]h]ujPMjjth]r?hX*Listing outdated dependency version boundsr@rA}rB(hj=jDNjPNjjthj;ubaubjZ)rC}rD(hXManually updating dependency version bounds in a ``.cabal`` file or a freeze file can be tedious, especially when there's a lot of dependencies. The ``cabal outdated`` command is designed to help with that. It will print a list of packages for which there is a new version on Hackage that is outside the version bound specified in the ``build-depends`` field. The ``outdated`` command can also be configured to act on the freeze file (both old- and v2-style) and ignore major (or all) version bumps on Hackage for a subset of dependencies.hj4jDjEhj]h}rE(h]h]h]h]h]ujPMjjth]rF(hX1Manually updating dependency version bounds in a rGrH}rI(hX1Manually updating dependency version bounds in a jDNjPNjjthjCubj)rJ}rK(hX ``.cabal``h}rL(h]h]h]h]h]uhjCh]rMhX.cabalrNrO}rP(hX.cabalhjJubahjubhX\ file or a freeze file can be tedious, especially when there’s a lot of dependencies. The rQrR}rS(hXZ file or a freeze file can be tedious, especially when there's a lot of dependencies. The jDNjPNjjthjCubj)rT}rU(hX``cabal outdated``h}rV(h]h]h]h]h]uhjCh]rWhXcabal outdatedrXrY}rZ(hXcabal outdatedhjTubahjubhX command is designed to help with that. It will print a list of packages for which there is a new version on Hackage that is outside the version bound specified in the r[r\}r](hX command is designed to help with that. It will print a list of packages for which there is a new version on Hackage that is outside the version bound specified in the jDNjPNjjthjCubj)r^}r_(hX``build-depends``h}r`(h]h]h]h]h]uhjCh]rahX build-dependsrbrc}rd(hX build-dependshj^ubahjubhX field. The rerf}rg(hX field. The jDNjPNjjthjCubj)rh}ri(hX ``outdated``h}rj(h]h]h]h]h]uhjCh]rkhXoutdatedrlrm}rn(hXoutdatedhjhubahjubhX command can also be configured to act on the freeze file (both old- and v2-style) and ignore major (or all) version bumps on Hackage for a subset of dependencies.rorp}rq(hX command can also be configured to act on the freeze file (both old- and v2-style) and ignore major (or all) version bumps on Hackage for a subset of dependencies.jDNjPNjjthjCubeubjZ)rr}rs(hX>The following flags are supported by the ``outdated`` command:rthj4jDjEhj]h}ru(h]h]h]h]h]ujPMjjth]rv(hX)The following flags are supported by the rwrx}ry(hX)The following flags are supported by the jDNjPNjjthjrubj)rz}r{(hX ``outdated``h}r|(h]h]h]h]h]uhjrh]r}hXoutdatedr~r}r(hXoutdatedhjzubahjubhX command:rr}r(hX command:jDNjPNjjthjrubeubj)r}r(hUhj4jDjEhjh}r(h]h]h]h]h]ujPNjjth]r(j)r}r(hX``--freeze-file`` Read dependency version bounds from the freeze file (``cabal.config``) instead of the package description file (``$PACKAGENAME.cabal``). ``--v1-freeze-file`` is an alias for this flag starting in Cabal 2.4.hjjDjEhjh}r(h]h]h]h]h]ujPMh]r(j)r}r(hX``--freeze-file``rhjjDjEhjh}r(h]h]h]h]h]ujPMh]rj)r}r(hjh}r(h]h]h]h]h]uhjh]rhX --freeze-filerr}r(hX --freeze-filehjubahjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hXRead dependency version bounds from the freeze file (``cabal.config``) instead of the package description file (``$PACKAGENAME.cabal``). ``--v1-freeze-file`` is an alias for this flag starting in Cabal 2.4.hjjDjEhj]h}r(h]h]h]h]h]ujPMh]r(hX5Read dependency version bounds from the freeze file (rr}r(hX5Read dependency version bounds from the freeze file (hjubj)r}r(hX``cabal.config``h}r(h]h]h]h]h]uhjh]rhX cabal.configrr}r(hX cabal.confighjubahjubhX+) instead of the package description file (rr}r(hX+) instead of the package description file (hjubj)r}r(hX``$PACKAGENAME.cabal``h}r(h]h]h]h]h]uhjh]rhX$PACKAGENAME.cabalrr}r(hX$PACKAGENAME.cabalhjubahjubhX). rr}r(hX). hjubj)r}r(hX``--v1-freeze-file``h}r(h]h]h]h]h]uhjh]rhX--v1-freeze-filerr}r(hX--v1-freeze-filehjubahjubhX1 is an alias for this flag starting in Cabal 2.4.rr}r(hX1 is an alias for this flag starting in Cabal 2.4.hjubeubahj/ubeubj)r}r(hX``--v2-freeze-file`` :since: 2.4 Read dependency version bounds from the v2-style freeze file (by default, ``cabal.project.freeze``) instead of the package description file. ``--new-freeze-file`` is an alias for this flag that can be used with pre-2.4 ``cabal``.hjjDjEhjh}r(h]h]h]h]h]ujPMjjth]r(j)r}r(hX``--v2-freeze-file``rhjjDjEhjh}r(h]h]h]h]h]ujPMh]rj)r}r(hjh}r(h]h]h]h]h]uhjh]rhX--v2-freeze-filerr}r(hX--v2-freeze-filehjubahjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUhjjDjEhj.h}r(h]h]h]h]h]ujPMh]r(j )r}r(hXsincerhjjDjEhj h}r(h]h]h]h]h]ujPKh]rhXsincerr}r(hjhjubaubj)r}r(hX2.4 h}r(h]h]h]h]h]uhjh]rjZ)r}r(hX2.4rhjjDjEhj]h}r(h]h]h]h]h]ujPMh]rhX2.4rr}r(hjhjubaubahj-ubeubahjubjZ)r}r(hXRead dependency version bounds from the v2-style freeze file (by default, ``cabal.project.freeze``) instead of the package description file. ``--new-freeze-file`` is an alias for this flag that can be used with pre-2.4 ``cabal``.hjjDjEhj]h}r(h]h]h]h]h]ujPMh]r(hXJRead dependency version bounds from the v2-style freeze file (by default, rr}r(hXJRead dependency version bounds from the v2-style freeze file (by default, hjubj)r}r(hX``cabal.project.freeze``h}r(h]h]h]h]h]uhjh]rhXcabal.project.freezerr}r(hXcabal.project.freezehjubahjubhX+) instead of the package description file. rr }r (hX+) instead of the package description file. hjubj)r }r (hX``--new-freeze-file``h}r (h]h]h]h]h]uhjh]r hX--new-freeze-filer r }r (hX--new-freeze-filehj ubahjubhX9 is an alias for this flag that can be used with pre-2.4 r r }r (hX9 is an alias for this flag that can be used with pre-2.4 hjubj)r }r (hX ``cabal``h}r (h]h]h]h]h]uhjh]r hXcabalr r }r (hXcabalhj ubahjubhX.r }r (hX.hjubeubehj/ubeubj)r }r (hXv``--project-file`` *PROJECTFILE* :since: 2.4 Read dependendency version bounds from the v2-style freeze file related to the named project file (i.e., ``$PROJECTFILE.freeze``) instead of the package desctription file. If multiple ``--project-file`` flags are provided, only the final one is considered. This flag must only be passed in when ``--new-freeze-file`` is present.hjjDjEhjh}r (h]h]h]h]h]ujPMjjth]r (j)r }r (hX ``--project-file`` *PROJECTFILE*r hj jDjEhjh}r (h]h]h]h]h]ujPMh]r (j)r }r (hX``--project-file``h}r (h]h]h]h]h]uhj h]r! hX--project-filer" r# }r$ (hX--project-filehj ubahjubhX r% }r& (hX hj ubj)r' }r( (hX *PROJECTFILE*h}r) (h]h]h]h]h]uhj h]r* hX PROJECTFILEr+ r, }r- (hX PROJECTFILEhj' ubahjubeubj)r. }r/ (hUh}r0 (h]h]h]h]h]uhj h]r1 (j)r2 }r3 (hUh}r4 (h]h]h]h]h]uhj. h]r5 j)r6 }r7 (hUhj2 jDjEhj.h}r8 (h]h]h]h]h]ujPMh]r9 (j )r: }r; (hXsincer< hj6 jDjEhj h}r= (h]h]h]h]h]ujPKh]r> hXsincer? r@ }rA (hj< hj: ubaubj)rB }rC (hX2.4 h}rD (h]h]h]h]h]uhj6 h]rE jZ)rF }rG (hX2.4rH hjB jDjEhj]h}rI (h]h]h]h]h]ujPMh]rJ hX2.4rK rL }rM (hjH hjF ubaubahj-ubeubahjubjZ)rN }rO (hXHRead dependendency version bounds from the v2-style freeze file related to the named project file (i.e., ``$PROJECTFILE.freeze``) instead of the package desctription file. If multiple ``--project-file`` flags are provided, only the final one is considered. This flag must only be passed in when ``--new-freeze-file`` is present.hj. jDjEhj]h}rP (h]h]h]h]h]ujPMh]rQ (hXiRead dependendency version bounds from the v2-style freeze file related to the named project file (i.e., rR rS }rT (hXiRead dependendency version bounds from the v2-style freeze file related to the named project file (i.e., hjN ubj)rU }rV (hX``$PROJECTFILE.freeze``h}rW (h]h]h]h]h]uhjN h]rX hX$PROJECTFILE.freezerY rZ }r[ (hX$PROJECTFILE.freezehjU ubahjubhX8) instead of the package desctription file. If multiple r\ r] }r^ (hX8) instead of the package desctription file. If multiple hjN ubj)r_ }r` (hX``--project-file``h}ra (h]h]h]h]h]uhjN h]rb hX--project-filerc rd }re (hX--project-filehj_ ubahjubhX] flags are provided, only the final one is considered. This flag must only be passed in when rf rg }rh (hX] flags are provided, only the final one is considered. This flag must only be passed in when hjN ubj)ri }rj (hX``--new-freeze-file``h}rk (h]h]h]h]h]uhjN h]rl hX--new-freeze-filerm rn }ro (hX--new-freeze-filehji ubahjubhX is present.rp rq }rr (hX is present.hjN ubeubehj/ubeubj)rs }rt (hXP``--simple-output`` Print only the names of outdated dependencies, one per line.hjjDjEhjh}ru (h]h]h]h]h]ujPMjjth]rv (j)rw }rx (hX``--simple-output``ry hjs jDjEhjh}rz (h]h]h]h]h]ujPMh]r{ j)r| }r} (hjy h}r~ (h]h]h]h]h]uhjw h]r hX--simple-outputr r }r (hX--simple-outputhj| ubahjubaubj)r }r (hUh}r (h]h]h]h]h]uhjs h]r jZ)r }r (hX<Print only the names of outdated dependencies, one per line.r hj jDjEhj]h}r (h]h]h]h]h]ujPMh]r hX<Print only the names of outdated dependencies, one per line.r r }r (hj hj ubaubahj/ubeubj)r }r (hXT``--exit-code`` Exit with a non-zero exit code when there are outdated dependencies.hjjDjEhjh}r (h]h]h]h]h]ujPMjjth]r (j)r }r (hX``--exit-code``r hj jDjEhjh}r (h]h]h]h]h]ujPMh]r j)r }r (hj h}r (h]h]h]h]h]uhj h]r hX --exit-coder r }r (hX --exit-codehj ubahjubaubj)r }r (hUh}r (h]h]h]h]h]uhj h]r jZ)r }r (hXDExit with a non-zero exit code when there are outdated dependencies.r hj jDjEhj]h}r (h]h]h]h]h]ujPMh]r hXDExit with a non-zero exit code when there are outdated dependencies.r r }r (hj hj ubaubahj/ubeubj)r }r (hXL``-q, --quiet`` Don't print any output. Implies ``-v0`` and ``--exit-code``.hjjDjEhjh}r (h]h]h]h]h]ujPMjjth]r (j)r }r (hX``-q, --quiet``r hj jDjEhjh}r (h]h]h]h]h]ujPMh]r j)r }r (hj h}r (h]h]h]h]h]uhj h]r hX -q, --quietr r }r (hX -q, --quiethj ubahjubaubj)r }r (hUh}r (h]h]h]h]h]uhj h]r jZ)r }r (hX<Don't print any output. Implies ``-v0`` and ``--exit-code``.hj jDjEhj]h}r (h]h]h]h]h]ujPMh]r (hX"Don’t print any output. Implies r r }r (hX Don't print any output. Implies hj ubj)r }r (hX``-v0``h}r (h]h]h]h]h]uhj h]r hX-v0r r }r (hX-v0hj ubahjubhX and r r }r (hX and hj ubj)r }r (hX``--exit-code``h}r (h]h]h]h]h]uhj h]r hX --exit-coder r }r (hX --exit-codehj ubahjubhX.r }r (hX.hj ubeubahj/ubeubj)r }r (hXn``--ignore`` *PACKAGENAMES* Don't warn about outdated dependency version bounds for the packages in this list.hjjDjEhjh}r (h]h]h]h]h]ujPMjjth]r (j)r }r (hX``--ignore`` *PACKAGENAMES*r hj jDjEhjh}r (h]h]h]h]h]ujPMh]r (j)r }r (hX ``--ignore``h}r (h]h]h]h]h]uhj h]r hX--ignorer r }r (hX--ignorehj ubahjubhX r }r (hX hj ubj)r }r (hX*PACKAGENAMES*h}r (h]h]h]h]h]uhj h]r hX PACKAGENAMESr r }r (hX PACKAGENAMEShj ubahjubeubj)r }r (hUh}r (h]h]h]h]h]uhj h]r jZ)r }r (hXRDon't warn about outdated dependency version bounds for the packages in this list.r hj jDjEhj]h}r (h]h]h]h]h]ujPMh]r hXTDon’t warn about outdated dependency version bounds for the packages in this list.r r }r (hj hj ubaubahj/ubeubj)r }r (hX``--minor`` *[PACKAGENAMES]* Ignore major version bumps for these packages. E.g. if there's a version 2.0 of a package ``pkg`` on Hackage and the freeze file specifies the constraint ``pkg == 1.9``, ``cabal outdated --freeze --minor=pkg`` will only consider the ``pkg`` outdated when there's a version of ``pkg`` on Hackage satisfying ``pkg > 1.9 && < 2.0``. ``--minor`` can also be used without arguments, in that case major version bumps are ignored for all packages. hjjDjEhjh}r!(h]h]h]h]h]ujPMjjth]r!(j)r!}r!(hX``--minor`` *[PACKAGENAMES]*r!hj jDjEhjh}r!(h]h]h]h]h]ujPMh]r!(j)r!}r!(hX ``--minor``h}r !(h]h]h]h]h]uhj!h]r !hX--minorr !r !}r !(hX--minorhj!ubahjubhX r!}r!(hX hj!ubj)r!}r!(hX*[PACKAGENAMES]*h}r!(h]h]h]h]h]uhj!h]r!hX[PACKAGENAMES]r!r!}r!(hX[PACKAGENAMES]hj!ubahjubeubj)r!}r!(hUh}r!(h]h]h]h]h]uhj h]r!jZ)r!}r!(hXIgnore major version bumps for these packages. E.g. if there's a version 2.0 of a package ``pkg`` on Hackage and the freeze file specifies the constraint ``pkg == 1.9``, ``cabal outdated --freeze --minor=pkg`` will only consider the ``pkg`` outdated when there's a version of ``pkg`` on Hackage satisfying ``pkg > 1.9 && < 2.0``. ``--minor`` can also be used without arguments, in that case major version bumps are ignored for all packages.hj!jDjEhj]h}r!(h]h]h]h]h]ujPMh]r!(hX\Ignore major version bumps for these packages. E.g. if there’s a version 2.0 of a package r!r !}r!!(hXZIgnore major version bumps for these packages. E.g. if there's a version 2.0 of a package hj!ubj)r"!}r#!(hX``pkg``h}r$!(h]h]h]h]h]uhj!h]r%!hXpkgr&!r'!}r(!(hXpkghj"!ubahjubhX9 on Hackage and the freeze file specifies the constraint r)!r*!}r+!(hX9 on Hackage and the freeze file specifies the constraint hj!ubj)r,!}r-!(hX``pkg == 1.9``h}r.!(h]h]h]h]h]uhj!h]r/!hX pkg == 1.9r0!r1!}r2!(hX pkg == 1.9hj,!ubahjubhX, r3!r4!}r5!(hX, hj!ubj)r6!}r7!(hX'``cabal outdated --freeze --minor=pkg``h}r8!(h]h]h]h]h]uhj!h]r9!hX#cabal outdated --freeze --minor=pkgr:!r;!}r!}r?!(hX will only consider the hj!ubj)r@!}rA!(hX``pkg``h}rB!(h]h]h]h]h]uhj!h]rC!hXpkgrD!rE!}rF!(hXpkghj@!ubahjubhX& outdated when there’s a version of rG!rH!}rI!(hX$ outdated when there's a version of hj!ubj)rJ!}rK!(hX``pkg``h}rL!(h]h]h]h]h]uhj!h]rM!hXpkgrN!rO!}rP!(hXpkghjJ!ubahjubhX on Hackage satisfying rQ!rR!}rS!(hX on Hackage satisfying hj!ubj)rT!}rU!(hX``pkg > 1.9 && < 2.0``h}rV!(h]h]h]h]h]uhj!h]rW!hXpkg > 1.9 && < 2.0rX!rY!}rZ!(hXpkg > 1.9 && < 2.0hjT!ubahjubhX. r[!r\!}r]!(hX. hj!ubj)r^!}r_!(hX ``--minor``h}r`!(h]h]h]h]h]uhj!h]ra!hX--minorrb!rc!}rd!(hX--minorhj^!ubahjubhXc can also be used without arguments, in that case major version bumps are ignored for all packages.re!rf!}rg!(hXc can also be used without arguments, in that case major version bumps are ignored for all packages.hj!ubeubahj/ubeubeubjZ)rh!}ri!(hX Examples:rj!hj4jDjEhj]h}rk!(h]h]h]h]h]ujPMjjth]rl!hX Examples:rm!rn!}ro!(hjj!jDNjPNjjthjh!ubaubj)rp!}rq!(hXM$ cd /some/package $ cabal outdated Outdated dependencies: haskell-src-exts <1.17 (latest: 1.19.1) language-javascript <0.6 (latest: 0.6.0.9) unix ==2.7.2.0 (latest: 2.7.2.1) $ cabal outdated --simple-output haskell-src-exts language-javascript unix $ cabal outdated --ignore=haskell-src-exts Outdated dependencies: language-javascript <0.6 (latest: 0.6.0.9) unix ==2.7.2.0 (latest: 2.7.2.1) $ cabal outdated --ignore=haskell-src-exts,language-javascript,unix All dependencies are up to date. $ cabal outdated --ignore=haskell-src-exts,language-javascript,unix -q $ echo $? 0 $ cd /some/other/package $ cabal outdated --freeze-file Outdated dependencies: HTTP ==4000.3.3 (latest: 4000.3.4) HUnit ==1.3.1.1 (latest: 1.5.0.0) $ cabal outdated --freeze-file --ignore=HTTP --minor=HUnit Outdated dependencies: HUnit ==1.3.1.1 (latest: 1.3.1.2)hj4jDjEhjh}rr!(jjXconsolejjh]h]h]j}h]h]ujPMjjth]rs!hXM$ cd /some/package $ cabal outdated Outdated dependencies: haskell-src-exts <1.17 (latest: 1.19.1) language-javascript <0.6 (latest: 0.6.0.9) unix ==2.7.2.0 (latest: 2.7.2.1) $ cabal outdated --simple-output haskell-src-exts language-javascript unix $ cabal outdated --ignore=haskell-src-exts Outdated dependencies: language-javascript <0.6 (latest: 0.6.0.9) unix ==2.7.2.0 (latest: 2.7.2.1) $ cabal outdated --ignore=haskell-src-exts,language-javascript,unix All dependencies are up to date. $ cabal outdated --ignore=haskell-src-exts,language-javascript,unix -q $ echo $? 0 $ cd /some/other/package $ cabal outdated --freeze-file Outdated dependencies: HTTP ==4000.3.3 (latest: 4000.3.4) HUnit ==1.3.1.1 (latest: 1.5.0.0) $ cabal outdated --freeze-file --ignore=HTTP --minor=HUnit Outdated dependencies: HUnit ==1.3.1.1 (latest: 1.3.1.2)rt!ru!}rv!(hUhjp!ubaubeubeubjn)rw!}rx!(hUhjjDjEhjqh}ry!(h]h]h]h]rz!jah]r{!jxaujPMjjth]r|!(h)r}!}r~!(hX Executablesr!hjw!jDjEhhh}r!(h]h]h]h]h]ujPMjjth]r!hX Executablesr!r!}r!(hj!jDNjPNjjthj}!ubaubj )r!}r!(hUhjw!jDjEhjnh}r!(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r!}r!(hUhjw!jDjEhj h}r!(j j Xcabalh]h]h]h]h]j X pkg-sectionr!j j!ujPNjjth]r!(j )r!}r!(hXexecutable namehj!jDjEhj h}r!(h]r!jah]h]h]h]j ujPNjjth]r!(j )r!}r!(hUhj!jDjEhjnh}r!(h]h]h]h]h]Uentries]r!(j! X,executable:executable; package.cabal sectionjUNtr!aujPNjjth]ubj# )r!}r!(hjhj!jDjEhj& h}r!(jjh]h]h]h]h]ujPNjjth]r!hX executabler!r!}r!(hUjDNjPNjjthj!ubaubj, )r!}r!(hU hj!jDjEhj0 h}r!(jjh]h]h]h]h]ujPNjjth]r!hX r!}r!(hUjDNjPNjjthj!ubaubj6 )r!}r!(hXnamehj!jDjEhj9 h}r!(jjh]h]h]h]h]ujPNjjth]r!hXnamer!r!}r!(hUjDNjPNjjthj!ubaubeubjh)r!}r!(hUhj!jDjEhjA h}r!(h]h]h]h]h]ujPNjjth]r!jZ)r!}r!(hXExecutable sections (if present) describe executable programs contained in the package and must have an argument after the section label, which defines the name of the executable. This is a freeform argument but may not contain spaces.r!hj!jDjEhj]h}r!(h]h]h]h]h]ujPMjjth]r!hXExecutable sections (if present) describe executable programs contained in the package and must have an argument after the section label, which defines the name of the executable. This is a freeform argument but may not contain spaces.r!r!}r!(hj!jDNjPNjjthj!ubaubaubeubjZ)r!}r!(hXThe executable may be described using the following fields, as well as build information fields (see the section on `build information`_).hjw!jDjEhj]h}r!(h]h]h]h]h]ujPM"jjth]r!(hXtThe executable may be described using the following fields, as well as build information fields (see the section on r!r!}r!(hXtThe executable may be described using the following fields, as well as build information fields (see the section on jDNjPNjjthj!ubj!)r!}r!(hX`build information`_j$Khj!hj%h}r!(UnameXbuild informationh]h]h]h]h]j'jouh]r!hXbuild informationr!r!}r!(hXbuild informationhj!ubaubhX).r!r!}r!(hX).jDNjPNjjthj!ubeubj )r!}r!(hUhjw!jDjEhjnh}r!(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r!}r!(hUhjw!jDjEhj h}r!(j j Xcabalh]h]h]h]h]j X pkg-fieldr!j j!ujPNjjth]r!(j )r!}r!(hXmain-is: filename (required)hj!jDjEhj h}r!(h]r!jah]h]h]h]j ujPM0jjth]r!(j )r!}r!(hUhj!jDjEhjnh}r!(h]h]h]h]h]Uentries]r!(j! X'executable:main-is; package.cabal fieldjUNtr!aujPM0jjth]ubj# )r!}r!(hjhj!jDjEhj& h}r!(jjh]h]h]h]h]ujPM0jjth]r!hXmain-isr!r!}r!(hUjDNjPNjjthj!ubaubj, )r!}r!(hj/ hj!jDjEhj0 h}r!(jjh]h]h]h]h]ujPM0jjth]r!hX: r!r!}r!(hUjDNjPNjjthj!ubaubj6 )r!}r!(hXfilename (required)hj!jDjEhj9 h}r!(jjh]h]h]h]h]ujPM0jjth]r!hXfilename (required)r!r!}r!(hUjDNjPNjjthj!ubaubeubjh)r!}r!(hUhj!jDjEhjA h}r!(h]h]h]h]h]ujPM0jjth]r!(jZ)r!}r!(hXqThe name of the ``.hs`` or ``.lhs`` file containing the ``Main`` module. Note that it is the ``.hs`` filename that must be listed, even if that file is generated using a preprocessor. The source file must be relative to one of the directories listed in :pkg-field:`hs-source-dirs`. Further, while the name of the file may vary, the module itself must be named ``Main``.hj!jDjEhj]h}r!(h]h]h]h]h]ujPM'jjth]r!(hXThe name of the r!r!}r!(hXThe name of the jDNjPNjjthj!ubj)r!}r!(hX``.hs``h}r!(h]h]h]h]h]uhj!h]r!hX.hsr!r!}r"(hX.hshj!ubahjubhX or r"r"}r"(hX or jDNjPNjjthj!ubj)r"}r"(hX``.lhs``h}r"(h]h]h]h]h]uhj!h]r"hX.lhsr"r "}r "(hX.lhshj"ubahjubhX file containing the r "r "}r "(hX file containing the jDNjPNjjthj!ubj)r"}r"(hX``Main``h}r"(h]h]h]h]h]uhj!h]r"hXMainr"r"}r"(hXMainhj"ubahjubhX module. Note that it is the r"r"}r"(hX module. Note that it is the jDNjPNjjthj!ubj)r"}r"(hX``.hs``h}r"(h]h]h]h]h]uhj!h]r"hX.hsr"r"}r"(hX.hshj"ubahjubhX filename that must be listed, even if that file is generated using a preprocessor. The source file must be relative to one of the directories listed in r"r "}r!"(hX filename that must be listed, even if that file is generated using a preprocessor. The source file must be relative to one of the directories listed in jDNjPNjjthj!ubjM)r""}r#"(hX:pkg-field:`hs-source-dirs`hj!jDjEhjPh}r$"(UreftypeX pkg-fieldjRjSXhs-source-dirsr%"U refdomainXcabalr&"h]h]U refexplicith]h]h]jVj jljujPM'h]r'"j)r("}r)"(hj%"h}r*"(h]h]r+"(j]j&"Xcabal-pkg-fieldr,"eh]h]h]uhj""h]r-"hXhs-source-dirsr."r/"}r0"(hUhj("ubahjubaubhXP. Further, while the name of the file may vary, the module itself must be named r1"r2"}r3"(hXP. Further, while the name of the file may vary, the module itself must be named jDNjPNjjthj!ubj)r4"}r5"(hX``Main``h}r6"(h]h]h]h]h]uhj!h]r7"hXMainr8"r9"}r:"(hXMainhj4"ubahjubhX.r;"}r<"(hX.jDNjPNjjthj!ubeubjZ)r="}r>"(hX{Starting with ``cabal-version: 1.18`` this field supports specifying a C, C++, or objC source file as the main entry point.hj!jDjEhj]h}r?"(h]h]h]h]h]ujPM.jjth]r@"(hXStarting with rA"rB"}rC"(hXStarting with jDNjPNjjthj="ubj)rD"}rE"(hX``cabal-version: 1.18``h}rF"(h]h]h]h]h]uhj="h]rG"hXcabal-version: 1.18rH"rI"}rJ"(hXcabal-version: 1.18hjD"ubahjubhXV this field supports specifying a C, C++, or objC source file as the main entry point.rK"rL"}rM"(hXV this field supports specifying a C, C++, or objC source file as the main entry point.jDNjPNjjthj="ubeubeubeubj )rN"}rO"(hUhjw!jDjEhjnh}rP"(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rQ"}rR"(hUhjw!jDjEhj h}rS"(j j Xcabalh]h]h]h]h]j X pkg-fieldrT"j jT"ujPNjjth]rU"(j )rV"}rW"(hX scope: tokenhjQ"jDjEhj h}rX"(h]rY"jah]h]h]h]j ujPNjjth]rZ"(j )r["}r\"(hUhjV"jDjEhjnh}r]"(h]h]h]h]h]Uentries]r^"(j! X%executable:scope; package.cabal fieldjUNtr_"aujPNjjth]ubj# )r`"}ra"(hjhjV"jDjEhj& h}rb"(jjh]h]h]h]h]ujPNjjth]rc"hXscoperd"re"}rf"(hUjDNjPNjjthj`"ubaubj, )rg"}rh"(hj/ hjV"jDjEhj0 h}ri"(jjh]h]h]h]h]ujPNjjth]rj"hX: rk"rl"}rm"(hUjDNjPNjjthjg"ubaubj6 )rn"}ro"(hXtokenhjV"jDjEhj9 h}rp"(jjh]h]h]h]h]ujPNjjth]rq"hXtokenrr"rs"}rt"(hUjDNjPNjjthjn"ubaubeubjh)ru"}rv"(hUhjQ"jDjEhjA h}rw"(h]h]h]h]h]ujPNjjth]rx"(j)ry"}rz"(hUhju"jDjEhjh}r{"(h]h]h]h]h]ujPNjjth]r|"j)r}"}r~"(hUhjy"jDjEhj.h}r"(h]h]h]h]h]ujPNjjth]r"(j )r"}r"(hj+hj}"jDjEhj h}r"(h]h]h]h]h]ujPKh]r"hXSincer"r"}r"(hUhj"ubaubj)r"}r"(hU Cabal 2.0r"h}r"(h]h]h]h]h]uhj}"h]r"jZ)r"}r"(hj"h}r"(h]h]h]h]h]uhj"h]r"hX Cabal 2.0r"r"}r"(hUhj"ubahj]ubahj-ubeubaubjZ)r"}r"(hXWhether the executable is ``public`` (default) or ``private``, i.e. meant to be run by other programs rather than the user. Private executables are installed into `$libexecdir/$libexecsubdir`.hju"jDjEhj]h}r"(h]h]h]h]h]ujPM4jjth]r"(hXWhether the executable is r"r"}r"(hXWhether the executable is jDNjPNjjthj"ubj)r"}r"(hX ``public``h}r"(h]h]h]h]h]uhj"h]r"hXpublicr"r"}r"(hXpublichj"ubahjubhX (default) or r"r"}r"(hX (default) or jDNjPNjjthj"ubj)r"}r"(hX ``private``h}r"(h]h]h]h]h]uhj"h]r"hXprivater"r"}r"(hXprivatehj"ubahjubhXf, i.e. meant to be run by other programs rather than the user. Private executables are installed into r"r"}r"(hXf, i.e. meant to be run by other programs rather than the user. Private executables are installed into jDNjPNjjthj"ubcdocutils.nodes title_reference r")r"}r"(hX`$libexecdir/$libexecsubdir`h}r"(h]h]h]h]h]uhj"h]r"hX$libexecdir/$libexecsubdirr"r"}r"(hX$libexecdir/$libexecsubdirhj"ubahUtitle_referencer"ubhX.r"}r"(hX.jDNjPNjjthj"ubeubeubeubjn)r"}r"(hUhjw!jDjEhjqh}r"(h]h]h]h]r"Urunning-executablesr"ah]r"j|aujPM9jjth]r"(h)r"}r"(hXRunning executablesr"hj"jDjEhhh}r"(h]h]h]h]h]ujPM9jjth]r"hXRunning executablesr"r"}r"(hj"jDNjPNjjthj"ubaubjZ)r"}r"(hXOYou can have Cabal build and run your executables by using the ``run`` command:hj"jDjEhj]h}r"(h]h]h]h]h]ujPM;jjth]r"(hX?You can have Cabal build and run your executables by using the r"r"}r"(hX?You can have Cabal build and run your executables by using the jDNjPNjjthj"ubj)r"}r"(hX``run``h}r"(h]h]h]h]h]uhj"h]r"hXrunr"r"}r"(hXrunhj"ubahjubhX command:r"r"}r"(hX command:jDNjPNjjthj"ubeubj)r"}r"(hX,$ cabal run EXECUTABLE [-- EXECUTABLE_FLAGS]hj"jDjEhjh}r"(jjXconsolejjh]h]h]j}h]h]ujPM>jjth]r"hX,$ cabal run EXECUTABLE [-- EXECUTABLE_FLAGS]r"r"}r"(hUhj"ubaubjZ)r"}r"(hXgThis command will configure, build and run the executable ``EXECUTABLE``. The double dash separator is required to distinguish executable flags from ``run``'s own flags. If there is only one executable defined in the whole package, the executable's name can be omitted. See the output of ``cabal help run`` for a list of options you can pass to ``cabal run``.hj"jDjEhj]h}r"(h]h]h]h]h]ujPMBjjth]r"(hX:This command will configure, build and run the executable r"r"}r"(hX:This command will configure, build and run the executable jDNjPNjjthj"ubj)r"}r"(hX``EXECUTABLE``h}r"(h]h]h]h]h]uhj"h]r"hX EXECUTABLEr"r"}r"(hX EXECUTABLEhj"ubahjubhXM. The double dash separator is required to distinguish executable flags from r"r"}r"(hXM. The double dash separator is required to distinguish executable flags from jDNjPNjjthj"ubj)r"}r"(hX``run``h}r"(h]h]h]h]h]uhj"h]r"hXrunr"r"}r"(hXrunhj"ubahjubhX’s own flags. If there is only one executable defined in the whole package, the executable’s name can be omitted. See the output of r"r"}r"(hX's own flags. If there is only one executable defined in the whole package, the executable's name can be omitted. See the output of jDNjPNjjthj"ubj)r"}r"(hX``cabal help run``h}r"(h]h]h]h]h]uhj"h]r"hXcabal help runr#r#}r#(hXcabal help runhj"ubahjubhX' for a list of options you can pass to r#r#}r#(hX' for a list of options you can pass to jDNjPNjjthj"ubj)r#}r#(hX ``cabal run``h}r#(h]h]h]h]h]uhj"h]r #hX cabal runr #r #}r #(hX cabal runhj#ubahjubhX.r #}r#(hX.jDNjPNjjthj"ubeubeubeubjn)r#}r#(hUhjjDjEhjqh}r#(h]h]h]h]r#jah]r#jaujPMJjjth]r#(h)r#}r#(hX Test suitesr#hj#jDjEhhh}r#(h]h]h]h]h]ujPMJjjth]r#hX Test suitesr#r#}r#(hj#jDNjPNjjthj#ubaubj )r#}r#(hUhj#jDjEhjnh}r#(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r #}r!#(hUhj#jDjEhj h}r"#(j j Xcabalh]h]h]h]h]j X pkg-sectionr##j j##ujPNjjth]r$#(j )r%#}r&#(hXtest-suite namehj #jDjEhj h}r'#(h]r(#jah]h]h]h]j ujPNjjth]r)#(j )r*#}r+#(hUhj%#jDjEhjnh}r,#(h]h]h]h]h]Uentries]r-#(j! X,test-suite:test-suite; package.cabal sectionjUNtr.#aujPNjjth]ubj# )r/#}r0#(hjhj%#jDjEhj& h}r1#(jjh]h]h]h]h]ujPNjjth]r2#hX test-suiter3#r4#}r5#(hUjDNjPNjjthj/#ubaubj, )r6#}r7#(hU hj%#jDjEhj0 h}r8#(jjh]h]h]h]h]ujPNjjth]r9#hX r:#}r;#(hUjDNjPNjjthj6#ubaubj6 )r<#}r=#(hXnamehj%#jDjEhj9 h}r>#(jjh]h]h]h]h]ujPNjjth]r?#hXnamer@#rA#}rB#(hUjDNjPNjjthj<#ubaubeubjh)rC#}rD#(hUhj #jDjEhjA h}rE#(h]h]h]h]h]ujPNjjth]rF#jZ)rG#}rH#(hXTest suite sections (if present) describe package test suites and must have an argument after the section label, which defines the name of the test suite. This is a freeform argument, but may not contain spaces. It should be unique among the names of the package's other test suites, the package's executables, and the package itself. Using test suite sections requires at least Cabal version 1.9.2.rI#hjC#jDjEhj]h}rJ#(h]h]h]h]h]ujPMOjjth]rK#hXTest suite sections (if present) describe package test suites and must have an argument after the section label, which defines the name of the test suite. This is a freeform argument, but may not contain spaces. It should be unique among the names of the package’s other test suites, the package’s executables, and the package itself. Using test suite sections requires at least Cabal version 1.9.2.rL#rM#}rN#(hjI#jDNjPNjjthjG#ubaubaubeubjZ)rO#}rP#(hXThe test suite may be described using the following fields, as well as build information fields (see the section on `build information`_).hj#jDjEhj]h}rQ#(h]h]h]h]h]ujPMVjjth]rR#(hXtThe test suite may be described using the following fields, as well as build information fields (see the section on rS#rT#}rU#(hXtThe test suite may be described using the following fields, as well as build information fields (see the section on jDNjPNjjthjO#ubj!)rV#}rW#(hX`build information`_j$KhjO#hj%h}rX#(UnameXbuild informationh]h]h]h]h]j'jouh]rY#hXbuild informationrZ#r[#}r\#(hXbuild informationhjV#ubaubhX).r]#r^#}r_#(hX).jDNjPNjjthjO#ubeubj )r`#}ra#(hUhj#jDjEhjnh}rb#(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rc#}rd#(hUhj#jDjEhj h}re#(j j Xcabalh]h]h]h]h]j X pkg-fieldrf#j jf#ujPNjjth]rg#(j )rh#}ri#(hXtype: interface (required)hjc#jDjEhj h}rj#(h]rk#jah]h]h]h]j ujPM_jjth]rl#(j )rm#}rn#(hUhjh#jDjEhjnh}ro#(h]h]h]h]h]Uentries]rp#(j! X$test-suite:type; package.cabal fieldjUNtrq#aujPM_jjth]ubj# )rr#}rs#(hjhjh#jDjEhj& h}rt#(jjh]h]h]h]h]ujPM_jjth]ru#hXtyperv#rw#}rx#(hUjDNjPNjjthjr#ubaubj, )ry#}rz#(hj/ hjh#jDjEhj0 h}r{#(jjh]h]h]h]h]ujPM_jjth]r|#hX: r}#r~#}r#(hUjDNjPNjjthjy#ubaubj6 )r#}r#(hXinterface (required)hjh#jDjEhj9 h}r#(jjh]h]h]h]h]ujPM_jjth]r#hXinterface (required)r#r#}r#(hUjDNjPNjjthj#ubaubeubjh)r#}r#(hUhjc#jDjEhjA h}r#(h]h]h]h]h]ujPM_jjth]r#jZ)r#}r#(hXThe interface type and version of the test suite. Cabal supports two test suite interfaces, called ``exitcode-stdio-1.0`` and ``detailed-0.9``. Each of these types may require or disallow other fields as described below.hj#jDjEhj]h}r#(h]h]h]h]h]ujPM[jjth]r#(hXcThe interface type and version of the test suite. Cabal supports two test suite interfaces, called r#r#}r#(hXcThe interface type and version of the test suite. Cabal supports two test suite interfaces, called jDNjPNjjthj#ubj)r#}r#(hX``exitcode-stdio-1.0``h}r#(h]h]h]h]h]uhj#h]r#hXexitcode-stdio-1.0r#r#}r#(hXexitcode-stdio-1.0hj#ubahjubhX and r#r#}r#(hX and jDNjPNjjthj#ubj)r#}r#(hX``detailed-0.9``h}r#(h]h]h]h]h]uhj#h]r#hX detailed-0.9r#r#}r#(hX detailed-0.9hj#ubahjubhXN. Each of these types may require or disallow other fields as described below.r#r#}r#(hXN. Each of these types may require or disallow other fields as described below.jDNjPNjjthj#ubeubaubeubjZ)r#}r#(hX%Test suites using the ``exitcode-stdio-1.0`` interface are executables that indicate test failure with a non-zero exit code when run; they may provide human-readable log information through the standard output and error channels. The ``exitcode-stdio-1.0`` type requires the ``main-is`` field.hj#jDjEhj]h}r#(h]h]h]h]h]ujPM`jjth]r#(hXTest suites using the r#r#}r#(hXTest suites using the jDNjPNjjthj#ubj)r#}r#(hX``exitcode-stdio-1.0``h}r#(h]h]h]h]h]uhj#h]r#hXexitcode-stdio-1.0r#r#}r#(hXexitcode-stdio-1.0hj#ubahjubhX interface are executables that indicate test failure with a non-zero exit code when run; they may provide human-readable log information through the standard output and error channels. The r#r#}r#(hX interface are executables that indicate test failure with a non-zero exit code when run; they may provide human-readable log information through the standard output and error channels. The jDNjPNjjthj#ubj)r#}r#(hX``exitcode-stdio-1.0``h}r#(h]h]h]h]h]uhj#h]r#hXexitcode-stdio-1.0r#r#}r#(hXexitcode-stdio-1.0hj#ubahjubhX type requires the r#r#}r#(hX type requires the jDNjPNjjthj#ubj)r#}r#(hX ``main-is``h}r#(h]h]h]h]h]uhj#h]r#hXmain-isr#r#}r#(hXmain-ishj#ubahjubhX field.r#r#}r#(hX field.jDNjPNjjthj#ubeubj )r#}r#(hUhj#jDjEhjnh}r#(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r#}r#(hUhj#jDjEhj h}r#(j j Xcabalh]h]h]h]h]j X pkg-fieldr#j j#ujPNjjth]r#(j )r#}r#(hXmain-is: filenamehj#jDjEhj h}r#(h]r#jah]h]h]h]j ujPNjjth]r#(j )r#}r#(hUhj#jDjEhjnh}r#(h]h]h]h]h]Uentries]r#(j! X'test-suite:main-is; package.cabal fieldjUNtr#aujPNjjth]ubj# )r#}r#(hjhj#jDjEhj& h}r#(jjh]h]h]h]h]ujPNjjth]r#hXmain-isr#r#}r#(hUjDNjPNjjthj#ubaubj, )r#}r#(hj/ hj#jDjEhj0 h}r#(jjh]h]h]h]h]ujPNjjth]r#hX: r#r#}r#(hUjDNjPNjjthj#ubaubj6 )r#}r#(hXfilenamehj#jDjEhj9 h}r#(jjh]h]h]h]h]ujPNjjth]r#hXfilenamer#r#}r#(hUjDNjPNjjthj#ubaubeubjh)r#}r#(hUhj#jDjEhjA h}r#(h]h]h]h]h]ujPNjjth]r#(j)r#}r#(hUhj#jDjEhjh}r#(h]h]h]h]h]ujPNjjth]r#(j)r#}r#(hUhj#jDjEhj.h}r#(h]h]h]h]h]ujPMijjth]r#(j )r#}r#(hXrequiredhj#jDjEhj h}r$(h]h]h]h]h]ujPKh]r$hXRequiredr$r$}r$(hUhj#ubaubj)r$}r$(hX``exitcode-stdio-1.0``r$h}r$(h]h]h]h]h]uhj#h]r $jZ)r $}r $(hj$hj$jDjEhj]h}r $(h]h]h]h]h]ujPMih]r $j)r$}r$(hj$h}r$(h]h]h]h]h]uhj $h]r$hXexitcode-stdio-1.0r$r$}r$(hXexitcode-stdio-1.0hj$ubahjubaubahj-ubeubj)r$}r$(hUhj#jDjEhj.h}r$(h]h]h]h]h]ujPMjjjth]r$(j )r$}r$(hX disallowedhj$jDjEhj h}r$(h]h]h]h]h]ujPKh]r$hX Disallowedr$r$}r$(hUhj$ubaubj)r $}r!$(hX``detailed-0.9`` h}r"$(h]h]h]h]h]uhj$h]r#$jZ)r$$}r%$(hX``detailed-0.9``r&$hj $jDjEhj]h}r'$(h]h]h]h]h]ujPMjh]r($j)r)$}r*$(hj&$h}r+$(h]h]h]h]h]uhj$$h]r,$hX detailed-0.9r-$r.$}r/$(hX detailed-0.9hj)$ubahjubaubahj-ubeubeubjZ)r0$}r1$(hXdThe name of the ``.hs`` or ``.lhs`` file containing the ``Main`` module. Note that it is the ``.hs`` filename that must be listed, even if that file is generated using a preprocessor. The source file must be relative to one of the directories listed in :pkg-field:`hs-source-dirs`. This field is analogous to the ``main-is`` field of an executable section.hj#jDjEhj]h}r2$(h]h]h]h]h]ujPMljjth]r3$(hXThe name of the r4$r5$}r6$(hXThe name of the jDNjPNjjthj0$ubj)r7$}r8$(hX``.hs``h}r9$(h]h]h]h]h]uhj0$h]r:$hX.hsr;$r<$}r=$(hX.hshj7$ubahjubhX or r>$r?$}r@$(hX or jDNjPNjjthj0$ubj)rA$}rB$(hX``.lhs``h}rC$(h]h]h]h]h]uhj0$h]rD$hX.lhsrE$rF$}rG$(hX.lhshjA$ubahjubhX file containing the rH$rI$}rJ$(hX file containing the jDNjPNjjthj0$ubj)rK$}rL$(hX``Main``h}rM$(h]h]h]h]h]uhj0$h]rN$hXMainrO$rP$}rQ$(hXMainhjK$ubahjubhX module. Note that it is the rR$rS$}rT$(hX module. Note that it is the jDNjPNjjthj0$ubj)rU$}rV$(hX``.hs``h}rW$(h]h]h]h]h]uhj0$h]rX$hX.hsrY$rZ$}r[$(hX.hshjU$ubahjubhX filename that must be listed, even if that file is generated using a preprocessor. The source file must be relative to one of the directories listed in r\$r]$}r^$(hX filename that must be listed, even if that file is generated using a preprocessor. The source file must be relative to one of the directories listed in jDNjPNjjthj0$ubjM)r_$}r`$(hX:pkg-field:`hs-source-dirs`hj0$jDjEhjPh}ra$(UreftypeX pkg-fieldjRjSXhs-source-dirsrb$U refdomainXcabalrc$h]h]U refexplicith]h]h]jVj jljujPMlh]rd$j)re$}rf$(hjb$h}rg$(h]h]rh$(j]jc$Xcabal-pkg-fieldri$eh]h]h]uhj_$h]rj$hXhs-source-dirsrk$rl$}rm$(hUhje$ubahjubaubhX!. This field is analogous to the rn$ro$}rp$(hX!. This field is analogous to the jDNjPNjjthj0$ubj)rq$}rr$(hX ``main-is``h}rs$(h]h]h]h]h]uhj0$h]rt$hXmain-isru$rv$}rw$(hXmain-ishjq$ubahjubhX field of an executable section.rx$ry$}rz$(hX field of an executable section.jDNjPNjjthj0$ubeubeubeubjZ)r{$}r|$(hXTest suites using the ``detailed-0.9`` interface are modules exporting the symbol ``tests :: IO [Test]``. The ``Test`` type is exported by the module ``Distribution.TestSuite`` provided by Cabal. For more details, see the example below.hj#jDjEhj]h}r}$(h]h]h]h]h]ujPMsjjth]r~$(hXTest suites using the r$r$}r$(hXTest suites using the jDNjPNjjthj{$ubj)r$}r$(hX``detailed-0.9``h}r$(h]h]h]h]h]uhj{$h]r$hX detailed-0.9r$r$}r$(hX detailed-0.9hj$ubahjubhX, interface are modules exporting the symbol r$r$}r$(hX, interface are modules exporting the symbol jDNjPNjjthj{$ubj)r$}r$(hX``tests :: IO [Test]``h}r$(h]h]h]h]h]uhj{$h]r$hXtests :: IO [Test]r$r$}r$(hXtests :: IO [Test]hj$ubahjubhX. The r$r$}r$(hX. The jDNjPNjjthj{$ubj)r$}r$(hX``Test``h}r$(h]h]h]h]h]uhj{$h]r$hXTestr$r$}r$(hXTesthj$ubahjubhX type is exported by the module r$r$}r$(hX type is exported by the module jDNjPNjjthj{$ubj)r$}r$(hX``Distribution.TestSuite``h}r$(h]h]h]h]h]uhj{$h]r$hXDistribution.TestSuiter$r$}r$(hXDistribution.TestSuitehj$ubahjubhX< provided by Cabal. For more details, see the example below.r$r$}r$(hX< provided by Cabal. For more details, see the example below.jDNjPNjjthj{$ubeubjZ)r$}r$(hXThe ``detailed-0.9`` interface allows Cabal and other test agents to inspect a test suite's results case by case, producing detailed human- and machine-readable log files. The ``detailed-0.9`` interface requires the :pkg-field:`test-module` field.hj#jDjEhj]h}r$(h]h]h]h]h]ujPMxjjth]r$(hXThe r$r$}r$(hXThe jDNjPNjjthj$ubj)r$}r$(hX``detailed-0.9``h}r$(h]h]h]h]h]uhj$h]r$hX detailed-0.9r$r$}r$(hX detailed-0.9hj$ubahjubhX interface allows Cabal and other test agents to inspect a test suite’s results case by case, producing detailed human- and machine-readable log files. The r$r$}r$(hX interface allows Cabal and other test agents to inspect a test suite's results case by case, producing detailed human- and machine-readable log files. The jDNjPNjjthj$ubj)r$}r$(hX``detailed-0.9``h}r$(h]h]h]h]h]uhj$h]r$hX detailed-0.9r$r$}r$(hX detailed-0.9hj$ubahjubhX interface requires the r$r$}r$(hX interface requires the jDNjPNjjthj$ubjM)r$}r$(hX:pkg-field:`test-module`hj$jDjEhjPh}r$(UreftypeX pkg-fieldjRjSX test-moduler$U refdomainXcabalr$h]h]U refexplicith]h]h]jVj jljujPMxh]r$j)r$}r$(hj$h}r$(h]h]r$(j]j$Xcabal-pkg-fieldr$eh]h]h]uhj$h]r$hX test-moduler$r$}r$(hUhj$ubahjubaubhX field.r$r$}r$(hX field.jDNjPNjjthj$ubeubj )r$}r$(hUhj#jDjEhjnh}r$(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r$}r$(hUhj#jDjEhj h}r$(j j Xcabalh]h]h]h]h]j X pkg-fieldr$j j$ujPNjjth]r$(j )r$}r$(hXtest-module: identifierhj$jDjEhj h}r$(h]r$jah]h]h]h]j ujPMjjth]r$(j )r$}r$(hUhj$jDjEhjnh}r$(h]h]h]h]h]Uentries]r$(j! X+test-suite:test-module; package.cabal fieldjUNtr$aujPMjjth]ubj# )r$}r$(hjhj$jDjEhj& h}r$(jjh]h]h]h]h]ujPMjjth]r$hX test-moduler$r$}r$(hUjDNjPNjjthj$ubaubj, )r$}r$(hj/ hj$jDjEhj0 h}r$(jjh]h]h]h]h]ujPMjjth]r$hX: r$r$}r$(hUjDNjPNjjthj$ubaubj6 )r$}r$(hX identifierhj$jDjEhj9 h}r$(jjh]h]h]h]h]ujPMjjth]r$hX identifierr$r$}r$(hUjDNjPNjjthj$ubaubeubjh)r$}r$(hUhj$jDjEhjA h}r%(h]h]h]h]h]ujPMjjth]r%(j)r%}r%(hUhj$jDjEhjh}r%(h]h]h]h]h]ujPNjjth]r%(j)r%}r%(hUhj%jDjEhj.h}r%(h]h]h]h]h]ujPMjjth]r %(j )r %}r %(hXrequiredhj%jDjEhj h}r %(h]h]h]h]h]ujPKh]r %hXRequiredr%r%}r%(hUhj %ubaubj)r%}r%(hX``detailed-0.9``r%h}r%(h]h]h]h]h]uhj%h]r%jZ)r%}r%(hj%hj%jDjEhj]h}r%(h]h]h]h]h]ujPMh]r%j)r%}r%(hj%h}r%(h]h]h]h]h]uhj%h]r%hX detailed-0.9r%r%}r %(hX detailed-0.9hj%ubahjubaubahj-ubeubj)r!%}r"%(hUhj%jDjEhj.h}r#%(h]h]h]h]h]ujPMjjth]r$%(j )r%%}r&%(hX disallowedhj!%jDjEhj h}r'%(h]h]h]h]h]ujPKh]r(%hX Disallowedr)%r*%}r+%(hUhj%%ubaubj)r,%}r-%(hX``exitcode-stdio-1.0`` h}r.%(h]h]h]h]h]uhj!%h]r/%jZ)r0%}r1%(hX``exitcode-stdio-1.0``r2%hj,%jDjEhj]h}r3%(h]h]h]h]h]ujPMh]r4%j)r5%}r6%(hj2%h}r7%(h]h]h]h]h]uhj0%h]r8%hXexitcode-stdio-1.0r9%r:%}r;%(hXexitcode-stdio-1.0hj5%ubahjubaubahj-ubeubeubjZ)r<%}r=%(hX*The module exporting the ``tests`` symbol.hj$jDjEhj]h}r>%(h]h]h]h]h]ujPMjjth]r?%(hXThe module exporting the r@%rA%}rB%(hXThe module exporting the jDNjPNjjthj<%ubj)rC%}rD%(hX ``tests``h}rE%(h]h]h]h]h]uhj<%h]rF%hXtestsrG%rH%}rI%(hXtestshjC%ubahjubhX symbol.rJ%rK%}rL%(hX symbol.jDNjPNjjthj<%ubeubeubeubjn)rM%}rN%(hUjKhj#jDjEhjqh}rO%(h]rP%X3example: package using exitcode-stdio-1.0 interfacerQ%ah]h]h]rR%U2example-package-using-exitcode-stdio-1-0-interfacerS%ah]ujPMjjth]rT%(h)rU%}rV%(hX7Example: Package using ``exitcode-stdio-1.0`` interfacerW%hjM%jDjEhhh}rX%(h]h]h]h]h]ujPMjjth]rY%(hXExample: Package using rZ%r[%}r\%(hXExample: Package using r]%jDNjPNjjthjU%ubj)r^%}r_%(hX``exitcode-stdio-1.0``r`%h}ra%(h]h]h]h]h]uhjU%h]rb%hXexitcode-stdio-1.0rc%rd%}re%(hXexitcode-stdio-1.0rf%hj^%ubahjubhX interfacerg%rh%}ri%(hX interfacerj%jDNjPNjjthjU%ubeubjZ)rk%}rl%(hX}The example package description and executable source file below demonstrate the use of the ``exitcode-stdio-1.0`` interface.hjM%jDjEhj]h}rm%(h]h]h]h]h]ujPMjjth]rn%(hX\The example package description and executable source file below demonstrate the use of the ro%rp%}rq%(hX\The example package description and executable source file below demonstrate the use of the jDNjPNjjthjk%ubj)rr%}rs%(hX``exitcode-stdio-1.0``h}rt%(h]h]h]h]h]uhjk%h]ru%hXexitcode-stdio-1.0rv%rw%}rx%(hXexitcode-stdio-1.0hjr%ubahjubhX interface.ry%rz%}r{%(hX interface.jDNjPNjjthjk%ubeubcdocutils.nodes container r|%)r}%}r~%(hUhjM%jDUhU containerr%h}r%(h]r%Uid4r%ah]h]h]r%Uliteral-block-wrapperr%ah]U literal_blockujPNjjth]r%(cdocutils.nodes caption r%)r%}r%(hX foo.cabalr%hj}%jDjEhUcaptionr%h}r%(h]h]h]h]h]ujPMh]r%hX foo.cabalr%r%}r%(hj%hj%ubaubj)r%}r%(hXName: foo Version: 1.0 License: BSD3 Cabal-Version: >= 1.9.2 Build-Type: Simple Test-Suite test-foo type: exitcode-stdio-1.0 main-is: test-foo.hs build-depends: base >= 4 && < 5hj}%jDjEhjh}r%(jjXcabaljjh]h]h]j}h]h]ujPMh]r%hXName: foo Version: 1.0 License: BSD3 Cabal-Version: >= 1.9.2 Build-Type: Simple Test-Suite test-foo type: exitcode-stdio-1.0 main-is: test-foo.hs build-depends: base >= 4 && < 5r%r%}r%(hUhj%ubaubeubj|%)r%}r%(hUhjM%jDUhj%h}r%(h]r%Uid5r%ah]h]h]r%j%ah]U literal_blockujPNjjth]r%(j%)r%}r%(hX test-foo.hsr%hj%jDjEhj%h}r%(h]h]h]h]h]ujPMh]r%hX test-foo.hsr%r%}r%(hj%hj%ubaubj)r%}r%(hXumodule Main where import System.Exit (exitFailure) main = do putStrLn "This test always fails!" exitFailurehj%jDjEhjh}r%(jjXhaskelljjh]h]h]j}h]h]ujPMh]r%hXumodule Main where import System.Exit (exitFailure) main = do putStrLn "This test always fails!" exitFailurer%r%}r%(hUhj%ubaubeubeubjn)r%}r%(hUhj#jDjEhjqh}r%(h]h]h]h]r%U,example-package-using-detailed-0-9-interfacer%ah]r%jaujPMjjth]r%(h)r%}r%(hX1Example: Package using ``detailed-0.9`` interfacer%hj%jDjEhhh}r%(h]h]h]h]h]ujPMjjth]r%(hXExample: Package using r%r%}r%(hXExample: Package using r%jDNjPNjjthj%ubj)r%}r%(hX``detailed-0.9``r%h}r%(h]h]h]h]h]uhj%h]r%hX detailed-0.9r%r%}r%(hX detailed-0.9r%hj%ubahjubhX interfacer%r%}r%(hX interfacer%jDNjPNjjthj%ubeubjZ)r%}r%(hXNThe example package description and test module source file below demonstrate the use of the ``detailed-0.9`` interface. The test module also develops a simple implementation of the interface set by ``Distribution.TestSuite``, but in actual usage the implementation would be provided by the library that provides the testing facility.hj%jDjEhj]h}r%(h]h]h]h]h]ujPMjjth]r%(hX]The example package description and test module source file below demonstrate the use of the r%r%}r%(hX]The example package description and test module source file below demonstrate the use of the jDNjPNjjthj%ubj)r%}r%(hX``detailed-0.9``h}r%(h]h]h]h]h]uhj%h]r%hX detailed-0.9r%r%}r%(hX detailed-0.9hj%ubahjubhXZ interface. The test module also develops a simple implementation of the interface set by r%r%}r%(hXZ interface. The test module also develops a simple implementation of the interface set by jDNjPNjjthj%ubj)r%}r%(hX``Distribution.TestSuite``h}r%(h]h]h]h]h]uhj%h]r%hXDistribution.TestSuiter%r%}r%(hXDistribution.TestSuitehj%ubahjubhXm, but in actual usage the implementation would be provided by the library that provides the testing facility.r%r%}r%(hXm, but in actual usage the implementation would be provided by the library that provides the testing facility.jDNjPNjjthj%ubeubj|%)r%}r%(hUhj%jDUhj%h}r%(h]r%Uid6r%ah]h]h]r%j%ah]U literal_blockujPNjjth]r%(j%)r%}r%(hX bar.cabalr%hj%jDjEhj%h}r%(h]h]h]h]h]ujPMh]r%hX bar.cabalr%r%}r%(hj%hj%ubaubj)r%}r%(hXName: bar Version: 1.0 License: BSD3 Cabal-Version: >= 1.9.2 Build-Type: Simple Test-Suite test-bar type: detailed-0.9 test-module: Bar build-depends: base >= 4 && < 5, Cabal >= 1.9.2 && < 2hj%jDjEhjh}r%(jjXcabaljjh]h]h]j}h]h]ujPMh]r%hXName: bar Version: 1.0 License: BSD3 Cabal-Version: >= 1.9.2 Build-Type: Simple Test-Suite test-bar type: detailed-0.9 test-module: Bar build-depends: base >= 4 && < 5, Cabal >= 1.9.2 && < 2r%r%}r%(hUhj%ubaubeubj|%)r%}r%(hUhj%jDUhj%h}r%(h]r%Uid7r%ah]h]h]r&j%ah]U literal_blockujPNjjth]r&(j%)r&}r&(hXBar.hsr&hj%jDjEhj%h}r&(h]h]h]h]h]ujPMh]r&hXBar.hsr&r&}r &(hj&hj&ubaubj)r &}r &(hX module Bar ( tests ) where import Distribution.TestSuite tests :: IO [Test] tests = return [ Test succeeds, Test fails ] where succeeds = TestInstance { run = return $ Finished Pass , name = "succeeds" , tags = [] , options = [] , setOption = \_ _ -> Right succeeds } fails = TestInstance { run = return $ Finished $ Fail "Always fails!" , name = "fails" , tags = [] , options = [] , setOption = \_ _ -> Right fails }hj%jDjEhjh}r &(jjXhaskelljjh]h]h]j}h]h]ujPMh]r &hX module Bar ( tests ) where import Distribution.TestSuite tests :: IO [Test] tests = return [ Test succeeds, Test fails ] where succeeds = TestInstance { run = return $ Finished Pass , name = "succeeds" , tags = [] , options = [] , setOption = \_ _ -> Right succeeds } fails = TestInstance { run = return $ Finished $ Fail "Always fails!" , name = "fails" , tags = [] , options = [] , setOption = \_ _ -> Right fails }r&r&}r&(hUhj &ubaubeubeubjn)r&}r&(hUhj#jDjEhjqh}r&(h]h]h]h]r&Urunning-test-suitesr&ah]r&jaujPMjjth]r&(h)r&}r&(hXRunning test suitesr&hj&jDjEhhh}r&(h]h]h]h]h]ujPMjjth]r&hXRunning test suitesr&r&}r&(hj&jDNjPNjjthj&ubaubjZ)r &}r!&(hXGYou can have Cabal run your test suites using its built-in test runner:r"&hj&jDjEhj]h}r#&(h]h]h]h]h]ujPMjjth]r$&hXGYou can have Cabal run your test suites using its built-in test runner:r%&r&&}r'&(hj"&jDNjPNjjthj &ubaubj)r(&}r)&(hX;$ cabal configure --enable-tests $ cabal build $ cabal testhj&jDjEhjh}r*&(jjh]h]h]h]h]ujPMjjth]r+&hX;$ cabal configure --enable-tests $ cabal build $ cabal testr,&r-&}r.&(hUhj(&ubaubjZ)r/&}r0&(hX[See the output of ``cabal help test`` for a list of options you can pass to ``cabal test``.hj&jDjEhj]h}r1&(h]h]h]h]h]ujPMjjth]r2&(hXSee the output of r3&r4&}r5&(hXSee the output of jDNjPNjjthj/&ubj)r6&}r7&(hX``cabal help test``h}r8&(h]h]h]h]h]uhj/&h]r9&hXcabal help testr:&r;&}r<&(hXcabal help testhj6&ubahjubhX' for a list of options you can pass to r=&r>&}r?&(hX' for a list of options you can pass to jDNjPNjjthj/&ubj)r@&}rA&(hX``cabal test``h}rB&(h]h]h]h]h]uhj/&h]rC&hX cabal testrD&rE&}rF&(hX cabal testhj@&ubahjubhX.rG&}rH&(hX.jDNjPNjjthj/&ubeubeubeubjjn)rI&}rJ&(hUjKhjjDjEhjqh}rK&(h]h]h]h]rL&jah]rM&jaujPMAjjth]rN&(h)rO&}rP&(hXForeign librariesrQ&hjI&jDjEhhh}rR&(h]h]h]h]h]ujPMAjjth]rS&hXForeign librariesrT&rU&}rV&(hjQ&jDNjPNjjthjO&ubaubjZ)rW&}rX&(hXForeign libraries are system libraries intended to be linked against programs written in C or other "foreign" languages. They come in two primary flavours: dynamic libraries (``.so`` files on Linux, ``.dylib`` files on OSX, ``.dll`` files on Windows, etc.) are linked against executables when the executable is run (or even lazily during execution), while static libraries (``.a`` files on Linux/OSX, ``.lib`` files on Windows) get linked against the executable at compile time.hjI&jDjEhj]h}rY&(h]h]h]h]h]ujPMCjjth]rZ&(hXForeign libraries are system libraries intended to be linked against programs written in C or other “foreign” languages. They come in two primary flavours: dynamic libraries (r[&r\&}r]&(hXForeign libraries are system libraries intended to be linked against programs written in C or other "foreign" languages. They come in two primary flavours: dynamic libraries (jDNjPNjjthjW&ubj)r^&}r_&(hX``.so``h}r`&(h]h]h]h]h]uhjW&h]ra&hX.sorb&rc&}rd&(hX.sohj^&ubahjubhX files on Linux, re&rf&}rg&(hX files on Linux, jDNjPNjjthjW&ubj)rh&}ri&(hX ``.dylib``h}rj&(h]h]h]h]h]uhjW&h]rk&hX.dylibrl&rm&}rn&(hX.dylibhjh&ubahjubhX files on OSX, ro&rp&}rq&(hX files on OSX, jDNjPNjjthjW&ubj)rr&}rs&(hX``.dll``h}rt&(h]h]h]h]h]uhjW&h]ru&hX.dllrv&rw&}rx&(hX.dllhjr&ubahjubhX files on Windows, etc.) are linked against executables when the executable is run (or even lazily during execution), while static libraries (ry&rz&}r{&(hX files on Windows, etc.) are linked against executables when the executable is run (or even lazily during execution), while static libraries (jDNjPNjjthjW&ubj)r|&}r}&(hX``.a``h}r~&(h]h]h]h]h]uhjW&h]r&hX.ar&r&}r&(hX.ahj|&ubahjubhX files on Linux/OSX, r&r&}r&(hX files on Linux/OSX, jDNjPNjjthjW&ubj)r&}r&(hX``.lib``h}r&(h]h]h]h]h]uhjW&h]r&hX.libr&r&}r&(hX.libhj&ubahjubhXE files on Windows) get linked against the executable at compile time.r&r&}r&(hXE files on Windows) get linked against the executable at compile time.jDNjPNjjthjW&ubeubjZ)r&}r&(hX3Foreign libraries only work with GHC 7.8 and later.r&hjI&jDjEhj]h}r&(h]h]h]h]h]ujPMKjjth]r&hX3Foreign libraries only work with GHC 7.8 and later.r&r&}r&(hj&jDNjPNjjthj&ubaubjZ)r&}r&(hX1A typical stanza for a foreign library looks liker&hjI&jDjEhj]h}r&(h]h]h]h]h]ujPMMjjth]r&hX1A typical stanza for a foreign library looks liker&r&}r&(hj&jDNjPNjjthj&ubaubj)r&}r&(hXforeign-library myforeignlib type: native-shared lib-version-info: 6:3:2 if os(Windows) options: standalone mod-def-file: MyForeignLib.def other-modules: MyForeignLib.SomeModule MyForeignLib.SomeOtherModule build-depends: base >=4.7 && <4.9 hs-source-dirs: src c-sources: csrc/MyForeignLibWrapper.c default-language: Haskell2010hjI&jDjEhjh}r&(jjh]h]h]h]h]ujPMQjjth]r&hXforeign-library myforeignlib type: native-shared lib-version-info: 6:3:2 if os(Windows) options: standalone mod-def-file: MyForeignLib.def other-modules: MyForeignLib.SomeModule MyForeignLib.SomeOtherModule build-depends: base >=4.7 && <4.9 hs-source-dirs: src c-sources: csrc/MyForeignLibWrapper.c default-language: Haskell2010r&r&}r&(hUhj&ubaubj )r&}r&(hUhjI&jDjEhjnh}r&(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r&}r&(hUhjI&jDjEhj h}r&(j j Xcabalh]h]h]h]h]j X pkg-sectionr&j j&ujPNjjth]r&(j )r&}r&(hXforeign-library namehj&jDjEhj h}r&(h]r&jah]h]h]h]j ujPNjjth]r&(j )r&}r&(hUhj&jDjEhjnh}r&(h]h]h]h]h]Uentries]r&(j! X6foreign-library:foreign-library; package.cabal sectionjUNtr&aujPNjjth]ubj# )r&}r&(hjhj&jDjEhj& h}r&(jjh]h]h]h]h]ujPNjjth]r&hXforeign-libraryr&r&}r&(hUjDNjPNjjthj&ubaubj, )r&}r&(hU hj&jDjEhj0 h}r&(jjh]h]h]h]h]ujPNjjth]r&hX r&}r&(hUjDNjPNjjthj&ubaubj6 )r&}r&(hXnamehj&jDjEhj9 h}r&(jjh]h]h]h]h]ujPNjjth]r&hXnamer&r&}r&(hUjDNjPNjjthj&ubaubeubjh)r&}r&(hUhj&jDjEhjA h}r&(h]h]h]h]h]ujPNjjth]r&(j)r&}r&(hUhj&jDjEhjh}r&(h]h]h]h]h]ujPNjjth]r&j)r&}r&(hUhj&jDjEhj.h}r&(h]h]h]h]h]ujPNjjth]r&(j )r&}r&(hj+hj&jDjEhj h}r&(h]h]h]h]h]ujPKh]r&hXSincer&r&}r&(hUhj&ubaubj)r&}r&(hU Cabal 2.0r&h}r&(h]h]h]h]h]uhj&h]r&jZ)r&}r&(hj&h}r&(h]h]h]h]h]uhj&h]r&hX Cabal 2.0r&r&}r&(hUhj&ubahj]ubahj-ubeubaubjZ)r&}r&(hX+Build information for `foreign libraries`_.hj&jDjEhj]h}r&(h]h]h]h]h]ujPMejjth]r&(hXBuild information for r&r&}r&(hXBuild information for jDNjPNjjthj&ubj!)r&}r&(hX`foreign libraries`_j$Khj&hj%h}r&(UnameXforeign librariesh]h]h]h]h]j'juh]r&hXforeign librariesr&r&}r&(hXforeign librarieshj&ubaubhX.r&}r&(hX.jDNjPNjjthj&ubeubeubeubj )r&}r&(hUhjI&jDjEhjnh}r&(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r&}r'(hUhjI&jDjEhj h}r'(j j Xcabalh]h]h]h]h]j X pkg-fieldr'j j'ujPNjjth]r'(j )r'}r'(hXtype: foreign library typehj&jDjEhj h}r'(h]r'jah]h]h]h]j ujPMkjjth]r'(j )r '}r '(hUhj'jDjEhjnh}r '(h]h]h]h]h]Uentries]r '(j! X)foreign-library:type; package.cabal fieldjUNtr 'aujPMkjjth]ubj# )r'}r'(hjhj'jDjEhj& h}r'(jjh]h]h]h]h]ujPMkjjth]r'hXtyper'r'}r'(hUjDNjPNjjthj'ubaubj, )r'}r'(hj/ hj'jDjEhj0 h}r'(jjh]h]h]h]h]ujPMkjjth]r'hX: r'r'}r'(hUjDNjPNjjthj'ubaubj6 )r'}r'(hXforeign library typehj'jDjEhj9 h}r'(jjh]h]h]h]h]ujPMkjjth]r'hXforeign library typer 'r!'}r"'(hUjDNjPNjjthj'ubaubeubjh)r#'}r$'(hUhj&jDjEhjA h}r%'(h]h]h]h]h]ujPMkjjth]r&'jZ)r''}r('(hXCabal recognizes ``native-static`` and ``native-shared`` here, although we currently only support building `native-shared` libraries.hj#'jDjEhj]h}r)'(h]h]h]h]h]ujPMijjth]r*'(hXCabal recognizes r+'r,'}r-'(hXCabal recognizes jDNjPNjjthj''ubj)r.'}r/'(hX``native-static``h}r0'(h]h]h]h]h]uhj''h]r1'hX native-staticr2'r3'}r4'(hX native-statichj.'ubahjubhX and r5'r6'}r7'(hX and jDNjPNjjthj''ubj)r8'}r9'(hX``native-shared``h}r:'(h]h]h]h]h]uhj''h]r;'hX native-sharedr<'r='}r>'(hX native-sharedhj8'ubahjubhX3 here, although we currently only support building r?'r@'}rA'(hX3 here, although we currently only support building jDNjPNjjthj''ubj")rB'}rC'(hX`native-shared`h}rD'(h]h]h]h]h]uhj''h]rE'hX native-sharedrF'rG'}rH'(hX native-sharedhjB'ubahj"ubhX libraries.rI'rJ'}rK'(hX libraries.jDNjPNjjthj''ubeubaubeubj )rL'}rM'(hUhjI&jDjEhjnh}rN'(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rO'}rP'(hUhjI&jDjEhj h}rQ'(j j Xcabalh]h]h]h]h]j X pkg-fieldrR'j jR'ujPNjjth]rS'(j )rT'}rU'(hX$options: foreign library option listhjO'jDjEhj h}rV'(h]rW'jah]h]h]h]j ujPMvjjth]rX'(j )rY'}rZ'(hUhjT'jDjEhjnh}r['(h]h]h]h]h]Uentries]r\'(j! X,foreign-library:options; package.cabal fieldjUNtr]'aujPMvjjth]ubj# )r^'}r_'(hjhjT'jDjEhj& h}r`'(jjh]h]h]h]h]ujPMvjjth]ra'hXoptionsrb'rc'}rd'(hUjDNjPNjjthj^'ubaubj, )re'}rf'(hj/ hjT'jDjEhj0 h}rg'(jjh]h]h]h]h]ujPMvjjth]rh'hX: ri'rj'}rk'(hUjDNjPNjjthje'ubaubj6 )rl'}rm'(hXforeign library option listhjT'jDjEhj9 h}rn'(jjh]h]h]h]h]ujPMvjjth]ro'hXforeign library option listrp'rq'}rr'(hUjDNjPNjjthjl'ubaubeubjh)rs'}rt'(hUhjO'jDjEhjA h}ru'(h]h]h]h]h]ujPMvjjth]rv'jZ)rw'}rx'(hX Options for building the foreign library, typically specific to the specified type of foreign library. Currently we only support ``standalone`` here. A standalone dynamic library is one that does not have any dependencies on other (Haskell) shared libraries; without the ``standalone`` option the generated library would have dependencies on the Haskell runtime library (``libHSrts``), the base library (``libHSbase``), etc. Currently, ``standalone`` *must* be used on Windows and *must not* be used on any other platform.hjs'jDjEhj]h}ry'(h]h]h]h]h]ujPMnjjth]rz'(hXOptions for building the foreign library, typically specific to the specified type of foreign library. Currently we only support r{'r|'}r}'(hXOptions for building the foreign library, typically specific to the specified type of foreign library. Currently we only support jDNjPNjjthjw'ubj)r~'}r'(hX``standalone``h}r'(h]h]h]h]h]uhjw'h]r'hX standaloner'r'}r'(hX standalonehj~'ubahjubhX here. A standalone dynamic library is one that does not have any dependencies on other (Haskell) shared libraries; without the r'r'}r'(hX here. A standalone dynamic library is one that does not have any dependencies on other (Haskell) shared libraries; without the jDNjPNjjthjw'ubj)r'}r'(hX``standalone``h}r'(h]h]h]h]h]uhjw'h]r'hX standaloner'r'}r'(hX standalonehj'ubahjubhXV option the generated library would have dependencies on the Haskell runtime library (r'r'}r'(hXV option the generated library would have dependencies on the Haskell runtime library (jDNjPNjjthjw'ubj)r'}r'(hX ``libHSrts``h}r'(h]h]h]h]h]uhjw'h]r'hXlibHSrtsr'r'}r'(hXlibHSrtshj'ubahjubhX), the base library (r'r'}r'(hX), the base library (jDNjPNjjthjw'ubj)r'}r'(hX ``libHSbase``h}r'(h]h]h]h]h]uhjw'h]r'hX libHSbaser'r'}r'(hX libHSbasehj'ubahjubhX), etc. Currently, r'r'}r'(hX), etc. Currently, jDNjPNjjthjw'ubj)r'}r'(hX``standalone``h}r'(h]h]h]h]h]uhjw'h]r'hX standaloner'r'}r'(hX standalonehj'ubahjubhX r'}r'(hX jDNjPNjjthjw'ubj)r'}r'(hX*must*h}r'(h]h]h]h]h]uhjw'h]r'hXmustr'r'}r'(hXmusthj'ubahjubhX be used on Windows and r'r'}r'(hX be used on Windows and jDNjPNjjthjw'ubj)r'}r'(hX *must not*h}r'(h]h]h]h]h]uhjw'h]r'hXmust notr'r'}r'(hXmust nothj'ubahjubhX be used on any other platform.r'r'}r'(hX be used on any other platform.jDNjPNjjthjw'ubeubaubeubj )r'}r'(hUhjI&jDjEhjnh}r'(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r'}r'(hUhjI&jDjEhj h}r'(j j Xcabalh]h]h]h]h]j X pkg-fieldr'j j'ujPNjjth]r'(j )r'}r'(hXmod-def-file: filenamehj'jDjEhj h}r'(h]r'jah]h]h]h]j ujPMjjth]r'(j )r'}r'(hUhj'jDjEhjnh}r'(h]h]h]h]h]Uentries]r'(j! X1foreign-library:mod-def-file; package.cabal fieldjUNtr'aujPMjjth]ubj# )r'}r'(hjhj'jDjEhj& h}r'(jjh]h]h]h]h]ujPMjjth]r'hX mod-def-filer'r'}r'(hUjDNjPNjjthj'ubaubj, )r'}r'(hj/ hj'jDjEhj0 h}r'(jjh]h]h]h]h]ujPMjjth]r'hX: r'r'}r'(hUjDNjPNjjthj'ubaubj6 )r'}r'(hXfilenamehj'jDjEhj9 h}r'(jjh]h]h]h]h]ujPMjjth]r'hXfilenamer'r'}r'(hUjDNjPNjjthj'ubaubeubjh)r'}r'(hUhj'jDjEhjA h}r'(h]h]h]h]h]ujPMjjth]r'jZ)r'}r'(hXThis option can only be used when creating dynamic Windows libraries (that is, when using ``native-shared`` and the ``os`` is ``Windows``). If used, it must be a path to a *module definition file*. The details of module definition files are beyond the scope of this document; see the `GHC `_ manual for some details and some further pointers.hj'jDjEhj]h}r'(h]h]h]h]h]ujPMyjjth]r'(hXZThis option can only be used when creating dynamic Windows libraries (that is, when using r'r'}r'(hXZThis option can only be used when creating dynamic Windows libraries (that is, when using jDNjPNjjthj'ubj)r'}r'(hX``native-shared``h}r'(h]h]h]h]h]uhj'h]r'hX native-sharedr'r'}r'(hX native-sharedhj'ubahjubhX and the r'r'}r'(hX and the jDNjPNjjthj'ubj)r'}r((hX``os``h}r((h]h]h]h]h]uhj'h]r(hXosr(r(}r((hXoshj'ubahjubhX is r(r(}r((hX is jDNjPNjjthj'ubj)r (}r ((hX ``Windows``h}r ((h]h]h]h]h]uhj'h]r (hXWindowsr (r(}r((hXWindowshj (ubahjubhX#). If used, it must be a path to a r(r(}r((hX#). If used, it must be a path to a jDNjPNjjthj'ubj)r(}r((hX*module definition file*h}r((h]h]h]h]h]uhj'h]r(hXmodule definition filer(r(}r((hXmodule definition filehj(ubahjubhXX. The details of module definition files are beyond the scope of this document; see the r(r(}r((hXX. The details of module definition files are beyond the scope of this document; see the jDNjPNjjthj'ubj!)r(}r((hXX`GHC `_h}r((UnameXGHCj] XOhttps://downloads.haskell.org/~ghc/latest/docs/html/users_guide/win32-dlls.htmlr (h]h]h]h]h]uhj'h]r!(hXGHCr"(r#(}r$((hXGHChj(ubahj%ubje)r%(}r&((hXR jKhj'hjdh}r'((Urefurij (h]r((Ughcr)(ah]h]h]h]r*(jauh]ubhX3 manual for some details and some further pointers.r+(r,(}r-((hX3 manual for some details and some further pointers.jDNjPNjjthj'ubeubaubeubj )r.(}r/((hUhjI&jDjEhjnh}r0((h]h]h]h]h]Uentries]ujPNjjth]ubjk)r1(}r2((hUhjI&jDjEhj h}r3((j j Xcabalh]h]h]h]h]j X pkg-fieldr4(j j4(ujPNjjth]r5((j )r6(}r7((hX&lib-version-info: current:revision:agehj1(jDjEhj h}r8((h]r9(jah]h]h]h]j ujPMjjth]r:((j )r;(}r<((hUhj6(jDjEhjnh}r=((h]h]h]h]h]Uentries]r>((j! X5foreign-library:lib-version-info; package.cabal fieldjUNtr?(aujPMjjth]ubj# )r@(}rA((hjhj6(jDjEhj& h}rB((jjh]h]h]h]h]ujPMjjth]rC(hXlib-version-inforD(rE(}rF((hUjDNjPNjjthj@(ubaubj, )rG(}rH((hj/ hj6(jDjEhj0 h}rI((jjh]h]h]h]h]ujPMjjth]rJ(hX: rK(rL(}rM((hUjDNjPNjjthjG(ubaubj6 )rN(}rO((hXcurrent:revision:agehj6(jDjEhj9 h}rP((jjh]h]h]h]h]ujPMjjth]rQ(hXcurrent:revision:agerR(rS(}rT((hUjDNjPNjjthjN(ubaubeubjh)rU(}rV((hUhj1(jDjEhjA h}rW((h]h]h]h]h]ujPMjjth]rX((jZ)rY(}rZ((hX+This field is currently only used on Linux.r[(hjU(jDjEhj]h}r\((h]h]h]h]h]ujPMjjth]r](hX+This field is currently only used on Linux.r^(r_(}r`((hj[(jDNjPNjjthjY(ubaubjZ)ra(}rb((hX This field specifies a Libtool-style version-info field that sets an appropriate ABI version for the foreign library. Note that the three numbers specified in this field do not directly specify the actual ABI version: ``6:3:2`` results in library version ``4.2.3``.hjU(jDjEhj]h}rc((h]h]h]h]h]ujPMjjth]rd((hXThis field specifies a Libtool-style version-info field that sets an appropriate ABI version for the foreign library. Note that the three numbers specified in this field do not directly specify the actual ABI version: re(rf(}rg((hXThis field specifies a Libtool-style version-info field that sets an appropriate ABI version for the foreign library. Note that the three numbers specified in this field do not directly specify the actual ABI version: jDNjPNjjthja(ubj)rh(}ri((hX ``6:3:2``h}rj((h]h]h]h]h]uhja(h]rk(hX6:3:2rl(rm(}rn((hX6:3:2hjh(ubahjubhX results in library version ro(rp(}rq((hX results in library version jDNjPNjjthja(ubj)rr(}rs((hX ``4.2.3``h}rt((h]h]h]h]h]uhja(h]ru(hX4.2.3rv(rw(}rx((hX4.2.3hjr(ubahjubhX.ry(}rz((hX.jDNjPNjjthja(ubeubjZ)r{(}r|((hXRWith this field set, the SONAME of the library is set, and symlinks are installed.r}(hjU(jDjEhj]h}r~((h]h]h]h]h]ujPMjjth]r(hXRWith this field set, the SONAME of the library is set, and symlinks are installed.r(r(}r((hj}(jDNjPNjjthj{(ubaubjZ)r(}r((hXVHow you should bump this field on an ABI change depends on the breakage you introduce:r(hjU(jDjEhj]h}r((h]h]h]h]h]ujPMjjth]r(hXVHow you should bump this field on an ABI change depends on the breakage you introduce:r(r(}r((hj(jDNjPNjjthj(ubaubj )r(}r((hUhjU(jDjEhj h}r((j X-h]h]h]h]h]ujPMjjth]r((j )r(}r((hXPrograms using the previous version may use the new version as drop-in replacement, and programs using the new version can also work with the previous one. In other words, no recompiling nor relinking is needed. In this case, bump ``revision`` only, don't touch current nor age.hj(jDjEhj h}r((h]h]h]h]h]ujPNjjth]r(jZ)r(}r((hXPrograms using the previous version may use the new version as drop-in replacement, and programs using the new version can also work with the previous one. In other words, no recompiling nor relinking is needed. In this case, bump ``revision`` only, don't touch current nor age.hj(jDjEhj]h}r((h]h]h]h]h]ujPMh]r((hXPrograms using the previous version may use the new version as drop-in replacement, and programs using the new version can also work with the previous one. In other words, no recompiling nor relinking is needed. In this case, bump r(r(}r((hXPrograms using the previous version may use the new version as drop-in replacement, and programs using the new version can also work with the previous one. In other words, no recompiling nor relinking is needed. In this case, bump hj(ubj)r(}r((hX ``revision``h}r((h]h]h]h]h]uhj(h]r(hXrevisionr(r(}r((hXrevisionhj(ubahjubhX% only, don’t touch current nor age.r(r(}r((hX# only, don't touch current nor age.hj(ubeubaubj )r(}r((hXYPrograms using the previous version may use the new version as drop-in replacement, but programs using the new version may use APIs not present in the previous one. In other words, a program linking against the new version may fail with "unresolved symbols" if linking against the old version at runtime: set revision to 0, bump current and age.hj(jDjEhj h}r((h]h]h]h]h]ujPNjjth]r(jZ)r(}r((hXYPrograms using the previous version may use the new version as drop-in replacement, but programs using the new version may use APIs not present in the previous one. In other words, a program linking against the new version may fail with "unresolved symbols" if linking against the old version at runtime: set revision to 0, bump current and age.r(hj(jDjEhj]h}r((h]h]h]h]h]ujPMh]r(hX]Programs using the previous version may use the new version as drop-in replacement, but programs using the new version may use APIs not present in the previous one. In other words, a program linking against the new version may fail with “unresolved symbols” if linking against the old version at runtime: set revision to 0, bump current and age.r(r(}r((hj(hj(ubaubaubj )r(}r((hXPrograms may need to be changed, recompiled, and relinked in order to use the new version. Bump current, set revision and age to 0. hj(jDjEhj h}r((h]h]h]h]h]ujPNjjth]r(jZ)r(}r((hXPrograms may need to be changed, recompiled, and relinked in order to use the new version. Bump current, set revision and age to 0.r(hj(jDjEhj]h}r((h]h]h]h]h]ujPMh]r(hXPrograms may need to be changed, recompiled, and relinked in order to use the new version. Bump current, set revision and age to 0.r(r(}r((hj(hj(ubaubaubeubjZ)r(}r((hXBAlso refer to the Libtool documentation on the version-info field.r(hjU(jDjEhj]h}r((h]h]h]h]h]ujPMjjth]r(hXBAlso refer to the Libtool documentation on the version-info field.r(r(}r((hj(jDNjPNjjthj(ubaubeubeubj )r(}r((hUhjI&jDjEhjnh}r((h]h]h]h]h]Uentries]ujPNjjth]ubjk)r(}r((hUhjI&jDjEhj h}r((j j Xcabalh]h]h]h]h]j X pkg-fieldr(j j(ujPNjjth]r((j )r(}r((hXlib-version-linux: versionhj(jDjEhj h}r((h]r(j\ah]h]h]h]j ujPMjjth]r((j )r(}r((hUhj(jDjEhjnh}r((h]h]h]h]h]Uentries]r((j! X6foreign-library:lib-version-linux; package.cabal fieldj\UNtr(aujPMjjth]ubj# )r(}r((hj[hj(jDjEhj& h}r((jjh]h]h]h]h]ujPMjjth]r(hXlib-version-linuxr(r(}r((hUjDNjPNjjthj(ubaubj, )r(}r((hj/ hj(jDjEhj0 h}r((jjh]h]h]h]h]ujPMjjth]r(hX: r(r(}r((hUjDNjPNjjthj(ubaubj6 )r(}r((hXversionhj(jDjEhj9 h}r((jjh]h]h]h]h]ujPMjjth]r(hXversionr(r(}r((hUjDNjPNjjthj(ubaubeubjh)r(}r((hUhj(jDjEhjA h}r((h]h]h]h]h]ujPMjjth]r((jZ)r(}r((hX!This field is only used on Linux.r(hj(jDjEhj]h}r((h]h]h]h]h]ujPMjjth]r(hX!This field is only used on Linux.r(r(}r((hj(jDNjPNjjthj(ubaubjZ)r(}r((hXSpecifies the library ABI version directly for foreign libraries built on Linux: so specifying ``4.2.3`` causes a library ``libfoo.so.4.2.3`` to be built with SONAME ``libfoo.so.4``, and appropriate symlinks ``libfoo.so.4`` and ``libfoo.so`` to be installed.hj(jDjEhj]h}r((h]h]h]h]h]ujPMjjth]r((hX_Specifies the library ABI version directly for foreign libraries built on Linux: so specifying r(r(}r((hX_Specifies the library ABI version directly for foreign libraries built on Linux: so specifying jDNjPNjjthj(ubj)r(}r((hX ``4.2.3``h}r)(h]h]h]h]h]uhj(h]r)hX4.2.3r)r)}r)(hX4.2.3hj(ubahjubhX causes a library r)r)}r)(hX causes a library jDNjPNjjthj(ubj)r)}r )(hX``libfoo.so.4.2.3``h}r )(h]h]h]h]h]uhj(h]r )hXlibfoo.so.4.2.3r )r )}r)(hXlibfoo.so.4.2.3hj)ubahjubhX to be built with SONAME r)r)}r)(hX to be built with SONAME jDNjPNjjthj(ubj)r)}r)(hX``libfoo.so.4``h}r)(h]h]h]h]h]uhj(h]r)hX libfoo.so.4r)r)}r)(hX libfoo.so.4hj)ubahjubhX, and appropriate symlinks r)r)}r)(hX, and appropriate symlinks jDNjPNjjthj(ubj)r)}r)(hX``libfoo.so.4``h}r)(h]h]h]h]h]uhj(h]r)hX libfoo.so.4r )r!)}r")(hX libfoo.so.4hj)ubahjubhX and r#)r$)}r%)(hX and jDNjPNjjthj(ubj)r&)}r')(hX ``libfoo.so``h}r()(h]h]h]h]h]uhj(h]r))hX libfoo.sor*)r+)}r,)(hX libfoo.sohj&)ubahjubhX to be installed.r-)r.)}r/)(hX to be installed.jDNjPNjjthj(ubeubeubeubjZ)r0)}r1)(hXNote that typically foreign libraries should export a way to initialize and shutdown the Haskell runtime. In the example above, this is done by the ``csrc/MyForeignLibWrapper.c`` file, which might look something likehjI&jDjEhj]h}r2)(h]h]h]h]h]ujPMjjth]r3)(hXNote that typically foreign libraries should export a way to initialize and shutdown the Haskell runtime. In the example above, this is done by the r4)r5)}r6)(hXNote that typically foreign libraries should export a way to initialize and shutdown the Haskell runtime. In the example above, this is done by the jDNjPNjjthj0)ubj)r7)}r8)(hX``csrc/MyForeignLibWrapper.c``h}r9)(h]h]h]h]h]uhj0)h]r:)hXcsrc/MyForeignLibWrapper.cr;)r<)}r=)(hXcsrc/MyForeignLibWrapper.chj7)ubahjubhX& file, which might look something liker>)r?)}r@)(hX& file, which might look something likejDNjPNjjthj0)ubeubj)rA)}rB)(hXn#include #include "HsFFI.h" HsBool myForeignLibInit(void){ int argc = 2; char *argv[] = { "+RTS", "-A32m", NULL }; char **pargv = argv; // Initialize Haskell runtime hs_init(&argc, &pargv); // do any other initialization here and // return false if there was a problem return HS_BOOL_TRUE; } void myForeignLibExit(void){ hs_exit(); }hjI&jDjEhjh}rC)(jjXcjjh]h]h]j}h]h]ujPMjjth]rD)hXn#include #include "HsFFI.h" HsBool myForeignLibInit(void){ int argc = 2; char *argv[] = { "+RTS", "-A32m", NULL }; char **pargv = argv; // Initialize Haskell runtime hs_init(&argc, &pargv); // do any other initialization here and // return false if there was a problem return HS_BOOL_TRUE; } void myForeignLibExit(void){ hs_exit(); }rE)rF)}rG)(hUhjA)ubaubjZ)rH)}rI)(hXWith modern ghc regular libraries are installed in directories that contain package keys. This isn't usually a problem because the package gets registered in ghc's package DB and so we can figure out what the location of the library is. Foreign libraries however don't get registered, which means that we'd have to have a way of finding out where a platform library got installed (other than by searching the ``lib/`` directory). Instead, we install foreign libraries in ``~/.cabal/lib``, much like we install executables in ``~/.cabal/bin``.hjI&jDjEhj]h}rJ)(h]h]h]h]h]ujPMjjth]rK)(hXWith modern ghc regular libraries are installed in directories that contain package keys. This isn’t usually a problem because the package gets registered in ghc’s package DB and so we can figure out what the location of the library is. Foreign libraries however don’t get registered, which means that we’d have to have a way of finding out where a platform library got installed (other than by searching the rL)rM)}rN)(hXWith modern ghc regular libraries are installed in directories that contain package keys. This isn't usually a problem because the package gets registered in ghc's package DB and so we can figure out what the location of the library is. Foreign libraries however don't get registered, which means that we'd have to have a way of finding out where a platform library got installed (other than by searching the jDNjPNjjthjH)ubj)rO)}rP)(hX``lib/``h}rQ)(h]h]h]h]h]uhjH)h]rR)hXlib/rS)rT)}rU)(hXlib/hjO)ubahjubhX6 directory). Instead, we install foreign libraries in rV)rW)}rX)(hX6 directory). Instead, we install foreign libraries in jDNjPNjjthjH)ubj)rY)}rZ)(hX``~/.cabal/lib``h}r[)(h]h]h]h]h]uhjH)h]r\)hX ~/.cabal/libr])r^)}r_)(hX ~/.cabal/libhjY)ubahjubhX&, much like we install executables in r`)ra)}rb)(hX&, much like we install executables in jDNjPNjjthjH)ubj)rc)}rd)(hX``~/.cabal/bin``h}re)(h]h]h]h]h]uhjH)h]rf)hX ~/.cabal/binrg)rh)}ri)(hX ~/.cabal/binhjc)ubahjubhX.rj)}rk)(hX.jDNjPNjjthjH)ubeubeubjn)rl)}rm)(hUjKhjjDjEhjqh}rn)(h]h]h]h]ro)joah]rp)jaujPMjjth]rq)(h)rr)}rs)(hXBuild informationrt)hjl)jDjEhhh}ru)(h]h]h]h]h]ujPMjjth]rv)hXBuild informationrw)rx)}ry)(hjt)jDNjPNjjthjr)ubaubjZ)rz)}r{)(hXGThe following fields may be optionally present in a library, executable, test suite or benchmark section, and give information for the building of the corresponding library or executable. See also the sections on `system-dependent parameters`_ and `configurations`_ for a way to supply system-dependent values for these fields.hjl)jDjEhj]h}r|)(h]h]h]h]h]ujPMjjth]r})(hXThe following fields may be optionally present in a library, executable, test suite or benchmark section, and give information for the building of the corresponding library or executable. See also the sections on r~)r)}r)(hXThe following fields may be optionally present in a library, executable, test suite or benchmark section, and give information for the building of the corresponding library or executable. See also the sections on jDNjPNjjthjz)ubj!)r)}r)(hX`system-dependent parameters`_j$Khjz)hj%h}r)(UnameXsystem-dependent parametersh]h]h]h]h]j'jo uh]r)hXsystem-dependent parametersr)r)}r)(hXsystem-dependent parametershj)ubaubhX and r)r)}r)(hX and jDNjPNjjthjz)ubj!)r)}r)(hX`configurations`_j$Khjz)hj%h}r)(UnameXconfigurationsr)h]h]h]h]h]j'j uh]r)hXconfigurationsr)r)}r)(hj)hj)ubaubhX> for a way to supply system-dependent values for these fields.r)r)}r)(hX> for a way to supply system-dependent values for these fields.jDNjPNjjthjz)ubeubj )r)}r)(hUhjl)jDjEhjnh}r)(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r)}r)(hUhjl)jDjEhj h}r)(j j Xcabalh]h]h]h]h]j X pkg-fieldr)j j)ujPNjjth]r)(j )r)}r)(hXbuild-depends: library listhj)jDjEhj h}r)(h]r)jah]h]h]h]j ujPM}jjth]r)(j )r)}r)(hUhj)jDjEhjnh}r)(h]h]h]h]h]Uentries]r)(j! X"build-depends; package.cabal fieldjUNtr)aujPM}jjth]ubj# )r)}r)(hjhj)jDjEhj& h}r)(jjh]h]h]h]h]ujPM}jjth]r)hX build-dependsr)r)}r)(hUjDNjPNjjthj)ubaubj, )r)}r)(hj/ hj)jDjEhj0 h}r)(jjh]h]h]h]h]ujPM}jjth]r)hX: r)r)}r)(hUjDNjPNjjthj)ubaubj6 )r)}r)(hX library listhj)jDjEhj9 h}r)(jjh]h]h]h]h]ujPM}jjth]r)hX library listr)r)}r)(hUjDNjPNjjthj)ubaubeubjh)r)}r)(hUhj)jDjEhjA h}r)(h]h]h]h]h]ujPM}jjth]r)(jZ)r)}r)(hXDeclares the *library* dependencies required to build the current package component; see :pkg-field:`build-tool-depends` for declaring build-time *tool* dependencies. External library dependencies should be annotated with a version constraint.hj)jDjEhj]h}r)(h]h]h]h]h]ujPMjjth]r)(hX Declares the r)r)}r)(hX Declares the jDNjPNjjthj)ubj)r)}r)(hX *library*h}r)(h]h]h]h]h]uhj)h]r)hXlibraryr)r)}r)(hXlibraryhj)ubahjubhXC dependencies required to build the current package component; see r)r)}r)(hXC dependencies required to build the current package component; see jDNjPNjjthj)ubjM)r)}r)(hX:pkg-field:`build-tool-depends`hj)jDjEhjPh}r)(UreftypeX pkg-fieldjRjSXbuild-tool-dependsr)U refdomainXcabalr)h]h]U refexplicith]h]h]jVj jlNujPMh]r)j)r)}r)(hj)h}r)(h]h]r)(j]j)Xcabal-pkg-fieldr)eh]h]h]uhj)h]r)hXbuild-tool-dependsr)r)}r)(hUhj)ubahjubaubhX for declaring build-time r)r)}r)(hX for declaring build-time jDNjPNjjthj)ubj)r)}r)(hX*tool*h}r)(h]h]h]h]h]uhj)h]r)hXtoolr)r)}r)(hXtoolhj)ubahjubhX[ dependencies. External library dependencies should be annotated with a version constraint.r)r)}r)(hX[ dependencies. External library dependencies should be annotated with a version constraint.jDNjPNjjthj)ubeubjZ)r)}r)(hX**Library Names**r)hj)jDjEhj]h}r)(h]h]h]h]h]ujPMjjth]r)j)r)}r)(hj)h}r)(h]h]h]h]h]uhj)h]r)hX Library Namesr)r)}r)(hX Library Nameshj)ubahjubaubjZ)r)}r)(hX4External libraries are identified by the package's name they're provided by (currently a package can only publically expose its main library compeonent; in future, packages with multiple exposed public library components will be supported and a syntax for referring to public sub-libraries will be provided).r)hj)jDjEhj]h}r)(h]h]h]h]h]ujPMjjth]r)hX8External libraries are identified by the package’s name they’re provided by (currently a package can only publically expose its main library compeonent; in future, packages with multiple exposed public library components will be supported and a syntax for referring to public sub-libraries will be provided).r)r*}r*(hj)jDNjPNjjthj)ubaubjZ)r*}r*(hXGIn order to specify an intra-package dependency on an internal library component you can use the unqualified name of the component library component. Note that locally defined sub-library names shadow external package names of the same name. See section on :ref:`Internal Libraries ` for examples and more information.hj)jDjEhj]h}r*(h]h]h]h]h]ujPMjjth]r*(hXIn order to specify an intra-package dependency on an internal library component you can use the unqualified name of the component library component. Note that locally defined sub-library names shadow external package names of the same name. See section on r*r*}r*(hXIn order to specify an intra-package dependency on an internal library component you can use the unqualified name of the component library component. Note that locally defined sub-library names shadow external package names of the same name. See section on jDNjPNjjthj*ubjM)r *}r *(hX#:ref:`Internal Libraries `hj*jDjEhjPh}r *(UreftypeXrefjRjSXsublibsU refdomainXstdr *h]h]U refexplicith]h]h]jVj ujPMh]r *jX)r*}r*(hXInternal Libraries h}r*(h]h]r*(j]j *Xstd-refr*eh]h]h]uhj *h]r*hXInternal Librariesr*r*}r*(hUhj*ubahjcubaubhX# for examples and more information.r*r*}r*(hX# for examples and more information.jDNjPNjjthj*ubeubjZ)r*}r*(hX**Version Constraints**r*hj)jDjEhj]h}r*(h]h]h]h]h]ujPMjjth]r*j)r*}r *(hj*h}r!*(h]h]h]h]h]uhj*h]r"*hXVersion Constraintsr#*r$*}r%*(hXVersion Constraintshj*ubahjubaubjZ)r&*}r'*(hXVersion constraints use the operators ``==, >=, >, <, <=`` and a version number. Multiple constraints can be combined using ``&&`` or ``||``. If no version constraint is specified, any version is assumed to be acceptable. For example:hj)jDjEhj]h}r(*(h]h]h]h]h]ujPMjjth]r)*(hX&Version constraints use the operators r**r+*}r,*(hX&Version constraints use the operators jDNjPNjjthj&*ubj)r-*}r.*(hX``==, >=, >, <, <=``h}r/*(h]h]h]h]h]uhj&*h]r0*hX==, >=, >, <, <=r1*r2*}r3*(hX==, >=, >, <, <=hj-*ubahjubhXB and a version number. Multiple constraints can be combined using r4*r5*}r6*(hXB and a version number. Multiple constraints can be combined using jDNjPNjjthj&*ubj)r7*}r8*(hX``&&``h}r9*(h]h]h]h]h]uhj&*h]r:*hX&&r;*r<*}r=*(hX&&hj7*ubahjubhX or r>*r?*}r@*(hX or jDNjPNjjthj&*ubj)rA*}rB*(hX``||``h}rC*(h]h]h]h]h]uhj&*h]rD*hX||rE*rF*}rG*(hX||hjA*ubahjubhX^. If no version constraint is specified, any version is assumed to be acceptable. For example:rH*rI*}rJ*(hX^. If no version constraint is specified, any version is assumed to be acceptable. For example:jDNjPNjjthj&*ubeubj)rK*}rL*(hXJlibrary build-depends: base >= 2, foo >= 1.2.3 && < 1.3, barhj)jDjEhjh}rM*(jjh]h]h]h]h]ujPMjjth]rN*hXJlibrary build-depends: base >= 2, foo >= 1.2.3 && < 1.3, barrO*rP*}rQ*(hUhjK*ubaubjZ)rR*}rS*(hXDependencies like ``foo >= 1.2.3 && < 1.3`` turn out to be very common because it is recommended practise for package versions to correspond to API versions (see PVP_).hj)jDjEhj]h}rT*(h]h]h]h]h]ujPMjjth]rU*(hXDependencies like rV*rW*}rX*(hXDependencies like jDNjPNjjthjR*ubj)rY*}rZ*(hX``foo >= 1.2.3 && < 1.3``h}r[*(h]h]h]h]h]uhjR*h]r\*hXfoo >= 1.2.3 && < 1.3r]*r^*}r_*(hXfoo >= 1.2.3 && < 1.3hjY*ubahjubhXw turn out to be very common because it is recommended practise for package versions to correspond to API versions (see r`*ra*}rb*(hXw turn out to be very common because it is recommended practise for package versions to correspond to API versions (see jDNjPNjjthjR*ubj!)rc*}rd*(hXPVP_j$KhjR*hj%h}re*(UnameXPVPrf*j] jh]h]h]h]h]uh]rg*hXPVPrh*ri*}rj*(hjf*hjc*ubaubhX).rk*rl*}rm*(hX).jDNjPNjjthjR*ubeubjZ)rn*}ro*(hXLSince Cabal 1.6, there is a special wildcard syntax to help with such rangesrp*hj)jDjEhj]h}rq*(h]h]h]h]h]ujPMjjth]rr*hXLSince Cabal 1.6, there is a special wildcard syntax to help with such rangesrs*rt*}ru*(hjp*jDNjPNjjthjn*ubaubj)rv*}rw*(hXbuild-depends: foo ==1.2.*hj)jDjEhjh}rx*(jjh]h]h]h]h]ujPMjjth]ry*hXbuild-depends: foo ==1.2.*rz*r{*}r|*(hUhjv*ubaubjZ)r}*}r~*(hXPIt is only syntactic sugar. It is exactly equivalent to ``foo >= 1.2 && < 1.3``.hj)jDjEhj]h}r*(h]h]h]h]h]ujPMjjth]r*(hX8It is only syntactic sugar. It is exactly equivalent to r*r*}r*(hX8It is only syntactic sugar. It is exactly equivalent to jDNjPNjjthj}*ubj)r*}r*(hX``foo >= 1.2 && < 1.3``h}r*(h]h]h]h]h]uhj}*h]r*hXfoo >= 1.2 && < 1.3r*r*}r*(hXfoo >= 1.2 && < 1.3hj*ubahjubhX.r*}r*(hX.jDNjPNjjthj}*ubeubcdocutils.nodes warning r*)r*}r*(hXA potential pitfall of the wildcard syntax is that the constraint ``nats == 1.0.*`` doesn't match the release ``nats-1`` because the version ``1`` is lexicographically less than ``1.0``. This is not an issue with the caret-operator ``^>=`` described below.hj)jDjEhUwarningr*h}r*(h]h]h]h]h]ujPNjjth]r*jZ)r*}r*(hXA potential pitfall of the wildcard syntax is that the constraint ``nats == 1.0.*`` doesn't match the release ``nats-1`` because the version ``1`` is lexicographically less than ``1.0``. This is not an issue with the caret-operator ``^>=`` described below.hj*jDjEhj]h}r*(h]h]h]h]h]ujPM h]r*(hXBA potential pitfall of the wildcard syntax is that the constraint r*r*}r*(hXBA potential pitfall of the wildcard syntax is that the constraint hj*ubj)r*}r*(hX``nats == 1.0.*``h}r*(h]h]h]h]h]uhj*h]r*hX nats == 1.0.*r*r*}r*(hX nats == 1.0.*hj*ubahjubhX doesn’t match the release r*r*}r*(hX doesn't match the release hj*ubj)r*}r*(hX ``nats-1``h}r*(h]h]h]h]h]uhj*h]r*hXnats-1r*r*}r*(hXnats-1hj*ubahjubhX because the version r*r*}r*(hX because the version hj*ubj)r*}r*(hX``1``h}r*(h]h]h]h]h]uhj*h]r*hX1r*}r*(hX1hj*ubahjubhX is lexicographically less than r*r*}r*(hX is lexicographically less than hj*ubj)r*}r*(hX``1.0``h}r*(h]h]h]h]h]uhj*h]r*hX1.0r*r*}r*(hX1.0hj*ubahjubhX/. This is not an issue with the caret-operator r*r*}r*(hX/. This is not an issue with the caret-operator hj*ubj)r*}r*(hX``^>=``h}r*(h]h]h]h]h]uhj*h]r*hX^>=r*r*}r*(hX^>=hj*ubahjubhX described below.r*r*}r*(hX described below.hj*ubeubaubjZ)r*}r*(hXStarting with Cabal 2.0, there's a new version operator to express PVP_-style major upper bounds conveniently, and is inspired by similar syntactic sugar found in other language ecosystems where it's often called the "Caret" operator:hj)jDjEhj]h}r*(h]h]h]h]h]ujPMjjth]r*(hXEStarting with Cabal 2.0, there’s a new version operator to express r*r*}r*(hXCStarting with Cabal 2.0, there's a new version operator to express jDNjPNjjthj*ubj!)r*}r*(hXPVP_j$Khj*hj%h}r*(UnameXPVPr*j] jh]h]h]h]h]uh]r*hXPVPr*r*}r*(hj*hj*ubaubhX-style major upper bounds conveniently, and is inspired by similar syntactic sugar found in other language ecosystems where it’s often called the “Caret” operator:r*r*}r*(hX-style major upper bounds conveniently, and is inspired by similar syntactic sugar found in other language ecosystems where it's often called the "Caret" operator:jDNjPNjjthj*ubeubj)r*}r*(hX-build-depends: foo ^>= 1.2.3.4, bar ^>= 1hj)jDjEhjh}r*(jjh]h]h]h]h]ujPMjjth]r*hX-build-depends: foo ^>= 1.2.3.4, bar ^>= 1r*r*}r*(hUhj*ubaubjZ)r*}r*(hXpThis allows to assert the positive knowledge that this package is *known* to be semantically compatible with the releases ``foo-1.2.3.4`` and ``bar-1`` respectively. The information encoded via such ``^>=``-assertions is used by the cabal solver to infer version constraints describing semantically compatible version ranges according to the PVP_ contract (see below).hj)jDjEhj]h}r*(h]h]h]h]h]ujPMjjth]r*(hXBThis allows to assert the positive knowledge that this package is r*r*}r*(hXBThis allows to assert the positive knowledge that this package is jDNjPNjjthj*ubj)r*}r*(hX*known*h}r*(h]h]h]h]h]uhj*h]r*hXknownr*r*}r*(hXknownhj*ubahjubhX1 to be semantically compatible with the releases r*r*}r*(hX1 to be semantically compatible with the releases jDNjPNjjthj*ubj)r*}r*(hX``foo-1.2.3.4``h}r*(h]h]h]h]h]uhj*h]r*hX foo-1.2.3.4r*r*}r*(hX foo-1.2.3.4hj*ubahjubhX and r*r*}r*(hX and jDNjPNjjthj*ubj)r*}r+(hX ``bar-1``h}r+(h]h]h]h]h]uhj*h]r+hXbar-1r+r+}r+(hXbar-1hj*ubahjubhX0 respectively. The information encoded via such r+r+}r+(hX0 respectively. The information encoded via such jDNjPNjjthj*ubj)r +}r +(hX``^>=``h}r +(h]h]h]h]h]uhj*h]r +hX^>=r +r+}r+(hX^>=hj +ubahjubhX-assertions is used by the cabal solver to infer version constraints describing semantically compatible version ranges according to the r+r+}r+(hX-assertions is used by the cabal solver to infer version constraints describing semantically compatible version ranges according to the jDNjPNjjthj*ubj!)r+}r+(hXPVP_j$Khj*hj%h}r+(UnameXPVPr+j] jh]h]h]h]h]uh]r+hXPVPr+r+}r+(hj+hj+ubaubhX contract (see below).r+r+}r+(hX contract (see below).jDNjPNjjthj*ubeubjZ)r+}r+(hXAnother way to say this is that ``foo < 1.3`` expresses *negative* information, i.e. "``foo-1.3`` or ``foo-1.4.2`` will *not* be compatible"; whereas ``foo ^>= 1.2.3.4`` asserts the *positive* information that "``foo-1.2.3.4`` is *known* to be compatible" and (in the absence of additional information) according to the PVP_ contract we can (positively) infer right away that all versions satisfying ``foo >= 1.2.3.4 && < 1.3`` will be compatible as well.hj)jDjEhj]h}r +(h]h]h]h]h]ujPM"jjth]r!+(hX Another way to say this is that r"+r#+}r$+(hX Another way to say this is that jDNjPNjjthj+ubj)r%+}r&+(hX ``foo < 1.3``h}r'+(h]h]h]h]h]uhj+h]r(+hX foo < 1.3r)+r*+}r++(hX foo < 1.3hj%+ubahjubhX expresses r,+r-+}r.+(hX expresses jDNjPNjjthj+ubj)r/+}r0+(hX *negative*h}r1+(h]h]h]h]h]uhj+h]r2+hXnegativer3+r4+}r5+(hXnegativehj/+ubahjubhX information, i.e. “r6+r7+}r8+(hX information, i.e. "jDNjPNjjthj+ubj)r9+}r:+(hX ``foo-1.3``h}r;+(h]h]h]h]h]uhj+h]r<+hXfoo-1.3r=+r>+}r?+(hXfoo-1.3hj9+ubahjubhX or r@+rA+}rB+(hX or jDNjPNjjthj+ubj)rC+}rD+(hX ``foo-1.4.2``h}rE+(h]h]h]h]h]uhj+h]rF+hX foo-1.4.2rG+rH+}rI+(hX foo-1.4.2hjC+ubahjubhX will rJ+rK+}rL+(hX will jDNjPNjjthj+ubj)rM+}rN+(hX*not*h}rO+(h]h]h]h]h]uhj+h]rP+hXnotrQ+rR+}rS+(hXnothjM+ubahjubhX be compatible”; whereas rT+rU+}rV+(hX be compatible"; whereas jDNjPNjjthj+ubj)rW+}rX+(hX``foo ^>= 1.2.3.4``h}rY+(h]h]h]h]h]uhj+h]rZ+hXfoo ^>= 1.2.3.4r[+r\+}r]+(hXfoo ^>= 1.2.3.4hjW+ubahjubhX asserts the r^+r_+}r`+(hX asserts the jDNjPNjjthj+ubj)ra+}rb+(hX *positive*h}rc+(h]h]h]h]h]uhj+h]rd+hXpositivere+rf+}rg+(hXpositivehja+ubahjubhX information that “rh+ri+}rj+(hX information that "jDNjPNjjthj+ubj)rk+}rl+(hX``foo-1.2.3.4``h}rm+(h]h]h]h]h]uhj+h]rn+hX foo-1.2.3.4ro+rp+}rq+(hX foo-1.2.3.4hjk+ubahjubhX is rr+rs+}rt+(hX is jDNjPNjjthj+ubj)ru+}rv+(hX*known*h}rw+(h]h]h]h]h]uhj+h]rx+hXknownry+rz+}r{+(hXknownhju+ubahjubhXU to be compatible” and (in the absence of additional information) according to the r|+r}+}r~+(hXS to be compatible" and (in the absence of additional information) according to the jDNjPNjjthj+ubj!)r+}r+(hXPVP_j$Khj+hj%h}r+(UnameXPVPr+j] jh]h]h]h]h]uh]r+hXPVPr+r+}r+(hj+hj+ubaubhXL contract we can (positively) infer right away that all versions satisfying r+r+}r+(hXL contract we can (positively) infer right away that all versions satisfying jDNjPNjjthj+ubj)r+}r+(hX``foo >= 1.2.3.4 && < 1.3``h}r+(h]h]h]h]h]uhj+h]r+hXfoo >= 1.2.3.4 && < 1.3r+r+}r+(hXfoo >= 1.2.3.4 && < 1.3hj+ubahjubhX will be compatible as well.r+r+}r+(hX will be compatible as well.jDNjPNjjthj+ubeubj )r+}r+(hX5More generally, the PVP_ contract implies that we can safely relax the lower bound to ``>= 1.2``, because if we know that ``foo-1.2.3.4`` is semantically compatible, then so is ``foo-1.2`` (if it typechecks). But we'd need to perform additional static analysis (i.e. perform typechecking) in order to know if our package in the role of an API consumer will successfully typecheck against the dependency ``foo-1.2``. But since we cannot do this analysis during constraint solving and to keep things simple, we pragmatically use ``foo >= 1.2.3.4`` as the initially inferred approximation for the lower bound resulting from the assertion ``foo ^>= 1.2.3.4``. If further evidence becomes available that e.g. ``foo-1.2`` typechecks, one can simply revise the dependency specification to include the assertion ``foo ^>= 1.2``.hj)jDjEhj h}r+(h]h]h]h]h]ujPNjjth]r+jZ)r+}r+(hX5More generally, the PVP_ contract implies that we can safely relax the lower bound to ``>= 1.2``, because if we know that ``foo-1.2.3.4`` is semantically compatible, then so is ``foo-1.2`` (if it typechecks). But we'd need to perform additional static analysis (i.e. perform typechecking) in order to know if our package in the role of an API consumer will successfully typecheck against the dependency ``foo-1.2``. But since we cannot do this analysis during constraint solving and to keep things simple, we pragmatically use ``foo >= 1.2.3.4`` as the initially inferred approximation for the lower bound resulting from the assertion ``foo ^>= 1.2.3.4``. If further evidence becomes available that e.g. ``foo-1.2`` typechecks, one can simply revise the dependency specification to include the assertion ``foo ^>= 1.2``.hj+jDjEhj]h}r+(h]h]h]h]h]ujPM,h]r+(hXMore generally, the r+r+}r+(hXMore generally, the hj+ubj!)r+}r+(hXPVP_j$Khj+hj%h}r+(UnameXPVPr+j] jh]h]h]h]h]uh]r+hXPVPr+r+}r+(hj+hj+ubaubhX> contract implies that we can safely relax the lower bound to r+r+}r+(hX> contract implies that we can safely relax the lower bound to hj+ubj)r+}r+(hX ``>= 1.2``h}r+(h]h]h]h]h]uhj+h]r+hX>= 1.2r+r+}r+(hX>= 1.2hj+ubahjubhX, because if we know that r+r+}r+(hX, because if we know that hj+ubj)r+}r+(hX``foo-1.2.3.4``h}r+(h]h]h]h]h]uhj+h]r+hX foo-1.2.3.4r+r+}r+(hX foo-1.2.3.4hj+ubahjubhX( is semantically compatible, then so is r+r+}r+(hX( is semantically compatible, then so is hj+ubj)r+}r+(hX ``foo-1.2``h}r+(h]h]h]h]h]uhj+h]r+hXfoo-1.2r+r+}r+(hXfoo-1.2hj+ubahjubhX (if it typechecks). But we’d need to perform additional static analysis (i.e. perform typechecking) in order to know if our package in the role of an API consumer will successfully typecheck against the dependency r+r+}r+(hX (if it typechecks). But we'd need to perform additional static analysis (i.e. perform typechecking) in order to know if our package in the role of an API consumer will successfully typecheck against the dependency hj+ubj)r+}r+(hX ``foo-1.2``h}r+(h]h]h]h]h]uhj+h]r+hXfoo-1.2r+r+}r+(hXfoo-1.2hj+ubahjubhXr. But since we cannot do this analysis during constraint solving and to keep things simple, we pragmatically use r+r+}r+(hXr. But since we cannot do this analysis during constraint solving and to keep things simple, we pragmatically use hj+ubj)r+}r+(hX``foo >= 1.2.3.4``h}r+(h]h]h]h]h]uhj+h]r+hXfoo >= 1.2.3.4r+r+}r+(hXfoo >= 1.2.3.4hj+ubahjubhXZ as the initially inferred approximation for the lower bound resulting from the assertion r+r+}r+(hXZ as the initially inferred approximation for the lower bound resulting from the assertion hj+ubj)r+}r+(hX``foo ^>= 1.2.3.4``h}r+(h]h]h]h]h]uhj+h]r+hXfoo ^>= 1.2.3.4r+r+}r+(hXfoo ^>= 1.2.3.4hj+ubahjubhX2. If further evidence becomes available that e.g. r+r+}r+(hX2. If further evidence becomes available that e.g. hj+ubj)r+}r+(hX ``foo-1.2``h}r+(h]h]h]h]h]uhj+h]r+hXfoo-1.2r+r+}r+(hXfoo-1.2hj+ubahjubhXY typechecks, one can simply revise the dependency specification to include the assertion r+r+}r+(hXY typechecks, one can simply revise the dependency specification to include the assertion hj+ubj)r+}r+(hX``foo ^>= 1.2``h}r+(h]h]h]h]h]uhj+h]r+hX foo ^>= 1.2r+r+}r+(hX foo ^>= 1.2hj+ubahjubhX.r+}r+(hX.hj+ubeubaubjZ)r+}r+(hXLThe subtle but important difference in signaling allows tooling to treat explicitly expressed ``<``-style constraints and inferred (``^>=``-style) upper bounds differently. For instance, :option:`--allow-newer`'s ``^``-modifier allows to relax only ``^>=``-style bounds while leaving explicitly stated ``<``-constraints unaffected.hj)jDjEhj]h}r+(h]h]h]h]h]ujPM;jjth]r+(hX^The subtle but important difference in signaling allows tooling to treat explicitly expressed r+r+}r+(hX^The subtle but important difference in signaling allows tooling to treat explicitly expressed jDNjPNjjthj+ubj)r,}r,(hX``<``h}r,(h]h]h]h]h]uhj+h]r,hX=``h}r ,(h]h]h]h]h]uhj+h]r ,hX^>=r ,r,}r,(hX^>=hj ,ubahjubhX1-style) upper bounds differently. For instance, r,r,}r,(hX1-style) upper bounds differently. For instance, jDNjPNjjthj+ubjM)r,}r,(hX:option:`--allow-newer`hj+jDjEhjPh}r,(UreftypeXoptionjRjSX --allow-newerr,U refdomainXstdr,h]h]U refexplicith]h]h]jVj U std:programr,NujPM;h]r,j)r,}r,(hj,h}r,(h]h]r,(j]j,X std-optionr,eh]h]h]uhj,h]r,hX --allow-newerr ,r!,}r",(hUhj,ubahjubaubhX’s r#,r$,}r%,(hX's jDNjPNjjthj+ubj)r&,}r',(hX``^``h}r(,(h]h]h]h]h]uhj+h]r),hX^r*,}r+,(hX^hj&,ubahjubhX-modifier allows to relax only r,,r-,}r.,(hX-modifier allows to relax only jDNjPNjjthj+ubj)r/,}r0,(hX``^>=``h}r1,(h]h]h]h]h]uhj+h]r2,hX^>=r3,r4,}r5,(hX^>=hj/,ubahjubhX.-style bounds while leaving explicitly stated r6,r7,}r8,(hX.-style bounds while leaving explicitly stated jDNjPNjjthj+ubj)r9,}r:,(hX``<``h}r;,(h]h]h]h]h]uhj+h]r<,hX,(hX= x`` == ``>= x && < x.1``rP,hjJ,jDjEhj h}rQ,(h]h]h]h]h]ujPNjjth]rR,jZ)rS,}rT,(hjP,hjN,jDjEhj]h}rU,(h]h]h]h]h]ujPMDh]rV,(j)rW,}rX,(hX ``^>= x``h}rY,(h]h]h]h]h]uhjS,h]rZ,hX^>= xr[,r\,}r],(hX^>= xhjW,ubahjubhX == r^,r_,}r`,(hX == hjS,ubj)ra,}rb,(hX``>= x && < x.1``h}rc,(h]h]h]h]h]uhjS,h]rd,hX >= x && < x.1re,rf,}rg,(hX >= x && < x.1hja,ubahjubeubaubj )rh,}ri,(hX&``^>= x.y`` == ``>= x.y && < x.(y+1)``rj,hjJ,jDjEhj h}rk,(h]h]h]h]h]ujPNjjth]rl,jZ)rm,}rn,(hjj,hjh,jDjEhj]h}ro,(h]h]h]h]h]ujPMEh]rp,(j)rq,}rr,(hX ``^>= x.y``h}rs,(h]h]h]h]h]uhjm,h]rt,hX^>= x.yru,rv,}rw,(hX^>= x.yhjq,ubahjubhX == rx,ry,}rz,(hX == hjm,ubj)r{,}r|,(hX``>= x.y && < x.(y+1)``h}r},(h]h]h]h]h]uhjm,h]r~,hX>= x.y && < x.(y+1)r,r,}r,(hX>= x.y && < x.(y+1)hj{,ubahjubeubaubj )r,}r,(hX*``^>= x.y.z`` == ``>= x.y.z && < x.(y+1)``r,hjJ,jDjEhj h}r,(h]h]h]h]h]ujPNjjth]r,jZ)r,}r,(hj,hj,jDjEhj]h}r,(h]h]h]h]h]ujPMFh]r,(j)r,}r,(hX ``^>= x.y.z``h}r,(h]h]h]h]h]uhj,h]r,hX ^>= x.y.zr,r,}r,(hX ^>= x.y.zhj,ubahjubhX == r,r,}r,(hX == hj,ubj)r,}r,(hX``>= x.y.z && < x.(y+1)``h}r,(h]h]h]h]h]uhj,h]r,hX>= x.y.z && < x.(y+1)r,r,}r,(hX>= x.y.z && < x.(y+1)hj,ubahjubeubaubj )r,}r,(hX.``^>= x.y.z.u`` == ``>= x.y.z.u && < x.(y+1)``r,hjJ,jDjEhj h}r,(h]h]h]h]h]ujPNjjth]r,jZ)r,}r,(hj,hj,jDjEhj]h}r,(h]h]h]h]h]ujPMGh]r,(j)r,}r,(hX``^>= x.y.z.u``h}r,(h]h]h]h]h]uhj,h]r,hX ^>= x.y.z.ur,r,}r,(hX ^>= x.y.z.uhj,ubahjubhX == r,r,}r,(hX == hj,ubj)r,}r,(hX``>= x.y.z.u && < x.(y+1)``h}r,(h]h]h]h]h]uhj,h]r,hX>= x.y.z.u && < x.(y+1)r,r,}r,(hX>= x.y.z.u && < x.(y+1)hj,ubahjubeubaubj )r,}r,(hXetc. hjJ,jDjEhj h}r,(h]h]h]h]h]ujPNjjth]r,jZ)r,}r,(hXetc.r,hj,jDjEhj]h}r,(h]h]h]h]h]ujPMHh]r,hXetc.r,r,}r,(hj,hj,ubaubaubeubj )r,}r,(hXOne might expected the desugaring to truncate all version components below (and including) the patch-level, i.e. ``^>= x.y.z.u`` == ``>= x.y.z && < x.(y+1)``, as the major and minor version components alone are supposed to uniquely identify the API according to the PVP_. However, by designing ``^>=`` to be closer to the ``>=`` operator, we avoid the potentially confusing effect of ``^>=`` being more liberal than ``>=`` in the presence of patch-level versions.hj)jDjEhj h}r,(h]h]h]h]h]ujPNjjth]r,jZ)r,}r,(hXOne might expected the desugaring to truncate all version components below (and including) the patch-level, i.e. ``^>= x.y.z.u`` == ``>= x.y.z && < x.(y+1)``, as the major and minor version components alone are supposed to uniquely identify the API according to the PVP_. However, by designing ``^>=`` to be closer to the ``>=`` operator, we avoid the potentially confusing effect of ``^>=`` being more liberal than ``>=`` in the presence of patch-level versions.hj,jDjEhj]h}r,(h]h]h]h]h]ujPMLh]r,(hXqOne might expected the desugaring to truncate all version components below (and including) the patch-level, i.e. r,r,}r,(hXqOne might expected the desugaring to truncate all version components below (and including) the patch-level, i.e. hj,ubj)r,}r,(hX``^>= x.y.z.u``h}r,(h]h]h]h]h]uhj,h]r,hX ^>= x.y.z.ur,r,}r,(hX ^>= x.y.z.uhj,ubahjubhX == r,r,}r,(hX == hj,ubj)r,}r,(hX``>= x.y.z && < x.(y+1)``h}r,(h]h]h]h]h]uhj,h]r,hX>= x.y.z && < x.(y+1)r,r,}r,(hX>= x.y.z && < x.(y+1)hj,ubahjubhXm, as the major and minor version components alone are supposed to uniquely identify the API according to the r,r,}r,(hXm, as the major and minor version components alone are supposed to uniquely identify the API according to the hj,ubj!)r,}r,(hXPVP_j$Khj,hj%h}r,(UnameXPVPr,j] jh]h]h]h]h]uh]r,hXPVPr,r,}r,(hj,hj,ubaubhX. However, by designing r,r,}r,(hX. However, by designing hj,ubj)r,}r,(hX``^>=``h}r,(h]h]h]h]h]uhj,h]r,hX^>=r,r,}r,(hX^>=hj,ubahjubhX to be closer to the r,r,}r,(hX to be closer to the hj,ubj)r,}r,(hX``>=``h}r,(h]h]h]h]h]uhj,h]r,hX>=r,r,}r,(hX>=hj,ubahjubhX8 operator, we avoid the potentially confusing effect of r,r,}r,(hX8 operator, we avoid the potentially confusing effect of hj,ubj)r-}r-(hX``^>=``h}r-(h]h]h]h]h]uhj,h]r-hX^>=r-r-}r-(hX^>=hj-ubahjubhX being more liberal than r-r-}r -(hX being more liberal than hj,ubj)r -}r -(hX``>=``h}r -(h]h]h]h]h]uhj,h]r -hX>=r-r-}r-(hX>=hj -ubahjubhX) in the presence of patch-level versions.r-r-}r-(hX) in the presence of patch-level versions.hj,ubeubaubjZ)r-}r-(hX<Consequently, the example declaration above is equivalent tor-hj)jDjEhj]h}r-(h]h]h]h]h]ujPMUjjth]r-hX<Consequently, the example declaration above is equivalent tor-r-}r-(hj-jDNjPNjjthj-ubaubj)r-}r-(hX=build-depends: foo >= 1.2.3.4 && < 1.3, bar >= 1 && < 1.1hj)jDjEhjh}r-(jjh]h]h]h]h]ujPMYjjth]r-hX=build-depends: foo >= 1.2.3.4 && < 1.3, bar >= 1 && < 1.1r -r!-}r"-(hUhj-ubaubj )r#-}r$-(hX=Prior to Cabal 1.8, ``build-depends`` specified in each section were global to all sections. This was unintentional, but some packages were written to depend on it, so if you need your :pkg-field:`build-depends` to be local to each section, you must specify at least ``Cabal-Version: >= 1.8`` in your ``.cabal`` file.hj)jDjEhj h}r%-(h]h]h]h]h]ujPNjjth]r&-jZ)r'-}r(-(hX=Prior to Cabal 1.8, ``build-depends`` specified in each section were global to all sections. This was unintentional, but some packages were written to depend on it, so if you need your :pkg-field:`build-depends` to be local to each section, you must specify at least ``Cabal-Version: >= 1.8`` in your ``.cabal`` file.hj#-jDjEhj]h}r)-(h]h]h]h]h]ujPM_h]r*-(hXPrior to Cabal 1.8, r+-r,-}r--(hXPrior to Cabal 1.8, hj'-ubj)r.-}r/-(hX``build-depends``h}r0-(h]h]h]h]h]uhj'-h]r1-hX build-dependsr2-r3-}r4-(hX build-dependshj.-ubahjubhX specified in each section were global to all sections. This was unintentional, but some packages were written to depend on it, so if you need your r5-r6-}r7-(hX specified in each section were global to all sections. This was unintentional, but some packages were written to depend on it, so if you need your hj'-ubjM)r8-}r9-(hX:pkg-field:`build-depends`hj'-jDjEhjPh}r:-(UreftypeX pkg-fieldjRjSX build-dependsr;-U refdomainXcabalr<-h]h]U refexplicith]h]h]jVj jlNujPM_h]r=-j)r>-}r?-(hj;-h}r@-(h]h]rA-(j]j<-Xcabal-pkg-fieldrB-eh]h]h]uhj8-h]rC-hX build-dependsrD-rE-}rF-(hUhj>-ubahjubaubhX8 to be local to each section, you must specify at least rG-rH-}rI-(hX8 to be local to each section, you must specify at least hj'-ubj)rJ-}rK-(hX``Cabal-Version: >= 1.8``h}rL-(h]h]h]h]h]uhj'-h]rM-hXCabal-Version: >= 1.8rN-rO-}rP-(hXCabal-Version: >= 1.8hjJ-ubahjubhX in your rQ-rR-}rS-(hX in your hj'-ubj)rT-}rU-(hX ``.cabal``h}rV-(h]h]h]h]h]uhj'-h]rW-hX.cabalrX-rY-}rZ-(hX.cabalhjT-ubahjubhX file.r[-r\-}r]-(hX file.hj'-ubeubaubj )r^-}r_-(hXCabal 1.20 experimentally supported module thinning and renaming in ``build-depends``; however, this support has since been removed and should not be used.hj)jDjEhj h}r`-(h]h]h]h]h]ujPNjjth]ra-jZ)rb-}rc-(hXCabal 1.20 experimentally supported module thinning and renaming in ``build-depends``; however, this support has since been removed and should not be used.hj^-jDjEhj]h}rd-(h]h]h]h]h]ujPMgh]re-(hXDCabal 1.20 experimentally supported module thinning and renaming in rf-rg-}rh-(hXDCabal 1.20 experimentally supported module thinning and renaming in hjb-ubj)ri-}rj-(hX``build-depends``h}rk-(h]h]h]h]h]uhjb-h]rl-hX build-dependsrm-rn-}ro-(hX build-dependshji-ubahjubhXF; however, this support has since been removed and should not be used.rp-rq-}rr-(hXF; however, this support has since been removed and should not be used.hjb-ubeubaubjZ)rs-}rt-(hXgStarting with Cabal 3.0, a set notation for the ``==`` and ``^>=`` operator is available. For instance,hj)jDjEhj]h}ru-(h]h]h]h]h]ujPMkjjth]rv-(hX0Starting with Cabal 3.0, a set notation for the rw-rx-}ry-(hX0Starting with Cabal 3.0, a set notation for the jDNjPNjjthjs-ubj)rz-}r{-(hX``==``h}r|-(h]h]h]h]h]uhjs-h]r}-hX==r~-r-}r-(hX==hjz-ubahjubhX and r-r-}r-(hX and jDNjPNjjthjs-ubj)r-}r-(hX``^>=``h}r-(h]h]h]h]h]uhjs-h]r-hX^>=r-r-}r-(hX^>=hj-ubahjubhX% operator is available. For instance,r-r-}r-(hX% operator is available. For instance,jDNjPNjjthjs-ubeubj)r-}r-(hXtested-with: GHC == 8.6.3, GHC == 8.4.4, GHC == 8.2.2, GHC == 8.0.2, GHC == 7.10.3, GHC == 7.8.4, GHC == 7.6.3, GHC == 7.4.2 build-depends: network ^>= 2.6.3.6 || ^>= 2.7.0.2 || ^>= 2.8.0.0 || ^>= 3.0.1.0hj)jDjEhjh}r-(jjh]h]h]h]h]ujPMpjjth]r-hXtested-with: GHC == 8.6.3, GHC == 8.4.4, GHC == 8.2.2, GHC == 8.0.2, GHC == 7.10.3, GHC == 7.8.4, GHC == 7.6.3, GHC == 7.4.2 build-depends: network ^>= 2.6.3.6 || ^>= 2.7.0.2 || ^>= 2.8.0.0 || ^>= 3.0.1.0r-r-}r-(hUhj-ubaubjZ)r-}r-(hX9can be then written in a more convenient and concise formr-hj)jDjEhj]h}r-(h]h]h]h]h]ujPMujjth]r-hX9can be then written in a more convenient and concise formr-r-}r-(hj-jDNjPNjjthj-ubaubj)r-}r-(hXtested-with: GHC == { 8.6.3, 8.4.4, 8.2.2, 8.0.2, 7.10.3, 7.8.4, 7.6.3, 7.4.2 } build-depends: network ^>= { 2.6.3.6, 2.7.0.2, 2.8.0.0, 3.0.1.0 }hj)jDjEhjh}r-(jjh]h]h]h]h]ujPMyjjth]r-hXtested-with: GHC == { 8.6.3, 8.4.4, 8.2.2, 8.0.2, 7.10.3, 7.8.4, 7.6.3, 7.4.2 } build-depends: network ^>= { 2.6.3.6, 2.7.0.2, 2.8.0.0, 3.0.1.0 }r-r-}r-(hUhj-ubaubeubeubj )r-}r-(hUhjl)jDNhjnh}r-(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r-}r-(hUhjl)jDNhj h}r-(j j Xcabalh]h]h]h]h]j X pkg-fieldr-j j-ujPNjjth]r-(j )r-}r-(hXother-modules: identifier listhj-jDjEhj h}r-(h]r-jah]h]h]h]j ujPMjjth]r-(j )r-}r-(hUhj-jDjEhjnh}r-(h]h]h]h]h]Uentries]r-(j! X"other-modules; package.cabal fieldjUNtr-aujPMjjth]ubj# )r-}r-(hjhj-jDjEhj& h}r-(jjh]h]h]h]h]ujPMjjth]r-hX other-modulesr-r-}r-(hUjDNjPNjjthj-ubaubj, )r-}r-(hj/ hj-jDjEhj0 h}r-(jjh]h]h]h]h]ujPMjjth]r-hX: r-r-}r-(hUjDNjPNjjthj-ubaubj6 )r-}r-(hXidentifier listhj-jDjEhj9 h}r-(jjh]h]h]h]h]ujPMjjth]r-hXidentifier listr-r-}r-(hUjDNjPNjjthj-ubaubeubjh)r-}r-(hUhj-jDjEhjA h}r-(h]h]h]h]h]ujPMjjth]r-(jZ)r-}r-(hXA list of modules used by the component but not exposed to users. For a library component, these would be hidden modules of the library. For an executable, these would be auxiliary modules to be linked with the file named in the ``main-is`` field.hj-jDjEhj]h}r-(h]h]h]h]h]ujPMjjth]r-(hXA list of modules used by the component but not exposed to users. For a library component, these would be hidden modules of the library. For an executable, these would be auxiliary modules to be linked with the file named in the r-r-}r-(hXA list of modules used by the component but not exposed to users. For a library component, these would be hidden modules of the library. For an executable, these would be auxiliary modules to be linked with the file named in the jDNjPNjjthj-ubj)r-}r-(hX ``main-is``h}r-(h]h]h]h]h]uhj-h]r-hXmain-isr-r-}r-(hXmain-ishj-ubahjubhX field.r-r-}r-(hX field.jDNjPNjjthj-ubeubj )r-}r-(hXEvery module in the package *must* be listed in one of :pkg-field:`other-modules`, :pkg-field:`library:exposed-modules` or :pkg-field:`executable:main-is` fields.hj-jDjEhj h}r-(h]h]h]h]h]ujPNjjth]r-jZ)r-}r-(hXEvery module in the package *must* be listed in one of :pkg-field:`other-modules`, :pkg-field:`library:exposed-modules` or :pkg-field:`executable:main-is` fields.hj-jDjEhj]h}r-(h]h]h]h]h]ujPMh]r-(hXEvery module in the package r-r-}r-(hXEvery module in the package hj-ubj)r-}r-(hX*must*h}r-(h]h]h]h]h]uhj-h]r-hXmustr-r-}r-(hXmusthj-ubahjubhX be listed in one of r-r-}r-(hX be listed in one of hj-ubjM)r-}r-(hX:pkg-field:`other-modules`hj-jDjEhjPh}r-(UreftypeX pkg-fieldjRjSX other-modulesr-U refdomainXcabalr-h]h]U refexplicith]h]h]jVj jlNujPMh]r-j)r-}r-(hj-h}r-(h]h]r-(j]j-Xcabal-pkg-fieldr-eh]h]h]uhj-h]r.hX other-modulesr.r.}r.(hUhj-ubahjubaubhX, r.r.}r.(hX, hj-ubjM)r.}r.(hX$:pkg-field:`library:exposed-modules`hj-jDjEhjPh}r .(UreftypeX pkg-fieldjRjSXexposed-modulesU refdomainXcabalr .h]h]U refexplicith]h]h]jVj jlXlibraryujPMh]r .j)r .}r .(hXlibrary:exposed-modulesh}r.(h]h]r.(j]j .Xcabal-pkg-fieldr.eh]h]h]uhj.h]r.hXlibrary:exposed-modulesr.r.}r.(hUhj .ubahjubaubhX or r.r.}r.(hX or hj-ubjM)r.}r.(hX:pkg-field:`executable:main-is`hj-jDjEhjPh}r.(UreftypeX pkg-fieldjRjSXmain-isU refdomainXcabalr.h]h]U refexplicith]h]h]jVj jlX executableujPMh]r.j)r.}r.(hXexecutable:main-ish}r.(h]h]r .(j]j.Xcabal-pkg-fieldr!.eh]h]h]uhj.h]r".hXexecutable:main-isr#.r$.}r%.(hUhj.ubahjubaubhX fields.r&.r'.}r(.(hX fields.hj-ubeubaubeubeubj )r).}r*.(hUhjl)jDjEhjnh}r+.(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r,.}r-.(hUhjl)jDjEhj h}r..(j j Xcabalh]h]h]h]h]j X pkg-fieldr/.j j/.ujPNjjth]r0.(j )r1.}r2.(hXhs-source-dirs: directory listhj,.jDjEhj h}r3.(h]r4.jah]h]h]h]j ujPMjjth]r5.(j )r6.}r7.(hUhj1.jDjEhjnh}r8.(h]h]h]h]h]Uentries]r9.(j! X#hs-source-dirs; package.cabal fieldjUNtr:.aujPMjjth]ubj# )r;.}r<.(hjhj1.jDjEhj& h}r=.(jjh]h]h]h]h]ujPMjjth]r>.hXhs-source-dirsr?.r@.}rA.(hUjDNjPNjjthj;.ubaubj, )rB.}rC.(hj/ hj1.jDjEhj0 h}rD.(jjh]h]h]h]h]ujPMjjth]rE.hX: rF.rG.}rH.(hUjDNjPNjjthjB.ubaubj6 )rI.}rJ.(hXdirectory listhj1.jDjEhj9 h}rK.(jjh]h]h]h]h]ujPMjjth]rL.hXdirectory listrM.rN.}rO.(hUjDNjPNjjthjI.ubaubeubjh)rP.}rQ.(hUhj,.jDjEhjA h}rR.(h]h]h]h]h]ujPMjjth]rS.(j)rT.}rU.(hUhjP.jDjEhjh}rV.(h]h]h]h]h]ujPNjjth]rW.j)rX.}rY.(hUh}rZ.(h]h]h]h]h]uhjT.h]r[.(j )r\.}r].(hX Default valuehjX.jDjEhj h}r^.(h]h]h]h]h]ujPKh]r_.hX Default valuer`.ra.}rb.(hUhj\.ubaubj)rc.}rd.(hUh}re.(h]h]h]h]h]uhjX.h]rf.jZ)rg.}rh.(hX.h}ri.(h]h]h]h]h]uhjc.h]rj.j)rk.}rl.(hX``.``hjg.jDjEhjh}rm.(h]h]h]h]h]ujPNjjth]rn.hX.ro.}rp.(hX.jDNjPNjjthjk.ubaubahj]ubahj-ubehj.ubaubjZ)rq.}rr.(hX*Root directories for the module hierarchy.rs.hjP.jDjEhj]h}rt.(h]h]h]h]h]ujPMjjth]ru.hX*Root directories for the module hierarchy.rv.rw.}rx.(hjs.jDNjPNjjthjq.ubaubjZ)ry.}rz.(hXRFor backwards compatibility, the old variant ``hs-source-dir`` is also recognized.hjP.jDjEhj]h}r{.(h]h]h]h]h]ujPMjjth]r|.(hX-For backwards compatibility, the old variant r}.r~.}r.(hX-For backwards compatibility, the old variant jDNjPNjjthjy.ubj)r.}r.(hX``hs-source-dir``h}r.(h]h]h]h]h]uhjy.h]r.hX hs-source-dirr.r.}r.(hX hs-source-dirhj.ubahjubhX is also recognized.r.r.}r.(hX is also recognized.jDNjPNjjthjy.ubeubeubeubj )r.}r.(hUhjl)jDjEhjnh}r.(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r.}r.(hUhjl)jDjEhj h}r.(j j Xcabalh]h]h]h]h]j X pkg-fieldr.j j.ujPNjjth]r.(j )r.}r.(hX#default-extensions: identifier listhj.jDjEhj h}r.(h]r.jah]h]h]h]j ujPMjjth]r.(j )r.}r.(hUhj.jDjEhjnh}r.(h]h]h]h]h]Uentries]r.(j! X'default-extensions; package.cabal fieldjUNtr.aujPMjjth]ubj# )r.}r.(hjhj.jDjEhj& h}r.(jjh]h]h]h]h]ujPMjjth]r.hXdefault-extensionsr.r.}r.(hUjDNjPNjjthj.ubaubj, )r.}r.(hj/ hj.jDjEhj0 h}r.(jjh]h]h]h]h]ujPMjjth]r.hX: r.r.}r.(hUjDNjPNjjthj.ubaubj6 )r.}r.(hXidentifier listhj.jDjEhj9 h}r.(jjh]h]h]h]h]ujPMjjth]r.hXidentifier listr.r.}r.(hUjDNjPNjjthj.ubaubeubjh)r.}r.(hUhj.jDjEhjA h}r.(h]h]h]h]h]ujPMjjth]r.jZ)r.}r.(hXsA list of Haskell extensions used by every module. These determine corresponding compiler options enabled for all files. Extension names are the constructors of the `Extension <../release/cabal-latest/doc/API/Cabal/Language-Haskell-Extension.html#t:Extension>`__ type. For example, ``CPP`` specifies that Haskell source files are to be preprocessed with a C preprocessor.hj.jDjEhj]h}r.(h]h]h]h]h]ujPMjjth]r.(hXA list of Haskell extensions used by every module. These determine corresponding compiler options enabled for all files. Extension names are the constructors of the r.r.}r.(hXA list of Haskell extensions used by every module. These determine corresponding compiler options enabled for all files. Extension names are the constructors of the jDNjPNjjthj.ubj!)r.}r.(hXa`Extension <../release/cabal-latest/doc/API/Cabal/Language-Haskell-Extension.html#t:Extension>`__h}r.(UnameX Extensionj] XQ../release/cabal-latest/doc/API/Cabal/Language-Haskell-Extension.html#t:Extensionh]h]h]h]h]uhj.h]r.hX Extensionr.r.}r.(hX Extensionhj.ubahj%ubhX type. For example, r.r.}r.(hX type. For example, jDNjPNjjthj.ubj)r.}r.(hX``CPP``h}r.(h]h]h]h]h]uhj.h]r.hXCPPr.r.}r.(hXCPPhj.ubahjubhXR specifies that Haskell source files are to be preprocessed with a C preprocessor.r.r.}r.(hXR specifies that Haskell source files are to be preprocessed with a C preprocessor.jDNjPNjjthj.ubeubaubeubj )r.}r.(hUhjl)jDjEhjnh}r.(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r.}r.(hUhjl)jDjEhj h}r.(j j Xcabalh]h]h]h]h]j X pkg-fieldr.j j.ujPNjjth]r.(j )r.}r.(hX!other-extensions: identifier listhj.jDjEhj h}r.(h]r.jah]h]h]h]j ujPMjjth]r.(j )r.}r.(hUhj.jDjEhjnh}r.(h]h]h]h]h]Uentries]r.(j! X%other-extensions; package.cabal fieldjUNtr.aujPMjjth]ubj# )r.}r.(hjhj.jDjEhj& h}r.(jjh]h]h]h]h]ujPMjjth]r.hXother-extensionsr.r.}r.(hUjDNjPNjjthj.ubaubj, )r.}r.(hj/ hj.jDjEhj0 h}r.(jjh]h]h]h]h]ujPMjjth]r.hX: r.r.}r.(hUjDNjPNjjthj.ubaubj6 )r.}r.(hXidentifier listhj.jDjEhj9 h}r.(jjh]h]h]h]h]ujPMjjth]r.hXidentifier listr.r.}r.(hUjDNjPNjjthj.ubaubeubjh)r.}r.(hUhj.jDjEhjA h}r.(h]h]h]h]h]ujPMjjth]r.(jZ)r.}r.(hXA list of Haskell extensions used by some (but not necessarily all) modules. From GHC version 6.6 onward, these may be specified by placing a ``LANGUAGE`` pragma in the source files affected e.g.hj.jDjEhj]h}r.(h]h]h]h]h]ujPMjjth]r.(hXA list of Haskell extensions used by some (but not necessarily all) modules. From GHC version 6.6 onward, these may be specified by placing a r.r/}r/(hXA list of Haskell extensions used by some (but not necessarily all) modules. From GHC version 6.6 onward, these may be specified by placing a jDNjPNjjthj.ubj)r/}r/(hX ``LANGUAGE``h}r/(h]h]h]h]h]uhj.h]r/hXLANGUAGEr/r/}r/(hXLANGUAGEhj/ubahjubhX) pragma in the source files affected e.g.r /r /}r /(hX) pragma in the source files affected e.g.jDNjPNjjthj.ubeubj)r /}r /(hX+{-# LANGUAGE CPP, MultiParamTypeClasses #-}hj.jDjEhjh}r/(jjXhaskelljjh]h]h]j}h]h]ujPMjjth]r/hX+{-# LANGUAGE CPP, MultiParamTypeClasses #-}r/r/}r/(hUhj /ubaubjZ)r/}r/(hXIn Cabal-1.24 the dependency solver will use this and :pkg-field:`default-extensions` information. Cabal prior to 1.24 will abort compilation if the current compiler doesn't provide the extensions.hj.jDjEhj]h}r/(h]h]h]h]h]ujPMjjth]r/(hX6In Cabal-1.24 the dependency solver will use this and r/r/}r/(hX6In Cabal-1.24 the dependency solver will use this and jDNjPNjjthj/ubjM)r/}r/(hX:pkg-field:`default-extensions`hj/jDjEhjPh}r/(UreftypeX pkg-fieldjRjSXdefault-extensionsr/U refdomainXcabalr/h]h]U refexplicith]h]h]jVj jlNujPMh]r/j)r /}r!/(hj/h}r"/(h]h]r#/(j]j/Xcabal-pkg-fieldr$/eh]h]h]uhj/h]r%/hXdefault-extensionsr&/r'/}r(/(hUhj /ubahjubaubhXr information. Cabal prior to 1.24 will abort compilation if the current compiler doesn’t provide the extensions.r)/r*/}r+/(hXp information. Cabal prior to 1.24 will abort compilation if the current compiler doesn't provide the extensions.jDNjPNjjthj/ubeubjZ)r,/}r-/(hXIf you use some extensions conditionally, using CPP or conditional module lists, it is good to replicate the condition in :pkg-field:`other-extensions` declarations:hj.jDjEhj]h}r./(h]h]h]h]h]ujPMjjth]r//(hXzIf you use some extensions conditionally, using CPP or conditional module lists, it is good to replicate the condition in r0/r1/}r2/(hXzIf you use some extensions conditionally, using CPP or conditional module lists, it is good to replicate the condition in jDNjPNjjthj,/ubjM)r3/}r4/(hX:pkg-field:`other-extensions`hj,/jDjEhjPh}r5/(UreftypeX pkg-fieldjRjSXother-extensionsr6/U refdomainXcabalr7/h]h]U refexplicith]h]h]jVj jlNujPMh]r8/j)r9/}r:/(hj6/h}r;/(h]h]r/hXother-extensionsr?/r@/}rA/(hUhj9/ubahjubaubhX declarations:rB/rC/}rD/(hX declarations:jDNjPNjjthj,/ubeubj)rE/}rF/(hXGother-extensions: CPP if impl(ghc >= 7.5) other-extensions: PolyKindshj.jDjEhjh}rG/(jjh]h]h]h]h]ujPMjjth]rH/hXGother-extensions: CPP if impl(ghc >= 7.5) other-extensions: PolyKindsrI/rJ/}rK/(hUhjE/ubaubjZ)rL/}rM/(hXYou could also omit the conditionally used extensions, as they are for information only, but it is recommended to replicate them in :pkg-field:`other-extensions` declarations.hj.jDjEhj]h}rN/(h]h]h]h]h]ujPMjjth]rO/(hXYou could also omit the conditionally used extensions, as they are for information only, but it is recommended to replicate them in rP/rQ/}rR/(hXYou could also omit the conditionally used extensions, as they are for information only, but it is recommended to replicate them in jDNjPNjjthjL/ubjM)rS/}rT/(hX:pkg-field:`other-extensions`hjL/jDjEhjPh}rU/(UreftypeX pkg-fieldjRjSXother-extensionsrV/U refdomainXcabalrW/h]h]U refexplicith]h]h]jVj jlNujPMh]rX/j)rY/}rZ/(hjV/h}r[/(h]h]r\/(j]jW/Xcabal-pkg-fieldr]/eh]h]h]uhjS/h]r^/hXother-extensionsr_/r`/}ra/(hUhjY/ubahjubaubhX declarations.rb/rc/}rd/(hX declarations.jDNjPNjjthjL/ubeubeubeubj )re/}rf/(hUhjl)jDjEhjnh}rg/(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rh/}ri/(hUhjl)jDjEhj h}rj/(j j Xcabalh]h]h]h]h]j X pkg-fieldrk/j jk/ujPNjjth]rl/(j )rm/}rn/(hXextensions: identifier listhjh/jDjEhj h}ro/(h]rp/jah]h]h]h]j ujPNjjth]rq/(j )rr/}rs/(hUhjm/jDjEhjnh}rt/(h]h]h]h]h]Uentries]ru/(j! Xextensions; package.cabal fieldjUNtrv/aujPNjjth]ubj# )rw/}rx/(hjhjm/jDjEhj& h}ry/(jjh]h]h]h]h]ujPNjjth]rz/hX extensionsr{/r|/}r}/(hUjDNjPNjjthjw/ubaubj, )r~/}r/(hj/ hjm/jDjEhj0 h}r/(jjh]h]h]h]h]ujPNjjth]r/hX: r/r/}r/(hUjDNjPNjjthj~/ubaubj6 )r/}r/(hXidentifier listhjm/jDjEhj9 h}r/(jjh]h]h]h]h]ujPNjjth]r/hXidentifier listr/r/}r/(hUjDNjPNjjthj/ubaubeubjh)r/}r/(hUhjh/jDjEhjA h}r/(h]h]h]h]h]ujPNjjth]r/(j)r/}r/(hUhj/jDjEhjh}r/(h]h]h]h]h]ujPNjjth]r/(j)r/}r/(hUhj/jDjEhj.h}r/(h]h]h]h]h]ujPNjjth]r/(j )r/}r/(hURemovedr/hj/jDjEhj h}r/(h]h]h]h]h]ujPKh]r/hXRemovedr/r/}r/(hUhj/ubaubj)r/}r/(hU Cabal 3.0r/h}r/(h]h]h]h]h]uhj/h]r/jZ)r/}r/(hj/h}r/(h]h]h]h]h]uhj/h]r/hX Cabal 3.0r/r/}r/(hUhj/ubahj]ubahj-ubeubj)r/}r/(hUhj/jDjEhj.h}r/(h]h]h]h]h]ujPNjjth]r/(j )r/}r/(hU Deprecatedr/hj/jDjEhj h}r/(h]h]h]h]h]ujPKh]r/hX Deprecatedr/r/}r/(hUhj/ubaubj)r/}r/(hU Cabal 1.12r/h}r/(h]h]h]h]h]uhj/h]r/jZ)r/}r/(hj/h}r/(h]h]h]h]h]uhj/h]r/hX Cabal 1.12r/r/}r/(hUhj/ubahj]ubahj-ubeubeubjZ)r/}r/(hX7Deprecated in favor of :pkg-field:`default-extensions`.hj/jDjEhj]h}r/(h]h]h]h]h]ujPMjjth]r/(hXDeprecated in favor of r/r/}r/(hXDeprecated in favor of jDNjPNjjthj/ubjM)r/}r/(hX:pkg-field:`default-extensions`hj/jDjEhjPh}r/(UreftypeX pkg-fieldjRjSXdefault-extensionsr/U refdomainXcabalr/h]h]U refexplicith]h]h]jVj jlNujPMh]r/j)r/}r/(hj/h}r/(h]h]r/(j]j/Xcabal-pkg-fieldr/eh]h]h]uhj/h]r/hXdefault-extensionsr/r/}r/(hUhj/ubahjubaubhX.r/}r/(hX.jDNjPNjjthj/ubeubeubeubj )r/}r/(hUhjl)jDNhjnh}r/(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r/}r/(hUhjl)jDNhj h}r/(j j Xcabalh]h]h]h]h]j X pkg-fieldr/j j/ujPNjjth]r/(j )r/}r/(hX+build-tool-depends: package:executable listhj/jDjEhj h}r/(h]r/jah]h]h]h]j ujPNjjth]r/(j )r/}r/(hUhj/jDjEhjnh}r/(h]h]h]h]h]Uentries]r/(j! X'build-tool-depends; package.cabal fieldjUNtr/aujPNjjth]ubj# )r/}r/(hjhj/jDjEhj& h}r/(jjh]h]h]h]h]ujPNjjth]r/hXbuild-tool-dependsr/r/}r/(hUjDNjPNjjthj/ubaubj, )r/}r/(hj/ hj/jDjEhj0 h}r/(jjh]h]h]h]h]ujPNjjth]r/hX: r/r/}r/(hUjDNjPNjjthj/ubaubj6 )r/}r/(hXpackage:executable listhj/jDjEhj9 h}r/(jjh]h]h]h]h]ujPNjjth]r/hXpackage:executable listr0r0}r0(hUjDNjPNjjthj/ubaubeubjh)r0}r0(hUhj/jDjEhjA h}r0(h]h]h]h]h]ujPNjjth]r0(j)r0}r0(hUhj0jDNhjh}r 0(h]h]h]h]h]ujPNjjth]r 0j)r 0}r 0(hUhj0jDNhj.h}r 0(h]h]h]h]h]ujPNjjth]r0(j )r0}r0(hj+hj 0jDjEhj h}r0(h]h]h]h]h]ujPKh]r0hXSincer0r0}r0(hUhj0ubaubj)r0}r0(hU Cabal 2.0r0h}r0(h]h]h]h]h]uhj 0h]r0jZ)r0}r0(hj0h}r0(h]h]h]h]h]uhj0h]r0hX Cabal 2.0r0r 0}r!0(hUhj0ubahj]ubahj-ubeubaubjZ)r"0}r#0(hXA list of Haskell executables needed to build this component. Executables are provided during the whole duration of the component, so this field can be used for executables needed during :pkg-section:`test-suite` as well.hj0jDjEhj]h}r$0(h]h]h]h]h]ujPMjjth]r%0(hXA list of Haskell executables needed to build this component. Executables are provided during the whole duration of the component, so this field can be used for executables needed during r&0r'0}r(0(hXA list of Haskell executables needed to build this component. Executables are provided during the whole duration of the component, so this field can be used for executables needed during jDNjPNjjthj"0ubjM)r)0}r*0(hX:pkg-section:`test-suite`hj"0jDjEhjPh}r+0(UreftypeX pkg-sectionjRjSX test-suiter,0U refdomainXcabalr-0h]h]U refexplicith]h]h]jVj ujPMh]r.0j)r/0}r00(hj,0h}r10(h]h]r20(j]j-0Xcabal-pkg-sectionr30eh]h]h]uhj)0h]r40hX test-suiter50r60}r70(hUhj/0ubahjubaubhX as well.r80r90}r:0(hX as well.jDNjPNjjthj"0ubeubjZ)r;0}r<0(hXEach is specified by the package containing the executable and the name of the executable itself, separated by a colon, and optionally followed by a version bound.r=0hj0jDjEhj]h}r>0(h]h]h]h]h]ujPMjjth]r?0hXEach is specified by the package containing the executable and the name of the executable itself, separated by a colon, and optionally followed by a version bound.r@0rA0}rB0(hj=0jDNjPNjjthj;0ubaubjZ)rC0}rD0(hXAll executables defined in the given Cabal file are termed as *internal* dependencies as opposed to the rest which are *external* dependencies.hj0jDjEhj]h}rE0(h]h]h]h]h]ujPMjjth]rF0(hX>All executables defined in the given Cabal file are termed as rG0rH0}rI0(hX>All executables defined in the given Cabal file are termed as jDNjPNjjthjC0ubj)rJ0}rK0(hX *internal*h}rL0(h]h]h]h]h]uhjC0h]rM0hXinternalrN0rO0}rP0(hXinternalhjJ0ubahjubhX/ dependencies as opposed to the rest which are rQ0rR0}rS0(hX/ dependencies as opposed to the rest which are jDNjPNjjthjC0ubj)rT0}rU0(hX *external*h}rV0(h]h]h]h]h]uhjC0h]rW0hXexternalrX0rY0}rZ0(hXexternalhjT0ubahjubhX dependencies.r[0r\0}r]0(hX dependencies.jDNjPNjjthjC0ubeubjZ)r^0}r_0(hX'Each of the two is handled differently:r`0hj0jDjEhj]h}ra0(h]h]h]h]h]ujPMjjth]rb0hX'Each of the two is handled differently:rc0rd0}re0(hj`0jDNjPNjjthj^0ubaubcdocutils.nodes enumerated_list rf0)rg0}rh0(hUhj0jDjEhUenumerated_listri0h}rj0(Usuffixrk0U.h]h]h]Uprefixrl0Uh]h]Uenumtyperm0Uarabicrn0ujPMjjth]ro0(j )rp0}rq0(hXyExternal dependencies can (and should) contain a version bound like conventional :pkg-field:`build-depends` dependencies.hjg0jDjEhj h}rr0(h]h]h]h]h]ujPNjjth]rs0jZ)rt0}ru0(hXyExternal dependencies can (and should) contain a version bound like conventional :pkg-field:`build-depends` dependencies.hjp0jDjEhj]h}rv0(h]h]h]h]h]ujPMh]rw0(hXQExternal dependencies can (and should) contain a version bound like conventional rx0ry0}rz0(hXQExternal dependencies can (and should) contain a version bound like conventional hjt0ubjM)r{0}r|0(hX:pkg-field:`build-depends`hjt0jDjEhjPh}r}0(UreftypeX pkg-fieldjRjSX build-dependsr~0U refdomainXcabalr0h]h]U refexplicith]h]h]jVj jlNujPMh]r0j)r0}r0(hj~0h}r0(h]h]r0(j]j0Xcabal-pkg-fieldr0eh]h]h]uhj{0h]r0hX build-dependsr0r0}r0(hUhj0ubahjubaubhX dependencies.r0r0}r0(hX dependencies.hjt0ubeubaubj )r0}r0(hXjInternal depenedencies should not contain a version bound, as they will be always resolved within the same configuration of the package in the build plan. Specifically, version bounds that include the package's version will be warned for being extraneous, and version bounds that exclude the package's version will raise an error for being impossible to follow. hjg0jDjEhj h}r0(h]h]h]h]h]ujPNjjth]r0jZ)r0}r0(hXiInternal depenedencies should not contain a version bound, as they will be always resolved within the same configuration of the package in the build plan. Specifically, version bounds that include the package's version will be warned for being extraneous, and version bounds that exclude the package's version will raise an error for being impossible to follow.r0hj0jDjEhj]h}r0(h]h]h]h]h]ujPMh]r0hXmInternal depenedencies should not contain a version bound, as they will be always resolved within the same configuration of the package in the build plan. Specifically, version bounds that include the package’s version will be warned for being extraneous, and version bounds that exclude the package’s version will raise an error for being impossible to follow.r0r0}r0(hj0hj0ubaubaubeubjZ)r0}r0(hXFor example (1) using a test-suite to make sure README.md Haskell snippets are tested using `markdown-unlit `__:hj0jDjEhj]h}r0(h]h]h]h]h]ujPMjjth]r0(hX\For example (1) using a test-suite to make sure README.md Haskell snippets are tested using r0r0}r0(hX\For example (1) using a test-suite to make sure README.md Haskell snippets are tested using jDNjPNjjthj0ubj!)r0}r0(hXF`markdown-unlit `__h}r0(UnameXmarkdown-unlitj] X1http://hackage.haskell.org/package/markdown-unlith]h]h]h]h]uhj0h]r0hXmarkdown-unlitr0r0}r0(hXmarkdown-unlithj0ubahj%ubhX:r0}r0(hX:jDNjPNjjthj0ubeubj)r0}r0(hXCbuild-tool-depends: markdown-unlit:markdown-unlit >= 0.5.0 && < 0.6hj0jDjEhjh}r0(jjh]h]h]h]h]ujPMjjth]r0hXCbuild-tool-depends: markdown-unlit:markdown-unlit >= 0.5.0 && < 0.6r0r0}r0(hUhj0ubaubjZ)r0}r0(hXTFor example (2) using a test-suite to test executable behaviour in the same package:r0hj0jDjEhj]h}r0(h]h]h]h]h]ujPMjjth]r0hXTFor example (2) using a test-suite to test executable behaviour in the same package:r0r0}r0(hj0jDNjPNjjthj0ubaubj)r0}r0(hX(build-tool-depends: mypackage:executablehj0jDjEhjh}r0(jjh]h]h]h]h]ujPMjjth]r0hX(build-tool-depends: mypackage:executabler0r0}r0(hUhj0ubaubjZ)r0}r0(hXCabal tries to make sure that all specified programs are atomically built and prepended on the ``$PATH`` shell variable before building the component in question, but can only do so for Nix-style builds. Specifically:hj0jDjEhj]h}r0(h]h]h]h]h]ujPMjjth]r0(hX_Cabal tries to make sure that all specified programs are atomically built and prepended on the r0r0}r0(hX_Cabal tries to make sure that all specified programs are atomically built and prepended on the jDNjPNjjthj0ubj)r0}r0(hX ``$PATH``h}r0(h]h]h]h]h]uhj0h]r0hX$PATHr0r0}r0(hX$PATHhj0ubahjubhXq shell variable before building the component in question, but can only do so for Nix-style builds. Specifically:r0r0}r0(hXq shell variable before building the component in question, but can only do so for Nix-style builds. Specifically:jDNjPNjjthj0ubeubjf0)r0}r0(hUhj0jDjEhji0h}r0(jk0U)h]h]h]jl0Uh]h]jm0U loweralphar0ujPMjjth]r0(j )r0}r0(hXDFor Nix-style local builds, both internal and external dependencies.r0hj0jDjEhj h}r0(h]h]h]h]h]ujPNjjth]r0jZ)r0}r0(hj0hj0jDjEhj]h}r0(h]h]h]h]h]ujPMh]r0hXDFor Nix-style local builds, both internal and external dependencies.r0r0}r0(hj0hj0ubaubaubj )r0}r0(hXFor old-style builds, only for internal dependencies [#old-style-build-tool-depends]_. It's up to the user to provide needed executables in this case under `$PATH.` hj0jDjEhj h}r0(h]h]h]h]h]ujPNjjth]r0jZ)r0}r0(hXFor old-style builds, only for internal dependencies [#old-style-build-tool-depends]_. It's up to the user to provide needed executables in this case under `$PATH.`hj0jDjEhj]h}r0(h]h]h]h]h]ujPMh]r0(hX5For old-style builds, only for internal dependencies r0r0}r0(hX5For old-style builds, only for internal dependencies hj0ubcdocutils.nodes footnote_reference r0)r0}r0(hX [#old-style-build-tool-depends]_j$Khj0hUfootnote_referencer0h}r0(Uautor0Kh]r0Uid2r0ah]h]h]h]j%j j'Uold-style-build-tool-dependsr0uh]r0hX1r0}r0(hUhj0ubaubhXI. It’s up to the user to provide needed executables in this case under r0r0}r0(hXG. It's up to the user to provide needed executables in this case under hj0ubj")r0}r0(hX`$PATH.`h}r0(h]h]h]h]h]uhj0h]r0hX$PATH.r0r1}r1(hX$PATH.hj0ubahj"ubeubaubeubj )r1}r1(hX:pkg-field:`build-tool-depends` was added in Cabal 2.0, and it will be ignored (with a warning) with old versions of Cabal. See :pkg-field:`build-tools` for more information about backwards compatibility.hj0jDjEhj h}r1(h]h]h]h]h]ujPNjjth]r1jZ)r1}r1(hX:pkg-field:`build-tool-depends` was added in Cabal 2.0, and it will be ignored (with a warning) with old versions of Cabal. See :pkg-field:`build-tools` for more information about backwards compatibility.hj1jDjEhj]h}r1(h]h]h]h]h]ujPMh]r 1(jM)r 1}r 1(hX:pkg-field:`build-tool-depends`hj1jDjEhjPh}r 1(UreftypeX pkg-fieldjRjSXbuild-tool-dependsr 1U refdomainXcabalr1h]h]U refexplicith]h]h]jVj jlNujPMh]r1j)r1}r1(hj 1h}r1(h]h]r1(j]j1Xcabal-pkg-fieldr1eh]h]h]uhj 1h]r1hXbuild-tool-dependsr1r1}r1(hUhj1ubahjubaubhXb was added in Cabal 2.0, and it will be ignored (with a warning) with old versions of Cabal. See r1r1}r1(hXb was added in Cabal 2.0, and it will be ignored (with a warning) with old versions of Cabal. See hj1ubjM)r1}r1(hX:pkg-field:`build-tools`hj1jDjEhjPh}r1(UreftypeX pkg-fieldjRjSX build-toolsr1U refdomainXcabalr 1h]h]U refexplicith]h]h]jVj jlNujPMh]r!1j)r"1}r#1(hj1h}r$1(h]h]r%1(j]j 1Xcabal-pkg-fieldr&1eh]h]h]uhj1h]r'1hX build-toolsr(1r)1}r*1(hUhj"1ubahjubaubhX4 for more information about backwards compatibility.r+1r,1}r-1(hX4 for more information about backwards compatibility.hj1ubeubaubeubeubj )r.1}r/1(hUhjl)jDjEhjnh}r01(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r11}r21(hUhjl)jDjEhj h}r31(j j Xcabalh]h]h]h]h]j X pkg-fieldr41j j41ujPNjjth]r51(j )r61}r71(hXbuild-tools: program listhj11jDjEhj h}r81(h]r91jdah]h]h]h]j ujPNjjth]r:1(j )r;1}r<1(hUhj61jDjEhjnh}r=1(h]h]h]h]h]Uentries]r>1(j! X build-tools; package.cabal fieldjdUNtr?1aujPNjjth]ubj# )r@1}rA1(hjchj61jDjEhj& h}rB1(jjh]h]h]h]h]ujPNjjth]rC1hX build-toolsrD1rE1}rF1(hUjDNjPNjjthj@1ubaubj, )rG1}rH1(hj/ hj61jDjEhj0 h}rI1(jjh]h]h]h]h]ujPNjjth]rJ1hX: rK1rL1}rM1(hUjDNjPNjjthjG1ubaubj6 )rN1}rO1(hX program listhj61jDjEhj9 h}rP1(jjh]h]h]h]h]ujPNjjth]rQ1hX program listrR1rS1}rT1(hUjDNjPNjjthjN1ubaubeubjh)rU1}rV1(hUhj11jDjEhjA h}rW1(h]h]h]h]h]ujPNjjth]rX1(j)rY1}rZ1(hUhjU1jDjEhjh}r[1(h]h]h]h]h]ujPNjjth]r\1(j)r]1}r^1(hUhjY1jDjEhj.h}r_1(h]h]h]h]h]ujPNjjth]r`1(j )ra1}rb1(hj/hj]1jDjEhj h}rc1(h]h]h]h]h]ujPKh]rd1hXRemovedre1rf1}rg1(hUhja1ubaubj)rh1}ri1(hU Cabal 3.0rj1h}rk1(h]h]h]h]h]uhj]1h]rl1jZ)rm1}rn1(hjj1h}ro1(h]h]h]h]h]uhjh1h]rp1hX Cabal 3.0rq1rr1}rs1(hUhjm1ubahj]ubahj-ubeubj)rt1}ru1(hUhjY1jDjEhj.h}rv1(h]h]h]h]h]ujPNjjth]rw1(j )rx1}ry1(hj/hjt1jDjEhj h}rz1(h]h]h]h]h]ujPKh]r{1hX Deprecatedr|1r}1}r~1(hUhjx1ubaubj)r1}r1(hU Cabal 2.0r1h}r1(h]h]h]h]h]uhjt1h]r1jZ)r1}r1(hj1h}r1(h]h]h]h]h]uhj1h]r1hX Cabal 2.0r1r1}r1(hUhj1ubahj]ubahj-ubeubeubjZ)r1}r1(hXDeprecated in favor of :pkg-field:`build-tool-depends`, but :ref:`see below for backwards compatibility information `.hjU1jDjEhj]h}r1(h]h]h]h]h]ujPMjjth]r1(hXDeprecated in favor of r1r1}r1(hXDeprecated in favor of jDNjPNjjthj1ubjM)r1}r1(hX:pkg-field:`build-tool-depends`hj1jDjEhjPh}r1(UreftypeX pkg-fieldjRjSXbuild-tool-dependsr1U refdomainXcabalr1h]h]U refexplicith]h]h]jVj jlNujPMh]r1j)r1}r1(hj1h}r1(h]h]r1(j]j1Xcabal-pkg-fieldr1eh]h]h]uhj1h]r1hXbuild-tool-dependsr1r1}r1(hUhj1ubahjubaubhX, but r1r1}r1(hX, but jDNjPNjjthj1ubjM)r1}r1(hXG:ref:`see below for backwards compatibility information `hj1jDjEhjPh}r1(UreftypeXrefjRjSX buildtoolsbcU refdomainXstdr1h]h]U refexplicith]h]h]jVj ujPMh]r1jX)r1}r1(hX@see below for backwards compatibility information h}r1(h]h]r1(j]j1Xstd-refr1eh]h]h]uhj1h]r1hX1see below for backwards compatibility informationr1r1}r1(hUhj1ubahjcubaubhX.r1}r1(hX.jDNjPNjjthj1ubeubjZ)r1}r1(hXA list of Haskell programs needed to build this component. Each may be followed by an optional version bound. Confusingly, each program in the list either refer to one of three things:r1hjU1jDjEhj]h}r1(h]h]h]h]h]ujPMjjth]r1hXA list of Haskell programs needed to build this component. Each may be followed by an optional version bound. Confusingly, each program in the list either refer to one of three things:r1r1}r1(hj1jDNjPNjjthj1ubaubj@)r1}r1(hUhjU1jDNhjCh}r1(h]h]h]h]h]ujPNjjth]r1jf0)r1}r1(hUh}r1(jk0U.h]h]h]jl0Uh]h]jm0jn0uhj1h]r1(j )r1}r1(hXEAnother executables in the same package (supported since Cabal 1.12) h}r1(h]h]h]h]h]uhj1h]r1jZ)r1}r1(hXDAnother executables in the same package (supported since Cabal 1.12)r1hj1jDjEhj]h}r1(h]h]h]h]h]ujPMh]r1hXDAnother executables in the same package (supported since Cabal 1.12)r1r1}r1(hj1hj1ubaubahj ubj )r1}r1(hXUTool name contained in Cabal's :ref:`hard-coded set of common tools ` h}r1(h]h]h]h]h]uhj1h]r1jZ)r1}r1(hXTTool name contained in Cabal's :ref:`hard-coded set of common tools `hj1jDjEhj]h}r1(h]h]h]h]h]ujPMh]r1(hX!Tool name contained in Cabal’s r1r1}r1(hXTool name contained in Cabal's hj1ubjM)r1}r1(hX5:ref:`hard-coded set of common tools `hj1jDjEhjPh}r1(UreftypeXrefjRjSX buildtoolsmapU refdomainXstdr1h]h]U refexplicith]h]h]jVj ujPMh]r1jX)r1}r1(hX.hard-coded set of common tools h}r1(h]h]r1(j]j1Xstd-refr1eh]h]h]uhj1h]r1hXhard-coded set of common toolsr1r1}r1(hUhj1ubahjcubaubeubahj ubj )r1}r1(hXZA pre-built executable that should already be on the ``PATH`` (supported since Cabal 2.0) h}r1(h]h]h]h]h]uhj1h]r1jZ)r1}r1(hXYA pre-built executable that should already be on the ``PATH`` (supported since Cabal 2.0)hj1jDjEhj]h}r1(h]h]h]h]h]ujPM h]r1(hX5A pre-built executable that should already be on the r1r1}r1(hX5A pre-built executable that should already be on the hj1ubj)r1}r1(hX``PATH``h}r1(h]h]h]h]h]uhj1h]r1hXPATHr1r1}r1(hXPATHhj1ubahjubhX (supported since Cabal 2.0)r1r1}r1(hX (supported since Cabal 2.0)hj1ubeubahj ubehji0ubaubjZ)r1}r1(hXThese cases are listed in order of priority: an executable in the package will override any of the hard-coded packages with the same name, and a hard-coded package will override any executable on the ``PATH``.hjU1jDjEhj]h}r2(h]h]h]h]h]ujPM jjth]r2(hXThese cases are listed in order of priority: an executable in the package will override any of the hard-coded packages with the same name, and a hard-coded package will override any executable on the r2r2}r2(hXThese cases are listed in order of priority: an executable in the package will override any of the hard-coded packages with the same name, and a hard-coded package will override any executable on the jDNjPNjjthj1ubj)r2}r2(hX``PATH``h}r2(h]h]h]h]h]uhj1h]r2hXPATHr 2r 2}r 2(hXPATHhj2ubahjubhX.r 2}r 2(hX.jDNjPNjjthj1ubeubjZ)r2}r2(hXIn the first two cases, the list entry is desugared into a :pkg-field:`build-tool-depends` entry. In the first case, the entry is desugared into a :pkg-field:`build-tool-depends` entry by prefixing with ``$pkg:``. In the second case, it is desugared by looking up the package and executable name in a hard-coded table. In either case, the optional version bound is passed through unchanged. Refer to the documentation for :pkg-field:`build-tool-depends` to understand the desugared field's meaning, along with restrictions on version bounds.hjU1jDjEhj]h}r2(h]h]h]h]h]ujPM jjth]r2(hX;In the first two cases, the list entry is desugared into a r2r2}r2(hX;In the first two cases, the list entry is desugared into a jDNjPNjjthj2ubjM)r2}r2(hX:pkg-field:`build-tool-depends`hj2jDjEhjPh}r2(UreftypeX pkg-fieldjRjSXbuild-tool-dependsr2U refdomainXcabalr2h]h]U refexplicith]h]h]jVj jlNujPM h]r2j)r2}r2(hj2h}r2(h]h]r2(j]j2Xcabal-pkg-fieldr2eh]h]h]uhj2h]r 2hXbuild-tool-dependsr!2r"2}r#2(hUhj2ubahjubaubhX9 entry. In the first case, the entry is desugared into a r$2r%2}r&2(hX9 entry. In the first case, the entry is desugared into a jDNjPNjjthj2ubjM)r'2}r(2(hX:pkg-field:`build-tool-depends`hj2jDjEhjPh}r)2(UreftypeX pkg-fieldjRjSXbuild-tool-dependsr*2U refdomainXcabalr+2h]h]U refexplicith]h]h]jVj jlNujPM h]r,2j)r-2}r.2(hj*2h}r/2(h]h]r02(j]j+2Xcabal-pkg-fieldr12eh]h]h]uhj'2h]r22hXbuild-tool-dependsr32r42}r52(hUhj-2ubahjubaubhX entry by prefixing with r62r72}r82(hX entry by prefixing with jDNjPNjjthj2ubj)r92}r:2(hX ``$pkg:``h}r;2(h]h]h]h]h]uhj2h]r<2hX$pkg:r=2r>2}r?2(hX$pkg:hj92ubahjubhX. In the second case, it is desugared by looking up the package and executable name in a hard-coded table. In either case, the optional version bound is passed through unchanged. Refer to the documentation for r@2rA2}rB2(hX. In the second case, it is desugared by looking up the package and executable name in a hard-coded table. In either case, the optional version bound is passed through unchanged. Refer to the documentation for jDNjPNjjthj2ubjM)rC2}rD2(hX:pkg-field:`build-tool-depends`hj2jDjEhjPh}rE2(UreftypeX pkg-fieldjRjSXbuild-tool-dependsrF2U refdomainXcabalrG2h]h]U refexplicith]h]h]jVj jlNujPM h]rH2j)rI2}rJ2(hjF2h}rK2(h]h]rL2(j]jG2Xcabal-pkg-fieldrM2eh]h]h]uhjC2h]rN2hXbuild-tool-dependsrO2rP2}rQ2(hUhjI2ubahjubaubhXZ to understand the desugared field’s meaning, along with restrictions on version bounds.rR2rS2}rT2(hXX to understand the desugared field's meaning, along with restrictions on version bounds.jDNjPNjjthj2ubeubje)rU2}rV2(hX.. _buildtoolsbc:hjU1jDjEhjdh}rW2(h]h]h]h]h]j'jIujPM jjth]ubjZ)rX2}rY2(hX**Backward Compatibility**rZ2hjU1jDjEj}r[2jHjU2shj]h}r\2(h]h]h]h]r]2jIah]r^2jHaujPM jjtj }r_2jIjU2sh]r`2j)ra2}rb2(hjZ2h}rc2(h]h]h]h]h]uhjX2h]rd2hXBackward Compatibilityre2rf2}rg2(hXBackward Compatibilityhja2ubahjubaubjZ)rh2}ri2(hXRAlthough this field is deprecated in favor of :pkg-field:`build-tool-depends`, there are some situations where you may prefer to use :pkg-field:`build-tools` in cases (1) and (2), as it is supported by more versions of Cabal. In case (3), :pkg-field:`build-tool-depends` is better for backwards-compatibility, as it will be ignored by old versions of Cabal; if you add the executable to :pkg-field:`build-tools`, a setup script built against old Cabal will choke. If an old version of Cabal is used, an end-user will have to manually arrange for the requested executable to be in your ``PATH``.hjU1jDjEhj]h}rj2(h]h]h]h]h]ujPM jjth]rk2(hX.Although this field is deprecated in favor of rl2rm2}rn2(hX.Although this field is deprecated in favor of jDNjPNjjthjh2ubjM)ro2}rp2(hX:pkg-field:`build-tool-depends`hjh2jDjEhjPh}rq2(UreftypeX pkg-fieldjRjSXbuild-tool-dependsrr2U refdomainXcabalrs2h]h]U refexplicith]h]h]jVj jlNujPM h]rt2j)ru2}rv2(hjr2h}rw2(h]h]rx2(j]js2Xcabal-pkg-fieldry2eh]h]h]uhjo2h]rz2hXbuild-tool-dependsr{2r|2}r}2(hUhju2ubahjubaubhX8, there are some situations where you may prefer to use r~2r2}r2(hX8, there are some situations where you may prefer to use jDNjPNjjthjh2ubjM)r2}r2(hX:pkg-field:`build-tools`hjh2jDjEhjPh}r2(UreftypeX pkg-fieldjRjSX build-toolsr2U refdomainXcabalr2h]h]U refexplicith]h]h]jVj jlNujPM h]r2j)r2}r2(hj2h}r2(h]h]r2(j]j2Xcabal-pkg-fieldr2eh]h]h]uhj2h]r2hX build-toolsr2r2}r2(hUhj2ubahjubaubhXR in cases (1) and (2), as it is supported by more versions of Cabal. In case (3), r2r2}r2(hXR in cases (1) and (2), as it is supported by more versions of Cabal. In case (3), jDNjPNjjthjh2ubjM)r2}r2(hX:pkg-field:`build-tool-depends`hjh2jDjEhjPh}r2(UreftypeX pkg-fieldjRjSXbuild-tool-dependsr2U refdomainXcabalr2h]h]U refexplicith]h]h]jVj jlNujPM h]r2j)r2}r2(hj2h}r2(h]h]r2(j]j2Xcabal-pkg-fieldr2eh]h]h]uhj2h]r2hXbuild-tool-dependsr2r2}r2(hUhj2ubahjubaubhXu is better for backwards-compatibility, as it will be ignored by old versions of Cabal; if you add the executable to r2r2}r2(hXu is better for backwards-compatibility, as it will be ignored by old versions of Cabal; if you add the executable to jDNjPNjjthjh2ubjM)r2}r2(hX:pkg-field:`build-tools`hjh2jDjEhjPh}r2(UreftypeX pkg-fieldjRjSX build-toolsr2U refdomainXcabalr2h]h]U refexplicith]h]h]jVj jlNujPM h]r2j)r2}r2(hj2h}r2(h]h]r2(j]j2Xcabal-pkg-fieldr2eh]h]h]uhj2h]r2hX build-toolsr2r2}r2(hUhj2ubahjubaubhX, a setup script built against old Cabal will choke. If an old version of Cabal is used, an end-user will have to manually arrange for the requested executable to be in your r2r2}r2(hX, a setup script built against old Cabal will choke. If an old version of Cabal is used, an end-user will have to manually arrange for the requested executable to be in your jDNjPNjjthjh2ubj)r2}r2(hX``PATH``h}r2(h]h]h]h]h]uhjh2h]r2hXPATHr2r2}r2(hXPATHhj2ubahjubhX.r2}r2(hX.jDNjPNjjthjh2ubeubje)r2}r2(hX.. _buildtoolsmap:hjU1jDjEhjdh}r2(h]h]h]h]h]j'j]ujPM jjth]ubjZ)r2}r2(hX**Set of Known Tool Names**r2hjU1jDjEj}r2j\j2shj]h}r2(h]h]h]h]r2j]ah]r2j\aujPM jjtj }r2j]j2sh]r2j)r2}r2(hj2h}r2(h]h]h]h]h]uhj2h]r2hXSet of Known Tool Namesr2r2}r2(hXSet of Known Tool Nameshj2ubahjubaubjZ)r2}r2(hXIdentifiers specified in :pkg-field:`build-tools` are desugared into their respective equivalent :pkg-field:`build-tool-depends` form according to the table below. Consequently, a legacy specification such as::hjU1jDjEhj]h}r2(h]h]h]h]h]ujPM jjth]r2(hXIdentifiers specified in r2r2}r2(hXIdentifiers specified in jDNjPNjjthj2ubjM)r2}r2(hX:pkg-field:`build-tools`hj2jDjEhjPh}r2(UreftypeX pkg-fieldjRjSX build-toolsr2U refdomainXcabalr2h]h]U refexplicith]h]h]jVj jlNujPM h]r2j)r2}r2(hj2h}r2(h]h]r2(j]j2Xcabal-pkg-fieldr2eh]h]h]uhj2h]r2hX build-toolsr2r2}r2(hUhj2ubahjubaubhX0 are desugared into their respective equivalent r2r2}r2(hX0 are desugared into their respective equivalent jDNjPNjjthj2ubjM)r2}r2(hX:pkg-field:`build-tool-depends`hj2jDjEhjPh}r2(UreftypeX pkg-fieldjRjSXbuild-tool-dependsr2U refdomainXcabalr2h]h]U refexplicith]h]h]jVj jlNujPM h]r2j)r2}r2(hj2h}r2(h]h]r2(j]j2Xcabal-pkg-fieldr2eh]h]h]uhj2h]r2hXbuild-tool-dependsr2r2}r2(hUhj2ubahjubaubhXQ form according to the table below. Consequently, a legacy specification such as:r2r2}r2(hXQ form according to the table below. Consequently, a legacy specification such as:jDNjPNjjthj2ubeubj)r2}r2(hX>build-tools: alex >= 3.2.1 && < 3.3, happy >= 1.19.5 && < 1.20hjU1jDjEhjh}r3(jjh]h]h]h]h]ujPM jjth]r3hX>build-tools: alex >= 3.2.1 && < 3.3, happy >= 1.19.5 && < 1.20r3r3}r3(hUhj2ubaubjZ)r3}r3(hX7is simply desugared into the equivalent specification::hjU1jDjEhj]h}r3(h]h]h]h]h]ujPM jjth]r3hX6is simply desugared into the equivalent specification:r 3r 3}r 3(hX6is simply desugared into the equivalent specification:jDNjPNjjthj3ubaubj)r 3}r 3(hXPbuild-tool-depends: alex:alex >= 3.2.1 && < 3.3, happy:happy >= 1.19.5 && < 1.20hjU1jDjEhjh}r3(jjh]h]h]h]h]ujPM jjth]r3hXPbuild-tool-depends: alex:alex >= 3.2.1 && < 3.3, happy:happy >= 1.19.5 && < 1.20r3r3}r3(hUhj 3ubaubjb)r3}r3(hUhjU1jDjEhjeh}r3(h]h]h]h]h]ujPNjjth]r3jh)r3}r3(hUh}r3(h]h]h]h]h]UcolsKuhj3h]r3(jm)r3}r3(hUh}r3(h]h]h]h]h]UcolwidthKuhj3h]hjqubjm)r3}r3(hUh}r 3(h]h]h]h]h]UcolwidthK#uhj3h]hjqubjm)r!3}r"3(hUh}r#3(h]h]h]h]h]UcolwidthKuhj3h]hjqubju)r$3}r%3(hUh}r&3(h]h]h]h]h]uhj3h]r'3jz)r(3}r)3(hUh}r*3(h]h]h]h]h]uhj$3h]r+3(j)r,3}r-3(hUh}r.3(h]h]h]h]h]uhj(3h]r/3jZ)r03}r13(hX#:pkg-field:`build-tools` identifierhj,3jDjEhj]h}r23(h]h]h]h]h]ujPM# h]r33(jM)r43}r53(hX:pkg-field:`build-tools`hj03jDjEhjPh}r63(UreftypeX pkg-fieldjRjSX build-toolsr73U refdomainXcabalr83h]h]U refexplicith]h]h]jVj jlNujPM$ h]r93j)r:3}r;3(hj73h}r<3(h]h]r=3(j]j83Xcabal-pkg-fieldr>3eh]h]h]uhj43h]r?3hX build-toolsr@3rA3}rB3(hUhj:3ubahjubaubhX identifierrC3rD3}rE3(hX identifierhj03ubeubahjubj)rF3}rG3(hUh}rH3(h]h]h]h]h]uhj(3h]rI3jZ)rJ3}rK3(hX4desugared :pkg-field:`build-tool-depends` identifierhjF3jDjEhj]h}rL3(h]h]h]h]h]ujPM# h]rM3(hX desugared rN3rO3}rP3(hX desugared hjJ3ubjM)rQ3}rR3(hX:pkg-field:`build-tool-depends`hjJ3jDjEhjPh}rS3(UreftypeX pkg-fieldjRjSXbuild-tool-dependsrT3U refdomainXcabalrU3h]h]U refexplicith]h]h]jVj jlNujPM$ h]rV3j)rW3}rX3(hjT3h}rY3(h]h]rZ3(j]jU3Xcabal-pkg-fieldr[3eh]h]h]uhjQ3h]r\3hXbuild-tool-dependsr]3r^3}r_3(hUhjW3ubahjubaubhX identifierr`3ra3}rb3(hX identifierhjJ3ubeubahjubj)rc3}rd3(hUh}re3(h]h]h]h]h]uhj(3h]rf3jZ)rg3}rh3(hXNoteri3hjc3jDjEhj]h}rj3(h]h]h]h]h]ujPM# h]rk3hXNoterl3rm3}rn3(hji3hjg3ubaubahjubehjubahjubj)ro3}rp3(hUh}rq3(h]h]h]h]h]uhj3h]rr3(jz)rs3}rt3(hUh}ru3(h]h]h]h]h]uhjo3h]rv3(j)rw3}rx3(hUh}ry3(h]h]h]h]h]uhjs3h]rz3jZ)r{3}r|3(hX``alex``r}3hjw3jDjEhj]h}r~3(h]h]h]h]h]ujPM' h]r3j)r3}r3(hj}3h}r3(h]h]h]h]h]uhj{3h]r3hXalexr3r3}r3(hXalexhj3ubahjubaubahjubj)r3}r3(hUh}r3(h]h]h]h]h]uhjs3h]r3jZ)r3}r3(hX ``alex:alex``r3hj3jDjEhj]h}r3(h]h]h]h]h]ujPM' h]r3j)r3}r3(hj3h}r3(h]h]h]h]h]uhj3h]r3hX alex:alexr3r3}r3(hX alex:alexhj3ubahjubaubahjubj)r3}r3(hUh}r3(h]h]h]h]h]uhjs3h]hjubehjubjz)r3}r3(hUh}r3(h]h]h]h]h]uhjo3h]r3(j)r3}r3(hUh}r3(h]h]h]h]h]uhj3h]r3jZ)r3}r3(hX``c2hs``r3hj3jDjEhj]h}r3(h]h]h]h]h]ujPM) h]r3j)r3}r3(hj3h}r3(h]h]h]h]h]uhj3h]r3hXc2hsr3r3}r3(hXc2hshj3ubahjubaubahjubj)r3}r3(hUh}r3(h]h]h]h]h]uhj3h]r3jZ)r3}r3(hX ``c2hs:c2hs``r3hj3jDjEhj]h}r3(h]h]h]h]h]ujPM) h]r3j)r3}r3(hj3h}r3(h]h]h]h]h]uhj3h]r3hX c2hs:c2hsr3r3}r3(hX c2hs:c2hshj3ubahjubaubahjubj)r3}r3(hUh}r3(h]h]h]h]h]uhj3h]hjubehjubjz)r3}r3(hUh}r3(h]h]h]h]h]uhjo3h]r3(j)r3}r3(hUh}r3(h]h]h]h]h]uhj3h]r3jZ)r3}r3(hX ``cpphs``r3hj3jDjEhj]h}r3(h]h]h]h]h]ujPM+ h]r3j)r3}r3(hj3h}r3(h]h]h]h]h]uhj3h]r3hXcpphsr3r3}r3(hXcpphshj3ubahjubaubahjubj)r3}r3(hUh}r3(h]h]h]h]h]uhj3h]r3jZ)r3}r3(hX``cpphs:cpphs``r3hj3jDjEhj]h}r3(h]h]h]h]h]ujPM+ h]r3j)r3}r3(hj3h}r3(h]h]h]h]h]uhj3h]r3hX cpphs:cpphsr3r3}r3(hX cpphs:cpphshj3ubahjubaubahjubj)r3}r3(hUh}r3(h]h]h]h]h]uhj3h]hjubehjubjz)r3}r3(hUh}r3(h]h]h]h]h]uhjo3h]r3(j)r3}r3(hUh}r3(h]h]h]h]h]uhj3h]r3jZ)r3}r3(hX ``greencard``r3hj3jDjEhj]h}r3(h]h]h]h]h]ujPM- h]r3j)r3}r3(hj3h}r3(h]h]h]h]h]uhj3h]r3hX greencardr3r3}r3(hX greencardhj3ubahjubaubahjubj)r3}r3(hUh}r3(h]h]h]h]h]uhj3h]r3jZ)r4}r4(hX``greencard:greencard``r4hj3jDjEhj]h}r4(h]h]h]h]h]ujPM- h]r4j)r4}r4(hj4h}r4(h]h]h]h]h]uhj4h]r4hXgreencard:greencardr 4r 4}r 4(hXgreencard:greencardhj4ubahjubaubahjubj)r 4}r 4(hUh}r4(h]h]h]h]h]uhj3h]hjubehjubjz)r4}r4(hUh}r4(h]h]h]h]h]uhjo3h]r4(j)r4}r4(hUh}r4(h]h]h]h]h]uhj4h]r4jZ)r4}r4(hX ``haddock``r4hj4jDjEhj]h}r4(h]h]h]h]h]ujPM/ h]r4j)r4}r4(hj4h}r4(h]h]h]h]h]uhj4h]r4hXhaddockr 4r!4}r"4(hXhaddockhj4ubahjubaubahjubj)r#4}r$4(hUh}r%4(h]h]h]h]h]uhj4h]r&4jZ)r'4}r(4(hX``haddock:haddock``r)4hj#4jDjEhj]h}r*4(h]h]h]h]h]ujPM/ h]r+4j)r,4}r-4(hj)4h}r.4(h]h]h]h]h]uhj'4h]r/4hXhaddock:haddockr04r14}r24(hXhaddock:haddockhj,4ubahjubaubahjubj)r34}r44(hUh}r54(h]h]h]h]h]uhj4h]hjubehjubjz)r64}r74(hUh}r84(h]h]h]h]h]uhjo3h]r94(j)r:4}r;4(hUh}r<4(h]h]h]h]h]uhj64h]r=4jZ)r>4}r?4(hX ``happy``r@4hj:4jDjEhj]h}rA4(h]h]h]h]h]ujPM1 h]rB4j)rC4}rD4(hj@4h}rE4(h]h]h]h]h]uhj>4h]rF4hXhappyrG4rH4}rI4(hXhappyhjC4ubahjubaubahjubj)rJ4}rK4(hUh}rL4(h]h]h]h]h]uhj64h]rM4jZ)rN4}rO4(hX``happy:happy``rP4hjJ4jDjEhj]h}rQ4(h]h]h]h]h]ujPM1 h]rR4j)rS4}rT4(hjP4h}rU4(h]h]h]h]h]uhjN4h]rV4hX happy:happyrW4rX4}rY4(hX happy:happyhjS4ubahjubaubahjubj)rZ4}r[4(hUh}r\4(h]h]h]h]h]uhj64h]hjubehjubjz)r]4}r^4(hUh}r_4(h]h]h]h]h]uhjo3h]r`4(j)ra4}rb4(hUh}rc4(h]h]h]h]h]uhj]4h]rd4jZ)re4}rf4(hX ``hsc2hs``rg4hja4jDjEhj]h}rh4(h]h]h]h]h]ujPM3 h]ri4j)rj4}rk4(hjg4h}rl4(h]h]h]h]h]uhje4h]rm4hXhsc2hsrn4ro4}rp4(hXhsc2hshjj4ubahjubaubahjubj)rq4}rr4(hUh}rs4(h]h]h]h]h]uhj]4h]rt4jZ)ru4}rv4(hX``hsc2hs:hsc2hs``rw4hjq4jDjEhj]h}rx4(h]h]h]h]h]ujPM3 h]ry4j)rz4}r{4(hjw4h}r|4(h]h]h]h]h]uhju4h]r}4hX hsc2hs:hsc2hsr~4r4}r4(hX hsc2hs:hsc2hshjz4ubahjubaubahjubj)r4}r4(hUh}r4(h]h]h]h]h]uhj]4h]hjubehjubjz)r4}r4(hUh}r4(h]h]h]h]h]uhjo3h]r4(j)r4}r4(hUh}r4(h]h]h]h]h]uhj4h]r4jZ)r4}r4(hX ``hscolour``r4hj4jDjEhj]h}r4(h]h]h]h]h]ujPM5 h]r4j)r4}r4(hj4h}r4(h]h]h]h]h]uhj4h]r4hXhscolourr4r4}r4(hXhscolourhj4ubahjubaubahjubj)r4}r4(hUh}r4(h]h]h]h]h]uhj4h]r4jZ)r4}r4(hX``hscolour:hscolour``r4hj4jDjEhj]h}r4(h]h]h]h]h]ujPM5 h]r4j)r4}r4(hj4h}r4(h]h]h]h]h]uhj4h]r4hXhscolour:hscolourr4r4}r4(hXhscolour:hscolourhj4ubahjubaubahjubj)r4}r4(hUh}r4(h]h]h]h]h]uhj4h]hjubehjubjz)r4}r4(hUh}r4(h]h]h]h]h]uhjo3h]r4(j)r4}r4(hUh}r4(h]h]h]h]h]uhj4h]r4jZ)r4}r4(hX``hspec-discover``r4hj4jDjEhj]h}r4(h]h]h]h]h]ujPM7 h]r4j)r4}r4(hj4h}r4(h]h]h]h]h]uhj4h]r4hXhspec-discoverr4r4}r4(hXhspec-discoverhj4ubahjubaubahjubj)r4}r4(hUh}r4(h]h]h]h]h]uhj4h]r4jZ)r4}r4(hX!``hspec-discover:hspec-discover``r4hj4jDjEhj]h}r4(h]h]h]h]h]ujPM7 h]r4j)r4}r4(hj4h}r4(h]h]h]h]h]uhj4h]r4hXhspec-discover:hspec-discoverr4r4}r4(hXhspec-discover:hspec-discoverhj4ubahjubaubahjubj)r4}r4(hUh}r4(h]h]h]h]h]uhj4h]r4jZ)r4}r4(hXsince Cabal 2.0r4hj4jDjEhj]h}r4(h]h]h]h]h]ujPM7 h]r4hXsince Cabal 2.0r4r4}r4(hj4hj4ubaubahjubehjubehjubehjubaubjZ)r4}r4(hXThis built-in set can be programmatically extended via ``Custom`` setup scripts; this, however, is of limited use since the Cabal solver cannot access information injected by ``Custom`` setup scripts.hjU1jDjEhj]h}r4(h]h]h]h]h]ujPM: jjth]r4(hX7This built-in set can be programmatically extended via r4r4}r4(hX7This built-in set can be programmatically extended via jDNjPNjjthj4ubj)r4}r4(hX ``Custom``h}r4(h]h]h]h]h]uhj4h]r4hXCustomr4r4}r4(hXCustomhj4ubahjubhXn setup scripts; this, however, is of limited use since the Cabal solver cannot access information injected by r4r4}r4(hXn setup scripts; this, however, is of limited use since the Cabal solver cannot access information injected by jDNjPNjjthj4ubj)r4}r4(hX ``Custom``h}r4(h]h]h]h]h]uhj4h]r4hXCustomr4r4}r4(hXCustomhj4ubahjubhX setup scripts.r4r4}r4(hX setup scripts.jDNjPNjjthj4ubeubeubeubj )r4}r4(hUhjl)jDjEhjnh}r4(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r4}r4(hUhjl)jDjEhj h}r4(j j Xcabalh]h]h]h]h]j X pkg-fieldr4j j4ujPNjjth]r4(j )r4}r4(hXbuildable: booleanhj4jDjEhj h}r5(h]r5jah]h]h]h]j ujPMD jjth]r5(j )r5}r5(hUhj4jDjEhjnh}r5(h]h]h]h]h]Uentries]r5(j! Xbuildable; package.cabal fieldjUNtr5aujPMD jjth]ubj# )r5}r 5(hjhj4jDjEhj& h}r 5(jjh]h]h]h]h]ujPMD jjth]r 5hX buildabler 5r 5}r5(hUjDNjPNjjthj5ubaubj, )r5}r5(hj/ hj4jDjEhj0 h}r5(jjh]h]h]h]h]ujPMD jjth]r5hX: r5r5}r5(hUjDNjPNjjthj5ubaubj6 )r5}r5(hXbooleanhj4jDjEhj9 h}r5(jjh]h]h]h]h]ujPMD jjth]r5hXbooleanr5r5}r5(hUjDNjPNjjthj5ubaubeubjh)r5}r5(hUhj4jDjEhjA h}r5(h]h]h]h]h]ujPMD jjth]r 5(j)r!5}r"5(hUhj5jDjEhjh}r#5(h]h]h]h]h]ujPNjjth]r$5j)r%5}r&5(hUh}r'5(h]h]h]h]h]uhj!5h]r(5(j )r)5}r*5(hX Default valuehj%5jDjEhj h}r+5(h]h]h]h]h]ujPKh]r,5hX Default valuer-5r.5}r/5(hUhj)5ubaubj)r05}r15(hUh}r25(h]h]h]h]h]uhj%5h]r35jZ)r45}r55(hXTrueh}r65(h]h]h]h]h]uhj05h]r75j)r85}r95(hX``True``hj45jDjEhjh}r:5(h]h]h]h]h]ujPNjjth]r;5hXTruer<5r=5}r>5(hXTruejDNjPNjjthj85ubaubahj]ubahj-ubehj.ubaubjZ)r?5}r@5(hXIs the component buildable? Like some of the other fields below, this field is more useful with the slightly more elaborate form of the simple build infrastructure described in the section on `system-dependent parameters`_.hj5jDjEhj]h}rA5(h]h]h]h]h]ujPM@ jjth]rB5(hXIs the component buildable? Like some of the other fields below, this field is more useful with the slightly more elaborate form of the simple build infrastructure described in the section on rC5rD5}rE5(hXIs the component buildable? Like some of the other fields below, this field is more useful with the slightly more elaborate form of the simple build infrastructure described in the section on jDNjPNjjthj?5ubj!)rF5}rG5(hX`system-dependent parameters`_j$Khj?5hj%h}rH5(UnameXsystem-dependent parametersh]h]h]h]h]j'jo uh]rI5hXsystem-dependent parametersrJ5rK5}rL5(hXsystem-dependent parametershjF5ubaubhX.rM5}rN5(hX.jDNjPNjjthj?5ubeubeubeubj )rO5}rP5(hUhjl)jDjEhjnh}rQ5(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rR5}rS5(hUhjl)jDjEhj h}rT5(j j Xcabalh]h]h]h]h]j X pkg-fieldrU5j jU5ujPNjjth]rV5(j )rW5}rX5(hXghc-options: token listhjR5jDjEhj h}rY5(h]rZ5jah]h]h]h]j ujPMP jjth]r[5(j )r\5}r]5(hUhjW5jDjEhjnh}r^5(h]h]h]h]h]Uentries]r_5(j! X ghc-options; package.cabal fieldjUNtr`5aujPMP jjth]ubj# )ra5}rb5(hjhjW5jDjEhj& h}rc5(jjh]h]h]h]h]ujPMP jjth]rd5hX ghc-optionsre5rf5}rg5(hUjDNjPNjjthja5ubaubj, )rh5}ri5(hj/ hjW5jDjEhj0 h}rj5(jjh]h]h]h]h]ujPMP jjth]rk5hX: rl5rm5}rn5(hUjDNjPNjjthjh5ubaubj6 )ro5}rp5(hX token listhjW5jDjEhj9 h}rq5(jjh]h]h]h]h]ujPMP jjth]rr5hX token listrs5rt5}ru5(hUjDNjPNjjthjo5ubaubeubjh)rv5}rw5(hUhjR5jDjEhjA h}rx5(h]h]h]h]h]ujPMP jjth]ry5(jZ)rz5}r{5(hX~Additional options for GHC. You can often achieve the same effect using the :pkg-field:`extensions` field, which is preferred.hjv5jDjEhj]h}r|5(h]h]h]h]h]ujPMG jjth]r}5(hXLAdditional options for GHC. You can often achieve the same effect using the r~5r5}r5(hXLAdditional options for GHC. You can often achieve the same effect using the jDNjPNjjthjz5ubjM)r5}r5(hX:pkg-field:`extensions`hjz5jDjEhjPh}r5(UreftypeX pkg-fieldjRjSX extensionsr5U refdomainXcabalr5h]h]U refexplicith]h]h]jVj jlNujPMG h]r5j)r5}r5(hj5h}r5(h]h]r5(j]j5Xcabal-pkg-fieldr5eh]h]h]uhj5h]r5hX extensionsr5r5}r5(hUhj5ubahjubaubhX field, which is preferred.r5r5}r5(hX field, which is preferred.jDNjPNjjthjz5ubeubjZ)r5}r5(hXvOptions required only by one module may be specified by placing an ``OPTIONS_GHC`` pragma in the source file affected.hjv5jDjEhj]h}r5(h]h]h]h]h]ujPMJ jjth]r5(hXCOptions required only by one module may be specified by placing an r5r5}r5(hXCOptions required only by one module may be specified by placing an jDNjPNjjthj5ubj)r5}r5(hX``OPTIONS_GHC``h}r5(h]h]h]h]h]uhj5h]r5hX OPTIONS_GHCr5r5}r5(hX OPTIONS_GHChj5ubahjubhX$ pragma in the source file affected.r5r5}r5(hX$ pragma in the source file affected.jDNjPNjjthj5ubeubjZ)r5}r5(hXAs with many other fields, whitespace can be escaped by using Haskell string syntax. Example: ``ghc-options: -Wcompat "-with-rtsopts=-T -I1" -Wall``.hjv5jDjEhj]h}r5(h]h]h]h]h]ujPMM jjth]r5(hX^As with many other fields, whitespace can be escaped by using Haskell string syntax. Example: r5r5}r5(hX^As with many other fields, whitespace can be escaped by using Haskell string syntax. Example: jDNjPNjjthj5ubj)r5}r5(hX6``ghc-options: -Wcompat "-with-rtsopts=-T -I1" -Wall``h}r5(h]h]h]h]h]uhj5h]r5hX2ghc-options: -Wcompat "-with-rtsopts=-T -I1" -Wallr5r5}r5(hX2ghc-options: -Wcompat "-with-rtsopts=-T -I1" -Wallhj5ubahjubhX.r5}r5(hX.jDNjPNjjthj5ubeubeubeubj )r5}r5(hUhjl)jDjEhjnh}r5(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r5}r5(hUhjl)jDjEhj h}r5(j j Xcabalh]h]h]h]h]j X pkg-fieldr5j j5ujPNjjth]r5(j )r5}r5(hXghc-prof-options: token listhj5jDjEhj h}r5(h]r5jah]h]h]h]j ujPMe jjth]r5(j )r5}r5(hUhj5jDjEhjnh}r5(h]h]h]h]h]Uentries]r5(j! X%ghc-prof-options; package.cabal fieldjUNtr5aujPMe jjth]ubj# )r5}r5(hjhj5jDjEhj& h}r5(jjh]h]h]h]h]ujPMe jjth]r5hXghc-prof-optionsr5r5}r5(hUjDNjPNjjthj5ubaubj, )r5}r5(hj/ hj5jDjEhj0 h}r5(jjh]h]h]h]h]ujPMe jjth]r5hX: r5r5}r5(hUjDNjPNjjthj5ubaubj6 )r5}r5(hX token listhj5jDjEhj9 h}r5(jjh]h]h]h]h]ujPMe jjth]r5hX token listr5r5}r5(hUjDNjPNjjthj5ubaubeubjh)r5}r5(hUhj5jDjEhjA h}r5(h]h]h]h]h]ujPMe jjth]r5(jZ)r5}r5(hXLAdditional options for GHC when the package is built with profiling enabled.r5hj5jDjEhj]h}r5(h]h]h]h]h]ujPMS jjth]r5hXLAdditional options for GHC when the package is built with profiling enabled.r5r5}r5(hj5jDNjPNjjthj5ubaubjZ)r5}r5(hXNote that as of Cabal-1.24, the default profiling detail level defaults to ``exported-functions`` for libraries and ``toplevel-functions`` for executables. For GHC these correspond to the flags ``-fprof-auto-exported`` and ``-fprof-auto-top``. Prior to Cabal-1.24 the level defaulted to ``none``. These levels can be adjusted by the person building the package with the ``--profiling-detail`` and ``--library-profiling-detail`` flags.hj5jDjEhj]h}r5(h]h]h]h]h]ujPMV jjth]r5(hXKNote that as of Cabal-1.24, the default profiling detail level defaults to r5r5}r5(hXKNote that as of Cabal-1.24, the default profiling detail level defaults to jDNjPNjjthj5ubj)r5}r5(hX``exported-functions``h}r5(h]h]h]h]h]uhj5h]r5hXexported-functionsr5r5}r5(hXexported-functionshj5ubahjubhX for libraries and r5r5}r5(hX for libraries and jDNjPNjjthj5ubj)r5}r5(hX``toplevel-functions``h}r5(h]h]h]h]h]uhj5h]r5hXtoplevel-functionsr5r5}r5(hXtoplevel-functionshj5ubahjubhX8 for executables. For GHC these correspond to the flags r5r6}r6(hX8 for executables. For GHC these correspond to the flags jDNjPNjjthj5ubj)r6}r6(hX``-fprof-auto-exported``h}r6(h]h]h]h]h]uhj5h]r6hX-fprof-auto-exportedr6r6}r6(hX-fprof-auto-exportedhj6ubahjubhX and r 6r 6}r 6(hX and r 6jDNjPNjjthj5ubj)r 6}r6(hX``-fprof-auto-top``h}r6(h]h]h]h]h]uhj5h]r6hX-fprof-auto-topr6r6}r6(hX-fprof-auto-tophj 6ubahjubhX-. Prior to Cabal-1.24 the level defaulted to r6r6}r6(hX-. Prior to Cabal-1.24 the level defaulted to jDNjPNjjthj5ubj)r6}r6(hX``none``h}r6(h]h]h]h]h]uhj5h]r6hXnoner6r6}r6(hXnonehj6ubahjubhXK. These levels can be adjusted by the person building the package with the r6r6}r 6(hXK. These levels can be adjusted by the person building the package with the jDNjPNjjthj5ubj)r!6}r"6(hX``--profiling-detail``h}r#6(h]h]h]h]h]uhj5h]r$6hX--profiling-detailr%6r&6}r'6(hX--profiling-detailhj!6ubahjubhX and r(6r)6}r*6(hj 6hj5ubj)r+6}r,6(hX``--library-profiling-detail``h}r-6(h]h]h]h]h]uhj5h]r.6hX--library-profiling-detailr/6r06}r16(hX--library-profiling-detailhj+6ubahjubhX flags.r26r36}r46(hX flags.jDNjPNjjthj5ubeubjZ)r56}r66(hXIt is typically better for the person building the package to pick the profiling detail level rather than for the package author. So unless you have special needs it is probably better not to specify any of the GHC ``-fprof-auto*`` flags here. However if you wish to override the profiling detail level, you can do so using the :pkg-field:`ghc-prof-options` field: use ``-fno-prof-auto`` or one of the other ``-fprof-auto*`` flags.hj5jDjEhj]h}r76(h]h]h]h]h]ujPM^ jjth]r86(hXIt is typically better for the person building the package to pick the profiling detail level rather than for the package author. So unless you have special needs it is probably better not to specify any of the GHC r96r:6}r;6(hXIt is typically better for the person building the package to pick the profiling detail level rather than for the package author. So unless you have special needs it is probably better not to specify any of the GHC jDNjPNjjthj56ubj)r<6}r=6(hX``-fprof-auto*``h}r>6(h]h]h]h]h]uhj56h]r?6hX -fprof-auto*r@6rA6}rB6(hX -fprof-auto*hj<6ubahjubhXa flags here. However if you wish to override the profiling detail level, you can do so using the rC6rD6}rE6(hXa flags here. However if you wish to override the profiling detail level, you can do so using the jDNjPNjjthj56ubjM)rF6}rG6(hX:pkg-field:`ghc-prof-options`hj56jDjEhjPh}rH6(UreftypeX pkg-fieldjRjSXghc-prof-optionsrI6U refdomainXcabalrJ6h]h]U refexplicith]h]h]jVj jlNujPM^ h]rK6j)rL6}rM6(hjI6h}rN6(h]h]rO6(j]jJ6Xcabal-pkg-fieldrP6eh]h]h]uhjF6h]rQ6hXghc-prof-optionsrR6rS6}rT6(hUhjL6ubahjubaubhX field: use rU6rV6}rW6(hX field: use jDNjPNjjthj56ubj)rX6}rY6(hX``-fno-prof-auto``h}rZ6(h]h]h]h]h]uhj56h]r[6hX-fno-prof-autor\6r]6}r^6(hX-fno-prof-autohjX6ubahjubhX or one of the other r_6r`6}ra6(hX or one of the other jDNjPNjjthj56ubj)rb6}rc6(hX``-fprof-auto*``h}rd6(h]h]h]h]h]uhj56h]re6hX -fprof-auto*rf6rg6}rh6(hX -fprof-auto*hjb6ubahjubhX flags.ri6rj6}rk6(hX flags.jDNjPNjjthj56ubeubeubeubj )rl6}rm6(hUhjl)jDjEhjnh}rn6(h]h]h]h]h]Uentries]ujPNjjth]ubjk)ro6}rp6(hUhjl)jDjEhj h}rq6(j j Xcabalh]h]h]h]h]j X pkg-fieldrr6j jr6ujPNjjth]rs6(j )rt6}ru6(hXghc-shared-options: token listhjo6jDjEhj h}rv6(h]rw6jah]h]h]h]j ujPMl jjth]rx6(j )ry6}rz6(hUhjt6jDjEhjnh}r{6(h]h]h]h]h]Uentries]r|6(j! X'ghc-shared-options; package.cabal fieldjUNtr}6aujPMl jjth]ubj# )r~6}r6(hjhjt6jDjEhj& h}r6(jjh]h]h]h]h]ujPMl jjth]r6hXghc-shared-optionsr6r6}r6(hUjDNjPNjjthj~6ubaubj, )r6}r6(hj/ hjt6jDjEhj0 h}r6(jjh]h]h]h]h]ujPMl jjth]r6hX: r6r6}r6(hUjDNjPNjjthj6ubaubj6 )r6}r6(hX token listhjt6jDjEhj9 h}r6(jjh]h]h]h]h]ujPMl jjth]r6hX token listr6r6}r6(hUjDNjPNjjthj6ubaubeubjh)r6}r6(hUhjo6jDjEhjA h}r6(h]h]h]h]h]ujPMl jjth]r6jZ)r6}r6(hXAdditional options for GHC when the package is built as shared library. The options specified via this field are combined with the ones specified via :pkg-field:`ghc-options`, and are passed to GHC during both the compile and link phases.hj6jDjEhj]h}r6(h]h]h]h]h]ujPMh jjth]r6(hXAdditional options for GHC when the package is built as shared library. The options specified via this field are combined with the ones specified via r6r6}r6(hXAdditional options for GHC when the package is built as shared library. The options specified via this field are combined with the ones specified via jDNjPNjjthj6ubjM)r6}r6(hX:pkg-field:`ghc-options`hj6jDjEhjPh}r6(UreftypeX pkg-fieldjRjSX ghc-optionsr6U refdomainXcabalr6h]h]U refexplicith]h]h]jVj jlNujPMh h]r6j)r6}r6(hj6h}r6(h]h]r6(j]j6Xcabal-pkg-fieldr6eh]h]h]uhj6h]r6hX ghc-optionsr6r6}r6(hUhj6ubahjubaubhX@, and are passed to GHC during both the compile and link phases.r6r6}r6(hX@, and are passed to GHC during both the compile and link phases.jDNjPNjjthj6ubeubaubeubj )r6}r6(hUhjl)jDjEhjnh}r6(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r6}r6(hUhjl)jDjEhj h}r6(j j Xcabalh]h]h]h]h]j X pkg-fieldr6j j6ujPNjjth]r6(j )r6}r6(hXincludes: filename listhj6jDjEhj h}r6(h]r6j>ah]h]h]h]j ujPM| jjth]r6(j )r6}r6(hUhj6jDjEhjnh}r6(h]h]h]h]h]Uentries]r6(j! Xincludes; package.cabal fieldj>UNtr6aujPM| jjth]ubj# )r6}r6(hj=hj6jDjEhj& h}r6(jjh]h]h]h]h]ujPM| jjth]r6hXincludesr6r6}r6(hUjDNjPNjjthj6ubaubj, )r6}r6(hj/ hj6jDjEhj0 h}r6(jjh]h]h]h]h]ujPM| jjth]r6hX: r6r6}r6(hUjDNjPNjjthj6ubaubj6 )r6}r6(hX filename listhj6jDjEhj9 h}r6(jjh]h]h]h]h]ujPM| jjth]r6hX filename listr6r6}r6(hUjDNjPNjjthj6ubaubeubjh)r6}r6(hUhj6jDjEhjA h}r6(h]h]h]h]h]ujPM| jjth]r6(jZ)r6}r6(hXA list of header files to be included in any compilations via C. This field applies to both header files that are already installed on the system and to those coming with the package to be installed. The former files should be found in absolute paths, while the latter files should be found in paths relative to the top of the source tree or relative to one of the directories listed in :pkg-field:`include-dirs`.hj6jDjEhj]h}r6(h]h]h]h]h]ujPMo jjth]r6(hXA list of header files to be included in any compilations via C. This field applies to both header files that are already installed on the system and to those coming with the package to be installed. The former files should be found in absolute paths, while the latter files should be found in paths relative to the top of the source tree or relative to one of the directories listed in r6r6}r6(hXA list of header files to be included in any compilations via C. This field applies to both header files that are already installed on the system and to those coming with the package to be installed. The former files should be found in absolute paths, while the latter files should be found in paths relative to the top of the source tree or relative to one of the directories listed in jDNjPNjjthj6ubjM)r6}r6(hX:pkg-field:`include-dirs`hj6jDjEhjPh}r6(UreftypeX pkg-fieldjRjSX include-dirsr6U refdomainXcabalr6h]h]U refexplicith]h]h]jVj jlNujPMo h]r6j)r6}r6(hj6h}r6(h]h]r6(j]j6Xcabal-pkg-fieldr6eh]h]h]uhj6h]r6hX include-dirsr6r6}r6(hUhj6ubahjubaubhX.r6}r6(hX.jDNjPNjjthj6ubeubjZ)r6}r6(hXThese files typically contain function prototypes for foreign imports used by the package. This is in contrast to :pkg-field:`install-includes`, which lists header files that are intended to be exposed to other packages that transitively depend on this library.hj6jDjEhj]h}r6(h]h]h]h]h]ujPMw jjth]r6(hXrThese files typically contain function prototypes for foreign imports used by the package. This is in contrast to r6r6}r6(hXrThese files typically contain function prototypes for foreign imports used by the package. This is in contrast to jDNjPNjjthj6ubjM)r6}r6(hX:pkg-field:`install-includes`hj6jDjEhjPh}r6(UreftypeX pkg-fieldjRjSXinstall-includesr6U refdomainXcabalr6h]h]U refexplicith]h]h]jVj jlNujPMw h]r6j)r7}r7(hj6h}r7(h]h]r7(j]j6Xcabal-pkg-fieldr7eh]h]h]uhj6h]r7hXinstall-includesr7r7}r7(hUhj7ubahjubaubhXv, which lists header files that are intended to be exposed to other packages that transitively depend on this library.r 7r 7}r 7(hXv, which lists header files that are intended to be exposed to other packages that transitively depend on this library.jDNjPNjjthj6ubeubeubeubj )r 7}r 7(hUhjl)jDjEhjnh}r7(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r7}r7(hUhjl)jDjEhj h}r7(j j Xcabalh]h]h]h]h]j X pkg-fieldr7j j7ujPNjjth]r7(j )r7}r7(hXinstall-includes: filename listhj7jDjEhj h}r7(h]r7jah]h]h]h]j ujPM jjth]r7(j )r7}r7(hUhj7jDjEhjnh}r7(h]h]h]h]h]Uentries]r7(j! X%install-includes; package.cabal fieldjUNtr7aujPM jjth]ubj# )r7}r7(hjhj7jDjEhj& h}r 7(jjh]h]h]h]h]ujPM jjth]r!7hXinstall-includesr"7r#7}r$7(hUjDNjPNjjthj7ubaubj, )r%7}r&7(hj/ hj7jDjEhj0 h}r'7(jjh]h]h]h]h]ujPM jjth]r(7hX: r)7r*7}r+7(hUjDNjPNjjthj%7ubaubj6 )r,7}r-7(hX filename listhj7jDjEhj9 h}r.7(jjh]h]h]h]h]ujPM jjth]r/7hX filename listr07r17}r27(hUjDNjPNjjthj,7ubaubeubjh)r37}r47(hUhj7jDjEhjA h}r57(h]h]h]h]h]ujPM jjth]r67(jZ)r77}r87(hX$A list of header files from this package to be installed into ``$libdir/includes`` when the package is installed. Files listed in :pkg-field:`install-includes` should be found in relative to the top of the source tree or relative to one of the directories listed in :pkg-field:`include-dirs`.hj37jDjEhj]h}r97(h]h]h]h]h]ujPM jjth]r:7(hX>A list of header files from this package to be installed into r;7r<7}r=7(hX>A list of header files from this package to be installed into jDNjPNjjthj77ubj)r>7}r?7(hX``$libdir/includes``h}r@7(h]h]h]h]h]uhj77h]rA7hX$libdir/includesrB7rC7}rD7(hX$libdir/includeshj>7ubahjubhX0 when the package is installed. Files listed in rE7rF7}rG7(hX0 when the package is installed. Files listed in jDNjPNjjthj77ubjM)rH7}rI7(hX:pkg-field:`install-includes`hj77jDjEhjPh}rJ7(UreftypeX pkg-fieldjRjSXinstall-includesrK7U refdomainXcabalrL7h]h]U refexplicith]h]h]jVj jlNujPM h]rM7j)rN7}rO7(hjK7h}rP7(h]h]rQ7(j]jL7Xcabal-pkg-fieldrR7eh]h]h]uhjH7h]rS7hXinstall-includesrT7rU7}rV7(hUhjN7ubahjubaubhXk should be found in relative to the top of the source tree or relative to one of the directories listed in rW7rX7}rY7(hXk should be found in relative to the top of the source tree or relative to one of the directories listed in jDNjPNjjthj77ubjM)rZ7}r[7(hX:pkg-field:`include-dirs`hj77jDjEhjPh}r\7(UreftypeX pkg-fieldjRjSX include-dirsr]7U refdomainXcabalr^7h]h]U refexplicith]h]h]jVj jlNujPM h]r_7j)r`7}ra7(hj]7h}rb7(h]h]rc7(j]j^7Xcabal-pkg-fieldrd7eh]h]h]uhjZ7h]re7hX include-dirsrf7rg7}rh7(hUhj`7ubahjubaubhX.ri7}rj7(hX.jDNjPNjjthj77ubeubjZ)rk7}rl7(hX\:pkg-field:`install-includes` is typically used to name header files that contain prototypes for foreign imports used in Haskell code in this package, for which the C implementations are also provided with the package. For example, here is a ``.cabal`` file for a hypothetical ``bindings-clib`` package that bundles the C source code for ``clib``::hj37jDjEhj]h}rm7(h]h]h]h]h]ujPM jjth]rn7(jM)ro7}rp7(hX:pkg-field:`install-includes`hjk7jDjEhjPh}rq7(UreftypeX pkg-fieldjRjSXinstall-includesrr7U refdomainXcabalrs7h]h]U refexplicith]h]h]jVj jlNujPM h]rt7j)ru7}rv7(hjr7h}rw7(h]h]rx7(j]js7Xcabal-pkg-fieldry7eh]h]h]uhjo7h]rz7hXinstall-includesr{7r|7}r}7(hUhju7ubahjubaubhX is typically used to name header files that contain prototypes for foreign imports used in Haskell code in this package, for which the C implementations are also provided with the package. For example, here is a r~7r7}r7(hX is typically used to name header files that contain prototypes for foreign imports used in Haskell code in this package, for which the C implementations are also provided with the package. For example, here is a jDNjPNjjthjk7ubj)r7}r7(hX ``.cabal``h}r7(h]h]h]h]h]uhjk7h]r7hX.cabalr7r7}r7(hX.cabalhj7ubahjubhX file for a hypothetical r7r7}r7(hX file for a hypothetical jDNjPNjjthjk7ubj)r7}r7(hX``bindings-clib``h}r7(h]h]h]h]h]uhjk7h]r7hX bindings-clibr7r7}r7(hX bindings-clibhj7ubahjubhX, package that bundles the C source code for r7r7}r7(hX, package that bundles the C source code for jDNjPNjjthjk7ubj)r7}r7(hX``clib``h}r7(h]h]h]h]h]uhjk7h]r7hXclibr7r7}r7(hXclibhj7ubahjubhX:r7}r7(hX:jDNjPNjjthjk7ubeubj)r7}r7(hXIinclude-dirs: cbits c-sources: clib.c install-includes: clib.hhj37jDjEhjh}r7(jjh]h]h]h]h]ujPM jjth]r7hXIinclude-dirs: cbits c-sources: clib.c install-includes: clib.hr7r7}r7(hUhj7ubaubjZ)r7}r7(hXlNow any package that depends (directly or transitively) on the ``bindings-clib`` library can use ``clib.h``.hj37jDjEhj]h}r7(h]h]h]h]h]ujPM jjth]r7(hX?Now any package that depends (directly or transitively) on the r7r7}r7(hX?Now any package that depends (directly or transitively) on the jDNjPNjjthj7ubj)r7}r7(hX``bindings-clib``h}r7(h]h]h]h]h]uhj7h]r7hX bindings-clibr7r7}r7(hX bindings-clibhj7ubahjubhX library can use r7r7}r7(hX library can use jDNjPNjjthj7ubj)r7}r7(hX ``clib.h``h}r7(h]h]h]h]h]uhj7h]r7hXclib.hr7r7}r7(hXclib.hhj7ubahjubhX.r7}r7(hX.jDNjPNjjthj7ubeubjZ)r7}r7(hXNote that in order for files listed in :pkg-field:`install-includes` to be usable when compiling the package itself, they need to be listed in the :pkg-field:`includes` field as well.hj37jDjEhj]h}r7(h]h]h]h]h]ujPM jjth]r7(hX'Note that in order for files listed in r7r7}r7(hX'Note that in order for files listed in jDNjPNjjthj7ubjM)r7}r7(hX:pkg-field:`install-includes`hj7jDjEhjPh}r7(UreftypeX pkg-fieldjRjSXinstall-includesr7U refdomainXcabalr7h]h]U refexplicith]h]h]jVj jlNujPM h]r7j)r7}r7(hj7h}r7(h]h]r7(j]j7Xcabal-pkg-fieldr7eh]h]h]uhj7h]r7hXinstall-includesr7r7}r7(hUhj7ubahjubaubhXO to be usable when compiling the package itself, they need to be listed in the r7r7}r7(hXO to be usable when compiling the package itself, they need to be listed in the jDNjPNjjthj7ubjM)r7}r7(hX:pkg-field:`includes`hj7jDjEhjPh}r7(UreftypeX pkg-fieldjRjSXincludesr7U refdomainXcabalr7h]h]U refexplicith]h]h]jVj jlNujPM h]r7j)r7}r7(hj7h}r7(h]h]r7(j]j7Xcabal-pkg-fieldr7eh]h]h]uhj7h]r7hXincludesr7r7}r7(hUhj7ubahjubaubhX field as well.r7r7}r7(hX field as well.jDNjPNjjthj7ubeubeubeubj )r7}r7(hUhjl)jDjEhjnh}r7(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r7}r7(hUhjl)jDjEhj h}r7(j j Xcabalh]h]h]h]h]j X pkg-fieldr7j j7ujPNjjth]r7(j )r7}r7(hXinclude-dirs: directory listhj7jDjEhj h}r7(h]r7jah]h]h]h]j ujPM jjth]r7(j )r7}r7(hUhj7jDjEhjnh}r7(h]h]h]h]h]Uentries]r7(j! X!include-dirs; package.cabal fieldjUNtr7aujPM jjth]ubj# )r7}r7(hjhj7jDjEhj& h}r7(jjh]h]h]h]h]ujPM jjth]r7hX include-dirsr8r8}r8(hUjDNjPNjjthj7ubaubj, )r8}r8(hj/ hj7jDjEhj0 h}r8(jjh]h]h]h]h]ujPM jjth]r8hX: r8r8}r 8(hUjDNjPNjjthj8ubaubj6 )r 8}r 8(hXdirectory listhj7jDjEhj9 h}r 8(jjh]h]h]h]h]ujPM jjth]r 8hXdirectory listr8r8}r8(hUjDNjPNjjthj 8ubaubeubjh)r8}r8(hUhj7jDjEhjA h}r8(h]h]h]h]h]ujPM jjth]r8jZ)r8}r8(hXA list of directories to search for header files, when preprocessing with ``c2hs``, ``hsc2hs``, ``cpphs`` or the C preprocessor, and also when compiling via C. Directories can be absolute paths (e.g., for system directories) or paths that are relative to the top of the source tree. Cabal looks in these directories when attempting to locate files listed in :pkg-field:`includes` and :pkg-field:`install-includes`.hj8jDjEhj]h}r8(h]h]h]h]h]ujPM jjth]r8(hXJA list of directories to search for header files, when preprocessing with r8r8}r8(hXJA list of directories to search for header files, when preprocessing with jDNjPNjjthj8ubj)r8}r8(hX``c2hs``h}r8(h]h]h]h]h]uhj8h]r8hXc2hsr 8r!8}r"8(hXc2hshj8ubahjubhX, r#8r$8}r%8(hX, r&8jDNjPNjjthj8ubj)r'8}r(8(hX ``hsc2hs``h}r)8(h]h]h]h]h]uhj8h]r*8hXhsc2hsr+8r,8}r-8(hXhsc2hshj'8ubahjubhX, r.8r/8}r08(hj&8hj8ubj)r18}r28(hX ``cpphs``h}r38(h]h]h]h]h]uhj8h]r48hXcpphsr58r68}r78(hXcpphshj18ubahjubhX or the C preprocessor, and also when compiling via C. Directories can be absolute paths (e.g., for system directories) or paths that are relative to the top of the source tree. Cabal looks in these directories when attempting to locate files listed in r88r98}r:8(hX or the C preprocessor, and also when compiling via C. Directories can be absolute paths (e.g., for system directories) or paths that are relative to the top of the source tree. Cabal looks in these directories when attempting to locate files listed in jDNjPNjjthj8ubjM)r;8}r<8(hX:pkg-field:`includes`hj8jDjEhjPh}r=8(UreftypeX pkg-fieldjRjSXincludesr>8U refdomainXcabalr?8h]h]U refexplicith]h]h]jVj jlNujPM h]r@8j)rA8}rB8(hj>8h}rC8(h]h]rD8(j]j?8Xcabal-pkg-fieldrE8eh]h]h]uhj;8h]rF8hXincludesrG8rH8}rI8(hUhjA8ubahjubaubhX and rJ8rK8}rL8(hX and jDNjPNjjthj8ubjM)rM8}rN8(hX:pkg-field:`install-includes`hj8jDjEhjPh}rO8(UreftypeX pkg-fieldjRjSXinstall-includesrP8U refdomainXcabalrQ8h]h]U refexplicith]h]h]jVj jlNujPM h]rR8j)rS8}rT8(hjP8h}rU8(h]h]rV8(j]jQ8Xcabal-pkg-fieldrW8eh]h]h]uhjM8h]rX8hXinstall-includesrY8rZ8}r[8(hUhjS8ubahjubaubhX.r\8}r]8(hX.jDNjPNjjthj8ubeubaubeubj )r^8}r_8(hUhjl)jDjEhjnh}r`8(h]h]h]h]h]Uentries]ujPNjjth]ubjk)ra8}rb8(hUhjl)jDjEhj h}rc8(j j Xcabalh]h]h]h]h]j X pkg-fieldrd8j jd8ujPNjjth]re8(j )rf8}rg8(hXc-sources: filename listhja8jDjEhj h}rh8(h]ri8jPah]h]h]h]j ujPM jjth]rj8(j )rk8}rl8(hUhjf8jDjEhjnh}rm8(h]h]h]h]h]Uentries]rn8(j! Xc-sources; package.cabal fieldjPUNtro8aujPM jjth]ubj# )rp8}rq8(hjOhjf8jDjEhj& h}rr8(jjh]h]h]h]h]ujPM jjth]rs8hX c-sourcesrt8ru8}rv8(hUjDNjPNjjthjp8ubaubj, )rw8}rx8(hj/ hjf8jDjEhj0 h}ry8(jjh]h]h]h]h]ujPM jjth]rz8hX: r{8r|8}r}8(hUjDNjPNjjthjw8ubaubj6 )r~8}r8(hX filename listhjf8jDjEhj9 h}r8(jjh]h]h]h]h]ujPM jjth]r8hX filename listr8r8}r8(hUjDNjPNjjthj~8ubaubeubjh)r8}r8(hUhja8jDjEhjA h}r8(h]h]h]h]h]ujPM jjth]r8jZ)r8}r8(hXJA list of C source files to be compiled and linked with the Haskell files.r8hj8jDjEhj]h}r8(h]h]h]h]h]ujPM jjth]r8hXJA list of C source files to be compiled and linked with the Haskell files.r8r8}r8(hj8jDNjPNjjthj8ubaubaubeubj )r8}r8(hUhjl)jDjEhjnh}r8(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r8}r8(hUhjl)jDjEhj h}r8(j j Xcabalh]h]h]h]h]j X pkg-fieldr8j j8ujPNjjth]r8(j )r8}r8(hXcxx-sources: filename listhj8jDjEhj h}r8(h]r8j9ah]h]h]h]j ujPNjjth]r8(j )r8}r8(hUhj8jDjEhjnh}r8(h]h]h]h]h]Uentries]r8(j! X cxx-sources; package.cabal fieldj9UNtr8aujPNjjth]ubj# )r8}r8(hj8hj8jDjEhj& h}r8(jjh]h]h]h]h]ujPNjjth]r8hX cxx-sourcesr8r8}r8(hUjDNjPNjjthj8ubaubj, )r8}r8(hj/ hj8jDjEhj0 h}r8(jjh]h]h]h]h]ujPNjjth]r8hX: r8r8}r8(hUjDNjPNjjthj8ubaubj6 )r8}r8(hX filename listhj8jDjEhj9 h}r8(jjh]h]h]h]h]ujPNjjth]r8hX filename listr8r8}r8(hUjDNjPNjjthj8ubaubeubjh)r8}r8(hUhj8jDjEhjA h}r8(h]h]h]h]h]ujPNjjth]r8(j)r8}r8(hUhj8jDjEhjh}r8(h]h]h]h]h]ujPNjjth]r8j)r8}r8(hUhj8jDjEhj.h}r8(h]h]h]h]h]ujPNjjth]r8(j )r8}r8(hj+hj8jDjEhj h}r8(h]h]h]h]h]ujPKh]r8hXSincer8r8}r8(hUhj8ubaubj)r8}r8(hU Cabal 2.2r8h}r8(h]h]h]h]h]uhj8h]r8jZ)r8}r8(hj8h}r8(h]h]h]h]h]uhj8h]r8hX Cabal 2.2r8r8}r8(hUhj8ubahj]ubahj-ubeubaubjZ)r8}r8(hXA list of C++ source files to be compiled and linked with the Haskell files. Useful for segregating C and C++ sources when supplying different command-line arguments to the compiler via the :pkg-field:`cc-options` and the :pkg-field:`cxx-options` fields. The files listed in the :pkg-field:`cxx-sources` can reference files listed in the :pkg-field:`c-sources` field and vice-versa. The object files will be linked appropriately.hj8jDjEhj]h}r8(h]h]h]h]h]ujPM jjth]r8(hXA list of C++ source files to be compiled and linked with the Haskell files. Useful for segregating C and C++ sources when supplying different command-line arguments to the compiler via the r8r8}r8(hXA list of C++ source files to be compiled and linked with the Haskell files. Useful for segregating C and C++ sources when supplying different command-line arguments to the compiler via the jDNjPNjjthj8ubjM)r8}r8(hX:pkg-field:`cc-options`hj8jDjEhjPh}r8(UreftypeX pkg-fieldjRjSX cc-optionsr8U refdomainXcabalr8h]h]U refexplicith]h]h]jVj jlNujPM h]r8j)r8}r8(hj8h}r8(h]h]r8(j]j8Xcabal-pkg-fieldr8eh]h]h]uhj8h]r8hX cc-optionsr8r8}r8(hUhj8ubahjubaubhX and the r8r8}r8(hX and the jDNjPNjjthj8ubjM)r8}r8(hX:pkg-field:`cxx-options`hj8jDjEhjPh}r8(UreftypeX pkg-fieldjRjSX cxx-optionsr8U refdomainXcabalr8h]h]U refexplicith]h]h]jVj jlNujPM h]r8j)r8}r8(hj8h}r8(h]h]r8(j]j8Xcabal-pkg-fieldr8eh]h]h]uhj8h]r8hX cxx-optionsr8r8}r8(hUhj8ubahjubaubhX! fields. The files listed in the r8r9}r9(hX! fields. The files listed in the jDNjPNjjthj8ubjM)r9}r9(hX:pkg-field:`cxx-sources`hj8jDjEhjPh}r9(UreftypeX pkg-fieldjRjSX cxx-sourcesr9U refdomainXcabalr9h]h]U refexplicith]h]h]jVj jlNujPM h]r9j)r9}r 9(hj9h}r 9(h]h]r 9(j]j9Xcabal-pkg-fieldr 9eh]h]h]uhj9h]r 9hX cxx-sourcesr9r9}r9(hUhj9ubahjubaubhX# can reference files listed in the r9r9}r9(hX# can reference files listed in the jDNjPNjjthj8ubjM)r9}r9(hX:pkg-field:`c-sources`hj8jDjEhjPh}r9(UreftypeX pkg-fieldjRjSX c-sourcesr9U refdomainXcabalr9h]h]U refexplicith]h]h]jVj jlNujPM h]r9j)r9}r9(hj9h}r9(h]h]r9(j]j9Xcabal-pkg-fieldr9eh]h]h]uhj9h]r9hX c-sourcesr 9r!9}r"9(hUhj9ubahjubaubhXE field and vice-versa. The object files will be linked appropriately.r#9r$9}r%9(hXE field and vice-versa. The object files will be linked appropriately.jDNjPNjjthj8ubeubeubeubj )r&9}r'9(hUhjl)jDjEhjnh}r(9(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r)9}r*9(hUhjl)jDjEhj h}r+9(j j Xcabalh]h]h]h]h]j X pkg-fieldr,9j j,9ujPNjjth]r-9(j )r.9}r/9(hXasm-sources: filename listhj)9jDjEhj h}r09(h]r19jah]h]h]h]j ujPNjjth]r29(j )r39}r49(hUhj.9jDjEhjnh}r59(h]h]h]h]h]Uentries]r69(j! X asm-sources; package.cabal fieldjUNtr79aujPNjjth]ubj# )r89}r99(hjhj.9jDjEhj& h}r:9(jjh]h]h]h]h]ujPNjjth]r;9hX asm-sourcesr<9r=9}r>9(hUjDNjPNjjthj89ubaubj, )r?9}r@9(hj/ hj.9jDjEhj0 h}rA9(jjh]h]h]h]h]ujPNjjth]rB9hX: rC9rD9}rE9(hUjDNjPNjjthj?9ubaubj6 )rF9}rG9(hX filename listhj.9jDjEhj9 h}rH9(jjh]h]h]h]h]ujPNjjth]rI9hX filename listrJ9rK9}rL9(hUjDNjPNjjthjF9ubaubeubjh)rM9}rN9(hUhj)9jDjEhjA h}rO9(h]h]h]h]h]ujPNjjth]rP9(j)rQ9}rR9(hUhjM9jDjEhjh}rS9(h]h]h]h]h]ujPNjjth]rT9j)rU9}rV9(hUhjQ9jDjEhj.h}rW9(h]h]h]h]h]ujPNjjth]rX9(j )rY9}rZ9(hj+hjU9jDjEhj h}r[9(h]h]h]h]h]ujPKh]r\9hXSincer]9r^9}r_9(hUhjY9ubaubj)r`9}ra9(hU Cabal 3.0rb9h}rc9(h]h]h]h]h]uhjU9h]rd9jZ)re9}rf9(hjb9h}rg9(h]h]h]h]h]uhj`9h]rh9hX Cabal 3.0ri9rj9}rk9(hUhje9ubahj]ubahj-ubeubaubjZ)rl9}rm9(hXQA list of assembly source files to be compiled and linked with the Haskell files.rn9hjM9jDjEhj]h}ro9(h]h]h]h]h]ujPM jjth]rp9hXQA list of assembly source files to be compiled and linked with the Haskell files.rq9rr9}rs9(hjn9jDNjPNjjthjl9ubaubeubeubj )rt9}ru9(hUhjl)jDjEhjnh}rv9(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rw9}rx9(hUhjl)jDjEhj h}ry9(j j Xcabalh]h]h]h]h]j X pkg-fieldrz9j jz9ujPNjjth]r{9(j )r|9}r}9(hXcmm-sources: filename listhjw9jDjEhj h}r~9(h]r9jah]h]h]h]j ujPNjjth]r9(j )r9}r9(hUhj|9jDjEhjnh}r9(h]h]h]h]h]Uentries]r9(j! X cmm-sources; package.cabal fieldjUNtr9aujPNjjth]ubj# )r9}r9(hjhj|9jDjEhj& h}r9(jjh]h]h]h]h]ujPNjjth]r9hX cmm-sourcesr9r9}r9(hUjDNjPNjjthj9ubaubj, )r9}r9(hj/ hj|9jDjEhj0 h}r9(jjh]h]h]h]h]ujPNjjth]r9hX: r9r9}r9(hUjDNjPNjjthj9ubaubj6 )r9}r9(hX filename listhj|9jDjEhj9 h}r9(jjh]h]h]h]h]ujPNjjth]r9hX filename listr9r9}r9(hUjDNjPNjjthj9ubaubeubjh)r9}r9(hUhjw9jDjEhjA h}r9(h]h]h]h]h]ujPNjjth]r9(j)r9}r9(hUhj9jDjEhjh}r9(h]h]h]h]h]ujPNjjth]r9j)r9}r9(hUhj9jDjEhj.h}r9(h]h]h]h]h]ujPNjjth]r9(j )r9}r9(hj+hj9jDjEhj h}r9(h]h]h]h]h]ujPKh]r9hXSincer9r9}r9(hUhj9ubaubj)r9}r9(hU Cabal 3.0r9h}r9(h]h]h]h]h]uhj9h]r9jZ)r9}r9(hj9h}r9(h]h]h]h]h]uhj9h]r9hX Cabal 3.0r9r9}r9(hUhj9ubahj]ubahj-ubeubaubjZ)r9}r9(hXLA list of C-- source files to be compiled and linked with the Haskell files.r9hj9jDjEhj]h}r9(h]h]h]h]h]ujPM jjth]r9hXMA list of C– source files to be compiled and linked with the Haskell files.r9r9}r9(hj9jDNjPNjjthj9ubaubeubeubj )r9}r9(hUhjl)jDjEhjnh}r9(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r9}r9(hUhjl)jDjEhj h}r9(j j Xcabalh]h]h]h]h]j X pkg-fieldr9j j9ujPNjjth]r9(j )r9}r9(hXjs-sources: filename listhj9jDjEhj h}r9(h]r9jah]h]h]h]j ujPM jjth]r9(j )r9}r9(hUhj9jDjEhjnh}r9(h]h]h]h]h]Uentries]r9(j! Xjs-sources; package.cabal fieldjUNtr9aujPM jjth]ubj# )r9}r9(hjhj9jDjEhj& h}r9(jjh]h]h]h]h]ujPM jjth]r9hX js-sourcesr9r9}r9(hUjDNjPNjjthj9ubaubj, )r9}r9(hj/ hj9jDjEhj0 h}r9(jjh]h]h]h]h]ujPM jjth]r9hX: r9r9}r9(hUjDNjPNjjthj9ubaubj6 )r9}r9(hX filename listhj9jDjEhj9 h}r9(jjh]h]h]h]h]ujPM jjth]r9hX filename listr9r9}r9(hUjDNjPNjjthj9ubaubeubjh)r9}r9(hUhj9jDjEhjA h}r9(h]h]h]h]h]ujPM jjth]r9jZ)r9}r9(hXdA list of JavaScript source files to be linked with the Haskell files (only for JavaScript targets).r9hj9jDjEhj]h}r9(h]h]h]h]h]ujPM jjth]r9hXdA list of JavaScript source files to be linked with the Haskell files (only for JavaScript targets).r9r9}r9(hj9jDNjPNjjthj9ubaubaubeubj )r9}r9(hUhjl)jDjEhjnh}r9(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r9}r9(hUhjl)jDjEhj h}r9(j j Xcabalh]h]h]h]h]j X pkg-fieldr9j j9ujPNjjth]r9(j )r9}r9(hXextra-libraries: token listhj9jDjEhj h}r9(h]r:jXah]h]h]h]j ujPM jjth]r:(j )r:}r:(hUhj9jDjEhjnh}r:(h]h]h]h]h]Uentries]r:(j! X$extra-libraries; package.cabal fieldjXUNtr:aujPM jjth]ubj# )r:}r:(hjWhj9jDjEhj& h}r :(jjh]h]h]h]h]ujPM jjth]r :hXextra-librariesr :r :}r :(hUjDNjPNjjthj:ubaubj, )r:}r:(hj/ hj9jDjEhj0 h}r:(jjh]h]h]h]h]ujPM jjth]r:hX: r:r:}r:(hUjDNjPNjjthj:ubaubj6 )r:}r:(hX token listhj9jDjEhj9 h}r:(jjh]h]h]h]h]ujPM jjth]r:hX token listr:r:}r:(hUjDNjPNjjthj:ubaubeubjh)r:}r:(hUhj9jDjEhjA h}r:(h]h]h]h]h]ujPM jjth]r:jZ)r :}r!:(hX'A list of extra libraries to link with.r":hj:jDjEhj]h}r#:(h]h]h]h]h]ujPM jjth]r$:hX'A list of extra libraries to link with.r%:r&:}r':(hj":jDNjPNjjthj :ubaubaubeubj )r(:}r):(hUhjl)jDjEhjnh}r*:(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r+:}r,:(hUhjl)jDjEhj h}r-:(j j Xcabalh]h]h]h]h]j X pkg-fieldr.:j j.:ujPNjjth]r/:(j )r0:}r1:(hX extra-ghci-libraries: token listhj+:jDjEhj h}r2:(h]r3:jah]h]h]h]j ujPM jjth]r4:(j )r5:}r6:(hUhj0:jDjEhjnh}r7:(h]h]h]h]h]Uentries]r8:(j! X)extra-ghci-libraries; package.cabal fieldjUNtr9:aujPM jjth]ubj# )r::}r;:(hjhj0:jDjEhj& h}r<:(jjh]h]h]h]h]ujPM jjth]r=:hXextra-ghci-librariesr>:r?:}r@:(hUjDNjPNjjthj::ubaubj, )rA:}rB:(hj/ hj0:jDjEhj0 h}rC:(jjh]h]h]h]h]ujPM jjth]rD:hX: rE:rF:}rG:(hUjDNjPNjjthjA:ubaubj6 )rH:}rI:(hX token listhj0:jDjEhj9 h}rJ:(jjh]h]h]h]h]ujPM jjth]rK:hX token listrL:rM:}rN:(hUjDNjPNjjthjH:ubaubeubjh)rO:}rP:(hUhj+:jDjEhjA h}rQ:(h]h]h]h]h]ujPM jjth]rR:jZ)rS:}rT:(hXgA list of extra libraries to be used instead of 'extra-libraries' when the package is loaded with GHCi.rU:hjO:jDjEhj]h}rV:(h]h]h]h]h]ujPM jjth]rW:hXkA list of extra libraries to be used instead of ‘extra-libraries’ when the package is loaded with GHCi.rX:rY:}rZ:(hjU:jDNjPNjjthjS:ubaubaubeubj )r[:}r\:(hUhjl)jDjEhjnh}r]:(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r^:}r_:(hUhjl)jDjEhj h}r`:(j j Xcabalh]h]h]h]h]j X pkg-fieldra:j ja:ujPNjjth]rb:(j )rc:}rd:(hX#extra-bundled-libraries: token listhj^:jDjEhj h}re:(h]rf:jsah]h]h]h]j ujPNjjth]rg:(j )rh:}ri:(hUhjc:jDjEhjnh}rj:(h]h]h]h]h]Uentries]rk:(j! X,extra-bundled-libraries; package.cabal fieldjsUNtrl:aujPNjjth]ubj# )rm:}rn:(hjrhjc:jDjEhj& h}ro:(jjh]h]h]h]h]ujPNjjth]rp:hXextra-bundled-librariesrq:rr:}rs:(hUjDNjPNjjthjm:ubaubj, )rt:}ru:(hj/ hjc:jDjEhj0 h}rv:(jjh]h]h]h]h]ujPNjjth]rw:hX: rx:ry:}rz:(hUjDNjPNjjthjt:ubaubj6 )r{:}r|:(hX token listhjc:jDjEhj9 h}r}:(jjh]h]h]h]h]ujPNjjth]r~:hX token listr:r:}r:(hUjDNjPNjjthj{:ubaubeubjh)r:}r:(hUhj^:jDjEhjA h}r:(h]h]h]h]h]ujPNjjth]r:(j)r:}r:(hUhj:jDjEhjh}r:(h]h]h]h]h]ujPNjjth]r:j)r:}r:(hUhj:jDjEhj.h}r:(h]h]h]h]h]ujPNjjth]r:(j )r:}r:(hj+hj:jDjEhj h}r:(h]h]h]h]h]ujPKh]r:hXSincer:r:}r:(hUhj:ubaubj)r:}r:(hU Cabal 2.2r:h}r:(h]h]h]h]h]uhj:h]r:jZ)r:}r:(hj:h}r:(h]h]h]h]h]uhj:h]r:hX Cabal 2.2r:r:}r:(hUhj:ubahj]ubahj-ubeubaubjZ)r:}r:(hXA list of libraries that are supposed to be copied from the build directory alongside the produced Haskell libraries. Note that you are under the obligation to produce those libraries in the build directory (e.g. via a custom setup). Libraries listed here will be included when ``copy``-ing packages and be listed in the ``hs-libraries`` of the package configuration in the package database. Library names must either be prefixed with "HS" or "C" and corresponding library file names must match:hj:jDjEhj]h}r:(h]h]h]h]h]ujPM jjth]r:(hXA list of libraries that are supposed to be copied from the build directory alongside the produced Haskell libraries. Note that you are under the obligation to produce those libraries in the build directory (e.g. via a custom setup). Libraries listed here will be included when r:r:}r:(hXA list of libraries that are supposed to be copied from the build directory alongside the produced Haskell libraries. Note that you are under the obligation to produce those libraries in the build directory (e.g. via a custom setup). Libraries listed here will be included when jDNjPNjjthj:ubj)r:}r:(hX``copy``h}r:(h]h]h]h]h]uhj:h]r:hXcopyr:r:}r:(hXcopyhj:ubahjubhX#-ing packages and be listed in the r:r:}r:(hX#-ing packages and be listed in the jDNjPNjjthj:ubj)r:}r:(hX``hs-libraries``h}r:(h]h]h]h]h]uhj:h]r:hX hs-librariesr:r:}r:(hX hs-librarieshj:ubahjubhX of the package configuration in the package database. Library names must either be prefixed with “HS” or “C” and corresponding library file names must match:r:r:}r:(hX of the package configuration in the package database. Library names must either be prefixed with "HS" or "C" and corresponding library file names must match:jDNjPNjjthj:ubeubj@)r:}r:(hUhj:jDNhjCh}r:(h]h]h]h]h]ujPNjjth]r:j )r:}r:(hUhj:jDjEhj h}r:(j X-h]h]h]h]h]ujPM h]r:(j )r:}r:(hXLibraries with name "HS": - `libHS.a` - `libHS-ghc.*`h}r:(h]h]h]h]h]uhj:h]r:j)r:}r:(hUh}r:(h]h]h]h]h]uhj:h]r:j)r:}r:(hXLibraries with name "HS": - `libHS.a` - `libHS-ghc.*`hj:jDjEhjh}r:(h]h]h]h]h]ujPM h]r:(j)r:}r:(hX'Libraries with name "HS":r:hj:jDjEhjh}r:(h]h]h]h]h]ujPM h]r:hX+Libraries with name “HS”:r:r:}r:(hj:hj:ubaubj)r:}r:(hUh}r:(h]h]h]h]h]uhj:h]r:j )r:}r:(hUhj:jDjEhj h}r:(j X-h]h]h]h]h]ujPM h]r:(j )r:}r:(hX`libHS.a`r:h}r:(h]h]h]h]h]uhj:h]r:jZ)r:}r:(hj:hj:jDjEhj]h}r:(h]h]h]h]h]ujPM h]r:j")r:}r:(hj:h}r:(h]h]h]h]h]uhj:h]r:hXlibHS.ar:r:}r:(hXlibHS.ahj:ubahj"ubaubahj ubj )r:}r:(hXL`libHS-ghc.*`r:h}r:(h]h]h]h]h]uhj:h]r:jZ)r:}r:(hj:hj:jDjEhj]h}r:(h]h]h]h]h]ujPM h]r:j")r:}r:(hj:h}r:(h]h]h]h]h]uhj:h]r:hXJlibHS-ghc.*r:r:}r:(hXJlibHS-ghc.*hj:ubahj"ubaubahj ubeubahj/ubeubahjubahj ubj )r;}r;(hXpLibraries with name "C": - `libC.a` - `lib.*`h}r;(h]h]h]h]h]uhj:h]r;j)r;}r;(hUh}r;(h]h]h]h]h]uhj;h]r;j)r;}r ;(hXnLibraries with name "C": - `libC.a` - `lib.*`hj;jDjEhjh}r ;(h]h]h]h]h]ujPM h]r ;(j)r ;}r ;(hX&Libraries with name "C":r;hj;jDjEhjh}r;(h]h]h]h]h]ujPM h]r;hX*Libraries with name “C”:r;r;}r;(hj;hj ;ubaubj)r;}r;(hUh}r;(h]h]h]h]h]uhj;h]r;j )r;}r;(hUhj;jDjEhj h}r;(j X-h]h]h]h]h]ujPM h]r;(j )r;}r;(hX`libC.a`r;h}r;(h]h]h]h]h]uhj;h]r ;jZ)r!;}r";(hj;hj;jDjEhj]h}r#;(h]h]h]h]h]ujPM h]r$;j")r%;}r&;(hj;h}r';(h]h]h]h]h]uhj!;h]r(;hXlibC.ar);r*;}r+;(hXlibC.ahj%;ubahj"ubaubahj ubj )r,;}r-;(hX,`lib.*`r.;h}r/;(h]h]h]h]h]uhj;h]r0;jZ)r1;}r2;(hj.;hj,;jDjEhj]h}r3;(h]h]h]h]h]ujPM h]r4;j")r5;}r6;(hj.;h}r7;(h]h]h]h]h]uhj1;h]r8;hX*lib.*r9;r:;}r;;(hX*lib.*hj5;ubahj"ubaubahj ubeubahj/ubeubahjubahj ubeubaubeubeubj )r<;}r=;(hUhjl)jDjEhjnh}r>;(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r?;}r@;(hUhjl)jDjEhj h}rA;(j j Xcabalh]h]h]h]h]j X pkg-fieldrB;j jB;ujPNjjth]rC;(j )rD;}rE;(hXextra-lib-dirs: directory listhj?;jDjEhj h}rF;(h]rG;jah]h]h]h]j ujPM jjth]rH;(j )rI;}rJ;(hUhjD;jDjEhjnh}rK;(h]h]h]h]h]Uentries]rL;(j! X#extra-lib-dirs; package.cabal fieldjUNtrM;aujPM jjth]ubj# )rN;}rO;(hjhjD;jDjEhj& h}rP;(jjh]h]h]h]h]ujPM jjth]rQ;hXextra-lib-dirsrR;rS;}rT;(hUjDNjPNjjthjN;ubaubj, )rU;}rV;(hj/ hjD;jDjEhj0 h}rW;(jjh]h]h]h]h]ujPM jjth]rX;hX: rY;rZ;}r[;(hUjDNjPNjjthjU;ubaubj6 )r\;}r];(hXdirectory listhjD;jDjEhj9 h}r^;(jjh]h]h]h]h]ujPM jjth]r_;hXdirectory listr`;ra;}rb;(hUjDNjPNjjthj\;ubaubeubjh)rc;}rd;(hUhj?;jDjEhjA h}re;(h]h]h]h]h]ujPM jjth]rf;jZ)rg;}rh;(hX.A list of directories to search for libraries.ri;hjc;jDjEhj]h}rj;(h]h]h]h]h]ujPM jjth]rk;hX.A list of directories to search for libraries.rl;rm;}rn;(hji;jDNjPNjjthjg;ubaubaubeubj )ro;}rp;(hUhjl)jDjEhjnh}rq;(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rr;}rs;(hUhjl)jDjEhj h}rt;(j j Xcabalh]h]h]h]h]j X pkg-fieldru;j ju;ujPNjjth]rv;(j )rw;}rx;(hXcc-options: token listhjr;jDjEhj h}ry;(h]rz;j5ah]h]h]h]j ujPM jjth]r{;(j )r|;}r};(hUhjw;jDjEhjnh}r~;(h]h]h]h]h]Uentries]r;(j! Xcc-options; package.cabal fieldj5UNtr;aujPM jjth]ubj# )r;}r;(hj4hjw;jDjEhj& h}r;(jjh]h]h]h]h]ujPM jjth]r;hX cc-optionsr;r;}r;(hUjDNjPNjjthj;ubaubj, )r;}r;(hj/ hjw;jDjEhj0 h}r;(jjh]h]h]h]h]ujPM jjth]r;hX: r;r;}r;(hUjDNjPNjjthj;ubaubj6 )r;}r;(hX token listhjw;jDjEhj9 h}r;(jjh]h]h]h]h]ujPM jjth]r;hX token listr;r;}r;(hUjDNjPNjjthj;ubaubeubjh)r;}r;(hUhjr;jDjEhjA h}r;(h]h]h]h]h]ujPM jjth]r;jZ)r;}r;(hXCommand-line arguments to be passed to the C compiler. Since the arguments are compiler-dependent, this field is more useful with the setup described in the section on `system-dependent parameters`_.hj;jDjEhj]h}r;(h]h]h]h]h]ujPM jjth]r;(hXCommand-line arguments to be passed to the C compiler. Since the arguments are compiler-dependent, this field is more useful with the setup described in the section on r;r;}r;(hXCommand-line arguments to be passed to the C compiler. Since the arguments are compiler-dependent, this field is more useful with the setup described in the section on jDNjPNjjthj;ubj!)r;}r;(hX`system-dependent parameters`_j$Khj;hj%h}r;(UnameXsystem-dependent parametersh]h]h]h]h]j'jo uh]r;hXsystem-dependent parametersr;r;}r;(hXsystem-dependent parametershj;ubaubhX.r;}r;(hX.jDNjPNjjthj;ubeubaubeubj )r;}r;(hUhjl)jDjEhjnh}r;(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r;}r;(hUhjl)jDjEhj h}r;(j j Xcabalh]h]h]h]h]j X pkg-fieldr;j j;ujPNjjth]r;(j )r;}r;(hXcpp-options: token listhj;jDjEhj h}r;(h]r;jah]h]h]h]j ujPM jjth]r;(j )r;}r;(hUhj;jDjEhjnh}r;(h]h]h]h]h]Uentries]r;(j! X cpp-options; package.cabal fieldjUNtr;aujPM jjth]ubj# )r;}r;(hjhj;jDjEhj& h}r;(jjh]h]h]h]h]ujPM jjth]r;hX cpp-optionsr;r;}r;(hUjDNjPNjjthj;ubaubj, )r;}r;(hj/ hj;jDjEhj0 h}r;(jjh]h]h]h]h]ujPM jjth]r;hX: r;r;}r;(hUjDNjPNjjthj;ubaubj6 )r;}r;(hX token listhj;jDjEhj9 h}r;(jjh]h]h]h]h]ujPM jjth]r;hX token listr;r;}r;(hUjDNjPNjjthj;ubaubeubjh)r;}r;(hUhj;jDjEhjA h}r;(h]h]h]h]h]ujPM jjth]r;jZ)r;}r;(hXCommand-line arguments for pre-processing Haskell code. Applies to Haskell source and other pre-processed Haskell source like .hsc .chs. Does not apply to C code, that's what cc-options is for.r;hj;jDjEhj]h}r;(h]h]h]h]h]ujPM jjth]r;hXCommand-line arguments for pre-processing Haskell code. Applies to Haskell source and other pre-processed Haskell source like .hsc .chs. Does not apply to C code, that’s what cc-options is for.r;r;}r;(hj;jDNjPNjjthj;ubaubaubeubj )r;}r;(hUhjl)jDjEhjnh}r;(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r;}r;(hUhjl)jDjEhj h}r;(j j Xcabalh]h]h]h]h]j X pkg-fieldr;j j;ujPNjjth]r;(j )r;}r;(hXcxx-options: token listhj;jDjEhj h}r;(h]r;j#ah]h]h]h]j ujPNjjth]r;(j )r;}r;(hUhj;jDjEhjnh}r;(h]h]h]h]h]Uentries]r;(j! X cxx-options; package.cabal fieldj#UNtr;aujPNjjth]ubj# )r;}r;(hj"hj;jDjEhj& h}r;(jjh]h]h]h]h]ujPNjjth]r;hX cxx-optionsr;r;}r;(hUjDNjPNjjthj;ubaubj, )r;}r;(hj/ hj;jDjEhj0 h}r;(jjh]h]h]h]h]ujPNjjth]r;hX: r;r;}r;(hUjDNjPNjjthj;ubaubj6 )r;}r;(hX token listhj;jDjEhj9 h}r;(jjh]h]h]h]h]ujPNjjth]r<hX token listr<r<}r<(hUjDNjPNjjthj;ubaubeubjh)r<}r<(hUhj;jDjEhjA h}r<(h]h]h]h]h]ujPNjjth]r<(j)r<}r <(hUhj<jDjEhjh}r <(h]h]h]h]h]ujPNjjth]r <j)r <}r <(hUhj<jDjEhj.h}r<(h]h]h]h]h]ujPNjjth]r<(j )r<}r<(hj+hj <jDjEhj h}r<(h]h]h]h]h]ujPKh]r<hXSincer<r<}r<(hUhj<ubaubj)r<}r<(hU Cabal 2.2r<h}r<(h]h]h]h]h]uhj <h]r<jZ)r<}r<(hj<h}r<(h]h]h]h]h]uhj<h]r<hX Cabal 2.2r <r!<}r"<(hUhj<ubahj]ubahj-ubeubaubjZ)r#<}r$<(hX0Command-line arguments to be passed to the compiler when compiling C++ code. The C++ sources to which these command-line arguments should be applied can be specified with the :pkg-field:`cxx-sources` field. Command-line options for C and C++ can be passed separately to the compiler when compiling both C and C++ sources by segregating the C and C++ sources with the :pkg-field:`c-sources` and :pkg-field:`cxx-sources` fields respectively, and providing different command-line arguments with the :pkg-field:`cc-options` and the :pkg-field:`cxx-options` fields.hj<jDjEhj]h}r%<(h]h]h]h]h]ujPM jjth]r&<(hXCommand-line arguments to be passed to the compiler when compiling C++ code. The C++ sources to which these command-line arguments should be applied can be specified with the r'<r(<}r)<(hXCommand-line arguments to be passed to the compiler when compiling C++ code. The C++ sources to which these command-line arguments should be applied can be specified with the jDNjPNjjthj#<ubjM)r*<}r+<(hX:pkg-field:`cxx-sources`hj#<jDjEhjPh}r,<(UreftypeX pkg-fieldjRjSX cxx-sourcesr-<U refdomainXcabalr.<h]h]U refexplicith]h]h]jVj jlNujPM h]r/<j)r0<}r1<(hj-<h}r2<(h]h]r3<(j]j.<Xcabal-pkg-fieldr4<eh]h]h]uhj*<h]r5<hX cxx-sourcesr6<r7<}r8<(hUhj0<ubahjubaubhX field. Command-line options for C and C++ can be passed separately to the compiler when compiling both C and C++ sources by segregating the C and C++ sources with the r9<r:<}r;<(hX field. Command-line options for C and C++ can be passed separately to the compiler when compiling both C and C++ sources by segregating the C and C++ sources with the jDNjPNjjthj#<ubjM)r<<}r=<(hX:pkg-field:`c-sources`hj#<jDjEhjPh}r><(UreftypeX pkg-fieldjRjSX c-sourcesr?<U refdomainXcabalr@<h]h]U refexplicith]h]h]jVj jlNujPM h]rA<j)rB<}rC<(hj?<h}rD<(h]h]rE<(j]j@<Xcabal-pkg-fieldrF<eh]h]h]uhj<<h]rG<hX c-sourcesrH<rI<}rJ<(hUhjB<ubahjubaubhX and rK<rL<}rM<(hX and jDNjPNjjthj#<ubjM)rN<}rO<(hX:pkg-field:`cxx-sources`hj#<jDjEhjPh}rP<(UreftypeX pkg-fieldjRjSX cxx-sourcesrQ<U refdomainXcabalrR<h]h]U refexplicith]h]h]jVj jlNujPM h]rS<j)rT<}rU<(hjQ<h}rV<(h]h]rW<(j]jR<Xcabal-pkg-fieldrX<eh]h]h]uhjN<h]rY<hX cxx-sourcesrZ<r[<}r\<(hUhjT<ubahjubaubhXN fields respectively, and providing different command-line arguments with the r]<r^<}r_<(hXN fields respectively, and providing different command-line arguments with the jDNjPNjjthj#<ubjM)r`<}ra<(hX:pkg-field:`cc-options`hj#<jDjEhjPh}rb<(UreftypeX pkg-fieldjRjSX cc-optionsrc<U refdomainXcabalrd<h]h]U refexplicith]h]h]jVj jlNujPM h]re<j)rf<}rg<(hjc<h}rh<(h]h]ri<(j]jd<Xcabal-pkg-fieldrj<eh]h]h]uhj`<h]rk<hX cc-optionsrl<rm<}rn<(hUhjf<ubahjubaubhX and the ro<rp<}rq<(hX and the jDNjPNjjthj#<ubjM)rr<}rs<(hX:pkg-field:`cxx-options`hj#<jDjEhjPh}rt<(UreftypeX pkg-fieldjRjSX cxx-optionsru<U refdomainXcabalrv<h]h]U refexplicith]h]h]jVj jlNujPM h]rw<j)rx<}ry<(hju<h}rz<(h]h]r{<(j]jv<Xcabal-pkg-fieldr|<eh]h]h]uhjr<h]r}<hX cxx-optionsr~<r<}r<(hUhjx<ubahjubaubhX fields.r<r<}r<(hX fields.jDNjPNjjthj#<ubeubeubeubj )r<}r<(hUhjl)jDjEhjnh}r<(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r<}r<(hUhjl)jDjEhj h}r<(j j Xcabalh]h]h]h]h]j X pkg-fieldr<j j<ujPNjjth]r<(j )r<}r<(hXcmm-options: token listhj<jDjEhj h}r<(h]r<jah]h]h]h]j ujPNjjth]r<(j )r<}r<(hUhj<jDjEhjnh}r<(h]h]h]h]h]Uentries]r<(j! X cmm-options; package.cabal fieldjUNtr<aujPNjjth]ubj# )r<}r<(hjhj<jDjEhj& h}r<(jjh]h]h]h]h]ujPNjjth]r<hX cmm-optionsr<r<}r<(hUjDNjPNjjthj<ubaubj, )r<}r<(hj/ hj<jDjEhj0 h}r<(jjh]h]h]h]h]ujPNjjth]r<hX: r<r<}r<(hUjDNjPNjjthj<ubaubj6 )r<}r<(hX token listhj<jDjEhj9 h}r<(jjh]h]h]h]h]ujPNjjth]r<hX token listr<r<}r<(hUjDNjPNjjthj<ubaubeubjh)r<}r<(hUhj<jDjEhjA h}r<(h]h]h]h]h]ujPNjjth]r<(j)r<}r<(hUhj<jDjEhjh}r<(h]h]h]h]h]ujPNjjth]r<j)r<}r<(hUhj<jDjEhj.h}r<(h]h]h]h]h]ujPNjjth]r<(j )r<}r<(hj+hj<jDjEhj h}r<(h]h]h]h]h]ujPKh]r<hXSincer<r<}r<(hUhj<ubaubj)r<}r<(hU Cabal 3.0r<h}r<(h]h]h]h]h]uhj<h]r<jZ)r<}r<(hj<h}r<(h]h]h]h]h]uhj<h]r<hX Cabal 3.0r<r<}r<(hUhj<ubahj]ubahj-ubeubaubjZ)r<}r<(hXoCommand-line arguments to be passed to the compiler when compiling C-- code. See also :pkg-field:`cmm-sources`.hj<jDjEhj]h}r<(h]h]h]h]h]ujPM jjth]r<(hXWCommand-line arguments to be passed to the compiler when compiling C– code. See also r<r<}r<(hXVCommand-line arguments to be passed to the compiler when compiling C-- code. See also jDNjPNjjthj<ubjM)r<}r<(hX:pkg-field:`cmm-sources`hj<jDjEhjPh}r<(UreftypeX pkg-fieldjRjSX cmm-sourcesr<U refdomainXcabalr<h]h]U refexplicith]h]h]jVj jlNujPM h]r<j)r<}r<(hj<h}r<(h]h]r<(j]j<Xcabal-pkg-fieldr<eh]h]h]uhj<h]r<hX cmm-sourcesr<r<}r<(hUhj<ubahjubaubhX.r<}r<(hX.jDNjPNjjthj<ubeubeubeubj )r<}r<(hUhjl)jDjEhjnh}r<(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r<}r<(hUhjl)jDjEhj h}r<(j j Xcabalh]h]h]h]h]j X pkg-fieldr<j j<ujPNjjth]r<(j )r<}r<(hXasm-options: token listhj<jDjEhj h}r<(h]r<jah]h]h]h]j ujPNjjth]r<(j )r<}r<(hUhj<jDjEhjnh}r<(h]h]h]h]h]Uentries]r<(j! X asm-options; package.cabal fieldjUNtr<aujPNjjth]ubj# )r<}r<(hjhj<jDjEhj& h}r<(jjh]h]h]h]h]ujPNjjth]r<hX asm-optionsr<r<}r<(hUjDNjPNjjthj<ubaubj, )r<}r<(hj/ hj<jDjEhj0 h}r<(jjh]h]h]h]h]ujPNjjth]r<hX: r<r=}r=(hUjDNjPNjjthj<ubaubj6 )r=}r=(hX token listhj<jDjEhj9 h}r=(jjh]h]h]h]h]ujPNjjth]r=hX token listr=r=}r=(hUjDNjPNjjthj=ubaubeubjh)r =}r =(hUhj<jDjEhjA h}r =(h]h]h]h]h]ujPNjjth]r =(j)r =}r=(hUhj =jDjEhjh}r=(h]h]h]h]h]ujPNjjth]r=j)r=}r=(hUhj =jDjEhj.h}r=(h]h]h]h]h]ujPNjjth]r=(j )r=}r=(hj+hj=jDjEhj h}r=(h]h]h]h]h]ujPKh]r=hXSincer=r=}r=(hUhj=ubaubj)r=}r=(hU Cabal 3.0r=h}r=(h]h]h]h]h]uhj=h]r =jZ)r!=}r"=(hj=h}r#=(h]h]h]h]h]uhj=h]r$=hX Cabal 3.0r%=r&=}r'=(hUhj!=ubahj]ubahj-ubeubaubjZ)r(=}r)=(hXvCommand-line arguments to be passed to the assembler when compiling assembler code. See also :pkg-field:`asm-sources`.hj =jDjEhj]h}r*=(h]h]h]h]h]ujPM jjth]r+=(hX]Command-line arguments to be passed to the assembler when compiling assembler code. See also r,=r-=}r.=(hX]Command-line arguments to be passed to the assembler when compiling assembler code. See also jDNjPNjjthj(=ubjM)r/=}r0=(hX:pkg-field:`asm-sources`hj(=jDjEhjPh}r1=(UreftypeX pkg-fieldjRjSX asm-sourcesr2=U refdomainXcabalr3=h]h]U refexplicith]h]h]jVj jlNujPM h]r4=j)r5=}r6=(hj2=h}r7=(h]h]r8=(j]j3=Xcabal-pkg-fieldr9=eh]h]h]uhj/=h]r:=hX asm-sourcesr;=r<=}r==(hUhj5=ubahjubaubhX.r>=}r?=(hX.jDNjPNjjthj(=ubeubeubeubj )r@=}rA=(hUhjl)jDjEhjnh}rB=(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rC=}rD=(hUhjl)jDjEhj h}rE=(j j Xcabalh]h]h]h]h]j X pkg-fieldrF=j jF=ujPNjjth]rG=(j )rH=}rI=(hXld-options: token listhjC=jDjEhj h}rJ=(h]rK=jah]h]h]h]j ujPM jjth]rL=(j )rM=}rN=(hUhjH=jDjEhjnh}rO=(h]h]h]h]h]Uentries]rP=(j! Xld-options; package.cabal fieldjUNtrQ=aujPM jjth]ubj# )rR=}rS=(hjhjH=jDjEhj& h}rT=(jjh]h]h]h]h]ujPM jjth]rU=hX ld-optionsrV=rW=}rX=(hUjDNjPNjjthjR=ubaubj, )rY=}rZ=(hj/ hjH=jDjEhj0 h}r[=(jjh]h]h]h]h]ujPM jjth]r\=hX: r]=r^=}r_=(hUjDNjPNjjthjY=ubaubj6 )r`=}ra=(hX token listhjH=jDjEhj9 h}rb=(jjh]h]h]h]h]ujPM jjth]rc=hX token listrd=re=}rf=(hUjDNjPNjjthj`=ubaubeubjh)rg=}rh=(hUhjC=jDjEhjA h}ri=(h]h]h]h]h]ujPM jjth]rj=jZ)rk=}rl=(hXCommand-line arguments to be passed to the linker. Since the arguments are compiler-dependent, this field is more useful with the setup described in the section on `system-dependent parameters`_.hjg=jDjEhj]h}rm=(h]h]h]h]h]ujPM jjth]rn=(hXCommand-line arguments to be passed to the linker. Since the arguments are compiler-dependent, this field is more useful with the setup described in the section on ro=rp=}rq=(hXCommand-line arguments to be passed to the linker. Since the arguments are compiler-dependent, this field is more useful with the setup described in the section on jDNjPNjjthjk=ubj!)rr=}rs=(hX`system-dependent parameters`_j$Khjk=hj%h}rt=(UnameXsystem-dependent parametersh]h]h]h]h]j'jo uh]ru=hXsystem-dependent parametersrv=rw=}rx=(hXsystem-dependent parametershjr=ubaubhX.ry=}rz=(hX.jDNjPNjjthjk=ubeubaubeubj )r{=}r|=(hUhjl)jDjEhjnh}r}=(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r~=}r=(hUhjl)jDjEhj h}r=(j j Xcabalh]h]h]h]h]j X pkg-fieldr=j j=ujPNjjth]r=(j )r=}r=(hXpkgconfig-depends: package listhj~=jDjEhj h}r=(h]r=jah]h]h]h]j ujPM jjth]r=(j )r=}r=(hUhj=jDjEhjnh}r=(h]h]h]h]h]Uentries]r=(j! X&pkgconfig-depends; package.cabal fieldjUNtr=aujPM jjth]ubj# )r=}r=(hjhj=jDjEhj& h}r=(jjh]h]h]h]h]ujPM jjth]r=hXpkgconfig-dependsr=r=}r=(hUjDNjPNjjthj=ubaubj, )r=}r=(hj/ hj=jDjEhj0 h}r=(jjh]h]h]h]h]ujPM jjth]r=hX: r=r=}r=(hUjDNjPNjjthj=ubaubj6 )r=}r=(hX package listhj=jDjEhj9 h}r=(jjh]h]h]h]h]ujPM jjth]r=hX package listr=r=}r=(hUjDNjPNjjthj=ubaubeubjh)r=}r=(hUhj~=jDjEhjA h}r=(h]h]h]h]h]ujPM jjth]r=(jZ)r=}r=(hXA list of `pkg-config `__ packages, needed to build this package. They can be annotated with versions, e.g. ``gtk+-2.0 >= 2.10, cairo >= 1.0``. If no version constraint is specified, any version is assumed to be acceptable. Cabal uses ``pkg-config`` to find if the packages are available on the system and to find the extra compilation and linker options needed to use the packages.hj=jDjEhj]h}r=(h]h]h]h]h]ujPM jjth]r=(hX A list of r=r=}r=(hX A list of jDNjPNjjthj=ubj!)r=}r=(hXE`pkg-config `__h}r=(UnameX pkg-configj] X4http://www.freedesktop.org/wiki/Software/pkg-config/h]h]h]h]h]uhj=h]r=hX pkg-configr=r=}r=(hX pkg-confighj=ubahj%ubhXS packages, needed to build this package. They can be annotated with versions, e.g. r=r=}r=(hXS packages, needed to build this package. They can be annotated with versions, e.g. jDNjPNjjthj=ubj)r=}r=(hX"``gtk+-2.0 >= 2.10, cairo >= 1.0``h}r=(h]h]h]h]h]uhj=h]r=hXgtk+-2.0 >= 2.10, cairo >= 1.0r=r=}r=(hXgtk+-2.0 >= 2.10, cairo >= 1.0hj=ubahjubhX]. If no version constraint is specified, any version is assumed to be acceptable. Cabal uses r=r=}r=(hX]. If no version constraint is specified, any version is assumed to be acceptable. Cabal uses jDNjPNjjthj=ubj)r=}r=(hX``pkg-config``h}r=(h]h]h]h]h]uhj=h]r=hX pkg-configr=r=}r=(hX pkg-confighj=ubahjubhX to find if the packages are available on the system and to find the extra compilation and linker options needed to use the packages.r=r=}r=(hX to find if the packages are available on the system and to find the extra compilation and linker options needed to use the packages.jDNjPNjjthj=ubeubjZ)r=}r=(hX'If you need to bind to a C library that supports ``pkg-config`` then it is much preferable to use this field rather than hard code options into the other fields. ``pkg-config --list-all`` will show you all supported libraries. Depending on your system you may need to adjust ``PKG_CONFIG_PATH``.hj=jDjEhj]h}r=(h]h]h]h]h]ujPM jjth]r=(hX1If you need to bind to a C library that supports r=r=}r=(hX1If you need to bind to a C library that supports jDNjPNjjthj=ubj)r=}r=(hX``pkg-config``h}r=(h]h]h]h]h]uhj=h]r=hX pkg-configr=r=}r=(hX pkg-confighj=ubahjubhXc then it is much preferable to use this field rather than hard code options into the other fields. r=r=}r=(hXc then it is much preferable to use this field rather than hard code options into the other fields. jDNjPNjjthj=ubj)r=}r=(hX``pkg-config --list-all``h}r=(h]h]h]h]h]uhj=h]r=hXpkg-config --list-allr=r=}r=(hXpkg-config --list-allhj=ubahjubhXX will show you all supported libraries. Depending on your system you may need to adjust r=r=}r=(hXX will show you all supported libraries. Depending on your system you may need to adjust jDNjPNjjthj=ubj)r=}r=(hX``PKG_CONFIG_PATH``h}r=(h]h]h]h]h]uhj=h]r=hXPKG_CONFIG_PATHr=r=}r=(hXPKG_CONFIG_PATHhj=ubahjubhX.r=}r=(hX.jDNjPNjjthj=ubeubeubeubj )r=}r=(hUhjl)jDjEhjnh}r=(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r=}r=(hUhjl)jDjEhj h}r=(j j Xcabalh]h]h]h]h]j X pkg-fieldr=j j=ujPNjjth]r=(j )r=}r=(hXframeworks: token listhj=jDjEhj h}r=(h]r=j(ah]h]h]h]j ujPM" jjth]r=(j )r=}r=(hUhj=jDjEhjnh}r=(h]h]h]h]h]Uentries]r=(j! Xframeworks; package.cabal fieldj(UNtr>aujPM" jjth]ubj# )r>}r>(hj'hj=jDjEhj& h}r>(jjh]h]h]h]h]ujPM" jjth]r>hX frameworksr>r>}r>(hUjDNjPNjjthj>ubaubj, )r>}r >(hj/ hj=jDjEhj0 h}r >(jjh]h]h]h]h]ujPM" jjth]r >hX: r >r >}r>(hUjDNjPNjjthj>ubaubj6 )r>}r>(hX token listhj=jDjEhj9 h}r>(jjh]h]h]h]h]ujPM" jjth]r>hX token listr>r>}r>(hUjDNjPNjjthj>ubaubeubjh)r>}r>(hUhj=jDjEhjA h}r>(h]h]h]h]h]ujPM" jjth]r>jZ)r>}r>(hXOn Darwin/MacOS X, a list of frameworks to link to. See Apple's developer documentation for more details on frameworks. This entry is ignored on all other platforms.r>hj>jDjEhj]h}r>(h]h]h]h]h]ujPM jjth]r>hXOn Darwin/MacOS X, a list of frameworks to link to. See Apple’s developer documentation for more details on frameworks. This entry is ignored on all other platforms.r>r >}r!>(hj>jDNjPNjjthj>ubaubaubeubj )r">}r#>(hUhjl)jDjEhjnh}r$>(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r%>}r&>(hUhjl)jDjEhj h}r'>(j j Xcabalh]h]h]h]h]j X pkg-fieldr(>j j(>ujPNjjth]r)>(j )r*>}r+>(hX%extra-frameworks-dirs: directory listhj%>jDjEhj h}r,>(h]r->jah]h]h]h]j ujPNjjth]r.>(j )r/>}r0>(hUhj*>jDjEhjnh}r1>(h]h]h]h]h]Uentries]r2>(j! X*extra-frameworks-dirs; package.cabal fieldjUNtr3>aujPNjjth]ubj# )r4>}r5>(hjhj*>jDjEhj& h}r6>(jjh]h]h]h]h]ujPNjjth]r7>hXextra-frameworks-dirsr8>r9>}r:>(hUjDNjPNjjthj4>ubaubj, )r;>}r<>(hj/ hj*>jDjEhj0 h}r=>(jjh]h]h]h]h]ujPNjjth]r>>hX: r?>r@>}rA>(hUjDNjPNjjthj;>ubaubj6 )rB>}rC>(hXdirectory listhj*>jDjEhj9 h}rD>(jjh]h]h]h]h]ujPNjjth]rE>hXdirectory listrF>rG>}rH>(hUjDNjPNjjthjB>ubaubeubjh)rI>}rJ>(hUhj%>jDjEhjA h}rK>(h]h]h]h]h]ujPNjjth]rL>(j)rM>}rN>(hUhjI>jDjEhjh}rO>(h]h]h]h]h]ujPNjjth]rP>j)rQ>}rR>(hUhjM>jDjEhj.h}rS>(h]h]h]h]h]ujPNjjth]rT>(j )rU>}rV>(hj+hjQ>jDjEhj h}rW>(h]h]h]h]h]ujPKh]rX>hXSincerY>rZ>}r[>(hUhjU>ubaubj)r\>}r]>(hU Cabal 1.24r^>h}r_>(h]h]h]h]h]uhjQ>h]r`>jZ)ra>}rb>(hj^>h}rc>(h]h]h]h]h]uhj\>h]rd>hX Cabal 1.24re>rf>}rg>(hUhja>ubahj]ubahj-ubeubaubjZ)rh>}ri>(hXpOn Darwin/MacOS X, a list of directories to search for frameworks. This entry is ignored on all other platforms.rj>hjI>jDjEhj]h}rk>(h]h]h]h]h]ujPM& jjth]rl>hXpOn Darwin/MacOS X, a list of directories to search for frameworks. This entry is ignored on all other platforms.rm>rn>}ro>(hjj>jDNjPNjjthjh>ubaubeubeubj )rp>}rq>(hUhjl)jDNhjnh}rr>(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rs>}rt>(hUhjl)jDNhj h}ru>(j j Xcabalh]h]h]h]h]j X pkg-fieldrv>j jv>ujPNjjth]rw>(j )rx>}ry>(hXmixins: mixin listhjs>jDjEhj h}rz>(h]r{>jjah]h]h]h]j ujPNjjth]r|>(j )r}>}r~>(hUhjx>jDjEhjnh}r>(h]h]h]h]h]Uentries]r>(j! Xmixins; package.cabal fieldjjUNtr>aujPNjjth]ubj# )r>}r>(hjihjx>jDjEhj& h}r>(jjh]h]h]h]h]ujPNjjth]r>hXmixinsr>r>}r>(hUjDNjPNjjthj>ubaubj, )r>}r>(hj/ hjx>jDjEhj0 h}r>(jjh]h]h]h]h]ujPNjjth]r>hX: r>r>}r>(hUjDNjPNjjthj>ubaubj6 )r>}r>(hX mixin listhjx>jDjEhj9 h}r>(jjh]h]h]h]h]ujPNjjth]r>hX mixin listr>r>}r>(hUjDNjPNjjthj>ubaubeubjh)r>}r>(hUhjs>jDjEhjA h}r>(h]h]h]h]h]ujPNjjth]r>(j)r>}r>(hUhj>jDNhjh}r>(h]h]h]h]h]ujPNjjth]r>j)r>}r>(hUhj>jDNhj.h}r>(h]h]h]h]h]ujPNjjth]r>(j )r>}r>(hj+hj>jDjEhj h}r>(h]h]h]h]h]ujPKh]r>hXSincer>r>}r>(hUhj>ubaubj)r>}r>(hU Cabal 2.0r>h}r>(h]h]h]h]h]uhj>h]r>jZ)r>}r>(hj>h}r>(h]h]h]h]h]uhj>h]r>hX Cabal 2.0r>r>}r>(hUhj>ubahj]ubahj-ubeubaubjZ)r>}r>(hXSupported only in GHC 8.2 and later. A list of packages mentioned in the :pkg-field:`build-depends` field, each optionally accompanied by a list of module and module signature renamings.hj>jDjEhj]h}r>(h]h]h]h]h]ujPM, jjth]r>(hXISupported only in GHC 8.2 and later. A list of packages mentioned in the r>r>}r>(hXISupported only in GHC 8.2 and later. A list of packages mentioned in the jDNjPNjjthj>ubjM)r>}r>(hX:pkg-field:`build-depends`hj>jDjEhjPh}r>(UreftypeX pkg-fieldjRjSX build-dependsr>U refdomainXcabalr>h]h]U refexplicith]h]h]jVj jlNujPM, h]r>j)r>}r>(hj>h}r>(h]h]r>(j]j>Xcabal-pkg-fieldr>eh]h]h]uhj>h]r>hX build-dependsr>r>}r>(hUhj>ubahjubaubhXW field, each optionally accompanied by a list of module and module signature renamings.r>r>}r>(hXW field, each optionally accompanied by a list of module and module signature renamings.jDNjPNjjthj>ubeubjZ)r>}r>(hXyThe simplest mixin syntax is simply the name of a package mentioned in the :pkg-field:`build-depends` field. For example:hj>jDjEhj]h}r>(h]h]h]h]h]ujPM0 jjth]r>(hXKThe simplest mixin syntax is simply the name of a package mentioned in the r>r>}r>(hXKThe simplest mixin syntax is simply the name of a package mentioned in the jDNjPNjjthj>ubjM)r>}r>(hX:pkg-field:`build-depends`hj>jDjEhjPh}r>(UreftypeX pkg-fieldjRjSX build-dependsr>U refdomainXcabalr>h]h]U refexplicith]h]h]jVj jlNujPM0 h]r>j)r>}r>(hj>h}r>(h]h]r>(j]j>Xcabal-pkg-fieldr>eh]h]h]uhj>h]r>hX build-dependsr>r>}r>(hUhj>ubahjubaubhX field. For example:r>r>}r>(hX field. For example:jDNjPNjjthj>ubeubj)r>}r>(hX<library build-depends: foo ^>= 1.2.3 mixins: foohj>jDjEhjh}r>(jjh]h]h]h]h]ujPM5 jjth]r>hX<library build-depends: foo ^>= 1.2.3 mixins: foor>r>}r>(hUhj>ubaubjZ)r>}r>(hXBut this doesn't have any effect. More interesting is to use the mixin entry to rename one or more modules from the package, like this:r>hj>jDjEhj]h}r>(h]h]h]h]h]ujPM; jjth]r>hXBut this doesn’t have any effect. More interesting is to use the mixin entry to rename one or more modules from the package, like this:r>r>}r>(hj>jDNjPNjjthj>ubaubj)r>}r>(hXPlibrary mixins: foo (Foo.Bar as AnotherFoo.Bar, Foo.Baz as AnotherFoo.Baz)hj>jDjEhjh}r>(jjh]h]h]h]h]ujPM@ jjth]r>hXPlibrary mixins: foo (Foo.Bar as AnotherFoo.Bar, Foo.Baz as AnotherFoo.Baz)r>r>}r>(hUhj>ubaubjZ)r>}r>(hX^Note that renaming a module like this will hide all the modules that are not explicitly named.r?hj>jDjEhj]h}r?(h]h]h]h]h]ujPMD jjth]r?hX^Note that renaming a module like this will hide all the modules that are not explicitly named.r?r?}r?(hj?jDNjPNjjthj>ubaubjZ)r?}r?(hXModules can also be hidden:r?hj>jDjEhj]h}r ?(h]h]h]h]h]ujPMG jjth]r ?hXModules can also be hidden:r ?r ?}r ?(hj?jDNjPNjjthj?ubaubj)r?}r?(hX+library: mixins: foo hiding (Foo.Bar)hj>jDjEhjh}r?(jjh]h]h]h]h]ujPMK jjth]r?hX+library: mixins: foo hiding (Foo.Bar)r?r?}r?(hUhj?ubaubjZ)r?}r?(hX@Hiding modules exposes everything that is not explicitly hidden.r?hj>jDjEhj]h}r?(h]h]h]h]h]ujPMO jjth]r?hX@Hiding modules exposes everything that is not explicitly hidden.r?r?}r?(hj?jDNjPNjjthj?ubaubj )r?}r?(hXDThe current version of Cabal suffers from an infelicity in how the entries of :pkg-field:`mixins` are parsed: an entry will fail to parse if the provided renaming clause has whitespace after the opening parenthesis. This will be fixed in future versions of Cabal. See issues :issue:`5150`, :issue:`4864`, and :issue:`5293`.hj>jDjEhj h}r?(h]h]h]h]h]ujPNjjth]r ?(jZ)r!?}r"?(hXThe current version of Cabal suffers from an infelicity in how the entries of :pkg-field:`mixins` are parsed: an entry will fail to parse if the provided renaming clause has whitespace after the opening parenthesis. This will be fixed in future versions of Cabal.hj?jDjEhj]h}r#?(h]h]h]h]h]ujPMS h]r$?(hXNThe current version of Cabal suffers from an infelicity in how the entries of r%?r&?}r'?(hXNThe current version of Cabal suffers from an infelicity in how the entries of hj!?ubjM)r(?}r)?(hX:pkg-field:`mixins`hj!?jDjEhjPh}r*?(UreftypeX pkg-fieldjRjSXmixinsr+?U refdomainXcabalr,?h]h]U refexplicith]h]h]jVj jlNujPMS h]r-?j)r.?}r/?(hj+?h}r0?(h]h]r1?(j]j,?Xcabal-pkg-fieldr2?eh]h]h]uhj(?h]r3?hXmixinsr4?r5?}r6?(hUhj.?ubahjubaubhX are parsed: an entry will fail to parse if the provided renaming clause has whitespace after the opening parenthesis. This will be fixed in future versions of Cabal.r7?r8?}r9?(hX are parsed: an entry will fail to parse if the provided renaming clause has whitespace after the opening parenthesis. This will be fixed in future versions of Cabal.hj!?ubeubjZ)r:?}r;?(hX;See issues :issue:`5150`, :issue:`4864`, and :issue:`5293`.hj?jDjEhj]h}r?r??}r@?(hX See issues hj:?ubj!)rA?}rB?(hX#5150h}rC?(UrefuriX,https://github.com/haskell/cabal/issues/5150h]h]h]h]h]Uinternaluhj:?h]rD?hX#5150rE?rF?}rG?(hX5150hjA?ubahj%ubhX, rH?rI?}rJ?(hX, hj:?ubj!)rK?}rL?(hX#4864h}rM?(UrefuriX,https://github.com/haskell/cabal/issues/4864h]h]h]h]h]Uinternaluhj:?h]rN?hX#4864rO?rP?}rQ?(hX4864hjK?ubahj%ubhX, and rR?rS?}rT?(hX, and hj:?ubj!)rU?}rV?(hX#5293h}rW?(UrefuriX,https://github.com/haskell/cabal/issues/5293h]h]h]h]h]Uinternaluhj:?h]rX?hX#5293rY?rZ?}r[?(hX5293hjU?ubahj%ubhX.r\?}r]?(hX.hj:?ubeubeubjZ)r^?}r_?(hXnThere can be multiple mixin entries for a given package, in effect creating multiple copies of the dependency:r`?hj>jDjEhj]h}ra?(h]h]h]h]h]ujPMZ jjth]rb?hXnThere can be multiple mixin entries for a given package, in effect creating multiple copies of the dependency:rc?rd?}re?(hj`?jDNjPNjjthj^?ubaubj)rf?}rg?(hXxlibrary mixins: foo (Foo.Bar as AnotherFoo.Bar, Foo.Baz as AnotherFoo.Baz), foo (Foo.Bar as YetAnotherFoo.Bar)hj>jDjEhjh}rh?(jjh]h]h]h]h]ujPM_ jjth]ri?hXxlibrary mixins: foo (Foo.Bar as AnotherFoo.Bar, Foo.Baz as AnotherFoo.Baz), foo (Foo.Bar as YetAnotherFoo.Bar)rj?rk?}rl?(hUhjf?ubaubjZ)rm?}rn?(hXVThe ``requires`` clause is used to rename the module signatures required by a package:hj>jDjEhj]h}ro?(h]h]h]h]h]ujPMd jjth]rp?(hXThe rq?rr?}rs?(hXThe jDNjPNjjthjm?ubj)rt?}ru?(hX ``requires``h}rv?(h]h]h]h]h]uhjm?h]rw?hXrequiresrx?ry?}rz?(hXrequireshjt?ubahjubhXF clause is used to rename the module signatures required by a package:r{?r|?}r}?(hXF clause is used to rename the module signatures required by a package:jDNjPNjjthjm?ubeubj)r~?}r?(hXblibrary mixins: foo (Foo.Bar as AnotherFoo.Bar) requires (Foo.SomeSig as AnotherFoo.SomeSig)hj>jDjEhjh}r?(jjh]h]h]h]h]ujPMi jjth]r?hXblibrary mixins: foo (Foo.Bar as AnotherFoo.Bar) requires (Foo.SomeSig as AnotherFoo.SomeSig)r?r?}r?(hUhj~?ubaubjZ)r?}r?(hXqSignature-only packages don't have any modules, so only the signatures can be renamed, with the following syntax:r?hj>jDjEhj]h}r?(h]h]h]h]h]ujPMm jjth]r?hXsSignature-only packages don’t have any modules, so only the signatures can be renamed, with the following syntax:r?r?}r?(hj?jDNjPNjjthj?ubaubj)r?}r?(hXRlibrary mixins: sigonly requires (SigOnly.SomeSig as AnotherSigOnly.SomeSig)hj>jDjEhjh}r?(jjh]h]h]h]h]ujPMr jjth]r?hXRlibrary mixins: sigonly requires (SigOnly.SomeSig as AnotherSigOnly.SomeSig)r?r?}r?(hUhj?ubaubjZ)r?}r?(hX?See the :pkg-field:`library:signatures` field for more details.hj>jDjEhj]h}r?(h]h]h]h]h]ujPMv jjth]r?(hXSee the r?r?}r?(hXSee the jDNjPNjjthj?ubjM)r?}r?(hX:pkg-field:`library:signatures`hj?jDjEhjPh}r?(UreftypeX pkg-fieldjRjSX signaturesU refdomainXcabalr?h]h]U refexplicith]h]h]jVj jlXlibraryujPMv h]r?j)r?}r?(hXlibrary:signaturesh}r?(h]h]r?(j]j?Xcabal-pkg-fieldr?eh]h]h]uhj?h]r?hXlibrary:signaturesr?r?}r?(hUhj?ubahjubaubhX field for more details.r?r?}r?(hX field for more details.jDNjPNjjthj?ubeubjZ)r?}r?(hXPMixin packages are part of the Backpack_ extension to the Haskell module system.hj>jDjEhj]h}r?(h]h]h]h]h]ujPMx jjth]r?(hXMixin packages are part of the r?r?}r?(hXMixin packages are part of the jDNjPNjjthj?ubj!)r?}r?(hX Backpack_j$Khj?hj%h}r?(UnameXBackpackr?j] jh]h]h]h]h]uh]r?hXBackpackr?r?}r?(hj?hj?ubaubhX( extension to the Haskell module system.r?r?}r?(hX( extension to the Haskell module system.jDNjPNjjthj?ubeubjZ)r?}r?(hXThe matching of the module signatures required by a :pkg-field:`build-depends` dependency with the implementation modules present in another dependency is triggered by a coincidence of names. When the names of the signature and of the implementation are already the same, the matching is automatic. But when the names don't coincide, or we want to instantiate a signature in two different ways, adding mixin entries that perform renamings becomes necessary.hj>jDjEhj]h}r?(h]h]h]h]h]ujPM{ jjth]r?(hX4The matching of the module signatures required by a r?r?}r?(hX4The matching of the module signatures required by a jDNjPNjjthj?ubjM)r?}r?(hX:pkg-field:`build-depends`hj?jDjEhjPh}r?(UreftypeX pkg-fieldjRjSX build-dependsr?U refdomainXcabalr?h]h]U refexplicith]h]h]jVj jlNujPM{ h]r?j)r?}r?(hj?h}r?(h]h]r?(j]j?Xcabal-pkg-fieldr?eh]h]h]uhj?h]r?hX build-dependsr?r?}r?(hUhj?ubahjubaubhX} dependency with the implementation modules present in another dependency is triggered by a coincidence of names. When the names of the signature and of the implementation are already the same, the matching is automatic. But when the names don’t coincide, or we want to instantiate a signature in two different ways, adding mixin entries that perform renamings becomes necessary.r?r?}r?(hX{ dependency with the implementation modules present in another dependency is triggered by a coincidence of names. When the names of the signature and of the implementation are already the same, the matching is automatic. But when the names don't coincide, or we want to instantiate a signature in two different ways, adding mixin entries that perform renamings becomes necessary.jDNjPNjjthj?ubeubj*)r?}r?(hX$Backpack_ has the limitation that implementation modules that instantiate signatures required by a :pkg-field:`build-depends` dependency can't reside in the same component that has the dependency. They must reside in a different package dependency, or at least in a separate internal library.hj>jDjEhj*h}r?(h]h]h]h]h]ujPNjjth]r?jZ)r?}r?(hX$Backpack_ has the limitation that implementation modules that instantiate signatures required by a :pkg-field:`build-depends` dependency can't reside in the same component that has the dependency. They must reside in a different package dependency, or at least in a separate internal library.hj?jDjEhj]h}r?(h]h]h]h]h]ujPM h]r?(j!)r?}r?(hX Backpack_j$Khj?hj%h}r?(UnameXBackpackr?j] jh]h]h]h]h]uh]r?hXBackpackr?r?}r?(hj?hj?ubaubhXZ has the limitation that implementation modules that instantiate signatures required by a r?r?}r?(hXZ has the limitation that implementation modules that instantiate signatures required by a hj?ubjM)r?}r?(hX:pkg-field:`build-depends`hj?jDjEhjPh}r?(UreftypeX pkg-fieldjRjSX build-dependsr?U refdomainXcabalr?h]h]U refexplicith]h]h]jVj jlNujPM h]r?j)r?}r?(hj?h}r?(h]h]r?(j]j?Xcabal-pkg-fieldr?eh]h]h]uhj?h]r?hX build-dependsr?r?}r?(hUhj?ubahjubaubhX dependency can’t reside in the same component that has the dependency. They must reside in a different package dependency, or at least in a separate internal library.r?r?}r?(hX dependency can't reside in the same component that has the dependency. They must reside in a different package dependency, or at least in a separate internal library.hj?ubeubaubeubeubeubjn)r?}r?(hUjKhjjDjEhjqh}r?(h]h]h]h]r?j ah]r@jaujPM jjth]r@(h)r@}r@(hXConfigurationsr@hj?jDjEhhh}r@(h]h]h]h]h]ujPM jjth]r@hXConfigurationsr@r@}r @(hj@jDNjPNjjthj@ubaubjZ)r @}r @(hXVLibrary and executable sections may include conditional blocks, which test for various system parameters and configuration flags. The flags mechanism is rather generic, but most of the time a flag represents certain feature, that can be switched on or off by the package user. Here is an example package description file using configurations:r @hj?jDjEhj]h}r @(h]h]h]h]h]ujPM jjth]r@hXVLibrary and executable sections may include conditional blocks, which test for various system parameters and configuration flags. The flags mechanism is rather generic, but most of the time a flag represents certain feature, that can be switched on or off by the package user. Here is an example package description file using configurations:r@r@}r@(hj @jDNjPNjjthj @ubaubjn)r@}r@(hUjKhj?jDjEhjqh}r@(h]r@j% ah]h]h]r@Uid3r@ah]ujPM jjth]r@(h)r@}r@(hX?Example: A package containing a library and executable programsr@hj@jDjEhhh}r@(h]h]h]h]h]ujPM jjth]r@hX?Example: A package containing a library and executable programsr@r@}r @(hj@jDNjPNjjthj@ubaubj)r!@}r"@(hX.Name: Test1 Version: 0.0.1 Cabal-Version: >= 1.8 License: BSD3 Author: Jane Doe Synopsis: Test package to test configurations Category: Example Build-Type: Simple Flag Debug Description: Enable debug support Default: False Manual: True Flag WebFrontend Description: Include API for web frontend. Default: False Manual: True Flag NewDirectory description: Whether to build against @directory >= 1.2@ -- This is an automatic flag which the solver will be -- assign automatically while searching for a solution Library Build-Depends: base >= 4.2 && < 4.9 Exposed-Modules: Testing.Test1 Extensions: CPP GHC-Options: -Wall if flag(Debug) CPP-Options: -DDEBUG if !os(windows) CC-Options: "-DDEBUG" else CC-Options: "-DNDEBUG" if flag(WebFrontend) Build-Depends: cgi >= 0.42 && < 0.44 Other-Modules: Testing.WebStuff CPP-Options: -DWEBFRONTEND if flag(NewDirectory) build-depends: directory >= 1.2 && < 1.4 Build-Depends: time >= 1.0 && < 1.9 else build-depends: directory == 1.1.* Build-Depends: old-time >= 1.0 && < 1.2 Executable test1 Main-is: T1.hs Other-Modules: Testing.Test1 Build-Depends: base >= 4.2 && < 4.9 if flag(debug) CC-Options: "-DDEBUG" CPP-Options: -DDEBUGhj@jDjEhjh}r#@(jjh]h]h]h]h]ujPM jjth]r$@hX.Name: Test1 Version: 0.0.1 Cabal-Version: >= 1.8 License: BSD3 Author: Jane Doe Synopsis: Test package to test configurations Category: Example Build-Type: Simple Flag Debug Description: Enable debug support Default: False Manual: True Flag WebFrontend Description: Include API for web frontend. Default: False Manual: True Flag NewDirectory description: Whether to build against @directory >= 1.2@ -- This is an automatic flag which the solver will be -- assign automatically while searching for a solution Library Build-Depends: base >= 4.2 && < 4.9 Exposed-Modules: Testing.Test1 Extensions: CPP GHC-Options: -Wall if flag(Debug) CPP-Options: -DDEBUG if !os(windows) CC-Options: "-DDEBUG" else CC-Options: "-DNDEBUG" if flag(WebFrontend) Build-Depends: cgi >= 0.42 && < 0.44 Other-Modules: Testing.WebStuff CPP-Options: -DWEBFRONTEND if flag(NewDirectory) build-depends: directory >= 1.2 && < 1.4 Build-Depends: time >= 1.0 && < 1.9 else build-depends: directory == 1.1.* Build-Depends: old-time >= 1.0 && < 1.2 Executable test1 Main-is: T1.hs Other-Modules: Testing.Test1 Build-Depends: base >= 4.2 && < 4.9 if flag(debug) CC-Options: "-DDEBUG" CPP-Options: -DDEBUGr%@r&@}r'@(hUhj!@ubaubeubjn)r(@}r)@(hUhj?jDjEhjqh}r*@(h]h]h]h]r+@Ulayoutr,@ah]r-@jaujPM jjth]r.@(h)r/@}r0@(hXLayoutr1@hj(@jDjEhhh}r2@(h]h]h]h]h]ujPM jjth]r3@hXLayoutr4@r5@}r6@(hj1@jDNjPNjjthj/@ubaubjZ)r7@}r8@(hX#Flags, conditionals, library and executable sections use layout to indicate structure. This is very similar to the Haskell layout rule. Entries in a section have to all be indented to the same level which must be more than the section header. Tabs are not allowed to be used for indentation.r9@hj(@jDjEhj]h}r:@(h]h]h]h]h]ujPM jjth]r;@hX#Flags, conditionals, library and executable sections use layout to indicate structure. This is very similar to the Haskell layout rule. Entries in a section have to all be indented to the same level which must be more than the section header. Tabs are not allowed to be used for indentation.r<@r=@}r>@(hj9@jDNjPNjjthj7@ubaubjZ)r?@}r@@(hX As an alternative to using layout you can also use explicit braces ``{}``. In this case the indentation of entries in a section does not matter, though different fields within a block must be on different lines. Here is a bit of the above example again, using braces:hj(@jDjEhj]h}rA@(h]h]h]h]h]ujPM jjth]rB@(hXCAs an alternative to using layout you can also use explicit braces rC@rD@}rE@(hXCAs an alternative to using layout you can also use explicit braces jDNjPNjjthj?@ubj)rF@}rG@(hX``{}``h}rH@(h]h]h]h]h]uhj?@h]rI@hX{}rJ@rK@}rL@(hX{}hjF@ubahjubhX. In this case the indentation of entries in a section does not matter, though different fields within a block must be on different lines. Here is a bit of the above example again, using braces:rM@rN@}rO@(hX. In this case the indentation of entries in a section does not matter, though different fields within a block must be on different lines. Here is a bit of the above example again, using braces:jDNjPNjjthj?@ubeubeubjn)rP@}rQ@(hUhj?jDjEhjqh}rR@(h]h]h]h]rS@U@example-using-explicit-braces-rather-than-indentation-for-layoutrT@ah]rU@jaujPM jjth]rV@(h)rW@}rX@(hXAExample: Using explicit braces rather than indentation for layoutrY@hjP@jDjEhhh}rZ@(h]h]h]h]h]ujPM jjth]r[@hXAExample: Using explicit braces rather than indentation for layoutr\@r]@}r^@(hjY@jDNjPNjjthjW@ubaubj)r_@}r`@(hXName: Test1 Version: 0.0.1 Cabal-Version: >= 1.8 License: BSD3 Author: Jane Doe Synopsis: Test package to test configurations Category: Example Build-Type: Simple Flag Debug { Description: Enable debug support Default: False Manual: True } Library { Build-Depends: base >= 4.2 && < 4.9 Exposed-Modules: Testing.Test1 Extensions: CPP if flag(debug) { CPP-Options: -DDEBUG if !os(windows) { CC-Options: "-DDEBUG" } else { CC-Options: "-DNDEBUG" } } }hjP@jDjEhjh}ra@(jjh]h]h]h]h]ujPM jjth]rb@hXName: Test1 Version: 0.0.1 Cabal-Version: >= 1.8 License: BSD3 Author: Jane Doe Synopsis: Test package to test configurations Category: Example Build-Type: Simple Flag Debug { Description: Enable debug support Default: False Manual: True } Library { Build-Depends: base >= 4.2 && < 4.9 Exposed-Modules: Testing.Test1 Extensions: CPP if flag(debug) { CPP-Options: -DDEBUG if !os(windows) { CC-Options: "-DDEBUG" } else { CC-Options: "-DNDEBUG" } } }rc@rd@}re@(hUhj_@ubaubeubjn)rf@}rg@(hUhj?jDjEhjqh}rh@(h]h]h]h]ri@jJah]rj@jaujPM jjth]rk@(h)rl@}rm@(hXConfiguration Flagsrn@hjf@jDjEhhh}ro@(h]h]h]h]h]ujPM jjth]rp@hXConfiguration Flagsrq@rr@}rs@(hjn@jDNjPNjjthjl@ubaubj )rt@}ru@(hUhjf@jDNhjnh}rv@(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rw@}rx@(hUhjf@jDNhj h}ry@(j j Xcabalh]h]h]h]h]j X pkg-sectionrz@j jz@ujPNjjth]r{@(j )r|@}r}@(hX flag namehjw@jDjEhj h}r~@(h]r@jah]h]h]h]j ujPNjjth]r@(j )r@}r@(hUhj|@jDjEhjnh}r@(h]h]h]h]h]Uentries]r@(j! X flag:flag; package.cabal sectionjUNtr@aujPNjjth]ubj# )r@}r@(hjhj|@jDjEhj& h}r@(jjh]h]h]h]h]ujPNjjth]r@hXflagr@r@}r@(hUjDNjPNjjthj@ubaubj, )r@}r@(hU hj|@jDjEhj0 h}r@(jjh]h]h]h]h]ujPNjjth]r@hX r@}r@(hUjDNjPNjjthj@ubaubj6 )r@}r@(hXnamehj|@jDjEhj9 h}r@(jjh]h]h]h]h]ujPNjjth]r@hXnamer@r@}r@(hUjDNjPNjjthj@ubaubeubjh)r@}r@(hUhjw@jDjEhjA h}r@(h]h]h]h]h]ujPNjjth]r@(jZ)r@}r@(hXHFlag section declares a flag which can be used in `conditional blocks`_.hj@jDjEhj]h}r@(h]h]h]h]h]ujPM jjth]r@(hX2Flag section declares a flag which can be used in r@r@}r@(hX2Flag section declares a flag which can be used in jDNjPNjjthj@ubj!)r@}r@(hX`conditional blocks`_j$Khj@hj%h}r@(UnameXconditional blocksh]h]h]h]h]j'Uconditional-blocksr@uh]r@hXconditional blocksr@r@}r@(hXconditional blockshj@ubaubhX.r@}r@(hX.jDNjPNjjthj@ubeubjZ)r@}r@(hXxFlag names are case-insensitive and must match ``[[:alnum:]_][[:alnum:]_-]*`` regular expression, or expressed as ABNF_:hj@jDjEhj]h}r@(h]h]h]h]h]ujPM jjth]r@(hX/Flag names are case-insensitive and must match r@r@}r@(hX/Flag names are case-insensitive and must match jDNjPNjjthj@ubj)r@}r@(hX``[[:alnum:]_][[:alnum:]_-]*``h}r@(h]h]h]h]h]uhj@h]r@hX[[:alnum:]_][[:alnum:]_-]*r@r@}r@(hX[[:alnum:]_][[:alnum:]_-]*hj@ubahjubhX% regular expression, or expressed as r@r@}r@(hX% regular expression, or expressed as jDNjPNjjthj@ubj!)r@}r@(hXABNF_j$Khj@hj%h}r@(UnameXABNFr@j] j h]h]h]h]h]uh]r@hXABNFr@r@}r@(hj@hj@ubaubhX:r@}r@(hX:jDNjPNjjthj@ubeubj)r@}r@(hX~flag-name = (UALNUM / "_") *(UALNUM / "_" / "-") UALNUM = UALPHA / DIGIT UALPHA = ... ; set of alphabetic Unicode code-pointshj@jDjEhjh}r@(jjXabnfjjh]h]h]j}h]h]ujPM jjth]r@hX~flag-name = (UALNUM / "_") *(UALNUM / "_" / "-") UALNUM = UALPHA / DIGIT UALPHA = ... ; set of alphabetic Unicode code-pointsr@r@}r@(hUhj@ubaubj )r@}r@(hXHHackage accepts ASCII-only flags, ``[a-zA-Z0-9_][a-zA-Z0-9_-]*`` regexp.r@hj@jDjEhj h}r@(h]h]h]h]h]ujPNjjth]r@jZ)r@}r@(hj@hj@jDjEhj]h}r@(h]h]h]h]h]ujPM h]r@(hX"Hackage accepts ASCII-only flags, r@r@}r@(hX"Hackage accepts ASCII-only flags, hj@ubj)r@}r@(hX``[a-zA-Z0-9_][a-zA-Z0-9_-]*``h}r@(h]h]h]h]h]uhj@h]r@hX[a-zA-Z0-9_][a-zA-Z0-9_-]*r@r@}r@(hX[a-zA-Z0-9_][a-zA-Z0-9_-]*hj@ubahjubhX regexp.r@r@}r@(hX regexp.hj@ubeubaubeubeubj )r@}r@(hUhjf@jDjEhjnh}r@(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r@}r@(hUhjf@jDjEhj h}r@(j j Xcabalh]h]h]h]h]j X pkg-fieldr@j j@ujPNjjth]r@(j )r@}r@(hXdescription: freeformhj@jDjEhj h}r@(h]r@jLah]h]h]h]j ujPM jjth]r@(j )r@}r@(hUhj@jDjEhjnh}r@(h]h]h]h]h]Uentries]r@(j! X%flag:description; package.cabal fieldjLUNtr@aujPM jjth]ubj# )r@}r@(hjKhj@jDjEhj& h}r@(jjh]h]h]h]h]ujPM jjth]r@hX descriptionr@r@}r@(hUjDNjPNjjthj@ubaubj, )rA}rA(hj/ hj@jDjEhj0 h}rA(jjh]h]h]h]h]ujPM jjth]rAhX: rArA}rA(hUjDNjPNjjthjAubaubj6 )rA}rA(hXfreeformhj@jDjEhj9 h}r A(jjh]h]h]h]h]ujPM jjth]r AhXfreeformr Ar A}r A(hUjDNjPNjjthjAubaubeubjh)rA}rA(hUhj@jDjEhjA h}rA(h]h]h]h]h]ujPM jjth]rAjZ)rA}rA(hXThe description of this flag.rAhjAjDjEhj]h}rA(h]h]h]h]h]ujPM jjth]rAhXThe description of this flag.rArA}rA(hjAjDNjPNjjthjAubaubaubeubj )rA}rA(hUhjf@jDNhjnh}rA(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rA}rA(hUhjf@jDNhj h}rA(j j Xcabalh]h]h]h]h]j X pkg-fieldr Aj j AujPNjjth]r!A(j )r"A}r#A(hXdefault: booleanhjAjDjEhj h}r$A(h]r%AjGah]h]h]h]j ujPM, jjth]r&A(j )r'A}r(A(hUhj"AjDjEhjnh}r)A(h]h]h]h]h]Uentries]r*A(j! X!flag:default; package.cabal fieldjGUNtr+AaujPM, jjth]ubj# )r,A}r-A(hjFhj"AjDjEhj& h}r.A(jjh]h]h]h]h]ujPM, jjth]r/AhXdefaultr0Ar1A}r2A(hUjDNjPNjjthj,Aubaubj, )r3A}r4A(hj/ hj"AjDjEhj0 h}r5A(jjh]h]h]h]h]ujPM, jjth]r6AhX: r7Ar8A}r9A(hUjDNjPNjjthj3Aubaubj6 )r:A}r;A(hXbooleanhj"AjDjEhj9 h}rAr?A}r@A(hUjDNjPNjjthj:Aubaubeubjh)rAA}rBA(hUhjAjDjEhjA h}rCA(h]h]h]h]h]ujPM, jjth]rDA(j)rEA}rFA(hUhjAAjDNhjh}rGA(h]h]h]h]h]ujPNjjth]rHAj)rIA}rJA(hUh}rKA(h]h]h]h]h]uhjEAh]rLA(j )rMA}rNA(hX Default valuehjIAjDjEhj h}rOA(h]h]h]h]h]ujPKh]rPAhX Default valuerQArRA}rSA(hUhjMAubaubj)rTA}rUA(hUh}rVA(h]h]h]h]h]uhjIAh]rWAjZ)rXA}rYA(hXTrueh}rZA(h]h]h]h]h]uhjTAh]r[Aj)r\A}r]A(hX``True``hjXAjDNhjh}r^A(h]h]h]h]h]ujPNjjth]r_AhXTruer`AraA}rbA(hXTruejDNjPNjjthj\Aubaubahj]ubahj-ubehj.ubaubjZ)rcA}rdA(hXThe default value of this flag.reAhjAAjDjEhj]h}rfA(h]h]h]h]h]ujPM! jjth]rgAhXThe default value of this flag.rhAriA}rjA(hjeAjDNjPNjjthjcAubaubj )rkA}rlA(hXThis value may be `overridden in several ways `__. The rationale for having flags default to True is that users usually want new features as soon as they are available. Flags representing features that are not (yet) recommended for most users (such as experimental features or debugging support) should therefore explicitly override the default to False.hjAAjDjEhj h}rmA(h]h]h]h]h]ujPNjjth]rnAjZ)roA}rpA(hXThis value may be `overridden in several ways `__. The rationale for having flags default to True is that users usually want new features as soon as they are available. Flags representing features that are not (yet) recommended for most users (such as experimental features or debugging support) should therefore explicitly override the default to False.hjkAjDjEhj]h}rqA(h]h]h]h]h]ujPM% h]rrA(hXThis value may be rsArtA}ruA(hXThis value may be hjoAubj!)rvA}rwA(hXV`overridden in several ways `__h}rxA(UnameXoverridden in several waysj] X5installing-packages.html#controlling-flag-assignmentsh]h]h]h]h]uhjoAh]ryAhXoverridden in several waysrzAr{A}r|A(hXoverridden in several wayshjvAubahj%ubhX1. The rationale for having flags default to True is that users usually want new features as soon as they are available. Flags representing features that are not (yet) recommended for most users (such as experimental features or debugging support) should therefore explicitly override the default to False.r}Ar~A}rA(hX1. The rationale for having flags default to True is that users usually want new features as soon as they are available. Flags representing features that are not (yet) recommended for most users (such as experimental features or debugging support) should therefore explicitly override the default to False.hjoAubeubaubeubeubj )rA}rA(hUhjf@jDjEhjnh}rA(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rA}rA(hUhjf@jDjEhj h}rA(j j Xcabalh]h]h]h]h]j X pkg-fieldrAj jAujPNjjth]rA(j )rA}rA(hXmanual: booleanhjAjDjEhj h}rA(h]rAjah]h]h]h]j ujPM6 jjth]rA(j )rA}rA(hUhjAjDjEhjnh}rA(h]h]h]h]h]Uentries]rA(j! X flag:manual; package.cabal fieldjUNtrAaujPM6 jjth]ubj# )rA}rA(hjhjAjDjEhj& h}rA(jjh]h]h]h]h]ujPM6 jjth]rAhXmanualrArA}rA(hUjDNjPNjjthjAubaubj, )rA}rA(hj/ hjAjDjEhj0 h}rA(jjh]h]h]h]h]ujPM6 jjth]rAhX: rArA}rA(hUjDNjPNjjthjAubaubj6 )rA}rA(hXbooleanhjAjDjEhj9 h}rA(jjh]h]h]h]h]ujPM6 jjth]rAhXbooleanrArA}rA(hUjDNjPNjjthjAubaubeubjh)rA}rA(hUhjAjDjEhjA h}rA(h]h]h]h]h]ujPM6 jjth]rA(j)rA}rA(hUhjAjDjEhjh}rA(h]h]h]h]h]ujPNjjth]rA(j)rA}rA(hUh}rA(h]h]h]h]h]uhjAh]rA(j )rA}rA(hX Default valuehjAjDjEhj h}rA(h]h]h]h]h]ujPKh]rAhX Default valuerArA}rA(hUhjAubaubj)rA}rA(hUh}rA(h]h]h]h]h]uhjAh]rAjZ)rA}rA(hXFalseh}rA(h]h]h]h]h]uhjAh]rAj)rA}rA(hX ``False``hjAjDjEhjh}rA(h]h]h]h]h]ujPNjjth]rAhXFalserArA}rA(hXFalsejDNjPNjjthjAubaubahj]ubahj-ubehj.ubj)rA}rA(hUhjAjDjEhj.h}rA(h]h]h]h]h]ujPM0 jjth]rA(j )rA}rA(hXsincehjAjDjEhj h}rA(h]h]h]h]h]ujPKh]rAhXSincerArA}rA(hUhjAubaubj)rA}rA(hX1.6 h}rA(h]h]h]h]h]uhjAh]rAjZ)rA}rA(hX1.6rAhjAjDjEhj]h}rA(h]h]h]h]h]ujPM0 h]rAhX1.6rArA}rA(hjAhjAubaubahj-ubeubeubjZ)rA}rA(hXBy default, Cabal will first try to satisfy dependencies with the default flag value and then, if that is not possible, with the negated value. However, if the flag is manual, then the default value (which can be overridden by commandline flags) will be used.rAhjAjDjEhj]h}rA(h]h]h]h]h]ujPM2 jjth]rAhXBy default, Cabal will first try to satisfy dependencies with the default flag value and then, if that is not possible, with the negated value. However, if the flag is manual, then the default value (which can be overridden by commandline flags) will be used.rArA}rA(hjAjDNjPNjjthjAubaubeubeubeubeubjn)rA}rA(hUjKhjjDjEhjqh}rA(h]h]h]h]rAj@ah]rAjaujPM8 jjth]rA(h)rA}rA(hXConditional BlocksrAhjAjDjEhhh}rA(h]h]h]h]h]ujPM8 jjth]rAhXConditional BlocksrArA}rA(hjAjDNjPNjjthjAubaubjZ)rA}rA(hXConditional blocks may appear anywhere inside a library or executable section. They have to follow rather strict formatting rules. Conditional blocks must always be of the shaperAhjAjDjEhj]h}rA(h]h]h]h]h]ujPM: jjth]rAhXConditional blocks may appear anywhere inside a library or executable section. They have to follow rather strict formatting rules. Conditional blocks must always be of the shaperArA}rA(hjAjDNjPNjjthjAubaubj)rA}rA(hX5if condition property-descriptions-or-conditionalshjAjDjEhjh}rB(jjh]h]h]h]h]ujPM@ jjth]rBhX5if condition property-descriptions-or-conditionalsrBrB}rB(hUhjAubaubjZ)rB}rB(hXorrBhjAjDjEhj]h}rB(h]h]h]h]h]ujPMC jjth]r BhXorr Br B}r B(hjBjDNjPNjjthjBubaubj)r B}rB(hXgif condition property-descriptions-or-conditionals else property-descriptions-or-conditionalshjAjDjEhjh}rB(jjh]h]h]h]h]ujPMG jjth]rBhXgif condition property-descriptions-or-conditionals else property-descriptions-or-conditionalsrBrB}rB(hUhj BubaubjZ)rB}rB(hXGNote that the ``if`` and the condition have to be all on the same line.rBhjAjDjEhj]h}rB(h]h]h]h]h]ujPML jjth]rB(hXNote that the rBrB}rB(hXNote that the jDNjPNjjthjBubj)rB}rB(hX``if``h}rB(h]h]h]h]h]uhjBh]rBhXifr Br!B}r"B(hXifhjBubahjubhX3 and the condition have to be all on the same line.r#Br$B}r%B(hX3 and the condition have to be all on the same line.jDNjPNjjthjBubeubjZ)r&B}r'B(hX>Since Cabal 2.2 conditional blocks support ``elif`` construct.r(BhjAjDjEhj]h}r)B(h]h]h]h]h]ujPMN jjth]r*B(hX+Since Cabal 2.2 conditional blocks support r+Br,B}r-B(hX+Since Cabal 2.2 conditional blocks support jDNjPNjjthj&Bubj)r.B}r/B(hX``elif``h}r0B(h]h]h]h]h]uhj&Bh]r1BhXelifr2Br3B}r4B(hXelifhj.BubahjubhX construct.r5Br6B}r7B(hX construct.jDNjPNjjthj&Bubeubj)r8B}r9B(hXif condition1 property-descriptions-or-conditionals elif condition2 property-descriptions-or-conditionals else property-descriptions-or-conditionalshjAjDjEhjh}r:B(jjh]h]h]h]h]ujPMR jjth]r;BhXif condition1 property-descriptions-or-conditionals elif condition2 property-descriptions-or-conditionals else property-descriptions-or-conditionalsrB(hUhj8Bubaubjn)r?B}r@B(hUhjAjDjEhjqh}rAB(h]h]h]h]rBBU conditionsrCBah]rDBjaujPMZ jjth]rEB(h)rFB}rGB(hX ConditionsrHBhj?BjDjEhhh}rIB(h]h]h]h]h]ujPMZ jjth]rJBhX ConditionsrKBrLB}rMB(hjHBjDNjPNjjthjFBubaubjZ)rNB}rOB(hXConditions can be formed using boolean tests and the boolean operators ``||`` (disjunction / logical "or"), ``&&`` (conjunction / logical "and"), or ``!`` (negation / logical "not"). The unary ``!`` takes highest precedence, ``||`` takes lowest. Precedence levels may be overridden through the use of parentheses. For example, ``os(darwin) && !arch(i386) || os(freebsd)`` is equivalent to ``(os(darwin) && !(arch(i386))) || os(freebsd)``.hj?BjDjEhj]h}rPB(h]h]h]h]h]ujPM\ jjth]rQB(hXGConditions can be formed using boolean tests and the boolean operators rRBrSB}rTB(hXGConditions can be formed using boolean tests and the boolean operators jDNjPNjjthjNBubj)rUB}rVB(hX``||``h}rWB(h]h]h]h]h]uhjNBh]rXBhX||rYBrZB}r[B(hX||hjUBubahjubhX# (disjunction / logical “or”), r\Br]B}r^B(hX (disjunction / logical "or"), jDNjPNjjthjNBubj)r_B}r`B(hX``&&``h}raB(h]h]h]h]h]uhjNBh]rbBhX&&rcBrdB}reB(hX&&hj_BubahjubhX' (conjunction / logical “and”), or rfBrgB}rhB(hX# (conjunction / logical "and"), or jDNjPNjjthjNBubj)riB}rjB(hX``!``h}rkB(h]h]h]h]h]uhjNBh]rlBhX!rmB}rnB(hX!hjiBubahjubhX+ (negation / logical “not”). The unary roBrpB}rqB(hX' (negation / logical "not"). The unary jDNjPNjjthjNBubj)rrB}rsB(hX``!``h}rtB(h]h]h]h]h]uhjNBh]ruBhX!rvB}rwB(hX!hjrBubahjubhX takes highest precedence, rxBryB}rzB(hX takes highest precedence, jDNjPNjjthjNBubj)r{B}r|B(hX``||``h}r}B(h]h]h]h]h]uhjNBh]r~BhX||rBrB}rB(hX||hj{BubahjubhX` takes lowest. Precedence levels may be overridden through the use of parentheses. For example, rBrB}rB(hX` takes lowest. Precedence levels may be overridden through the use of parentheses. For example, jDNjPNjjthjNBubj)rB}rB(hX,``os(darwin) && !arch(i386) || os(freebsd)``h}rB(h]h]h]h]h]uhjNBh]rBhX(os(darwin) && !arch(i386) || os(freebsd)rBrB}rB(hX(os(darwin) && !arch(i386) || os(freebsd)hjBubahjubhX is equivalent to rBrB}rB(hX is equivalent to jDNjPNjjthjNBubj)rB}rB(hX0``(os(darwin) && !(arch(i386))) || os(freebsd)``h}rB(h]h]h]h]h]uhjNBh]rBhX,(os(darwin) && !(arch(i386))) || os(freebsd)rBrB}rB(hX,(os(darwin) && !(arch(i386))) || os(freebsd)hjBubahjubhX.rB}rB(hX.jDNjPNjjthjNBubeubjZ)rB}rB(hX,The following tests are currently supported.rBhj?BjDjEhj]h}rB(h]h]h]h]h]ujPMd jjth]rBhX,The following tests are currently supported.rBrB}rB(hjBjDNjPNjjthjBubaubj)rB}rB(hUhj?BjDjEhjh}rB(h]h]h]h]h]ujPNjjth]rB(j)rB}rB(hX:samp:`os({name})` Tests if the current operating system is *name*. The argument is tested against ``System.Info.os`` on the target system. There is unfortunately some disagreement between Haskell implementations about the standard values of ``System.Info.os``. Cabal canonicalises it so that in particular ``os(windows)`` works on all implementations. If the canonicalised os names match, this test evaluates to true, otherwise false. The match is case-insensitive.hjBjDjEhjh}rB(h]h]h]h]h]ujPMl h]rB(j)rB}rB(hX:samp:`os({name})`rBhjBjDjEhjh}rB(h]h]h]h]h]ujPMl h]rBj)rB}rB(hXos(name)h}rB(h]h]h]h]rBXsamprBaUrolejBh]uhjBh]rB(hXos(rBrB}rB(hX os({name})hjBubj)rB}rB(hXnameh}rB(h]h]h]h]h]uhjBh]rBhXnamerBrB}rB(hUhjBubahjubhX)rB}rB(hX)hjBubehjubaubj)rB}rB(hUh}rB(h]h]h]h]h]uhjBh]rBjZ)rB}rB(hXTests if the current operating system is *name*. The argument is tested against ``System.Info.os`` on the target system. There is unfortunately some disagreement between Haskell implementations about the standard values of ``System.Info.os``. Cabal canonicalises it so that in particular ``os(windows)`` works on all implementations. If the canonicalised os names match, this test evaluates to true, otherwise false. The match is case-insensitive.hjBjDjEhj]h}rB(h]h]h]h]h]ujPMg h]rB(hX)Tests if the current operating system is rBrB}rB(hX)Tests if the current operating system is hjBubj)rB}rB(hX*name*h}rB(h]h]h]h]h]uhjBh]rBhXnamerBrB}rB(hXnamehjBubahjubhX!. The argument is tested against rBrB}rB(hX!. The argument is tested against hjBubj)rB}rB(hX``System.Info.os``h}rB(h]h]h]h]h]uhjBh]rBhXSystem.Info.osrBrB}rB(hXSystem.Info.oshjBubahjubhX} on the target system. There is unfortunately some disagreement between Haskell implementations about the standard values of rBrB}rB(hX} on the target system. There is unfortunately some disagreement between Haskell implementations about the standard values of hjBubj)rB}rB(hX``System.Info.os``h}rB(h]h]h]h]h]uhjBh]rBhXSystem.Info.osrBrB}rB(hXSystem.Info.oshjBubahjubhX/. Cabal canonicalises it so that in particular rBrB}rB(hX/. Cabal canonicalises it so that in particular hjBubj)rB}rB(hX``os(windows)``h}rB(h]h]h]h]h]uhjBh]rBhX os(windows)rBrB}rB(hX os(windows)hjBubahjubhX works on all implementations. If the canonicalised os names match, this test evaluates to true, otherwise false. The match is case-insensitive.rBrB}rB(hX works on all implementations. If the canonicalised os names match, this test evaluates to true, otherwise false. The match is case-insensitive.hjBubeubahj/ubeubj)rB}rB(hX:samp:`arch({name})` Tests if the current architecture is *name*. The argument is matched against ``System.Info.arch`` on the target system. If the arch names match, this test evaluates to true, otherwise false. The match is case-insensitive.hjBjDjEhjh}rB(h]h]h]h]h]ujPMq jjth]rB(j)rB}rB(hX:samp:`arch({name})`rBhjBjDjEhjh}rB(h]h]h]h]h]ujPMq h]rBj)rB}rB(hX arch(name)h}rB(h]h]h]h]rBXsamprBaUrolejBh]uhjBh]rC(hXarch(rCrC}rC(hX arch({name})hjBubj)rC}rC(hXnameh}rC(h]h]h]h]h]uhjBh]rChXnamerCr C}r C(hUhjCubahjubhX)r C}r C(hX)hjBubehjubaubj)r C}rC(hUh}rC(h]h]h]h]h]uhjBh]rCjZ)rC}rC(hXTests if the current architecture is *name*. The argument is matched against ``System.Info.arch`` on the target system. If the arch names match, this test evaluates to true, otherwise false. The match is case-insensitive.hj CjDjEhj]h}rC(h]h]h]h]h]ujPMo h]rC(hX%Tests if the current architecture is rCrC}rC(hX%Tests if the current architecture is hjCubj)rC}rC(hX*name*h}rC(h]h]h]h]h]uhjCh]rChXnamerCrC}rC(hXnamehjCubahjubhX". The argument is matched against rCr C}r!C(hX". The argument is matched against hjCubj)r"C}r#C(hX``System.Info.arch``h}r$C(h]h]h]h]h]uhjCh]r%ChXSystem.Info.archr&Cr'C}r(C(hXSystem.Info.archhj"CubahjubhX| on the target system. If the arch names match, this test evaluates to true, otherwise false. The match is case-insensitive.r)Cr*C}r+C(hX| on the target system. If the arch names match, this test evaluates to true, otherwise false. The match is case-insensitive.hjCubeubahj/ubeubj)r,C}r-C(hX:samp:`impl({compiler})` Tests for the configured Haskell implementation. An optional version constraint may be specified (for example ``impl(ghc >= 6.6.1)``). If the configured implementation is of the right type and matches the version constraint, then this evaluates to true, otherwise false. The match is case-insensitive. Note that including a version constraint in an ``impl`` test causes it to check for two properties: - The current compiler has the specified name, and - The compiler's version satisfied the specified version constraint As a result, ``!impl(ghc >= x.y.z)`` is not entirely equivalent to ``impl(ghc < x.y.z)``. The test ``!impl(ghc >= x.y.z)`` checks that: - The current compiler is not GHC, or - The version of GHC is earlier than version x.y.z. hjBjDjEhjh}r.C(h]h]h]h]h]ujPM jjth]r/C(j)r0C}r1C(hX:samp:`impl({compiler})`r2Chj,CjDjEhjh}r3C(h]h]h]h]h]ujPM h]r4Cj)r5C}r6C(hXimpl(compiler)h}r7C(h]h]h]h]r8CXsampr9CaUrolej9Ch]uhj0Ch]r:C(hXimpl(r;CrC}r?C(hXcompilerh}r@C(h]h]h]h]h]uhj5Ch]rAChXcompilerrBCrCC}rDC(hUhj>CubahjubhX)rEC}rFC(hX)hj5Cubehjubaubj)rGC}rHC(hUh}rIC(h]h]h]h]h]uhj,Ch]rJC(jZ)rKC}rLC(hX-Tests for the configured Haskell implementation. An optional version constraint may be specified (for example ``impl(ghc >= 6.6.1)``). If the configured implementation is of the right type and matches the version constraint, then this evaluates to true, otherwise false. The match is case-insensitive.hjGCjDjEhj]h}rMC(h]h]h]h]h]ujPMt h]rNC(hXnTests for the configured Haskell implementation. An optional version constraint may be specified (for example rOCrPC}rQC(hXnTests for the configured Haskell implementation. An optional version constraint may be specified (for example hjKCubj)rRC}rSC(hX``impl(ghc >= 6.6.1)``h}rTC(h]h]h]h]h]uhjKCh]rUChXimpl(ghc >= 6.6.1)rVCrWC}rXC(hXimpl(ghc >= 6.6.1)hjRCubahjubhX). If the configured implementation is of the right type and matches the version constraint, then this evaluates to true, otherwise false. The match is case-insensitive.rYCrZC}r[C(hX). If the configured implementation is of the right type and matches the version constraint, then this evaluates to true, otherwise false. The match is case-insensitive.hjKCubeubjZ)r\C}r]C(hXcNote that including a version constraint in an ``impl`` test causes it to check for two properties:hjGCjDjEhj]h}r^C(h]h]h]h]h]ujPMz h]r_C(hX/Note that including a version constraint in an r`CraC}rbC(hX/Note that including a version constraint in an hj\Cubj)rcC}rdC(hX``impl``h}reC(h]h]h]h]h]uhj\Ch]rfChXimplrgCrhC}riC(hXimplhjcCubahjubhX, test causes it to check for two properties:rjCrkC}rlC(hX, test causes it to check for two properties:hj\Cubeubj )rmC}rnC(hUhjGCjDjEhj h}roC(j X-h]h]h]h]h]ujPM} h]rpC(j )rqC}rrC(hX1The current compiler has the specified name, and h}rsC(h]h]h]h]h]uhjmCh]rtCjZ)ruC}rvC(hX0The current compiler has the specified name, andrwChjqCjDjEhj]h}rxC(h]h]h]h]h]ujPM} h]ryChX0The current compiler has the specified name, andrzCr{C}r|C(hjwChjuCubaubahj ubj )r}C}r~C(hXBThe compiler's version satisfied the specified version constraint h}rC(h]h]h]h]h]uhjmCh]rCjZ)rC}rC(hXAThe compiler's version satisfied the specified version constraintrChj}CjDjEhj]h}rC(h]h]h]h]h]ujPM h]rChXCThe compiler’s version satisfied the specified version constraintrCrC}rC(hjChjCubaubahj ubeubjZ)rC}rC(hXAs a result, ``!impl(ghc >= x.y.z)`` is not entirely equivalent to ``impl(ghc < x.y.z)``. The test ``!impl(ghc >= x.y.z)`` checks that:hjGCjDjEhj]h}rC(h]h]h]h]h]ujPM h]rC(hX As a result, rCrC}rC(hX As a result, hjCubj)rC}rC(hX``!impl(ghc >= x.y.z)``h}rC(h]h]h]h]h]uhjCh]rChX!impl(ghc >= x.y.z)rCrC}rC(hX!impl(ghc >= x.y.z)hjCubahjubhX is not entirely equivalent to rCrC}rC(hX is not entirely equivalent to hjCubj)rC}rC(hX``impl(ghc < x.y.z)``h}rC(h]h]h]h]h]uhjCh]rChXimpl(ghc < x.y.z)rCrC}rC(hXimpl(ghc < x.y.z)hjCubahjubhX . The test rCrC}rC(hX . The test hjCubj)rC}rC(hX``!impl(ghc >= x.y.z)``h}rC(h]h]h]h]h]uhjCh]rChX!impl(ghc >= x.y.z)rCrC}rC(hX!impl(ghc >= x.y.z)hjCubahjubhX checks that:rCrC}rC(hX checks that:hjCubeubj )rC}rC(hUhjGCjDjEhj h}rC(j X-h]h]h]h]h]ujPM h]rC(j )rC}rC(hX$The current compiler is not GHC, or h}rC(h]h]h]h]h]uhjCh]rCjZ)rC}rC(hX#The current compiler is not GHC, orrChjCjDjEhj]h}rC(h]h]h]h]h]ujPM h]rChX#The current compiler is not GHC, orrCrC}rC(hjChjCubaubahj ubj )rC}rC(hX2The version of GHC is earlier than version x.y.z. h}rC(h]h]h]h]h]uhjCh]rCjZ)rC}rC(hX1The version of GHC is earlier than version x.y.z.rChjCjDjEhj]h}rC(h]h]h]h]h]ujPM h]rChX1The version of GHC is earlier than version x.y.z.rCrC}rC(hjChjCubaubahj ubeubehj/ubeubj)rC}rC(hX:samp:`flag({name})` Evaluates to the current assignment of the flag of the given name. Flag names are case insensitive. Testing for flags that have not been introduced with a flag section is an error.hjBjDjEhjh}rC(h]h]h]h]h]ujPM jjth]rC(j)rC}rC(hX:samp:`flag({name})`rChjCjDjEhjh}rC(h]h]h]h]h]ujPM h]rCj)rC}rC(hX flag(name)h}rC(h]h]h]h]rCXsamprCaUrolejCh]uhjCh]rC(hXflag(rCrC}rC(hX flag({name})hjCubj)rC}rC(hXnameh}rC(h]h]h]h]h]uhjCh]rChXnamerCrC}rC(hUhjCubahjubhX)rC}rC(hX)hjCubehjubaubj)rC}rC(hUh}rC(h]h]h]h]h]uhjCh]rCjZ)rC}rC(hXEvaluates to the current assignment of the flag of the given name. Flag names are case insensitive. Testing for flags that have not been introduced with a flag section is an error.rChjCjDjEhj]h}rC(h]h]h]h]h]ujPM h]rChXEvaluates to the current assignment of the flag of the given name. Flag names are case insensitive. Testing for flags that have not been introduced with a flag section is an error.rCrC}rC(hjChjCubaubahj/ubeubj)rC}rC(hX``true`` Constant value true.hjBjDjEhjh}rC(h]h]h]h]h]ujPM jjth]rC(j)rC}rC(hX``true``rChjCjDjEhjh}rC(h]h]h]h]h]ujPM h]rCj)rC}rC(hjCh}rC(h]h]h]h]h]uhjCh]rChXtruerCrC}rD(hXtruehjCubahjubaubj)rD}rD(hUh}rD(h]h]h]h]h]uhjCh]rDjZ)rD}rD(hXConstant value true.rDhjDjDjEhj]h}rD(h]h]h]h]h]ujPM h]r DhXConstant value true.r Dr D}r D(hjDhjDubaubahj/ubeubj)r D}rD(hX ``false`` Constant value false. hjBjDjEhjh}rD(h]h]h]h]h]ujPM jjth]rD(j)rD}rD(hX ``false``rDhj DjDjEhjh}rD(h]h]h]h]h]ujPM h]rDj)rD}rD(hjDh}rD(h]h]h]h]h]uhjDh]rDhXfalserDrD}rD(hXfalsehjDubahjubaubj)rD}rD(hUh}rD(h]h]h]h]h]uhj Dh]r DjZ)r!D}r"D(hXConstant value false.r#DhjDjDjEhj]h}r$D(h]h]h]h]h]ujPM h]r%DhXConstant value false.r&Dr'D}r(D(hj#Dhj!Dubaubahj/ubeubeubeubjn)r)D}r*D(hUhjAjDjEhjqh}r+D(h]h]h]h]r,DU"resolution-of-conditions-and-flagsr-Dah]r.DjaujPM jjth]r/D(h)r0D}r1D(hX"Resolution of Conditions and Flagsr2Dhj)DjDjEhhh}r3D(h]h]h]h]h]ujPM jjth]r4DhX"Resolution of Conditions and Flagsr5Dr6D}r7D(hj2DjDNjPNjjthj0DubaubjZ)r8D}r9D(hXIf a package descriptions specifies configuration flags the package user can `control these in several ways `__. If the user does not fix the value of a flag, Cabal will try to find a flag assignment in the following way.hj)DjDjEhj]h}r:D(h]h]h]h]h]ujPM jjth]r;D(hXMIf a package descriptions specifies configuration flags the package user can rD(hXMIf a package descriptions specifies configuration flags the package user can jDNjPNjjthj8Dubj!)r?D}r@D(hXY`control these in several ways `__h}rAD(UnameXcontrol these in several waysj] X5installing-packages.html#controlling-flag-assignmentsh]h]h]h]h]uhj8Dh]rBDhXcontrol these in several waysrCDrDD}rED(hXcontrol these in several wayshj?Dubahj%ubhXn. If the user does not fix the value of a flag, Cabal will try to find a flag assignment in the following way.rFDrGD}rHD(hXn. If the user does not fix the value of a flag, Cabal will try to find a flag assignment in the following way.jDNjPNjjthj8Dubeubj )rID}rJD(hUhj)DjDjEhj h}rKD(j X-h]h]h]h]h]ujPM jjth]rLD(j )rMD}rND(hXFor each flag specified, it will assign its default value, evaluate all conditions with this flag assignment, and check if all dependencies can be satisfied. If this check succeeded, the package will be configured with those flag assignments. hjIDjDjEhj h}rOD(h]h]h]h]h]ujPNjjth]rPDjZ)rQD}rRD(hXFor each flag specified, it will assign its default value, evaluate all conditions with this flag assignment, and check if all dependencies can be satisfied. If this check succeeded, the package will be configured with those flag assignments.rSDhjMDjDjEhj]h}rTD(h]h]h]h]h]ujPM h]rUDhXFor each flag specified, it will assign its default value, evaluate all conditions with this flag assignment, and check if all dependencies can be satisfied. If this check succeeded, the package will be configured with those flag assignments.rVDrWD}rXD(hjSDhjQDubaubaubj )rYD}rZD(hX9If dependencies were missing, the last flag (as by the order in which the flags were introduced in the package description) is tried with its alternative value and so on. This continues until either an assignment is found where all dependencies can be satisfied, or all possible flag assignments have been tried. hjIDjDjEhj h}r[D(h]h]h]h]h]ujPNjjth]r\DjZ)r]D}r^D(hX8If dependencies were missing, the last flag (as by the order in which the flags were introduced in the package description) is tried with its alternative value and so on. This continues until either an assignment is found where all dependencies can be satisfied, or all possible flag assignments have been tried.r_DhjYDjDjEhj]h}r`D(h]h]h]h]h]ujPM h]raDhX8If dependencies were missing, the last flag (as by the order in which the flags were introduced in the package description) is tried with its alternative value and so on. This continues until either an assignment is found where all dependencies can be satisfied, or all possible flag assignments have been tried.rbDrcD}rdD(hj_Dhj]DubaubaubeubjZ)reD}rfD(hXTo put it another way, Cabal does a complete backtracking search to find a satisfiable package configuration. It is only the dependencies specified in the :pkg-field:`build-depends` field in conditional blocks that determine if a particular flag assignment is satisfiable (:pkg-field:`build-tools` are not considered). The order of the declaration and the default value of the flags determines the search order. Flags overridden on the command line fix the assignment of that flag, so no backtracking will be tried for that flag.hj)DjDjEhj]h}rgD(h]h]h]h]h]ujPM jjth]rhD(hXTo put it another way, Cabal does a complete backtracking search to find a satisfiable package configuration. It is only the dependencies specified in the riDrjD}rkD(hXTo put it another way, Cabal does a complete backtracking search to find a satisfiable package configuration. It is only the dependencies specified in the jDNjPNjjthjeDubjM)rlD}rmD(hX:pkg-field:`build-depends`hjeDjDjEhjPh}rnD(UreftypeX pkg-fieldjRjSX build-dependsroDU refdomainXcabalrpDh]h]U refexplicith]h]h]jVj jljEujPM h]rqDj)rrD}rsD(hjoDh}rtD(h]h]ruD(j]jpDXcabal-pkg-fieldrvDeh]h]h]uhjlDh]rwDhX build-dependsrxDryD}rzD(hUhjrDubahjubaubhX\ field in conditional blocks that determine if a particular flag assignment is satisfiable (r{Dr|D}r}D(hX\ field in conditional blocks that determine if a particular flag assignment is satisfiable (jDNjPNjjthjeDubjM)r~D}rD(hX:pkg-field:`build-tools`hjeDjDjEhjPh}rD(UreftypeX pkg-fieldjRjSX build-toolsrDU refdomainXcabalrDh]h]U refexplicith]h]h]jVj jljEujPM h]rDj)rD}rD(hjDh}rD(h]h]rD(j]jDXcabal-pkg-fieldrDeh]h]h]uhj~Dh]rDhX build-toolsrDrD}rD(hUhjDubahjubaubhX are not considered). The order of the declaration and the default value of the flags determines the search order. Flags overridden on the command line fix the assignment of that flag, so no backtracking will be tried for that flag.rDrD}rD(hX are not considered). The order of the declaration and the default value of the flags determines the search order. Flags overridden on the command line fix the assignment of that flag, so no backtracking will be tried for that flag.jDNjPNjjthjeDubeubjZ)rD}rD(hXbIf no suitable flag assignment could be found, the configuration phase will fail and a list of missing dependencies will be printed. Note that this resolution process is exponential in the worst case (i.e., in the case where dependencies cannot be satisfied). There are some optimizations applied internally, but the overall complexity remains unchanged.rDhj)DjDjEhj]h}rD(h]h]h]h]h]ujPM jjth]rDhXbIf no suitable flag assignment could be found, the configuration phase will fail and a list of missing dependencies will be printed. Note that this resolution process is exponential in the worst case (i.e., in the case where dependencies cannot be satisfied). There are some optimizations applied internally, but the overall complexity remains unchanged.rDrD}rD(hjDjDNjPNjjthjDubaubeubeubjn)rD}rD(hUhjjDjEhjqh}rD(h]h]h]h]rDU/meaning-of-field-values-when-using-conditionalsrDah]rDjaujPM jjth]rD(h)rD}rD(hX/Meaning of field values when using conditionalsrDhjDjDjEhhh}rD(h]h]h]h]h]ujPM jjth]rDhX/Meaning of field values when using conditionalsrDrD}rD(hjDjDNjPNjjthjDubaubjZ)rD}rD(hXDuring the configuration phase, a flag assignment is chosen, all conditionals are evaluated, and the package description is combined into a flat package descriptions. If the same field both inside a conditional and outside then they are combined using the following rules.rDhjDjDjEhj]h}rD(h]h]h]h]h]ujPM jjth]rDhXDuring the configuration phase, a flag assignment is chosen, all conditionals are evaluated, and the package description is combined into a flat package descriptions. If the same field both inside a conditional and outside then they are combined using the following rules.rDrD}rD(hjDjDNjPNjjthjDubaubj )rD}rD(hUhjDjDjEhj h}rD(j X-h]h]h]h]h]ujPM jjth]rD(j )rD}rD(hX?Boolean fields are combined using conjunction (logical "and"). hjDjDjEhj h}rD(h]h]h]h]h]ujPNjjth]rDjZ)rD}rD(hX>Boolean fields are combined using conjunction (logical "and").rDhjDjDjEhj]h}rD(h]h]h]h]h]ujPM h]rDhXBBoolean fields are combined using conjunction (logical “and”).rDrD}rD(hjDhjDubaubaubj )rD}rD(hXList fields are combined by appending the inner items to the outer items, for example :: other-extensions: CPP if impl(ghc) other-extensions: MultiParamTypeClasses when compiled using GHC will be combined to :: other-extensions: CPP, MultiParamTypeClasses Similarly, if two conditional sections appear at the same nesting level, properties specified in the latter will come after properties specified in the former. hjDjDjEhj h}rD(h]h]h]h]h]ujPNjjth]rD(jZ)rD}rD(hXUList fields are combined by appending the inner items to the outer items, for examplerDhjDjDjEhj]h}rD(h]h]h]h]h]ujPM h]rDhXUList fields are combined by appending the inner items to the outer items, for examplerDrD}rD(hjDhjDubaubj)rD}rD(hXLother-extensions: CPP if impl(ghc) other-extensions: MultiParamTypeClasseshjDjDjEhjh}rD(jjh]h]h]h]h]ujPM h]rDhXLother-extensions: CPP if impl(ghc) other-extensions: MultiParamTypeClassesrDrD}rD(hUhjDubaubjZ)rD}rD(hX+when compiled using GHC will be combined torDhjDjDjEhj]h}rD(h]h]h]h]h]ujPM h]rDhX+when compiled using GHC will be combined torDrD}rD(hjDhjDubaubj)rD}rD(hX,other-extensions: CPP, MultiParamTypeClasseshjDjDjEhjh}rD(jjh]h]h]h]h]ujPM h]rDhX,other-extensions: CPP, MultiParamTypeClassesrDrD}rD(hUhjDubaubjZ)rD}rD(hXSimilarly, if two conditional sections appear at the same nesting level, properties specified in the latter will come after properties specified in the former.rDhjDjDjEhj]h}rD(h]h]h]h]h]ujPM h]rDhXSimilarly, if two conditional sections appear at the same nesting level, properties specified in the latter will come after properties specified in the former.rDrD}rD(hjDhjDubaubeubj )rD}rD(hXAll other fields must not be specified in ambiguous ways. For example :: Main-is: Main.hs if flag(useothermain) Main-is: OtherMain.hs will lead to an error. Instead use :: if flag(useothermain) Main-is: OtherMain.hs else Main-is: Main.hs hjDjDjEhj h}rD(h]h]h]h]h]ujPNjjth]rD(jZ)rD}rD(hXEAll other fields must not be specified in ambiguous ways. For examplerDhjDjDjEhj]h}rD(h]h]h]h]h]ujPM h]rDhXEAll other fields must not be specified in ambiguous ways. For examplerDrD}rD(hjDhjDubaubj)rD}rD(hX>Main-is: Main.hs if flag(useothermain) Main-is: OtherMain.hshjDjDjEhjh}rD(jjh]h]h]h]h]ujPM h]rDhX>Main-is: Main.hs if flag(useothermain) Main-is: OtherMain.hsrDrD}rD(hUhjDubaubjZ)rD}rD(hX"will lead to an error. Instead userDhjDjDjEhj]h}rD(h]h]h]h]h]ujPM h]rEhX"will lead to an error. Instead userErE}rE(hjDhjDubaubj)rE}rE(hXEif flag(useothermain) Main-is: OtherMain.hs else Main-is: Main.hshjDjDjEhjh}rE(jjh]h]h]h]h]ujPM h]rEhXEif flag(useothermain) Main-is: OtherMain.hs else Main-is: Main.hsrEr E}r E(hUhjEubaubeubeubeubjn)r E}r E(hUjKhjjDjEhjqh}r E(h]h]h]h]rEjah]rEjaujPM jjth]rE(h)rE}rE(hXCommon stanzasrEhj EjDjEhhh}rE(h]h]h]h]h]ujPM jjth]rEhXCommon stanzasrErE}rE(hjEjDNjPNjjthjEubaubj )rE}rE(hUhj EjDNhjnh}rE(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rE}rE(hUhj EjDNhj h}rE(j j Xcabalh]h]h]h]h]j X pkg-sectionrEj jEujPNjjth]r E(j )r!E}r"E(hX common namehjEjDjEhj h}r#E(h]r$Ejah]h]h]h]j ujPNjjth]r%E(j )r&E}r'E(hUhj!EjDjEhjnh}r(E(h]h]h]h]h]Uentries]r)E(j! X$common:common; package.cabal sectionjUNtr*EaujPNjjth]ubj# )r+E}r,E(hjhj!EjDjEhj& h}r-E(jjh]h]h]h]h]ujPNjjth]r.EhXcommonr/Er0E}r1E(hUjDNjPNjjthj+Eubaubj, )r2E}r3E(hU hj!EjDjEhj0 h}r4E(jjh]h]h]h]h]ujPNjjth]r5EhX r6E}r7E(hUjDNjPNjjthj2Eubaubj6 )r8E}r9E(hXnamehj!EjDjEhj9 h}r:E(jjh]h]h]h]h]ujPNjjth]r;EhXnamerE(hUjDNjPNjjthj8Eubaubeubjh)r?E}r@E(hUhjEjDjEhjA h}rAE(h]h]h]h]h]ujPNjjth]rBEj)rCE}rDE(hUhj?EjDNhjh}rEE(h]h]h]h]h]ujPNjjth]rFEj)rGE}rHE(hUhjCEjDNhj.h}rIE(h]h]h]h]h]ujPNjjth]rJE(j )rKE}rLE(hj+hjGEjDjEhj h}rME(h]h]h]h]h]ujPKh]rNEhXSincerOErPE}rQE(hUhjKEubaubj)rRE}rSE(hU Cabal 2.2rTEh}rUE(h]h]h]h]h]uhjGEh]rVEjZ)rWE}rXE(hjTEh}rYE(h]h]h]h]h]uhjREh]rZEhX Cabal 2.2r[Er\E}r]E(hUhjWEubahj]ubahj-ubeubaubaubeubjZ)r^E}r_E(hXGStarting with Cabal-2.2 it's possible to use common build info stanzas.r`Ehj EjDjEhj]h}raE(h]h]h]h]h]ujPM jjth]rbEhXIStarting with Cabal-2.2 it’s possible to use common build info stanzas.rcErdE}reE(hj`EjDNjPNjjthj^Eubaubj)rfE}rgE(hXcommon deps build-depends: base ^>= 4.11 ghc-options: -Wall common test-deps build-depends: tasty ^>= 0.12.0.1 library import: deps exposed-modules: Foo test-suite tests import: deps, test-deps type: exitcode-stdio-1.0 main-is: Tests.hs build-depends: foohj EjDjEhjh}rhE(jjh]h]h]h]h]ujPM jjth]riEhXcommon deps build-depends: base ^>= 4.11 ghc-options: -Wall common test-deps build-depends: tasty ^>= 0.12.0.1 library import: deps exposed-modules: Foo test-suite tests import: deps, test-deps type: exitcode-stdio-1.0 main-is: Tests.hs build-depends: foorjErkE}rlE(hUhjfEubaubj )rmE}rnE(hUhj EjDjEhj h}roE(j X-h]h]h]h]h]ujPM jjth]rpE(j )rqE}rrE(hX;You can use `build information`_ fields in common stanzas. hjmEjDjEhj h}rsE(h]h]h]h]h]ujPNjjth]rtEjZ)ruE}rvE(hX:You can use `build information`_ fields in common stanzas.hjqEjDjEhj]h}rwE(h]h]h]h]h]ujPM h]rxE(hX You can use ryErzE}r{E(hX You can use hjuEubj!)r|E}r}E(hX`build information`_j$KhjuEhj%h}r~E(UnameXbuild informationh]h]h]h]h]j'jouh]rEhXbuild informationrErE}rE(hXbuild informationhj|EubaubhX fields in common stanzas.rErE}rE(hX fields in common stanzas.hjuEubeubaubj )rE}rE(hX+Common stanzas must be defined before use. hjmEjDjEhj h}rE(h]h]h]h]h]ujPNjjth]rEjZ)rE}rE(hX*Common stanzas must be defined before use.rEhjEjDjEhj]h}rE(h]h]h]h]h]ujPM h]rEhX*Common stanzas must be defined before use.rErE}rE(hjEhjEubaubaubj )rE}rE(hX0Common stanzas can import other common stanzas. hjmEjDjEhj h}rE(h]h]h]h]h]ujPNjjth]rEjZ)rE}rE(hX/Common stanzas can import other common stanzas.rEhjEjDjEhj]h}rE(h]h]h]h]h]ujPM h]rEhX/Common stanzas can import other common stanzas.rErE}rE(hjEhjEubaubaubj )rE}rE(hXSYou can import multiple stanzas at once. Stanza names must be separated by commas. hjmEjDjEhj h}rE(h]h]h]h]h]ujPNjjth]rEjZ)rE}rE(hXRYou can import multiple stanzas at once. Stanza names must be separated by commas.rEhjEjDjEhj]h}rE(h]h]h]h]h]ujPM h]rEhXRYou can import multiple stanzas at once. Stanza names must be separated by commas.rErE}rE(hjEhjEubaubaubj )rE}rE(hXo``import`` must be the first field in a section. Since Cabal 3.0 imports are also allowed inside conditionals. hjmEjDjEhj h}rE(h]h]h]h]h]ujPNjjth]rEjZ)rE}rE(hXn``import`` must be the first field in a section. Since Cabal 3.0 imports are also allowed inside conditionals.hjEjDjEhj]h}rE(h]h]h]h]h]ujPM h]rE(j)rE}rE(hX ``import``h}rE(h]h]h]h]h]uhjEh]rEhXimportrErE}rE(hXimporthjEubahjubhXd must be the first field in a section. Since Cabal 3.0 imports are also allowed inside conditionals.rErE}rE(hXd must be the first field in a section. Since Cabal 3.0 imports are also allowed inside conditionals.hjEubeubaubeubj )rE}rE(hXBThe name `import` was chosen, because there is ``includes`` field.rEhj EjDjEhj h}rE(h]h]h]h]h]ujPNjjth]rEjZ)rE}rE(hjEhjEjDjEhj]h}rE(h]h]h]h]h]ujPM h]rE(hX The name rErE}rE(hX The name hjEubj")rE}rE(hX`import`h}rE(h]h]h]h]h]uhjEh]rEhXimportrErE}rE(hXimporthjEubahj"ubhX was chosen, because there is rErE}rE(hX was chosen, because there is hjEubj)rE}rE(hX ``includes``h}rE(h]h]h]h]h]uhjEh]rEhXincludesrErE}rE(hXincludeshjEubahjubhX field.rErE}rE(hX field.hjEubeubaubeubjn)rE}rE(hUhjjDjEhjqh}rE(h]h]h]h]rEjah]rEjaujPM jjth]rE(h)rE}rE(hXSource RepositoriesrEhjEjDjEhhh}rE(h]h]h]h]h]ujPM jjth]rEhXSource RepositoriesrErE}rE(hjEjDNjPNjjthjEubaubj )rE}rE(hUhjEjDNhjnh}rE(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rE}rE(hUhjEjDNhj h}rE(j j Xcabalh]h]h]h]h]j X pkg-sectionrEj jEujPNjjth]rE(j )rE}rE(hjhjEjDjEhj h}rE(h]rEjah]h]h]h]j ujPNjjth]rE(j )rE}rE(hUhjEjDjEhjnh}rE(h]h]h]h]h]Uentries]rE(j! X:source-repository:source-repository; package.cabal sectionjUNtrEaujPNjjth]ubj# )rE}rE(hjhjEjDjEhj& h}rE(jjh]h]h]h]h]ujPNjjth]rEhXsource-repositoryrFrF}rF(hUjDNjPNjjthjEubaubj, )rF}rF(hU hjEjDjEhj0 h}rF(jjh]h]h]h]h]ujPNjjth]rFhX rF}rF(hUjDNjPNjjthjFubaubeubjh)r F}r F(hUhjEjDjEhjA h}r F(h]h]h]h]h]ujPNjjth]r Fj)r F}rF(hUhj FjDNhjh}rF(h]h]h]h]h]ujPNjjth]rFj)rF}rF(hUhj FjDNhj.h}rF(h]h]h]h]h]ujPNjjth]rF(j )rF}rF(hj+hjFjDjEhj h}rF(h]h]h]h]h]ujPKh]rFhXSincerFrF}rF(hUhjFubaubj)rF}rF(hU Cabal 1.6rFh}rF(h]h]h]h]h]uhjFh]r FjZ)r!F}r"F(hjFh}r#F(h]h]h]h]h]uhjFh]r$FhX Cabal 1.6r%Fr&F}r'F(hUhj!Fubahj]ubahj-ubeubaubaubeubjZ)r(F}r)F(hXYIt is often useful to be able to specify a source revision control repository for a package. Cabal lets you specifying this information in a relatively structured form which enables other tools to interpret and make effective use of the information. For example the information should be sufficient for an automatic tool to checkout the sources.r*FhjEjDjEhj]h}r+F(h]h]h]h]h]ujPM jjth]r,FhXYIt is often useful to be able to specify a source revision control repository for a package. Cabal lets you specifying this information in a relatively structured form which enables other tools to interpret and make effective use of the information. For example the information should be sufficient for an automatic tool to checkout the sources.r-Fr.F}r/F(hj*FjDNjPNjjthj(FubaubjZ)r0F}r1F(hXCabal supports specifying different information for various common source control systems. Obviously not all automated tools will support all source control systems.r2FhjEjDjEhj]h}r3F(h]h]h]h]h]ujPM jjth]r4FhXCabal supports specifying different information for various common source control systems. Obviously not all automated tools will support all source control systems.r5Fr6F}r7F(hj2FjDNjPNjjthj0FubaubjZ)r8F}r9F(hXCabal supports specifying repositories for different use cases. By declaring which case we mean automated tools can be more useful. There are currently two kinds defined:r:FhjEjDjEhj]h}r;F(h]h]h]h]h]ujPM jjth]rF}r?F(hj:FjDNjPNjjthj8Fubaubj )r@F}rAF(hUhjEjDjEhj h}rBF(j X-h]h]h]h]h]ujPM" jjth]rCF(j )rDF}rEF(hXThe ``head`` kind refers to the latest development branch of the package. This may be used for example to track activity of a project or as an indication to outside developers what sources to get for making new contributions. hj@FjDjEhj h}rFF(h]h]h]h]h]ujPNjjth]rGFjZ)rHF}rIF(hXThe ``head`` kind refers to the latest development branch of the package. This may be used for example to track activity of a project or as an indication to outside developers what sources to get for making new contributions.hjDFjDjEhj]h}rJF(h]h]h]h]h]ujPM" h]rKF(hXThe rLFrMF}rNF(hXThe hjHFubj)rOF}rPF(hX``head``h}rQF(h]h]h]h]h]uhjHFh]rRFhXheadrSFrTF}rUF(hXheadhjOFubahjubhX kind refers to the latest development branch of the package. This may be used for example to track activity of a project or as an indication to outside developers what sources to get for making new contributions.rVFrWF}rXF(hX kind refers to the latest development branch of the package. This may be used for example to track activity of a project or as an indication to outside developers what sources to get for making new contributions.hjHFubeubaubj )rYF}rZF(hXThe ``this`` kind refers to the branch and tag of a repository that contains the sources for this version or release of a package. For most source control systems this involves specifying a tag, id or hash of some form and perhaps a branch. The purpose is to be able to reconstruct the sources corresponding to a particular package version. This might be used to indicate what sources to get if someone needs to fix a bug in an older branch that is no longer an active head branch. hj@FjDjEhj h}r[F(h]h]h]h]h]ujPNjjth]r\FjZ)r]F}r^F(hXThe ``this`` kind refers to the branch and tag of a repository that contains the sources for this version or release of a package. For most source control systems this involves specifying a tag, id or hash of some form and perhaps a branch. The purpose is to be able to reconstruct the sources corresponding to a particular package version. This might be used to indicate what sources to get if someone needs to fix a bug in an older branch that is no longer an active head branch.hjYFjDjEhj]h}r_F(h]h]h]h]h]ujPM' h]r`F(hXThe raFrbF}rcF(hXThe hj]Fubj)rdF}reF(hX``this``h}rfF(h]h]h]h]h]uhj]Fh]rgFhXthisrhFriF}rjF(hXthishjdFubahjubhX kind refers to the branch and tag of a repository that contains the sources for this version or release of a package. For most source control systems this involves specifying a tag, id or hash of some form and perhaps a branch. The purpose is to be able to reconstruct the sources corresponding to a particular package version. This might be used to indicate what sources to get if someone needs to fix a bug in an older branch that is no longer an active head branch.rkFrlF}rmF(hX kind refers to the branch and tag of a repository that contains the sources for this version or release of a package. For most source control systems this involves specifying a tag, id or hash of some form and perhaps a branch. The purpose is to be able to reconstruct the sources corresponding to a particular package version. This might be used to indicate what sources to get if someone needs to fix a bug in an older branch that is no longer an active head branch.hj]FubeubaubeubjZ)rnF}roF(hXYou can specify one kind or the other or both. As an example here are the repositories for the Cabal library. Note that the ``this`` kind of repository specifies a tag.hjEjDjEhj]h}rpF(h]h]h]h]h]ujPM0 jjth]rqF(hX|You can specify one kind or the other or both. As an example here are the repositories for the Cabal library. Note that the rrFrsF}rtF(hX|You can specify one kind or the other or both. As an example here are the repositories for the Cabal library. Note that the jDNjPNjjthjnFubj)ruF}rvF(hX``this``h}rwF(h]h]h]h]h]uhjnFh]rxFhXthisryFrzF}r{F(hXthishjuFubahjubhX$ kind of repository specifies a tag.r|Fr}F}r~F(hX$ kind of repository specifies a tag.jDNjPNjjthjnFubeubj)rF}rF(hXsource-repository head type: darcs location: http://darcs.haskell.org/cabal/ source-repository this type: darcs location: http://darcs.haskell.org/cabal-branches/cabal-1.6/ tag: 1.6.1hjEjDjEhjh}rF(jjh]h]h]h]h]ujPM6 jjth]rFhXsource-repository head type: darcs location: http://darcs.haskell.org/cabal/ source-repository this type: darcs location: http://darcs.haskell.org/cabal-branches/cabal-1.6/ tag: 1.6.1rFrF}rF(hUhjFubaubjZ)rF}rF(hX The exact fields are as follows:rFhjEjDjEhj]h}rF(h]h]h]h]h]ujPM? jjth]rFhX The exact fields are as follows:rFrF}rF(hjFjDNjPNjjthjFubaubj )rF}rF(hUhjEjDjEhjnh}rF(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rF}rF(hUhjEjDjEhj h}rF(j j Xcabalh]h]h]h]h]j X pkg-fieldrFj jFujPNjjth]rF(j )rF}rF(hX type: tokenhjFjDjEhj h}rF(h]rFjah]h]h]h]j ujPMP jjth]rF(j )rF}rF(hUhjFjDjEhjnh}rF(h]h]h]h]h]Uentries]rF(j! X+source-repository:type; package.cabal fieldjUNtrFaujPMP jjth]ubj# )rF}rF(hj hjFjDjEhj& h}rF(jjh]h]h]h]h]ujPMP jjth]rFhXtyperFrF}rF(hUjDNjPNjjthjFubaubj, )rF}rF(hj/ hjFjDjEhj0 h}rF(jjh]h]h]h]h]ujPMP jjth]rFhX: rFrF}rF(hUjDNjPNjjthjFubaubj6 )rF}rF(hXtokenhjFjDjEhj9 h}rF(jjh]h]h]h]h]ujPMP jjth]rFhXtokenrFrF}rF(hUjDNjPNjjthjFubaubeubjh)rF}rF(hUhjFjDjEhjA h}rF(h]h]h]h]h]ujPMP jjth]rF(jZ)rF}rF(hXcThe name of the source control system used for this repository. The currently recognised types are:rFhjFjDjEhj]h}rF(h]h]h]h]h]ujPMC jjth]rFhXcThe name of the source control system used for this repository. The currently recognised types are:rFrF}rF(hjFjDNjPNjjthjFubaubj )rF}rF(hUhjFjDjEhj h}rF(j X-h]h]h]h]h]ujPMF jjth]rF(j )rF}rF(hX ``darcs``rFhjFjDjEhj h}rF(h]h]h]h]h]ujPNjjth]rFjZ)rF}rF(hjFhjFjDjEhj]h}rF(h]h]h]h]h]ujPMF h]rFj)rF}rF(hjFh}rF(h]h]h]h]h]uhjFh]rFhXdarcsrFrF}rF(hXdarcshjFubahjubaubaubj )rF}rF(hX``git``rFhjFjDjEhj h}rF(h]h]h]h]h]ujPNjjth]rFjZ)rF}rF(hjFhjFjDjEhj]h}rF(h]h]h]h]h]ujPMG h]rFj)rF}rF(hjFh}rF(h]h]h]h]h]uhjFh]rFhXgitrFrF}rF(hXgithjFubahjubaubaubj )rF}rF(hX``svn``rFhjFjDjEhj h}rF(h]h]h]h]h]ujPNjjth]rFjZ)rF}rF(hjFhjFjDjEhj]h}rF(h]h]h]h]h]ujPMH h]rFj)rF}rF(hjFh}rF(h]h]h]h]h]uhjFh]rFhXsvnrFrF}rF(hXsvnhjFubahjubaubaubj )rF}rF(hX``cvs``rFhjFjDjEhj h}rF(h]h]h]h]h]ujPNjjth]rFjZ)rF}rF(hjFhjFjDjEhj]h}rF(h]h]h]h]h]ujPMI h]rFj)rF}rF(hjFh}rG(h]h]h]h]h]uhjFh]rGhXcvsrGrG}rG(hXcvshjFubahjubaubaubj )rG}rG(hX``mercurial`` (or alias ``hg``)rGhjFjDjEhj h}rG(h]h]h]h]h]ujPNjjth]r GjZ)r G}r G(hjGhjGjDjEhj]h}r G(h]h]h]h]h]ujPMJ h]r G(j)rG}rG(hX ``mercurial``h}rG(h]h]h]h]h]uhj Gh]rGhX mercurialrGrG}rG(hX mercurialhjGubahjubhX (or alias rGrG}rG(hX (or alias hj Gubj)rG}rG(hX``hg``h}rG(h]h]h]h]h]uhj Gh]rGhXhgrGrG}rG(hXhghjGubahjubhX)rG}r G(hX)hj Gubeubaubj )r!G}r"G(hX``bazaar`` (or alias ``bzr``)r#GhjFjDjEhj h}r$G(h]h]h]h]h]ujPNjjth]r%GjZ)r&G}r'G(hj#Ghj!GjDjEhj]h}r(G(h]h]h]h]h]ujPMK h]r)G(j)r*G}r+G(hX ``bazaar``h}r,G(h]h]h]h]h]uhj&Gh]r-GhXbazaarr.Gr/G}r0G(hXbazaarhj*GubahjubhX (or alias r1Gr2G}r3G(hX (or alias hj&Gubj)r4G}r5G(hX``bzr``h}r6G(h]h]h]h]h]uhj&Gh]r7GhXbzrr8Gr9G}r:G(hXbzrhj4GubahjubhX)r;G}rG(hX``arch``r?GhjFjDjEhj h}r@G(h]h]h]h]h]ujPNjjth]rAGjZ)rBG}rCG(hj?Ghj=GjDjEhj]h}rDG(h]h]h]h]h]ujPML h]rEGj)rFG}rGG(hj?Gh}rHG(h]h]h]h]h]uhjBGh]rIGhXarchrJGrKG}rLG(hXarchhjFGubahjubaubaubj )rMG}rNG(hX ``monotone`` hjFjDjEhj h}rOG(h]h]h]h]h]ujPNjjth]rPGjZ)rQG}rRG(hX ``monotone``rSGhjMGjDjEhj]h}rTG(h]h]h]h]h]ujPMM h]rUGj)rVG}rWG(hjSGh}rXG(h]h]h]h]h]uhjQGh]rYGhXmonotonerZGr[G}r\G(hXmonotonehjVGubahjubaubaubeubjZ)r]G}r^G(hXThis field is required.r_GhjFjDjEhj]h}r`G(h]h]h]h]h]ujPMO jjth]raGhXThis field is required.rbGrcG}rdG(hj_GjDNjPNjjthj]Gubaubeubeubj )reG}rfG(hUhjEjDjEhjnh}rgG(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rhG}riG(hUhjEjDjEhj h}rjG(j j Xcabalh]h]h]h]h]j X pkg-fieldrkGj jkGujPNjjth]rlG(j )rmG}rnG(hX location: URLhjhGjDjEhj h}roG(h]rpGjah]h]h]h]j ujPM[ jjth]rqG(j )rrG}rsG(hUhjmGjDjEhjnh}rtG(h]h]h]h]h]Uentries]ruG(j! X/source-repository:location; package.cabal fieldjUNtrvGaujPM[ jjth]ubj# )rwG}rxG(hjhjmGjDjEhj& h}ryG(jjh]h]h]h]h]ujPM[ jjth]rzGhXlocationr{Gr|G}r}G(hUjDNjPNjjthjwGubaubj, )r~G}rG(hj/ hjmGjDjEhj0 h}rG(jjh]h]h]h]h]ujPM[ jjth]rGhX: rGrG}rG(hUjDNjPNjjthj~Gubaubj6 )rG}rG(hXURLhjmGjDjEhj9 h}rG(jjh]h]h]h]h]ujPM[ jjth]rGhXURLrGrG}rG(hUjDNjPNjjthjGubaubeubjh)rG}rG(hUhjhGjDjEhjA h}rG(h]h]h]h]h]ujPM[ jjth]rG(jZ)rG}rG(hXiThe location of the repository. The exact form of this field depends on the repository type. For example:rGhjGjDjEhj]h}rG(h]h]h]h]h]ujPMS jjth]rGhXiThe location of the repository. The exact form of this field depends on the repository type. For example:rGrG}rG(hjGjDNjPNjjthjGubaubj )rG}rG(hUhjGjDjEhj h}rG(j X-h]h]h]h]h]ujPMV jjth]rG(j )rG}rG(hX+for darcs: ``http://code.haskell.org/foo/``rGhjGjDjEhj h}rG(h]h]h]h]h]ujPNjjth]rGjZ)rG}rG(hjGhjGjDjEhj]h}rG(h]h]h]h]h]ujPMV h]rG(hX for darcs: rGrG}rG(hX for darcs: hjGubj)rG}rG(hX ``http://code.haskell.org/foo/``h}rG(h]h]h]h]h]uhjGh]rGhXhttp://code.haskell.org/foo/rGrG}rG(hXhttp://code.haskell.org/foo/hjGubahjubeubaubj )rG}rG(hX)for git: ``git://github.com/foo/bar.git``rGhjGjDjEhj h}rG(h]h]h]h]h]ujPNjjth]rGjZ)rG}rG(hjGhjGjDjEhj]h}rG(h]h]h]h]h]ujPMW h]rG(hX for git: rGrG}rG(hX for git: hjGubj)rG}rG(hX ``git://github.com/foo/bar.git``h}rG(h]h]h]h]h]uhjGh]rGhXgit://github.com/foo/bar.gitrGrG}rG(hXgit://github.com/foo/bar.githjGubahjubeubaubj )rG}rG(hX&for CVS: ``anoncvs@cvs.foo.org:/cvs`` hjGjDjEhj h}rG(h]h]h]h]h]ujPNjjth]rGjZ)rG}rG(hX%for CVS: ``anoncvs@cvs.foo.org:/cvs``hjGjDjEhj]h}rG(h]h]h]h]h]ujPMX h]rG(hX for CVS: rGrG}rG(hX for CVS: hjGubj)rG}rG(hX``anoncvs@cvs.foo.org:/cvs``h}rG(h]h]h]h]h]uhjGh]rGhXanoncvs@cvs.foo.org:/cvsrGrG}rG(hXanoncvs@cvs.foo.org:/cvshjGubahjubeubaubeubjZ)rG}rG(hXThis field is required.rGhjGjDjEhj]h}rG(h]h]h]h]h]ujPMZ jjth]rGhXThis field is required.rGrG}rG(hjGjDNjPNjjthjGubaubeubeubj )rG}rG(hUhjEjDjEhjnh}rG(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rG}rG(hUhjEjDjEhj h}rG(j j Xcabalh]h]h]h]h]j X pkg-fieldrGj jGujPNjjth]rG(j )rG}rG(hX module: tokenhjGjDjEhj h}rG(h]rGjah]h]h]h]j ujPMc jjth]rG(j )rG}rG(hUhjGjDjEhjnh}rG(h]h]h]h]h]Uentries]rG(j! X-source-repository:module; package.cabal fieldjUNtrGaujPMc jjth]ubj# )rG}rG(hjhjGjDjEhj& h}rG(jjh]h]h]h]h]ujPMc jjth]rGhXmodulerGrG}rG(hUjDNjPNjjthjGubaubj, )rG}rG(hj/ hjGjDjEhj0 h}rG(jjh]h]h]h]h]ujPMc jjth]rGhX: rGrG}rG(hUjDNjPNjjthjGubaubj6 )rG}rG(hXtokenhjGjDjEhj9 h}rG(jjh]h]h]h]h]ujPMc jjth]rGhXtokenrHrH}rH(hUjDNjPNjjthjGubaubeubjh)rH}rH(hUhjGjDjEhjA h}rH(h]h]h]h]h]ujPMc jjth]rH(jZ)rH}rH(hXUCVS requires a named module, as each CVS server can host multiple named repositories.r HhjHjDjEhj]h}r H(h]h]h]h]h]ujPM^ jjth]r HhXUCVS requires a named module, as each CVS server can host multiple named repositories.r Hr H}rH(hj HjDNjPNjjthjHubaubjZ)rH}rH(hXTThis field is required for the CVS repository type and should not be used otherwise.rHhjHjDjEhj]h}rH(h]h]h]h]h]ujPMa jjth]rHhXTThis field is required for the CVS repository type and should not be used otherwise.rHrH}rH(hjHjDNjPNjjthjHubaubeubeubj )rH}rH(hUhjEjDjEhjnh}rH(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rH}rH(hUhjEjDjEhj h}rH(j j Xcabalh]h]h]h]h]j X pkg-fieldrHj jHujPNjjth]rH(j )rH}r H(hX branch: tokenhjHjDjEhj h}r!H(h]r"Hjjah]h]h]h]j ujPMm jjth]r#H(j )r$H}r%H(hUhjHjDjEhjnh}r&H(h]h]h]h]h]Uentries]r'H(j! X-source-repository:branch; package.cabal fieldjjUNtr(HaujPMm jjth]ubj# )r)H}r*H(hjihjHjDjEhj& h}r+H(jjh]h]h]h]h]ujPMm jjth]r,HhXbranchr-Hr.H}r/H(hUjDNjPNjjthj)Hubaubj, )r0H}r1H(hj/ hjHjDjEhj0 h}r2H(jjh]h]h]h]h]ujPMm jjth]r3HhX: r4Hr5H}r6H(hUjDNjPNjjthj0Hubaubj6 )r7H}r8H(hXtokenhjHjDjEhj9 h}r9H(jjh]h]h]h]h]ujPMm jjth]r:HhXtokenr;HrH}r?H(hUhjHjDjEhjA h}r@H(h]h]h]h]h]ujPMm jjth]rAH(jZ)rBH}rCH(hXIMany source control systems support the notion of a branch, as a distinct concept from having repositories in separate locations. For example CVS, SVN and git use branches while for darcs uses different locations for different branches. If you need to specify a branch to identify a your repository then specify it in this field.rDHhj>HjDjEhj]h}rEH(h]h]h]h]h]ujPMf jjth]rFHhXIMany source control systems support the notion of a branch, as a distinct concept from having repositories in separate locations. For example CVS, SVN and git use branches while for darcs uses different locations for different branches. If you need to specify a branch to identify a your repository then specify it in this field.rGHrHH}rIH(hjDHjDNjPNjjthjBHubaubjZ)rJH}rKH(hXThis field is optional.rLHhj>HjDjEhj]h}rMH(h]h]h]h]h]ujPMl jjth]rNHhXThis field is optional.rOHrPH}rQH(hjLHjDNjPNjjthjJHubaubeubeubj )rRH}rSH(hUhjEjDjEhjnh}rTH(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rUH}rVH(hUhjEjDjEhj h}rWH(j j Xcabalh]h]h]h]h]j X pkg-fieldrXHj jXHujPNjjth]rYH(j )rZH}r[H(hX tag: tokenhjUHjDjEhj h}r\H(h]r]Hjah]h]h]h]j ujPMv jjth]r^H(j )r_H}r`H(hUhjZHjDjEhjnh}raH(h]h]h]h]h]Uentries]rbH(j! X*source-repository:tag; package.cabal fieldjUNtrcHaujPMv jjth]ubj# )rdH}reH(hjhjZHjDjEhj& h}rfH(jjh]h]h]h]h]ujPMv jjth]rgHhXtagrhHriH}rjH(hUjDNjPNjjthjdHubaubj, )rkH}rlH(hj/ hjZHjDjEhj0 h}rmH(jjh]h]h]h]h]ujPMv jjth]rnHhX: roHrpH}rqH(hUjDNjPNjjthjkHubaubj6 )rrH}rsH(hXtokenhjZHjDjEhj9 h}rtH(jjh]h]h]h]h]ujPMv jjth]ruHhXtokenrvHrwH}rxH(hUjDNjPNjjthjrHubaubeubjh)ryH}rzH(hUhjUHjDjEhjA h}r{H(h]h]h]h]h]ujPMv jjth]r|H(jZ)r}H}r~H(hX A tag identifies a particular state of a source repository. The tag can be used with a ``this`` repository kind to identify the state of a repository corresponding to a particular package version or release. The exact form of the tag depends on the repository type.hjyHjDjEhj]h}rH(h]h]h]h]h]ujPMp jjth]rH(hXWA tag identifies a particular state of a source repository. The tag can be used with a rHrH}rH(hXWA tag identifies a particular state of a source repository. The tag can be used with a jDNjPNjjthj}Hubj)rH}rH(hX``this``h}rH(h]h]h]h]h]uhj}Hh]rHhXthisrHrH}rH(hXthishjHubahjubhX repository kind to identify the state of a repository corresponding to a particular package version or release. The exact form of the tag depends on the repository type.rHrH}rH(hX repository kind to identify the state of a repository corresponding to a particular package version or release. The exact form of the tag depends on the repository type.jDNjPNjjthj}HubeubjZ)rH}rH(hX8This field is required for the ``this`` repository kind.hjyHjDjEhj]h}rH(h]h]h]h]h]ujPMu jjth]rH(hXThis field is required for the rHrH}rH(hXThis field is required for the jDNjPNjjthjHubj)rH}rH(hX``this``h}rH(h]h]h]h]h]uhjHh]rHhXthisrHrH}rH(hXthishjHubahjubhX repository kind.rHrH}rH(hX repository kind.jDNjPNjjthjHubeubeubeubj )rH}rH(hUhjEjDjEhjnh}rH(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rH}rH(hUhjEjDjEhj h}rH(j j Xcabalh]h]h]h]h]j X pkg-fieldrHj jHujPNjjth]rH(j )rH}rH(hXsubdir: directoryhjHjDjEhj h}rH(h]rHj ah]h]h]h]j ujPM jjth]rH(j )rH}rH(hUhjHjDjEhjnh}rH(h]h]h]h]h]Uentries]rH(j! X-source-repository:subdir; package.cabal fieldj UNtrHaujPM jjth]ubj# )rH}rH(hj hjHjDjEhj& h}rH(jjh]h]h]h]h]ujPM jjth]rHhXsubdirrHrH}rH(hUjDNjPNjjthjHubaubj, )rH}rH(hj/ hjHjDjEhj0 h}rH(jjh]h]h]h]h]ujPM jjth]rHhX: rHrH}rH(hUjDNjPNjjthjHubaubj6 )rH}rH(hX directoryhjHjDjEhj9 h}rH(jjh]h]h]h]h]ujPM jjth]rHhX directoryrHrH}rH(hUjDNjPNjjthjHubaubeubjh)rH}rH(hUhjHjDjEhjA h}rH(h]h]h]h]h]ujPM jjth]rH(jZ)rH}rH(hXSome projects put the sources for multiple packages under a single source repository. This field lets you specify the relative path from the root of the repository to the top directory for the package, i.e. the directory containing the package's ``.cabal`` file.hjHjDjEhj]h}rH(h]h]h]h]h]ujPMy jjth]rH(hXSome projects put the sources for multiple packages under a single source repository. This field lets you specify the relative path from the root of the repository to the top directory for the package, i.e. the directory containing the package’s rHrH}rH(hXSome projects put the sources for multiple packages under a single source repository. This field lets you specify the relative path from the root of the repository to the top directory for the package, i.e. the directory containing the package's jDNjPNjjthjHubj)rH}rH(hX ``.cabal``h}rH(h]h]h]h]h]uhjHh]rHhX.cabalrHrH}rH(hX.cabalhjHubahjubhX file.rHrH}rH(hX file.jDNjPNjjthjHubeubjZ)rH}rH(hXfThis field is optional. It default to empty which corresponds to the root directory of the repository.rHhjHjDjEhj]h}rH(h]h]h]h]h]ujPM jjth]rHhXfThis field is optional. It default to empty which corresponds to the root directory of the repository.rHrH}rH(hjHjDNjPNjjthjHubaubeubeubeubjn)rH}rH(hUhjjDjEhjqh}rH(h]h]h]h]rHUdownloading-a-package-s-sourcerHah]rHjaujPM jjth]rH(h)rH}rH(hXDownloading a package's sourcerHhjHjDjEhhh}rH(h]h]h]h]h]ujPM jjth]rHhX Downloading a package’s sourcerHrH}rH(hjHjDNjPNjjthjHubaubjZ)rH}rH(hXThe ``cabal get`` command allows to access a package's source code - either by unpacking a tarball downloaded from Hackage (the default) or by checking out a working copy from the package's source repository.hjHjDjEhj]h}rH(h]h]h]h]h]ujPM jjth]rH(hXThe rHrH}rH(hXThe jDNjPNjjthjHubj)rH}rH(hX ``cabal get``h}rH(h]h]h]h]h]uhjHh]rHhX cabal getrHrH}rH(hX cabal gethjHubahjubhX command allows to access a package’s source code - either by unpacking a tarball downloaded from Hackage (the default) or by checking out a working copy from the package’s source repository.rIrI}rI(hX command allows to access a package's source code - either by unpacking a tarball downloaded from Hackage (the default) or by checking out a working copy from the package's source repository.jDNjPNjjthjHubeubj)rI}rI(hX$ cabal get [FLAGS] PACKAGEShjHjDjEhjh}rI(jjh]h]h]h]h]ujPM jjth]rIhX$ cabal get [FLAGS] PACKAGESrIrI}r I(hUhjIubaubjZ)r I}r I(hX3The ``get`` command supports the following options:r IhjHjDjEhj]h}r I(h]h]h]h]h]ujPM jjth]rI(hXThe rIrI}rI(hXThe jDNjPNjjthj Iubj)rI}rI(hX``get``h}rI(h]h]h]h]h]uhj Ih]rIhXgetrIrI}rI(hXgethjIubahjubhX( command supports the following options:rIrI}rI(hX( command supports the following options:jDNjPNjjthj Iubeubj)rI}rI(hUhjHjDjEhjh}rI(h]h]h]h]h]ujPNjjth]rI(j)r I}r!I(hXq``-d --destdir`` *PATH* Where to place the package source, defaults to (a subdirectory of) the current directory.hjIjDjEhjh}r"I(h]h]h]h]h]ujPM h]r#I(j)r$I}r%I(hX``-d --destdir`` *PATH*r&Ihj IjDjEhjh}r'I(h]h]h]h]h]ujPM h]r(I(j)r)I}r*I(hX``-d --destdir``h}r+I(h]h]h]h]h]uhj$Ih]r,IhX -d --destdirr-Ir.I}r/I(hX -d --destdirhj)IubahjubhX r0I}r1I(hX hj$Iubj)r2I}r3I(hX*PATH*h}r4I(h]h]h]h]h]uhj$Ih]r5IhXPATHr6Ir7I}r8I(hXPATHhj2Iubahjubeubj)r9I}r:I(hUh}r;I(h]h]h]h]h]uhj Ih]rI(hXYWhere to place the package source, defaults to (a subdirectory of) the current directory.r?Ihj9IjDjEhj]h}r@I(h]h]h]h]h]ujPM h]rAIhXYWhere to place the package source, defaults to (a subdirectory of) the current directory.rBIrCI}rDI(hj?Ihj=Iubaubahj/ubeubj)rEI}rFI(hX``-s --source-repository`` *[head\|this\|...]* Fork the package's source repository using the appropriate version control system. The optional argument allows to choose a specific repository kind.hjIjDjEhjh}rGI(h]h]h]h]h]ujPM jjth]rHI(j)rII}rJI(hX.``-s --source-repository`` *[head\|this\|...]*rKIhjEIjDjEhjh}rLI(h]h]h]h]h]ujPM h]rMI(j)rNI}rOI(hX``-s --source-repository``h}rPI(h]h]h]h]h]uhjIIh]rQIhX-s --source-repositoryrRIrSI}rTI(hX-s --source-repositoryhjNIubahjubhX rUI}rVI(hX hjIIubj)rWI}rXI(hX*[head\|this\|...]*h}rYI(h]h]h]h]h]uhjIIh]rZIhX[head|this|…]r[Ir\I}r]I(hX[head\|this\|...]hjWIubahjubeubj)r^I}r_I(hUh}r`I(h]h]h]h]h]uhjEIh]raIjZ)rbI}rcI(hXFork the package's source repository using the appropriate version control system. The optional argument allows to choose a specific repository kind.rdIhj^IjDjEhj]h}reI(h]h]h]h]h]ujPM h]rfIhXFork the package’s source repository using the appropriate version control system. The optional argument allows to choose a specific repository kind.rgIrhI}riI(hjdIhjbIubaubahj/ubeubj)rjI}rkI(hX``--index-state`` *[HEAD\|@\|]* Use source package index state as it existed at a previous time. Accepts unix-timestamps (e.g. ``@1474732068``), ISO8601 UTC timestamps (e.g. ``2016-09-24T17:47:48Z``), or ``HEAD`` (default). This determines which package versions are available as well as which ``.cabal`` file revision is selected (unless ``--pristine`` is used).hjIjDjEhjh}rlI(h]h]h]h]h]ujPM jjth]rmI(j)rnI}roI(hXF``--index-state`` *[HEAD\|@\|]*rpIhjjIjDjEhjh}rqI(h]h]h]h]h]ujPM h]rrI(j)rsI}rtI(hX``--index-state``h}ruI(h]h]h]h]h]uhjnIh]rvIhX --index-staterwIrxI}ryI(hX --index-statehjsIubahjubhX rzI}r{I(hX hjnIubj)r|I}r}I(hX4*[HEAD\|@\|]*h}r~I(h]h]h]h]h]uhjnIh]rIhX0[HEAD|@|]rIrI}rI(hX2[HEAD\|@\|]hj|Iubahjubeubj)rI}rI(hUh}rI(h]h]h]h]h]uhjjIh]rIjZ)rI}rI(hXKUse source package index state as it existed at a previous time. Accepts unix-timestamps (e.g. ``@1474732068``), ISO8601 UTC timestamps (e.g. ``2016-09-24T17:47:48Z``), or ``HEAD`` (default). This determines which package versions are available as well as which ``.cabal`` file revision is selected (unless ``--pristine`` is used).hjIjDjEhj]h}rI(h]h]h]h]h]ujPM h]rI(hX_Use source package index state as it existed at a previous time. Accepts unix-timestamps (e.g. rIrI}rI(hX_Use source package index state as it existed at a previous time. Accepts unix-timestamps (e.g. hjIubj)rI}rI(hX``@1474732068``h}rI(h]h]h]h]h]uhjIh]rIhX @1474732068rIrI}rI(hX @1474732068hjIubahjubhX ), ISO8601 UTC timestamps (e.g. rIrI}rI(hX ), ISO8601 UTC timestamps (e.g. hjIubj)rI}rI(hX``2016-09-24T17:47:48Z``h}rI(h]h]h]h]h]uhjIh]rIhX2016-09-24T17:47:48ZrIrI}rI(hX2016-09-24T17:47:48ZhjIubahjubhX), or rIrI}rI(hX), or hjIubj)rI}rI(hX``HEAD``h}rI(h]h]h]h]h]uhjIh]rIhXHEADrIrI}rI(hXHEADhjIubahjubhXR (default). This determines which package versions are available as well as which rIrI}rI(hXR (default). This determines which package versions are available as well as which hjIubj)rI}rI(hX ``.cabal``h}rI(h]h]h]h]h]uhjIh]rIhX.cabalrIrI}rI(hX.cabalhjIubahjubhX# file revision is selected (unless rIrI}rI(hX# file revision is selected (unless hjIubj)rI}rI(hX``--pristine``h}rI(h]h]h]h]h]uhjIh]rIhX --pristinerIrI}rI(hX --pristinehjIubahjubhX is used).rIrI}rI(hX is used).hjIubeubahj/ubeubj)rI}rI(hX``--pristine`` Unpack the original pristine tarball, rather than updating the ``.cabal`` file with the latest revision from the package archive. hjIjDjEhjh}rI(h]h]h]h]h]ujPM jjth]rI(j)rI}rI(hX``--pristine``rIhjIjDjEhjh}rI(h]h]h]h]h]ujPM h]rIj)rI}rI(hjIh}rI(h]h]h]h]h]uhjIh]rIhX --pristinerIrI}rI(hX --pristinehjIubahjubaubj)rI}rI(hUh}rI(h]h]h]h]h]uhjIh]rIjZ)rI}rI(hXUnpack the original pristine tarball, rather than updating the ``.cabal`` file with the latest revision from the package archive.hjIjDjEhj]h}rI(h]h]h]h]h]ujPM h]rI(hX?Unpack the original pristine tarball, rather than updating the rIrI}rI(hX?Unpack the original pristine tarball, rather than updating the hjIubj)rI}rI(hX ``.cabal``h}rI(h]h]h]h]h]uhjIh]rIhX.cabalrIrI}rI(hX.cabalhjIubahjubhX8 file with the latest revision from the package archive.rIrI}rI(hX8 file with the latest revision from the package archive.hjIubeubahj/ubeubeubeubeubjDjEhjqh}rI(h]h]h]h]rIjah]rIjaujPMjjth]rI(h)rI}rI(hX BenchmarksrIhjjDjEhhh}rI(h]h]h]h]h]ujPMjjth]rIhX BenchmarksrIrI}rI(hjIjDNjPNjjthjIubaubj )rI}rI(hUhjjDjEhjnh}rI(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rI}rI(hUhjjDjEhj h}rI(j j Xcabalh]h]h]h]h]j X pkg-sectionrIj jIujPNjjth]rI(j )rI}rI(hXbenchmark namehjIjDjEhj h}rI(h]rIjah]h]h]h]j ujPNjjth]rI(j )rI}rI(hUhjIjDjEhjnh}rJ(h]h]h]h]h]Uentries]rJ(j! X*benchmark:benchmark; package.cabal sectionjUNtrJaujPNjjth]ubj# )rJ}rJ(hjhjIjDjEhj& h}rJ(jjh]h]h]h]h]ujPNjjth]rJhX benchmarkrJrJ}r J(hUjDNjPNjjthjJubaubj, )r J}r J(hU hjIjDjEhj0 h}r J(jjh]h]h]h]h]ujPNjjth]r JhX rJ}rJ(hUjDNjPNjjthj Jubaubj6 )rJ}rJ(hXnamehjIjDjEhj9 h}rJ(jjh]h]h]h]h]ujPNjjth]rJhXnamerJrJ}rJ(hUjDNjPNjjthjJubaubeubjh)rJ}rJ(hUhjIjDjEhjA h}rJ(h]h]h]h]h]ujPNjjth]rJ(j)rJ}rJ(hUhjJjDjEhjh}rJ(h]h]h]h]h]ujPNjjth]rJj)rJ}r J(hUhjJjDjEhj.h}r!J(h]h]h]h]h]ujPNjjth]r"J(j )r#J}r$J(hj+hjJjDjEhj h}r%J(h]h]h]h]h]ujPKh]r&JhXSincer'Jr(J}r)J(hUhj#Jubaubj)r*J}r+J(hU Cabal 1.9.2r,Jh}r-J(h]h]h]h]h]uhjJh]r.JjZ)r/J}r0J(hj,Jh}r1J(h]h]h]h]h]uhj*Jh]r2JhX Cabal 1.9.2r3Jr4J}r5J(hUhj/Jubahj]ubahj-ubeubaubjZ)r6J}r7J(hXBenchmark sections (if present) describe benchmarks contained in the package and must have an argument after the section label, which defines the name of the benchmark. This is a freeform argument, but may not contain spaces. It should be unique among the names of the package's other benchmarks, the package's test suites, the package's executables, and the package itself. Using benchmark sections requires at least Cabal version 1.9.2.r8JhjJjDjEhj]h}r9J(h]h]h]h]h]ujPMjjth]r:JhXBenchmark sections (if present) describe benchmarks contained in the package and must have an argument after the section label, which defines the name of the benchmark. This is a freeform argument, but may not contain spaces. It should be unique among the names of the package’s other benchmarks, the package’s test suites, the package’s executables, and the package itself. Using benchmark sections requires at least Cabal version 1.9.2.r;JrJ}r?J(hXThe benchmark may be described using the following fields, as well as build information fields (see the section on `build information`_).hjjDjEhj]h}r@J(h]h]h]h]h]ujPMjjth]rAJ(hXsThe benchmark may be described using the following fields, as well as build information fields (see the section on rBJrCJ}rDJ(hXsThe benchmark may be described using the following fields, as well as build information fields (see the section on jDNjPNjjthj>Jubj!)rEJ}rFJ(hX`build information`_j$Khj>Jhj%h}rGJ(UnameXbuild informationh]h]h]h]h]j'jouh]rHJhXbuild informationrIJrJJ}rKJ(hXbuild informationhjEJubaubhX).rLJrMJ}rNJ(hX).jDNjPNjjthj>Jubeubj )rOJ}rPJ(hUhjjDjEhjnh}rQJ(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rRJ}rSJ(hUhjjDjEhj h}rTJ(j j Xcabalh]h]h]h]h]j X pkg-fieldrUJj jUJujPNjjth]rVJ(j )rWJ}rXJ(hXtype: interface (required)hjRJjDjEhj h}rYJ(h]rZJjah]h]h]h]j ujPMjjth]r[J(j )r\J}r]J(hUhjWJjDjEhjnh}r^J(h]h]h]h]h]Uentries]r_J(j! X#benchmark:type; package.cabal fieldjUNtr`JaujPMjjth]ubj# )raJ}rbJ(hjhjWJjDjEhj& h}rcJ(jjh]h]h]h]h]ujPMjjth]rdJhXtypereJrfJ}rgJ(hUjDNjPNjjthjaJubaubj, )rhJ}riJ(hj/ hjWJjDjEhj0 h}rjJ(jjh]h]h]h]h]ujPMjjth]rkJhX: rlJrmJ}rnJ(hUjDNjPNjjthjhJubaubj6 )roJ}rpJ(hXinterface (required)hjWJjDjEhj9 h}rqJ(jjh]h]h]h]h]ujPMjjth]rrJhXinterface (required)rsJrtJ}ruJ(hUjDNjPNjjthjoJubaubeubjh)rvJ}rwJ(hUhjRJjDjEhjA h}rxJ(h]h]h]h]h]ujPMjjth]ryJjZ)rzJ}r{J(hXThe interface type and version of the benchmark. At the moment Cabal only support one benchmark interface, called ``exitcode-stdio-1.0``.hjvJjDjEhj]h}r|J(h]h]h]h]h]ujPMjjth]r}J(hXrThe interface type and version of the benchmark. At the moment Cabal only support one benchmark interface, called r~JrJ}rJ(hXrThe interface type and version of the benchmark. At the moment Cabal only support one benchmark interface, called jDNjPNjjthjzJubj)rJ}rJ(hX``exitcode-stdio-1.0``h}rJ(h]h]h]h]h]uhjzJh]rJhXexitcode-stdio-1.0rJrJ}rJ(hXexitcode-stdio-1.0hjJubahjubhX.rJ}rJ(hX.jDNjPNjjthjzJubeubaubeubjZ)rJ}rJ(hXBenchmarks using the ``exitcode-stdio-1.0`` interface are executables that indicate failure to run the benchmark with a non-zero exit code when run; they may provide human-readable information through the standard output and error channels.hjjDjEhj]h}rJ(h]h]h]h]h]ujPMjjth]rJ(hXBenchmarks using the rJrJ}rJ(hXBenchmarks using the jDNjPNjjthjJubj)rJ}rJ(hX``exitcode-stdio-1.0``h}rJ(h]h]h]h]h]uhjJh]rJhXexitcode-stdio-1.0rJrJ}rJ(hXexitcode-stdio-1.0hjJubahjubhX interface are executables that indicate failure to run the benchmark with a non-zero exit code when run; they may provide human-readable information through the standard output and error channels.rJrJ}rJ(hX interface are executables that indicate failure to run the benchmark with a non-zero exit code when run; they may provide human-readable information through the standard output and error channels.jDNjPNjjthjJubeubj )rJ}rJ(hUhjjDjEhjnh}rJ(h]h]h]h]h]Uentries]ujPNjjth]ubjk)rJ}rJ(hUhjjDjEhj h}rJ(j j Xcabalh]h]h]h]h]j X pkg-fieldrJj jJujPNjjth]rJ(j )rJ}rJ(hXmain-is: filenamehjJjDjEhj h}rJ(h]rJjah]h]h]h]j ujPM jjth]rJ(j )rJ}rJ(hUhjJjDjEhjnh}rJ(h]h]h]h]h]Uentries]rJ(j! X&benchmark:main-is; package.cabal fieldjUNtrJaujPM jjth]ubj# )rJ}rJ(hjhjJjDjEhj& h}rJ(jjh]h]h]h]h]ujPM jjth]rJhXmain-isrJrJ}rJ(hUjDNjPNjjthjJubaubj, )rJ}rJ(hj/ hjJjDjEhj0 h}rJ(jjh]h]h]h]h]ujPM jjth]rJhX: rJrJ}rJ(hUjDNjPNjjthjJubaubj6 )rJ}rJ(hXfilenamehjJjDjEhj9 h}rJ(jjh]h]h]h]h]ujPM jjth]rJhXfilenamerJrJ}rJ(hUjDNjPNjjthjJubaubeubjh)rJ}rJ(hUhjJjDjEhjA h}rJ(h]h]h]h]h]ujPM jjth]rJ(j)rJ}rJ(hUhjJjDjEhjh}rJ(h]h]h]h]h]ujPNjjth]rJj)rJ}rJ(hUhjJjDjEhj.h}rJ(h]h]h]h]h]ujPMjjth]rJ(j )rJ}rJ(hXrequiredhjJjDjEhj h}rJ(h]h]h]h]h]ujPKh]rJhXRequiredrJrJ}rJ(hUhjJubaubj)rJ}rJ(hX``exitcode-stdio-1.0`` h}rJ(h]h]h]h]h]uhjJh]rJjZ)rJ}rJ(hX``exitcode-stdio-1.0``rJhjJjDjEhj]h}rJ(h]h]h]h]h]ujPMh]rJj)rJ}rJ(hjJh}rJ(h]h]h]h]h]uhjJh]rJhXexitcode-stdio-1.0rJrJ}rJ(hXexitcode-stdio-1.0hjJubahjubaubahj-ubeubaubjZ)rJ}rJ(hXThe name of the ``.hs`` or ``.lhs`` file containing the ``Main`` module. Note that it is the ``.hs`` filename that must be listed, even if that file is generated using a preprocessor. The source file must be relative to one of the directories listed in :pkg-field:`hs-source-dirs`. This field is analogous to the ``main-is`` field of an executable section. Further, while the name of the file may vary, the module itself must be named ``Main``.hjJjDjEhj]h}rJ(h]h]h]h]h]ujPMjjth]rJ(hXThe name of the rJrJ}rJ(hXThe name of the jDNjPNjjthjJubj)rJ}rJ(hX``.hs``h}rJ(h]h]h]h]h]uhjJh]rJhX.hsrJrJ}rJ(hX.hshjJubahjubhX or rJrJ}rJ(hX or jDNjPNjjthjJubj)rJ}rJ(hX``.lhs``h}rJ(h]h]h]h]h]uhjJh]rJhX.lhsrJrJ}rJ(hX.lhshjJubahjubhX file containing the rJrJ}rJ(hX file containing the jDNjPNjjthjJubj)rK}rK(hX``Main``h}rK(h]h]h]h]h]uhjJh]rKhXMainrKrK}rK(hXMainhjKubahjubhX module. Note that it is the rKrK}r K(hX module. Note that it is the jDNjPNjjthjJubj)r K}r K(hX``.hs``h}r K(h]h]h]h]h]uhjJh]r KhX.hsrKrK}rK(hX.hshj KubahjubhX filename that must be listed, even if that file is generated using a preprocessor. The source file must be relative to one of the directories listed in rKrK}rK(hX filename that must be listed, even if that file is generated using a preprocessor. The source file must be relative to one of the directories listed in jDNjPNjjthjJubjM)rK}rK(hX:pkg-field:`hs-source-dirs`hjJjDjEhjPh}rK(UreftypeX pkg-fieldjRjSXhs-source-dirsrKU refdomainXcabalrKh]h]U refexplicith]h]h]jVj jljujPMh]rKj)rK}rK(hjKh}rK(h]h]rK(j]jKXcabal-pkg-fieldrKeh]h]h]uhjKh]rKhXhs-source-dirsr Kr!K}r"K(hUhjKubahjubaubhX!. This field is analogous to the r#Kr$K}r%K(hX!. This field is analogous to the jDNjPNjjthjJubj)r&K}r'K(hX ``main-is``h}r(K(h]h]h]h]h]uhjJh]r)KhXmain-isr*Kr+K}r,K(hXmain-ishj&KubahjubhXo field of an executable section. Further, while the name of the file may vary, the module itself must be named r-Kr.K}r/K(hXo field of an executable section. Further, while the name of the file may vary, the module itself must be named jDNjPNjjthjJubj)r0K}r1K(hX``Main``h}r2K(h]h]h]h]h]uhjJh]r3KhXMainr4Kr5K}r6K(hXMainhj0KubahjubhX.r7K}r8K(hX.jDNjPNjjthjJubeubeubeubjjn)r9K}r:K(hUhjjDjEhjqh}r;K(h]h]h]h]rKjaujPM2jjth]r?K(h)r@K}rAK(hXRunning benchmarksrBKhj9KjDjEhhh}rCK(h]h]h]h]h]ujPM2jjth]rDKhXRunning benchmarksrEKrFK}rGK(hjBKjDNjPNjjthj@KubaubjZ)rHK}rIK(hXJYou can have Cabal run your benchmark using its built-in benchmark runner:rJKhj9KjDjEhj]h}rKK(h]h]h]h]h]ujPM4jjth]rLKhXJYou can have Cabal run your benchmark using its built-in benchmark runner:rMKrNK}rOK(hjJKjDNjPNjjthjHKubaubj)rPK}rQK(hXA$ cabal configure --enable-benchmarks $ cabal build $ cabal benchhj9KjDjEhjh}rRK(jjh]h]h]h]h]ujPM9jjth]rSKhXA$ cabal configure --enable-benchmarks $ cabal build $ cabal benchrTKrUK}rVK(hUhjPKubaubjZ)rWK}rXK(hX]See the output of ``cabal help bench`` for a list of options you can pass to ``cabal bench``.hj9KjDjEhj]h}rYK(h]h]h]h]h]ujPM=jjth]rZK(hXSee the output of r[Kr\K}r]K(hXSee the output of jDNjPNjjthjWKubj)r^K}r_K(hX``cabal help bench``h}r`K(h]h]h]h]h]uhjWKh]raKhXcabal help benchrbKrcK}rdK(hXcabal help benchhj^KubahjubhX' for a list of options you can pass to reKrfK}rgK(hX' for a list of options you can pass to jDNjPNjjthjWKubj)rhK}riK(hX``cabal bench``h}rjK(h]h]h]h]h]uhjWKh]rkKhX cabal benchrlKrmK}rnK(hX cabal benchhjhKubahjubhX.roK}rpK(hX.jDNjPNjjthjWKubeubeubeubjDjEhjqh}rqK(h]rrKjQ%ah]h]h]rsKUid1rtKah]ujPM jjth]ruK(h)rvK}rwK(hX7Example: Package using ``exitcode-stdio-1.0`` interfacerxKhjjDjEhhh}ryK(h]h]h]h]h]ujPM jjth]rzK(hXExample: Package using r{Kr|K}r}K(hXExample: Package using r~KjDNjPNjjthjvKubj)rK}rK(hX``exitcode-stdio-1.0``rKh}rK(h]h]h]h]h]uhjvKh]rKhXexitcode-stdio-1.0rKrK}rK(hXexitcode-stdio-1.0rKhjKubahjubhX interfacerKrK}rK(hX interfacerKjDNjPNjjthjvKubeubjZ)rK}rK(hX}The example package description and executable source file below demonstrate the use of the ``exitcode-stdio-1.0`` interface.hjjDjEhj]h}rK(h]h]h]h]h]ujPM jjth]rK(hX\The example package description and executable source file below demonstrate the use of the rKrK}rK(hX\The example package description and executable source file below demonstrate the use of the jDNjPNjjthjKubj)rK}rK(hX``exitcode-stdio-1.0``h}rK(h]h]h]h]h]uhjKh]rKhXexitcode-stdio-1.0rKrK}rK(hXexitcode-stdio-1.0hjKubahjubhX interface.rKrK}rK(hX interface.jDNjPNjjthjKubeubj|%)rK}rK(hUjKhjjDUhj%h}rK(h]rKjWah]h]rKjVah]rKj%ah]U literal_blockujPNjjth]rK(j%)rK}rK(hX foo.cabalrKhjKjDjEhj%h}rK(h]h]h]h]h]ujPMh]rKhX foo.cabalrKrK}rK(hjKhjKubaubj)rK}rK(hXName: foo Version: 1.0 License: BSD3 Cabal-Version: >= 1.9.2 Build-Type: Simple Benchmark bench-foo type: exitcode-stdio-1.0 main-is: bench-foo.hs build-depends: base >= 4 && < 5, time >= 1.1 && < 1.7hjKjDjEhjh}rK(jjXcabaljjh]h]h]j}h]h]ujPMh]rKhXName: foo Version: 1.0 License: BSD3 Cabal-Version: >= 1.9.2 Build-Type: Simple Benchmark bench-foo type: exitcode-stdio-1.0 main-is: bench-foo.hs build-depends: base >= 4 && < 5, time >= 1.1 && < 1.7rKrK}rK(hUhjKubaubeubj|%)rK}rK(hUhjjDUhj%h}rK(h]rKUid8rKah]h]h]rKj%ah]U literal_blockujPNjjth]rK(j%)rK}rK(hX bench-foo.hsrKhjKjDjEhj%h}rK(h]h]h]h]h]ujPMh]rKhX bench-foo.hsrKrK}rK(hjKhjKubaubj)rK}rK(hX {-# LANGUAGE BangPatterns #-} module Main where import Data.Time.Clock fib 0 = 1 fib 1 = 1 fib n = fib (n-1) + fib (n-2) main = do start <- getCurrentTime let !r = fib 20 end <- getCurrentTime putStrLn $ "fib 20 took " ++ show (diffUTCTime end start)hjKjDjEhjh}rK(jjXhaskelljjh]h]h]j}h]h]ujPMh]rKhX {-# LANGUAGE BangPatterns #-} module Main where import Data.Time.Clock fib 0 = 1 fib 1 = 1 fib n = fib (n-1) + fib (n-2) main = do start <- getCurrentTime let !r = fib 20 end <- getCurrentTime putStrLn $ "fib 20 took " ++ show (diffUTCTime end start)rKrK}rK(hUhjKubaubeubeubjDjEhUsystem_messagerKh}rK(h]UlevelKh]h]rKjtKaUsourcejEh]h]UlineM UtypeUINFOrKujPM jjth]rKjZ)rK}rK(hXVDuplicate implicit target name: "example: package using exitcode-stdio-1.0 interface".h}rK(h]h]h]h]h]uhjh]rKhXZDuplicate implicit target name: “example: package using exitcode-stdio-1.0 interface”.rKrK}rK(hUhjKubahj]ubaubj)rK}rK(hUhj@jDjEhjKh}rK(h]UlevelKh]h]rKj@aUsourcejEh]h]UlineM UtypejKujPM jjth]rKjZ)rK}rK(hXbDuplicate implicit target name: "example: a package containing a library and executable programs".h}rK(h]h]h]h]h]uhjKh]rKhXfDuplicate implicit target name: “example: a package containing a library and executable programs”.rKrK}rK(hUhjKubahj]ubaubeUcurrent_sourcerKNU decorationrKNUautofootnote_startrKKUnameidsrK}rK(jxjjyUpvprKjzU&accessing-data-files-from-package-coderKj{U quickstartrKj|j"j}jj~Uthe-point-of-packagesrKjU6explicit-dependencies-and-automatic-package-managementrKjjHjj(jjjjjjjUmodules-included-in-the-packagerKjUabnfrKjUhooglerKjj0jj8jUconditional-compilationrKjjjUhackagerKjUediting-the-cabal-filerKjU'backward-compatibility-and-custom-setuprKjJjKjjo jUhscolourrKjj jjDjjjUhaddockrKjUbuilding-the-packagerKjUaccessing-the-package-versionrKjUdeveloping-packagesrKjjjUalexrKjj-Djj=KjjJjjCBjUcpphsrKjUhappyrKjjjjjUexample-using-autoconfrKjj%jj|jjjj)(jUpackage-names-and-versionsrKjTjUjVjWj\j]jjjjT@jjljU next-stepsrKjUunit-of-distributionrKjU$modules-imported-from-other-packagesrKjjm jj,@jNjHjIjUusing-cabal-initrKjU portabilityrLjU`gnu-autoconf-places-restrictions-on-paths-including-the-path-that-the-user-builds-a-package-fromrLjj&jjojU'kinds-of-package-cabal-vs-ghc-vs-systemrLjUpackage-conceptsrLjj@jjjUpackage-versioning-policyrLjjFjjjNjUhaskellrLjjjUbackpackrLjj uh]rL(jn)rL}r L(hUhjtjDjEhjqh}r L(h]h]h]h]r LjKah]r Lj{aujPKjjth]r L(h)rL}rL(hj)hjLjDjEhhh}rL(h]h]h]h]h]ujPKjjth]rLhX QuickstartrLrL}rL(hj)jDNjPNjjthjLubaubjZ)rL}rL(hXYLets assume we have created a project directory and already have a Haskell module or two.rLhjLjDjEhj]h}rL(h]h]h]h]h]ujPKjjth]rLhXYLets assume we have created a project directory and already have a Haskell module or two.rLrL}rL(hjLjDNjPNjjthjLubaubjZ)rL}rL(hX>Every project needs a name, we'll call this example "proglet".rLhjLjDjEhj]h}r L(h]h]h]h]h]ujPKjjth]r!LhXDEvery project needs a name, we’ll call this example “proglet”.r"Lr#L}r$L(hjLjDNjPNjjthjLubaubcsphinx.addnodes highlightlang r%L)r&L}r'L(hUhjLjDjEhU highlightlangr(Lh}r)L(UlangXconsoleUlinenothresholdI9223372036854775807 h]h]h]h]h]ujPK jjth]ubj)r*L}r+L(hX$ cd proglet/ $ ls Proglet.hshjLjDjEhjh}r,L(jjh]h]h]h]h]ujPK jjth]r-LhX$ cd proglet/ $ ls Proglet.hsr.Lr/L}r0L(hUhj*LubaubjZ)r1L}r2L(hXIt is assumed that (apart from external dependencies) all the files that make up a package live under a common project root directory. This simple example has all the project files in one directory, but most packages will use one or more subdirectories.r3LhjLjDjEhj]h}r4L(h]h]h]h]h]ujPKjjth]r5LhXIt is assumed that (apart from external dependencies) all the files that make up a package live under a common project root directory. This simple example has all the project files in one directory, but most packages will use one or more subdirectories.r6Lr7L}r8L(hj3LjDNjPNjjthj1LubaubjZ)r9L}r:L(hXZTo turn this into a Cabal package we need two extra files in the project's root directory:r;LhjLjDjEhj]h}rLr?L}r@L(hj;LjDNjPNjjthj9Lubaubj )rAL}rBL(hUhjLjDjEhj h}rCL(j X-h]h]h]h]h]ujPKjjth]rDL(j )rEL}rFL(hXF``proglet.cabal``: containing package metadata and build information. hjALjDjEhj h}rGL(h]h]h]h]h]ujPNjjth]rHLjZ)rIL}rJL(hXE``proglet.cabal``: containing package metadata and build information.hjELjDjEhj]h}rKL(h]h]h]h]h]ujPKh]rLL(j)rML}rNL(hX``proglet.cabal``h}rOL(h]h]h]h]h]uhjILh]rPLhX proglet.cabalrQLrRL}rSL(hX proglet.cabalhjMLubahjubhX4: containing package metadata and build information.rTLrUL}rVL(hX4: containing package metadata and build information.hjILubeubaubj )rWL}rXL(hXg``Setup.hs``: usually containing a few standardized lines of code, but can be customized if necessary. hjALjDjEhj h}rYL(h]h]h]h]h]ujPNjjth]rZLjZ)r[L}r\L(hXf``Setup.hs``: usually containing a few standardized lines of code, but can be customized if necessary.hjWLjDjEhj]h}r]L(h]h]h]h]h]ujPKh]r^L(j)r_L}r`L(hX ``Setup.hs``h}raL(h]h]h]h]h]uhj[Lh]rbLhXSetup.hsrcLrdL}reL(hXSetup.hshj_LubahjubhXZ: usually containing a few standardized lines of code, but can be customized if necessary.rfLrgL}rhL(hXZ: usually containing a few standardized lines of code, but can be customized if necessary.hj[LubeubaubeubjZ)riL}rjL(hXUWe can create both files manually or we can use ``cabal init`` to create them for us.hjLjDjEhj]h}rkL(h]h]h]h]h]ujPKjjth]rlL(hX0We can create both files manually or we can use rmLrnL}roL(hX0We can create both files manually or we can use jDNjPNjjthjiLubj)rpL}rqL(hX``cabal init``h}rrL(h]h]h]h]h]uhjiLh]rsLhX cabal initrtLruL}rvL(hX cabal inithjpLubahjubhX to create them for us.rwLrxL}ryL(hX to create them for us.jDNjPNjjthjiLubeubjn)rzL}r{L(hUhjLjDjEhjqh}r|L(h]h]h]h]r}LjKah]r~LjaujPK"jjth]rL(h)rL}rL(hXUsing "cabal init"rLhjzLjDjEhhh}rL(h]h]h]h]h]ujPK"jjth]rLhXUsing “cabal init”rLrL}rL(hjLjDNjPNjjthjLubaubjZ)rL}rL(hXwThe ``cabal init`` command is interactive. It asks us a number of questions starting with the package name and version.hjzLjDjEhj]h}rL(h]h]h]h]h]ujPK$jjth]rL(hXThe rLrL}rL(hXThe jDNjPNjjthjLubj)rL}rL(hX``cabal init``h}rL(h]h]h]h]h]uhjLh]rLhX cabal initrLrL}rL(hX cabal inithjLubahjubhXe command is interactive. It asks us a number of questions starting with the package name and version.rLrL}rL(hXe command is interactive. It asks us a number of questions starting with the package name and version.jDNjPNjjthjLubeubj)rL}rL(hXS$ cabal init Package name [default "proglet"]? Package version [default "0.1"]? ...hjzLjDjEhjh}rL(jjh]h]h]h]h]ujPK)jjth]rLhXS$ cabal init Package name [default "proglet"]? Package version [default "0.1"]? ...rLrL}rL(hUhjLubaubjZ)rL}rL(hXIt also asks questions about various other bits of package metadata. For a package that you never intend to distribute to others, these fields can be left blank.rLhjzLjDjEhj]h}rL(h]h]h]h]h]ujPK.jjth]rLhXIt also asks questions about various other bits of package metadata. For a package that you never intend to distribute to others, these fields can be left blank.rLrL}rL(hjLjDNjPNjjthjLubaubjZ)rL}rL(hXOne of the important questions is whether the package contains a library or an executable. Libraries are collections of Haskell modules that can be re-used by other Haskell libraries and programs, while executables are standalone programs.rLhjzLjDjEhj]h}rL(h]h]h]h]h]ujPK2jjth]rLhXOne of the important questions is whether the package contains a library or an executable. Libraries are collections of Haskell modules that can be re-used by other Haskell libraries and programs, while executables are standalone programs.rLrL}rL(hjLjDNjPNjjthjLubaubj)rL}rL(hXHWhat does the package build: 1) Library 2) Executable Your choice?hjzLjDjEhjh}rL(jjh]h]h]h]h]ujPK9jjth]rLhXHWhat does the package build: 1) Library 2) Executable Your choice?rLrL}rL(hUhjLubaubjZ)rL}rL(hXFor the moment these are the only choices. For more complex packages (e.g. a library and multiple executables or test suites) the ``.cabal`` file can be edited afterwards.hjzLjDjEhj]h}rL(h]h]h]h]h]ujPK>jjth]rL(hXFor the moment these are the only choices. For more complex packages (e.g. a library and multiple executables or test suites) the rLrL}rL(hXFor the moment these are the only choices. For more complex packages (e.g. a library and multiple executables or test suites) the jDNjPNjjthjLubj)rL}rL(hX ``.cabal``h}rL(h]h]h]h]h]uhjLh]rLhX.cabalrLrL}rL(hX.cabalhjLubahjubhX file can be edited afterwards.rLrL}rL(hX file can be edited afterwards.jDNjPNjjthjLubeubjZ)rL}rL(hXFinally, ``cabal init`` creates the initial ``proglet.cabal`` and ``Setup.hs`` files, and depending on your choice of license, a ``LICENSE`` file as well.hjzLjDjEhj]h}rL(h]h]h]h]h]ujPKBjjth]rL(hX Finally, rLrL}rL(hX Finally, jDNjPNjjthjLubj)rL}rL(hX``cabal init``h}rL(h]h]h]h]h]uhjLh]rLhX cabal initrLrL}rL(hX cabal inithjLubahjubhX creates the initial rLrL}rL(hX creates the initial jDNjPNjjthjLubj)rL}rL(hX``proglet.cabal``h}rL(h]h]h]h]h]uhjLh]rLhX proglet.cabalrLrL}rL(hX proglet.cabalhjLubahjubhX and rLrL}rL(hX and jDNjPNjjthjLubj)rL}rL(hX ``Setup.hs``h}rL(h]h]h]h]h]uhjLh]rLhXSetup.hsrLrL}rL(hXSetup.hshjLubahjubhX3 files, and depending on your choice of license, a rLrL}rL(hX3 files, and depending on your choice of license, a jDNjPNjjthjLubj)rL}rL(hX ``LICENSE``h}rL(h]h]h]h]h]uhjLh]rLhXLICENSErLrL}rL(hXLICENSEhjLubahjubhX file as well.rLrL}rL(hX file as well.jDNjPNjjthjLubeubj)rL}rL(hXGenerating LICENSE... Generating Setup.hs... Generating proglet.cabal... You may want to edit the .cabal file and add a Description field.hjzLjDjEhjh}rL(jjh]h]h]h]h]ujPKHjjth]rLhXGenerating LICENSE... Generating Setup.hs... Generating proglet.cabal... You may want to edit the .cabal file and add a Description field.rLrL}rL(hUhjLubaubjZ)rL}rL(hXAs this stage the ``proglet.cabal`` is not quite complete and before you are able to build the package you will need to edit the file and add some build information about the library or executable.hjzLjDjEhj]h}rM(h]h]h]h]h]ujPKNjjth]rM(hXAs this stage the rMrM}rM(hXAs this stage the jDNjPNjjthjLubj)rM}rM(hX``proglet.cabal``h}rM(h]h]h]h]h]uhjLh]rMhX proglet.cabalr Mr M}r M(hX proglet.cabalhjMubahjubhX is not quite complete and before you are able to build the package you will need to edit the file and add some build information about the library or executable.r Mr M}rM(hX is not quite complete and before you are able to build the package you will need to edit the file and add some build information about the library or executable.jDNjPNjjthjLubeubeubjn)rM}rM(hUhjLjDjEhjqh}rM(h]h]h]h]rMjKah]rMjaujPKSjjth]rM(h)rM}rM(hXEditing the .cabal filerMhjMjDjEhhh}rM(h]h]h]h]h]ujPKSjjth]rMhXEditing the .cabal filerMrM}rM(hjMjDNjPNjjthjMubaubj%L)rM}rM(hUhjMjDjEhj(Lh}rM(UlangXcabalUlinenothresholdI9223372036854775807 h]h]h]h]h]ujPKVjjth]ubjZ)r M}r!M(hXLoad up the ``.cabal`` file in a text editor. The first part of the ``.cabal`` file has the package metadata and towards the end of the file you will find the :pkg-section:`executable` or :pkg-section:`library` section.hjMjDjEhj]h}r"M(h]h]h]h]h]ujPKWjjth]r#M(hX Load up the r$Mr%M}r&M(hX Load up the jDNjPNjjthj Mubj)r'M}r(M(hX ``.cabal``h}r)M(h]h]h]h]h]uhj Mh]r*MhX.cabalr+Mr,M}r-M(hX.cabalhj'MubahjubhX. file in a text editor. The first part of the r.Mr/M}r0M(hX. file in a text editor. The first part of the jDNjPNjjthj Mubj)r1M}r2M(hX ``.cabal``h}r3M(h]h]h]h]h]uhj Mh]r4MhX.cabalr5Mr6M}r7M(hX.cabalhj1MubahjubhXQ file has the package metadata and towards the end of the file you will find the r8Mr9M}r:M(hXQ file has the package metadata and towards the end of the file you will find the jDNjPNjjthj MubjM)r;M}rMU refdomainXcabalr?Mh]h]U refexplicith]h]h]jVj ujPKWh]r@Mj)rAM}rBM(hj>Mh}rCM(h]h]rDM(j]j?MXcabal-pkg-sectionrEMeh]h]h]uhj;Mh]rFMhX executablerGMrHM}rIM(hUhjAMubahjubaubhX or rJMrKM}rLM(hX or jDNjPNjjthj MubjM)rMM}rNM(hX:pkg-section:`library`hj MjDjEhjPh}rOM(UreftypeX pkg-sectionjRjSXlibraryrPMU refdomainXcabalrQMh]h]U refexplicith]h]h]jVj ujPKWh]rRMj)rSM}rTM(hjPMh}rUM(h]h]rVM(j]jQMXcabal-pkg-sectionrWMeh]h]h]uhjMMh]rXMhXlibraryrYMrZM}r[M(hUhjSMubahjubaubhX section.r\Mr]M}r^M(hX section.jDNjPNjjthj MubeubjZ)r_M}r`M(hX'You will see that the fields that have yet to be filled in are commented out. Cabal files use "``--``" Haskell-style comment syntax. (Note that comments are only allowed on lines on their own. Trailing comments on other lines are not allowed because they could be confused with program options.)hjMjDjEhj]h}raM(h]h]h]h]h]ujPK[jjth]rbM(hXaYou will see that the fields that have yet to be filled in are commented out. Cabal files use “rcMrdM}reM(hX_You will see that the fields that have yet to be filled in are commented out. Cabal files use "jDNjPNjjthj_Mubj)rfM}rgM(hX``--``h}rhM(h]h]h]h]h]uhj_Mh]riMhX--rjMrkM}rlM(hX--hjfMubahjubhX” Haskell-style comment syntax. (Note that comments are only allowed on lines on their own. Trailing comments on other lines are not allowed because they could be confused with program options.)rmMrnM}roM(hX" Haskell-style comment syntax. (Note that comments are only allowed on lines on their own. Trailing comments on other lines are not allowed because they could be confused with program options.)jDNjPNjjthj_MubeubjZ)rpM}rqM(hXwIf you selected earlier to create a library package then your ``.cabal`` file will have a section that looks like this:hjMjDjEhj]h}rrM(h]h]h]h]h]ujPKajjth]rsM(hX>If you selected earlier to create a library package then your rtMruM}rvM(hX>If you selected earlier to create a library package then your jDNjPNjjthjpMubj)rwM}rxM(hX ``.cabal``h}ryM(h]h]h]h]h]uhjpMh]rzMhX.cabalr{Mr|M}r}M(hX.cabalhjwMubahjubhX/ file will have a section that looks like this:r~MrM}rM(hX/ file will have a section that looks like this:jDNjPNjjthjpMubeubj)rM}rM(hXNlibrary exposed-modules: Proglet -- other-modules: -- build-depends:hjMjDjEhjh}rM(jjh]h]h]h]h]ujPKfjjth]rMhXNlibrary exposed-modules: Proglet -- other-modules: -- build-depends:rMrM}rM(hUhjMubaubjZ)rM}rM(hXOAlternatively, if you selected an executable then there will be a section like:rMhjMjDjEhj]h}rM(h]h]h]h]h]ujPKkjjth]rMhXOAlternatively, if you selected an executable then there will be a section like:rMrM}rM(hjMjDNjPNjjthjMubaubj)rM}rM(hXHexecutable proglet -- main-is: -- other-modules: -- build-depends:hjMjDjEhjh}rM(jjh]h]h]h]h]ujPKpjjth]rMhXHexecutable proglet -- main-is: -- other-modules: -- build-depends:rMrM}rM(hUhjMubaubjZ)rM}rM(hXThe build information fields listed (but commented out) are just the few most important and common fields. There are many others that are covered later in this chapter.rMhjMjDjEhj]h}rM(h]h]h]h]h]ujPKujjth]rMhXThe build information fields listed (but commented out) are just the few most important and common fields. There are many others that are covered later in this chapter.rMrM}rM(hjMjDNjPNjjthjMubaubjZ)rM}rM(hXMost of the build information fields are the same between libraries and executables. The difference is that libraries have a number of "exposed" modules that make up the public interface of the library, while executables have a file containing a ``Main`` module.hjMjDjEhj]h}rM(h]h]h]h]h]ujPKyjjth]rM(hXMost of the build information fields are the same between libraries and executables. The difference is that libraries have a number of “exposed” modules that make up the public interface of the library, while executables have a file containing a rMrM}rM(hXMost of the build information fields are the same between libraries and executables. The difference is that libraries have a number of "exposed" modules that make up the public interface of the library, while executables have a file containing a jDNjPNjjthjMubj)rM}rM(hX``Main``h}rM(h]h]h]h]h]uhjMh]rMhXMainrMrM}rM(hXMainhjMubahjubhX module.rMrM}rM(hX module.jDNjPNjjthjMubeubjZ)rM}rM(hXThe name of a library always matches the name of the package, so it is not specified in the library section. Executables often follow the name of the package too, but this is not required and the name is given explicitly.rMhjMjDjEhj]h}rM(h]h]h]h]h]ujPK~jjth]rMhXThe name of a library always matches the name of the package, so it is not specified in the library section. Executables often follow the name of the package too, but this is not required and the name is given explicitly.rMrM}rM(hjMjDNjPNjjthjMubaubeubjn)rM}rM(hUhjLjDjEhjqh}rM(h]h]h]h]rMjKah]rMjaujPKjjth]rM(h)rM}rM(hXModules included in the packagerMhjMjDjEhhh}rM(h]h]h]h]h]ujPKjjth]rMhXModules included in the packagerMrM}rM(hjMjDNjPNjjthjMubaubjZ)rM}rM(hXuFor a library, ``cabal init`` looks in the project directory for files that look like Haskell modules and adds all the modules to the :pkg-field:`library:exposed-modules` field. For modules that do not form part of your package's public interface, you can move those modules to the :pkg-field:`other-modules` field. Either way, all modules in the library need to be listed.hjMjDjEhj]h}rM(h]h]h]h]h]ujPKjjth]rM(hXFor a library, rMrM}rM(hXFor a library, jDNjPNjjthjMubj)rM}rM(hX``cabal init``h}rM(h]h]h]h]h]uhjMh]rMhX cabal initrMrM}rM(hX cabal inithjMubahjubhXi looks in the project directory for files that look like Haskell modules and adds all the modules to the rMrM}rM(hXi looks in the project directory for files that look like Haskell modules and adds all the modules to the jDNjPNjjthjMubjM)rM}rM(hX$:pkg-field:`library:exposed-modules`hjMjDjEhjPh}rM(UreftypeX pkg-fieldjRjSXexposed-modulesU refdomainXcabalrMh]h]U refexplicith]h]h]jVj jlXlibraryujPKh]rMj)rM}rM(hXlibrary:exposed-modulesh}rM(h]h]rM(j]jMXcabal-pkg-fieldrMeh]h]h]uhjMh]rMhXlibrary:exposed-modulesrMrM}rM(hUhjMubahjubaubhXr field. For modules that do not form part of your package’s public interface, you can move those modules to the rMrM}rM(hXp field. For modules that do not form part of your package's public interface, you can move those modules to the jDNjPNjjthjMubjM)rM}rM(hX:pkg-field:`other-modules`hjMjDjEhjPh}rM(UreftypeX pkg-fieldjRjSX other-modulesrMU refdomainXcabalrMh]h]U refexplicith]h]h]jVj jlNujPKh]rMj)rM}rM(hjMh}rM(h]h]rM(j]jMXcabal-pkg-fieldrMeh]h]h]uhjMh]rMhX other-modulesrMrM}rM(hUhjMubahjubaubhXA field. Either way, all modules in the library need to be listed.rMrM}rM(hXA field. Either way, all modules in the library need to be listed.jDNjPNjjthjMubeubjZ)rM}rM(hXqFor an executable, ``cabal init`` does not try to guess which file contains your program's ``Main`` module. You will need to fill in the :pkg-field:`executable:main-is` field with the file name of your program's ``Main`` module (including ``.hs`` or ``.lhs`` extension). Other modules included in the executable should be listed in the :pkg-field:`other-modules` field.hjMjDjEhj]h}rM(h]h]h]h]h]ujPKjjth]rM(hXFor an executable, rMrM}rN(hXFor an executable, jDNjPNjjthjMubj)rN}rN(hX``cabal init``h}rN(h]h]h]h]h]uhjMh]rNhX cabal initrNrN}rN(hX cabal inithjNubahjubhX< does not try to guess which file contains your program’s rNr N}r N(hX: does not try to guess which file contains your program's jDNjPNjjthjMubj)r N}r N(hX``Main``h}r N(h]h]h]h]h]uhjMh]rNhXMainrNrN}rN(hXMainhj NubahjubhX& module. You will need to fill in the rNrN}rN(hX& module. You will need to fill in the jDNjPNjjthjMubjM)rN}rN(hX:pkg-field:`executable:main-is`hjMjDjEhjPh}rN(UreftypeX pkg-fieldjRjSXmain-isU refdomainXcabalrNh]h]U refexplicith]h]h]jVj jlX executableujPKh]rNj)rN}rN(hXexecutable:main-ish}rN(h]h]rN(j]jNXcabal-pkg-fieldrNeh]h]h]uhjNh]rNhXexecutable:main-isr Nr!N}r"N(hUhjNubahjubaubhX. field with the file name of your program’s r#Nr$N}r%N(hX, field with the file name of your program's jDNjPNjjthjMubj)r&N}r'N(hX``Main``h}r(N(h]h]h]h]h]uhjMh]r)NhXMainr*Nr+N}r,N(hXMainhj&NubahjubhX module (including r-Nr.N}r/N(hX module (including jDNjPNjjthjMubj)r0N}r1N(hX``.hs``h}r2N(h]h]h]h]h]uhjMh]r3NhX.hsr4Nr5N}r6N(hX.hshj0NubahjubhX or r7Nr8N}r9N(hX or jDNjPNjjthjMubj)r:N}r;N(hX``.lhs``h}rNr?N}r@N(hX.lhshj:NubahjubhXN extension). Other modules included in the executable should be listed in the rANrBN}rCN(hXN extension). Other modules included in the executable should be listed in the jDNjPNjjthjMubjM)rDN}rEN(hX:pkg-field:`other-modules`hjMjDjEhjPh}rFN(UreftypeX pkg-fieldjRjSX other-modulesrGNU refdomainXcabalrHNh]h]U refexplicith]h]h]jVj jlNujPKh]rINj)rJN}rKN(hjGNh}rLN(h]h]rMN(j]jHNXcabal-pkg-fieldrNNeh]h]h]uhjDNh]rONhX other-modulesrPNrQN}rRN(hUhjJNubahjubaubhX field.rSNrTN}rUN(hX field.jDNjPNjjthjMubeubeubjn)rVN}rWN(hUhjLjDjEhjqh}rXN(h]h]h]h]rYNjKah]rZNjaujPKjjth]r[N(h)r\N}r]N(hX$Modules imported from other packagesr^NhjVNjDjEhhh}r_N(h]h]h]h]h]ujPKjjth]r`NhX$Modules imported from other packagesraNrbN}rcN(hj^NjDNjPNjjthj\NubaubjZ)rdN}reN(hXWhile your library or executable may include a number of modules, it almost certainly also imports a number of external modules from the standard libraries or other pre-packaged libraries. (These other libraries are of course just Cabal packages that contain a library.)rfNhjVNjDjEhj]h}rgN(h]h]h]h]h]ujPKjjth]rhNhXWhile your library or executable may include a number of modules, it almost certainly also imports a number of external modules from the standard libraries or other pre-packaged libraries. (These other libraries are of course just Cabal packages that contain a library.)riNrjN}rkN(hjfNjDNjPNjjthjdNubaubjZ)rlN}rmN(hXYou have to list all of the library packages that your library or executable imports modules from. Or to put it another way: you have to list all the other packages that your package depends on.rnNhjVNjDjEhj]h}roN(h]h]h]h]h]ujPKjjth]rpNhXYou have to list all of the library packages that your library or executable imports modules from. Or to put it another way: you have to list all the other packages that your package depends on.rqNrrN}rsN(hjnNjDNjPNjjthjlNubaubjZ)rtN}ruN(hXFor example, suppose the example ``Proglet`` module imports the module ``Data.Map``. The ``Data.Map`` module comes from the ``containers`` package, so we must list it:hjVNjDjEhj]h}rvN(h]h]h]h]h]ujPKjjth]rwN(hX!For example, suppose the example rxNryN}rzN(hX!For example, suppose the example jDNjPNjjthjtNubj)r{N}r|N(hX ``Proglet``h}r}N(h]h]h]h]h]uhjtNh]r~NhXProgletrNrN}rN(hXProglethj{NubahjubhX module imports the module rNrN}rN(hX module imports the module jDNjPNjjthjtNubj)rN}rN(hX ``Data.Map``h}rN(h]h]h]h]h]uhjtNh]rNhXData.MaprNrN}rN(hXData.MaphjNubahjubhX. The rNrN}rN(hX. The jDNjPNjjthjtNubj)rN}rN(hX ``Data.Map``h}rN(h]h]h]h]h]uhjtNh]rNhXData.MaprNrN}rN(hXData.MaphjNubahjubhX module comes from the rNrN}rN(hX module comes from the jDNjPNjjthjtNubj)rN}rN(hX``containers``h}rN(h]h]h]h]h]uhjtNh]rNhX containersrNrN}rN(hX containershjNubahjubhX package, so we must list it:rNrN}rN(hX package, so we must list it:jDNjPNjjthjtNubeubj)rN}rN(hXflibrary exposed-modules: Proglet other-modules: build-depends: containers, base == 4.*hjVNjDjEhjh}rN(jjh]h]h]h]h]ujPKjjth]rNhXflibrary exposed-modules: Proglet other-modules: build-depends: containers, base == 4.*rNrN}rN(hUhjNubaubjZ)rN}rN(hXIn addition, almost every package also depends on the ``base`` library package because it exports the standard ``Prelude`` module plus other basic modules like ``Data.List``.hjVNjDjEhj]h}rN(h]h]h]h]h]ujPKjjth]rN(hX6In addition, almost every package also depends on the rNrN}rN(hX6In addition, almost every package also depends on the jDNjPNjjthjNubj)rN}rN(hX``base``h}rN(h]h]h]h]h]uhjNh]rNhXbaserNrN}rN(hXbasehjNubahjubhX1 library package because it exports the standard rNrN}rN(hX1 library package because it exports the standard jDNjPNjjthjNubj)rN}rN(hX ``Prelude``h}rN(h]h]h]h]h]uhjNh]rNhXPreluderNrN}rN(hXPreludehjNubahjubhX& module plus other basic modules like rNrN}rN(hX& module plus other basic modules like jDNjPNjjthjNubj)rN}rN(hX ``Data.List``h}rN(h]h]h]h]h]uhjNh]rNhX Data.ListrNrN}rN(hX Data.ListhjNubahjubhX.rN}rN(hX.jDNjPNjjthjNubeubjZ)rN}rN(hXYou will notice that we have listed ``base == 4.*``. This gives a constraint on the version of the base package that our package will work with. The most common kinds of constraints are:hjVNjDjEhj]h}rN(h]h]h]h]h]ujPKjjth]rN(hX$You will notice that we have listed rNrN}rN(hX$You will notice that we have listed jDNjPNjjthjNubj)rN}rN(hX``base == 4.*``h}rN(h]h]h]h]h]uhjNh]rNhX base == 4.*rNrN}rN(hX base == 4.*hjNubahjubhX. This gives a constraint on the version of the base package that our package will work with. The most common kinds of constraints are:rNrN}rN(hX. This gives a constraint on the version of the base package that our package will work with. The most common kinds of constraints are:jDNjPNjjthjNubeubj )rN}rN(hUhjVNjDjEhj h}rN(j X-h]h]h]h]h]ujPKjjth]rN(j )rN}rN(hX``pkgname >= n``rNhjNjDjEhj h}rN(h]h]h]h]h]ujPNjjth]rNjZ)rN}rN(hjNhjNjDjEhj]h}rN(h]h]h]h]h]ujPKh]rNj)rN}rN(hjNh}rN(h]h]h]h]h]uhjNh]rNhX pkgname >= nrNrN}rN(hX pkgname >= nhjNubahjubaubaubj )rN}rN(hX#``pkgname ^>= n`` (since Cabal 2.0)rNhjNjDjEhj h}rN(h]h]h]h]h]ujPNjjth]rNjZ)rN}rN(hjNhjNjDjEhj]h}rN(h]h]h]h]h]ujPKh]rN(j)rN}rN(hX``pkgname ^>= n``h}rN(h]h]h]h]h]uhjNh]rNhX pkgname ^>= nrOrO}rO(hX pkgname ^>= nhjNubahjubhX (since Cabal 2.0)rOrO}rO(hX (since Cabal 2.0)hjNubeubaubj )rO}rO(hX``pkgname >= n && < m``rOhjNjDjEhj h}r O(h]h]h]h]h]ujPNjjth]r OjZ)r O}r O(hjOhjOjDjEhj]h}r O(h]h]h]h]h]ujPKh]rOj)rO}rO(hjOh}rO(h]h]h]h]h]uhj Oh]rOhXpkgname >= n && < mrOrO}rO(hXpkgname >= n && < mhjOubahjubaubaubj )rO}rO(hX%``pkgname == n.*`` (since Cabal 1.6) hjNjDjEhj h}rO(h]h]h]h]h]ujPNjjth]rOjZ)rO}rO(hX$``pkgname == n.*`` (since Cabal 1.6)hjOjDjEhj]h}rO(h]h]h]h]h]ujPKh]rO(j)rO}rO(hX``pkgname == n.*``h}r O(h]h]h]h]h]uhjOh]r!OhXpkgname == n.*r"Or#O}r$O(hXpkgname == n.*hjOubahjubhX (since Cabal 1.6)r%Or&O}r'O(hX (since Cabal 1.6)hjOubeubaubeubjZ)r(O}r)O(hXThe last is just shorthand, for example ``base == 4.*`` means exactly the same thing as ``base >= 4 && < 5``. Please refer to the documentation on the :pkg-field:`build-depends` field for more information.hjVNjDjEhj]h}r*O(h]h]h]h]h]ujPKjjth]r+O(hX(The last is just shorthand, for example r,Or-O}r.O(hX(The last is just shorthand, for example jDNjPNjjthj(Oubj)r/O}r0O(hX``base == 4.*``h}r1O(h]h]h]h]h]uhj(Oh]r2OhX base == 4.*r3Or4O}r5O(hX base == 4.*hj/OubahjubhX! means exactly the same thing as r6Or7O}r8O(hX! means exactly the same thing as jDNjPNjjthj(Oubj)r9O}r:O(hX``base >= 4 && < 5``h}r;O(h]h]h]h]h]uhj(Oh]r= 4 && < 5r=Or>O}r?O(hXbase >= 4 && < 5hj9OubahjubhX+. Please refer to the documentation on the r@OrAO}rBO(hX+. Please refer to the documentation on the jDNjPNjjthj(OubjM)rCO}rDO(hX:pkg-field:`build-depends`hj(OjDjEhjPh}rEO(UreftypeX pkg-fieldjRjSX build-dependsrFOU refdomainXcabalrGOh]h]U refexplicith]h]h]jVj jlNujPKh]rHOj)rIO}rJO(hjFOh}rKO(h]h]rLO(j]jGOXcabal-pkg-fieldrMOeh]h]h]uhjCOh]rNOhX build-dependsrOOrPO}rQO(hUhjIOubahjubaubhX field for more information.rROrSO}rTO(hX field for more information.jDNjPNjjthj(OubeubjZ)rUO}rVO(hXAlso, you can factor out shared ``build-depends`` (and other fields such as ``ghc-options``) into a ``common`` stanza which you can ``import`` in your libraries and executable sections. For example:hjVNjDjEhj]h}rWO(h]h]h]h]h]ujPKjjth]rXO(hX Also, you can factor out shared rYOrZO}r[O(hX Also, you can factor out shared jDNjPNjjthjUOubj)r\O}r]O(hX``build-depends``h}r^O(h]h]h]h]h]uhjUOh]r_OhX build-dependsr`OraO}rbO(hX build-dependshj\OubahjubhX (and other fields such as rcOrdO}reO(hX (and other fields such as jDNjPNjjthjUOubj)rfO}rgO(hX``ghc-options``h}rhO(h]h]h]h]h]uhjUOh]riOhX ghc-optionsrjOrkO}rlO(hX ghc-optionshjfOubahjubhX ) into a rmOrnO}roO(hX ) into a jDNjPNjjthjUOubj)rpO}rqO(hX ``common``h}rrO(h]h]h]h]h]uhjUOh]rsOhXcommonrtOruO}rvO(hXcommonhjpOubahjubhX stanza which you can rwOrxO}ryO(hX stanza which you can jDNjPNjjthjUOubj)rzO}r{O(hX ``import``h}r|O(h]h]h]h]h]uhjUOh]r}OhXimportr~OrO}rO(hXimporthjzOubahjubhX8 in your libraries and executable sections. For example:rOrO}rO(hX8 in your libraries and executable sections. For example:jDNjPNjjthjUOubeubj)rO}rO(hXcommon shared-properties default-language: Haskell2010 build-depends: base == 4.* ghc-options: -Wall library import: shared-properties exposed-modules: ProglethjVNjDjEhjh}rO(jjh]h]h]h]h]ujPKjjth]rOhXcommon shared-properties default-language: Haskell2010 build-depends: base == 4.* ghc-options: -Wall library import: shared-properties exposed-modules: ProgletrOrO}rO(hUhjOubaubjZ)rO}rO(hX{Note that the ``import`` **must** be the first thing in the stanza. For more information see the `Common stanzas`_ section.hjVNjDjEhj]h}rO(h]h]h]h]h]ujPKjjth]rO(hXNote that the rOrO}rO(hXNote that the jDNjPNjjthjOubj)rO}rO(hX ``import``h}rO(h]h]h]h]h]uhjOh]rOhXimportrOrO}rO(hXimporthjOubahjubhX rO}rO(hX jDNjPNjjthjOubj)rO}rO(hX**must**h}rO(h]h]h]h]h]uhjOh]rOhXmustrOrO}rO(hXmusthjOubahjubhX@ be the first thing in the stanza. For more information see the rOrO}rO(hX@ be the first thing in the stanza. For more information see the jDNjPNjjthjOubj!)rO}rO(hX`Common stanzas`_j$KhjOhj%h}rO(UnameXCommon stanzash]h]h]h]h]j'juh]rOhXCommon stanzasrOrO}rO(hXCommon stanzashjOubaubhX section.rOrO}rO(hX section.jDNjPNjjthjOubeubeubjn)rO}rO(hUhjLjDjEhjqh}rO(h]h]h]h]rOjKah]rOjaujPKjjth]rO(h)rO}rO(hXBuilding the packagerOhjOjDjEhhh}rO(h]h]h]h]h]ujPKjjth]rOhXBuilding the packagerOrO}rO(hjOjDNjPNjjthjOubaubjZ)rO}rO(hXSFor simple packages that's it! We can now try configuring and building the package:rOhjOjDjEhj]h}rO(h]h]h]h]h]ujPKjjth]rOhXUFor simple packages that’s it! We can now try configuring and building the package:rOrO}rO(hjOjDNjPNjjthjOubaubj)rO}rO(hX$ cabal configure $ cabal buildhjOjDjEhjh}rO(jjXconsolejjh]h]h]j}h]h]ujPKjjth]rOhX$ cabal configure $ cabal buildrOrO}rO(hUhjOubaubjZ)rO}rO(hXFAssuming those two steps worked then you can also install the package:rOhjOjDjEhj]h}rO(h]h]h]h]h]ujPKjjth]rOhXFAssuming those two steps worked then you can also install the package:rOrO}rO(hjOjDNjPNjjthjOubaubj)rO}rO(hX$ cabal installhjOjDjEhjh}rO(jjXconsolejjh]h]h]j}h]h]ujPKjjth]rOhX$ cabal installrOrO}rO(hUhjOubaubjZ)rO}rO(hXFor libraries this makes them available for use in GHCi or to be used by other packages. For executables it installs the program so that you can run it (though you may first need to adjust your system's ``$PATH``).hjOjDjEhj]h}rO(h]h]h]h]h]ujPKjjth]rO(hXFor libraries this makes them available for use in GHCi or to be used by other packages. For executables it installs the program so that you can run it (though you may first need to adjust your system’s rOrO}rO(hXFor libraries this makes them available for use in GHCi or to be used by other packages. For executables it installs the program so that you can run it (though you may first need to adjust your system's jDNjPNjjthjOubj)rO}rO(hX ``$PATH``h}rO(h]h]h]h]h]uhjOh]rOhX$PATHrOrO}rO(hX$PATHhjOubahjubhX).rOrO}rO(hX).jDNjPNjjthjOubeubeubjn)rO}rO(hUhjLjDjEhjqh}rO(h]h]h]h]rOjKah]rOjaujPKjjth]rO(h)rO}rO(hX Next stepsrOhjOjDjEhhh}rO(h]h]h]h]h]ujPKjjth]rOhX Next stepsrOrO}rO(hjOjDNjPNjjthjOubaubjZ)rO}rO(hXfWhat we have covered so far should be enough for very simple packages that you use on your own system.rOhjOjDjEhj]h}rO(h]h]h]h]h]ujPKjjth]rOhXfWhat we have covered so far should be enough for very simple packages that you use on your own system.rOrP}rP(hjOjDNjPNjjthjOubaubjZ)rP}rP(hXThe next few sections cover more details needed for more complex packages and details needed for distributing packages to other people.rPhjOjDjEhj]h}rP(h]h]h]h]h]ujPKjjth]rPhXThe next few sections cover more details needed for more complex packages and details needed for distributing packages to other people.rPrP}r P(hjPjDNjPNjjthjPubaubjZ)r P}r P(hXtThe previous chapter covers building and installing packages -- your own packages or ones developed by other people.r PhjOjDjEhj]h}r P(h]h]h]h]h]ujPKjjth]rPhXuThe previous chapter covers building and installing packages – your own packages or ones developed by other people.rPrP}rP(hj PjDNjPNjjthj Pubaubeubeubjn)rP}rP(hUhjtjDjEhjqh}rP(h]h]h]h]rPjLah]rPjaujPKjjth]rP(h)rP}rP(hXPackage conceptsrPhjPjDjEhhh}rP(h]h]h]h]h]ujPKjjth]rPhXPackage conceptsrPrP}rP(hjPjDNjPNjjthjPubaubjZ)r P}r!P(hXBefore diving into the details of writing packages it helps to understand a bit about packages in the Haskell world and the particular approach that Cabal takes.r"PhjPjDjEhj]h}r#P(h]h]h]h]h]ujPKjjth]r$PhXBefore diving into the details of writing packages it helps to understand a bit about packages in the Haskell world and the particular approach that Cabal takes.r%Pr&P}r'P(hj"PjDNjPNjjthj Pubaubjn)r(P}r)P(hUhjPjDjEhjqh}r*P(h]h]h]h]r+PjKah]r,Pj~aujPKjjth]r-P(h)r.P}r/P(hXThe point of packagesr0Phj(PjDjEhhh}r1P(h]h]h]h]h]ujPKjjth]r2PhXThe point of packagesr3Pr4P}r5P(hj0PjDNjPNjjthj.PubaubjZ)r6P}r7P(hXPackages are a mechanism for organising and distributing code. Packages are particularly suited for "programming in the large", that is building big systems by using and re-using code written by different people at different times.r8Phj(PjDjEhj]h}r9P(h]h]h]h]h]ujPKjjth]r:PhXPackages are a mechanism for organising and distributing code. Packages are particularly suited for “programming in the large”, that is building big systems by using and re-using code written by different people at different times.r;PrP}r?P(hXPeople organise code into packages based on functionality and dependencies. Social factors are also important: most packages have a single author, or a relatively small team of authors.r@Phj(PjDjEhj]h}rAP(h]h]h]h]h]ujPMjjth]rBPhXPeople organise code into packages based on functionality and dependencies. Social factors are also important: most packages have a single author, or a relatively small team of authors.rCPrDP}rEP(hj@PjDNjPNjjthj>PubaubjZ)rFP}rGP(hXUPackages are also used for distribution: the idea is that a package can be created in one place and be moved to a different computer and be usable in that different environment. There are a surprising number of details that have to be got right for this to work, and a good package system helps to simplify this process and make it reliable.rHPhj(PjDjEhj]h}rIP(h]h]h]h]h]ujPMjjth]rJPhXUPackages are also used for distribution: the idea is that a package can be created in one place and be moved to a different computer and be usable in that different environment. There are a surprising number of details that have to be got right for this to work, and a good package system helps to simplify this process and make it reliable.rKPrLP}rMP(hjHPjDNjPNjjthjFPubaubjZ)rNP}rOP(hXEPackages come in two main flavours: libraries of reusable code, and complete programs. Libraries present a code interface, an API, while programs can be run directly. In the Haskell world, library packages expose a set of Haskell modules as their public interface. Cabal packages can contain a library or executables or both.rPPhj(PjDjEhj]h}rQP(h]h]h]h]h]ujPM jjth]rRPhXEPackages come in two main flavours: libraries of reusable code, and complete programs. Libraries present a code interface, an API, while programs can be run directly. In the Haskell world, library packages expose a set of Haskell modules as their public interface. Cabal packages can contain a library or executables or both.rSPrTP}rUP(hjPPjDNjPNjjthjNPubaubjZ)rVP}rWP(hXSome programming languages have packages as a builtin language concept. For example in Java, a package provides a local namespace for types and other definitions. In the Haskell world, packages are not a part of the language itself. Haskell programs consist of a number of modules, and packages just provide a way to partition the modules into sets of related functionality. Thus the choice of module names in Haskell is still important, even when using packages.rXPhj(PjDjEhj]h}rYP(h]h]h]h]h]ujPMjjth]rZPhXSome programming languages have packages as a builtin language concept. For example in Java, a package provides a local namespace for types and other definitions. In the Haskell world, packages are not a part of the language itself. Haskell programs consist of a number of modules, and packages just provide a way to partition the modules into sets of related functionality. Thus the choice of module names in Haskell is still important, even when using packages.r[Pr\P}r]P(hjXPjDNjPNjjthjVPubaubeubjn)r^P}r_P(hUhjPjDjEhjqh}r`P(h]h]h]h]raPjKah]rbPjaujPMjjth]rcP(h)rdP}reP(hXPackage names and versionsrfPhj^PjDjEhhh}rgP(h]h]h]h]h]ujPMjjth]rhPhXPackage names and versionsriPrjP}rkP(hjfPjDNjPNjjthjdPubaubjZ)rlP}rmP(hX All packages have a name, e.g. "HUnit". Package names are assumed to be unique. Cabal package names may contain letters, numbers and hyphens, but not spaces and may also not contain a hyphened section consisting of only numbers. The namespace for Cabal packages is flat, not hierarchical.rnPhj^PjDjEhj]h}roP(h]h]h]h]h]ujPMjjth]rpPhX$All packages have a name, e.g. “HUnit”. Package names are assumed to be unique. Cabal package names may contain letters, numbers and hyphens, but not spaces and may also not contain a hyphened section consisting of only numbers. The namespace for Cabal packages is flat, not hierarchical.rqPrrP}rsP(hjnPjDNjPNjjthjlPubaubjZ)rtP}ruP(hXPackages also have a version, e.g "1.1". This matches the typical way in which packages are developed. Strictly speaking, each version of a package is independent, but usually they are very similar. Cabal package versions follow the conventional numeric style, consisting of a sequence of digits such as "1.0.1" or "2.0". There are a range of common conventions for "versioning" packages, that is giving some meaning to the version number in terms of changes in the package, such as e.g. `SemVer `__; however, for packages intended to be distributed via Hackage Haskell's `Package Versioning Policy`_ applies (see also the `PVP/SemVer FAQ section `__).hj^PjDjEhj]h}rvP(h]h]h]h]h]ujPM"jjth]rwP(hXPackages also have a version, e.g “1.1”. This matches the typical way in which packages are developed. Strictly speaking, each version of a package is independent, but usually they are very similar. Cabal package versions follow the conventional numeric style, consisting of a sequence of digits such as “1.0.1” or “2.0”. There are a range of common conventions for “versioning” packages, that is giving some meaning to the version number in terms of changes in the package, such as e.g. rxPryP}rzP(hXPackages also have a version, e.g "1.1". This matches the typical way in which packages are developed. Strictly speaking, each version of a package is independent, but usually they are very similar. Cabal package versions follow the conventional numeric style, consisting of a sequence of digits such as "1.0.1" or "2.0". There are a range of common conventions for "versioning" packages, that is giving some meaning to the version number in terms of changes in the package, such as e.g. jDNjPNjjthjtPubj!)r{P}r|P(hX`SemVer `__h}r}P(UnameXSemVerj] Xhttp://semver.orgh]h]h]h]h]uhjtPh]r~PhXSemVerrPrP}rP(hXSemVerhj{Pubahj%ubhXK; however, for packages intended to be distributed via Hackage Haskell’s rPrP}rP(hXI; however, for packages intended to be distributed via Hackage Haskell's jDNjPNjjthjtPubj!)rP}rP(hX`Package Versioning Policy`_j$KhjtPhj%h}rP(UnameXPackage Versioning Policyj] jh]h]h]h]h]uh]rPhXPackage Versioning PolicyrPrP}rP(hXPackage Versioning PolicyhjPubaubhX applies (see also the rPrP}rP(hX applies (see also the jDNjPNjjthjtPubj!)rP}rP(hX@`PVP/SemVer FAQ section `__h}rP(UnameXPVP/SemVer FAQ sectionj] X#https://pvp.haskell.org/faq/#semverh]h]h]h]h]uhjtPh]rPhXPVP/SemVer FAQ sectionrPrP}rP(hXPVP/SemVer FAQ sectionhjPubahj%ubhX).rPrP}rP(hX).jDNjPNjjthjtPubeubjZ)rP}rP(hXThe combination of package name and version is called the *package ID* and is written with a hyphen to separate the name and version, e.g. "HUnit-1.1".hj^PjDjEhj]h}rP(h]h]h]h]h]ujPM-jjth]rP(hX:The combination of package name and version is called the rPrP}rP(hX:The combination of package name and version is called the jDNjPNjjthjPubj)rP}rP(hX *package ID*h}rP(h]h]h]h]h]uhjPh]rPhX package IDrPrP}rP(hX package IDhjPubahjubhXU and is written with a hyphen to separate the name and version, e.g. “HUnit-1.1”.rPrP}rP(hXQ and is written with a hyphen to separate the name and version, e.g. "HUnit-1.1".jDNjPNjjthjPubeubjZ)rP}rP(hXFor Cabal packages, the combination of the package name and version *uniquely* identifies each package. Or to put it another way: two packages with the same name and version are considered to *be* the same.hj^PjDjEhj]h}rP(h]h]h]h]h]ujPM1jjth]rP(hXDFor Cabal packages, the combination of the package name and version rPrP}rP(hXDFor Cabal packages, the combination of the package name and version jDNjPNjjthjPubj)rP}rP(hX *uniquely*h}rP(h]h]h]h]h]uhjPh]rPhXuniquelyrPrP}rP(hXuniquelyhjPubahjubhXr identifies each package. Or to put it another way: two packages with the same name and version are considered to rPrP}rP(hXr identifies each package. Or to put it another way: two packages with the same name and version are considered to jDNjPNjjthjPubj)rP}rP(hX*be*h}rP(h]h]h]h]h]uhjPh]rPhXberPrP}rP(hXbehjPubahjubhX the same.rPrP}rP(hX the same.jDNjPNjjthjPubeubjZ)rP}rP(hX@Strictly speaking, the package ID only identifies each Cabal *source* package; the same Cabal source package can be configured and built in different ways. There is a separate installed package ID that uniquely identifies each installed package instance. Most of the time however, users need not be aware of this detail.hj^PjDjEhj]h}rP(h]h]h]h]h]ujPM5jjth]rP(hX=Strictly speaking, the package ID only identifies each Cabal rPrP}rP(hX=Strictly speaking, the package ID only identifies each Cabal jDNjPNjjthjPubj)rP}rP(hX*source*h}rP(h]h]h]h]h]uhjPh]rPhXsourcerPrP}rP(hXsourcehjPubahjubhX package; the same Cabal source package can be configured and built in different ways. There is a separate installed package ID that uniquely identifies each installed package instance. Most of the time however, users need not be aware of this detail.rPrP}rP(hX package; the same Cabal source package can be configured and built in different ways. There is a separate installed package ID that uniquely identifies each installed package instance. Most of the time however, users need not be aware of this detail.jDNjPNjjthjPubeubeubjn)rP}rP(hUhjPjDjEhjqh}rP(h]h]h]h]rPjLah]rPjaujPM<jjth]rP(h)rP}rP(hX(Kinds of package: Cabal vs GHC vs systemrPhjPjDjEhhh}rP(h]h]h]h]h]ujPM<jjth]rPhX(Kinds of package: Cabal vs GHC vs systemrPrP}rP(hjPjDNjPNjjthjPubaubjZ)rP}rP(hXIt can be slightly confusing at first because there are various different notions of package floating around. Fortunately the details are not very complicated.rPhjPjDjEhj]h}rP(h]h]h]h]h]ujPM>jjth]rPhXIt can be slightly confusing at first because there are various different notions of package floating around. Fortunately the details are not very complicated.rPrP}rP(hjPjDNjPNjjthjPubaubj)rP}rP(hUhjPjDjEhjh}rP(h]h]h]h]h]ujPNjjth]rP(j)rP}rP(hXCabal packages Cabal packages are really source packages. That is they contain Haskell (and sometimes C) source code. Cabal packages can be compiled to produce GHC packages. They can also be translated into operating system packages. hjPjDjEhjh}rP(h]h]h]h]h]ujPMGh]rP(j)rP}rP(hXCabal packagesrPhjPjDjEhjh}rP(h]h]h]h]h]ujPMGh]rPhXCabal packagesrPrP}rP(hjPhjPubaubj)rP}rP(hUh}rP(h]h]h]h]h]uhjPh]rP(jZ)rQ}rQ(hXfCabal packages are really source packages. That is they contain Haskell (and sometimes C) source code.rQhjPjDjEhj]h}rQ(h]h]h]h]h]ujPMCh]rQhXfCabal packages are really source packages. That is they contain Haskell (and sometimes C) source code.rQrQ}rQ(hjQhjQubaubjZ)rQ}r Q(hXsCabal packages can be compiled to produce GHC packages. They can also be translated into operating system packages.r QhjPjDjEhj]h}r Q(h]h]h]h]h]ujPMFh]r QhXsCabal packages can be compiled to produce GHC packages. They can also be translated into operating system packages.r QrQ}rQ(hj QhjQubaubehj/ubeubj)rQ}rQ(hXGHC packages This is GHC's view on packages. GHC only cares about library packages, not executables. Library packages have to be registered with GHC for them to be available in GHCi or to be used when compiling other programs or packages. The low-level tool ``ghc-pkg`` is used to register GHC packages and to get information on what packages are currently registered. You never need to make GHC packages manually. When you build and install a Cabal package containing a library then it gets registered with GHC automatically. Haskell implementations other than GHC have essentially the same concept of registered packages. For the most part, Cabal hides the slight differences. hjPjDjEhjh}rQ(h]h]h]h]h]ujPMXjjth]rQ(j)rQ}rQ(hX GHC packagesrQhjQjDjEhjh}rQ(h]h]h]h]h]ujPMXh]rQhX GHC packagesrQrQ}rQ(hjQhjQubaubj)rQ}rQ(hUh}rQ(h]h]h]h]h]uhjQh]rQ(jZ)r Q}r!Q(hXThis is GHC's view on packages. GHC only cares about library packages, not executables. Library packages have to be registered with GHC for them to be available in GHCi or to be used when compiling other programs or packages.r"QhjQjDjEhj]h}r#Q(h]h]h]h]h]ujPMJh]r$QhXThis is GHC’s view on packages. GHC only cares about library packages, not executables. Library packages have to be registered with GHC for them to be available in GHCi or to be used when compiling other programs or packages.r%Qr&Q}r'Q(hj"Qhj QubaubjZ)r(Q}r)Q(hXThe low-level tool ``ghc-pkg`` is used to register GHC packages and to get information on what packages are currently registered.hjQjDjEhj]h}r*Q(h]h]h]h]h]ujPMOh]r+Q(hXThe low-level tool r,Qr-Q}r.Q(hXThe low-level tool hj(Qubj)r/Q}r0Q(hX ``ghc-pkg``h}r1Q(h]h]h]h]h]uhj(Qh]r2QhXghc-pkgr3Qr4Q}r5Q(hXghc-pkghj/QubahjubhXc is used to register GHC packages and to get information on what packages are currently registered.r6Qr7Q}r8Q(hXc is used to register GHC packages and to get information on what packages are currently registered.hj(QubeubjZ)r9Q}r:Q(hXYou never need to make GHC packages manually. When you build and install a Cabal package containing a library then it gets registered with GHC automatically.r;QhjQjDjEhj]h}rQr?Q}r@Q(hj;Qhj9QubaubjZ)rAQ}rBQ(hXHaskell implementations other than GHC have essentially the same concept of registered packages. For the most part, Cabal hides the slight differences.rCQhjQjDjEhj]h}rDQ(h]h]h]h]h]ujPMVh]rEQhXHaskell implementations other than GHC have essentially the same concept of registered packages. For the most part, Cabal hides the slight differences.rFQrGQ}rHQ(hjCQhjAQubaubehj/ubeubj)rIQ}rJQ(hXfOperating system packages On operating systems like Linux and Mac OS X, the system has a specific notion of a package and there are tools for installing and managing packages. The Cabal package format is designed to allow Cabal packages to be translated, mostly-automatically, into operating system packages. They are usually translated 1:1, that is a single Cabal package becomes a single system package. It is also possible to make Windows installers from Cabal packages, though this is typically done for a program together with all of its library dependencies, rather than packaging each library separately. hjPjDjEhjh}rKQ(h]h]h]h]h]ujPMfjjth]rLQ(j)rMQ}rNQ(hXOperating system packagesrOQhjIQjDjEhjh}rPQ(h]h]h]h]h]ujPMfh]rQQhXOperating system packagesrRQrSQ}rTQ(hjOQhjMQubaubj)rUQ}rVQ(hUh}rWQ(h]h]h]h]h]uhjIQh]rXQ(jZ)rYQ}rZQ(hXOn operating systems like Linux and Mac OS X, the system has a specific notion of a package and there are tools for installing and managing packages.r[QhjUQjDjEhj]h}r\Q(h]h]h]h]h]ujPM[h]r]QhXOn operating systems like Linux and Mac OS X, the system has a specific notion of a package and there are tools for installing and managing packages.r^Qr_Q}r`Q(hj[QhjYQubaubjZ)raQ}rbQ(hXThe Cabal package format is designed to allow Cabal packages to be translated, mostly-automatically, into operating system packages. They are usually translated 1:1, that is a single Cabal package becomes a single system package.rcQhjUQjDjEhj]h}rdQ(h]h]h]h]h]ujPM_h]reQhXThe Cabal package format is designed to allow Cabal packages to be translated, mostly-automatically, into operating system packages. They are usually translated 1:1, that is a single Cabal package becomes a single system package.rfQrgQ}rhQ(hjcQhjaQubaubjZ)riQ}rjQ(hXIt is also possible to make Windows installers from Cabal packages, though this is typically done for a program together with all of its library dependencies, rather than packaging each library separately.rkQhjUQjDjEhj]h}rlQ(h]h]h]h]h]ujPMdh]rmQhXIt is also possible to make Windows installers from Cabal packages, though this is typically done for a program together with all of its library dependencies, rather than packaging each library separately.rnQroQ}rpQ(hjkQhjiQubaubehj/ubeubeubeubjn)rqQ}rrQ(hUhjPjDjEhjqh}rsQ(h]h]h]h]rtQjKah]ruQjaujPMijjth]rvQ(h)rwQ}rxQ(hXUnit of distributionryQhjqQjDjEhhh}rzQ(h]h]h]h]h]ujPMijjth]r{QhXUnit of distributionr|Qr}Q}r~Q(hjyQjDNjPNjjthjwQubaubjZ)rQ}rQ(hXQThe Cabal package is the unit of distribution. What this means is that each Cabal package can be distributed on its own in source or binary form. Of course there may dependencies between packages, but there is usually a degree of flexibility in which versions of packages can work together so distributing them independently makes sense.rQhjqQjDjEhj]h}rQ(h]h]h]h]h]ujPMkjjth]rQhXQThe Cabal package is the unit of distribution. What this means is that each Cabal package can be distributed on its own in source or binary form. Of course there may dependencies between packages, but there is usually a degree of flexibility in which versions of packages can work together so distributing them independently makes sense.rQrQ}rQ(hjQjDNjPNjjthjQubaubjZ)rQ}rQ(hXIt is perhaps easiest to see what being "the unit of distribution" means by contrast to an alternative approach. Many projects are made up of several interdependent packages and during development these might all be kept under one common directory tree and be built and tested together. When it comes to distribution however, rather than distributing them all together in a single tarball, it is required that they each be distributed independently in their own tarballs.rQhjqQjDjEhj]h}rQ(h]h]h]h]h]ujPMqjjth]rQhXIt is perhaps easiest to see what being “the unit of distribution” means by contrast to an alternative approach. Many projects are made up of several interdependent packages and during development these might all be kept under one common directory tree and be built and tested together. When it comes to distribution however, rather than distributing them all together in a single tarball, it is required that they each be distributed independently in their own tarballs.rQrQ}rQ(hjQjDNjPNjjthjQubaubjZ)rQ}rQ(hXCabal's approach is to say that if you can specify a dependency on a package then that package should be able to be distributed independently. Or to put it the other way round, if you want to distribute it as a single unit, then it should be a single package.rQhjqQjDjEhj]h}rQ(h]h]h]h]h]ujPMyjjth]rQhXCabal’s approach is to say that if you can specify a dependency on a package then that package should be able to be distributed independently. Or to put it the other way round, if you want to distribute it as a single unit, then it should be a single package.rQrQ}rQ(hjQjDNjPNjjthjQubaubeubjn)rQ}rQ(hUhjPjDjEhjqh}rQ(h]h]h]h]rQjKah]rQjaujPMjjth]rQ(h)rQ}rQ(hX6Explicit dependencies and automatic package managementrQhjQjDjEhhh}rQ(h]h]h]h]h]ujPMjjth]rQhX6Explicit dependencies and automatic package managementrQrQ}rQ(hjQjDNjPNjjthjQubaubjZ)rQ}rQ(hXCabal takes the approach that all packages dependencies are specified explicitly and specified in a declarative way. The point is to enable automatic package management. This means tools like ``cabal`` can resolve dependencies and install a package plus all of its dependencies automatically. Alternatively, it is possible to mechanically (or mostly mechanically) translate Cabal packages into system packages and let the system package manager install dependencies automatically.hjQjDjEhj]h}rQ(h]h]h]h]h]ujPMjjth]rQ(hXCabal takes the approach that all packages dependencies are specified explicitly and specified in a declarative way. The point is to enable automatic package management. This means tools like rQrQ}rQ(hXCabal takes the approach that all packages dependencies are specified explicitly and specified in a declarative way. The point is to enable automatic package management. This means tools like jDNjPNjjthjQubj)rQ}rQ(hX ``cabal``h}rQ(h]h]h]h]h]uhjQh]rQhXcabalrQrQ}rQ(hXcabalhjQubahjubhX can resolve dependencies and install a package plus all of its dependencies automatically. Alternatively, it is possible to mechanically (or mostly mechanically) translate Cabal packages into system packages and let the system package manager install dependencies automatically.rQrQ}rQ(hX can resolve dependencies and install a package plus all of its dependencies automatically. Alternatively, it is possible to mechanically (or mostly mechanically) translate Cabal packages into system packages and let the system package manager install dependencies automatically.jDNjPNjjthjQubeubjZ)rQ}rQ(hX-It is important to track dependencies accurately so that packages can reliably be moved from one system to another system and still be able to build it there. Cabal is therefore relatively strict about specifying dependencies. For example Cabal's default build system will not even let code build if it tries to import a module from a package that isn't listed in the ``.cabal`` file, even if that package is actually installed. This helps to ensure that there are no "untracked dependencies" that could cause the code to fail to build on some other system.hjQjDjEhj]h}rQ(h]h]h]h]h]ujPMjjth]rQ(hXtIt is important to track dependencies accurately so that packages can reliably be moved from one system to another system and still be able to build it there. Cabal is therefore relatively strict about specifying dependencies. For example Cabal’s default build system will not even let code build if it tries to import a module from a package that isn’t listed in the rQrQ}rQ(hXpIt is important to track dependencies accurately so that packages can reliably be moved from one system to another system and still be able to build it there. Cabal is therefore relatively strict about specifying dependencies. For example Cabal's default build system will not even let code build if it tries to import a module from a package that isn't listed in the jDNjPNjjthjQubj)rQ}rQ(hX ``.cabal``h}rQ(h]h]h]h]h]uhjQh]rQhX.cabalrQrQ}rQ(hX.cabalhjQubahjubhX file, even if that package is actually installed. This helps to ensure that there are no “untracked dependencies” that could cause the code to fail to build on some other system.rQrQ}rQ(hX file, even if that package is actually installed. This helps to ensure that there are no "untracked dependencies" that could cause the code to fail to build on some other system.jDNjPNjjthjQubeubjZ)rQ}rQ(hXThe explicit dependency approach is in contrast to the traditional "./configure" approach where instead of specifying dependencies declaratively, the ``./configure`` script checks if the dependencies are present on the system. Some manual work is required to transform a ``./configure`` based package into a Linux distribution package (or similar). This conversion work is usually done by people other than the package author(s). The practical effect of this is that only the most popular packages will benefit from automatic package management. Instead, Cabal forces the original author to specify the dependencies but the advantage is that every package can benefit from automatic package management.hjQjDjEhj]h}rQ(h]h]h]h]h]ujPMjjth]rQ(hXThe explicit dependency approach is in contrast to the traditional “./configure” approach where instead of specifying dependencies declaratively, the rQrQ}rQ(hXThe explicit dependency approach is in contrast to the traditional "./configure" approach where instead of specifying dependencies declaratively, the jDNjPNjjthjQubj)rQ}rQ(hX``./configure``h}rQ(h]h]h]h]h]uhjQh]rQhX ./configurerQrQ}rQ(hX ./configurehjQubahjubhXj script checks if the dependencies are present on the system. Some manual work is required to transform a rQrQ}rQ(hXj script checks if the dependencies are present on the system. Some manual work is required to transform a jDNjPNjjthjQubj)rQ}rQ(hX``./configure``h}rQ(h]h]h]h]h]uhjQh]rQhX ./configurerQrQ}rQ(hX ./configurehjQubahjubhX based package into a Linux distribution package (or similar). This conversion work is usually done by people other than the package author(s). The practical effect of this is that only the most popular packages will benefit from automatic package management. Instead, Cabal forces the original author to specify the dependencies but the advantage is that every package can benefit from automatic package management.rQrQ}rQ(hX based package into a Linux distribution package (or similar). This conversion work is usually done by people other than the package author(s). The practical effect of this is that only the most popular packages will benefit from automatic package management. Instead, Cabal forces the original author to specify the dependencies but the advantage is that every package can benefit from automatic package management.jDNjPNjjthjQubeubjZ)rQ}rQ(hXMThe "./configure" approach tends to encourage packages that adapt themselves to the environment in which they are built, for example by disabling optional features so that they can continue to work when a particular dependency is not available. This approach makes sense in a world where installing additional dependencies is a tiresome manual process and so minimising dependencies is important. The automatic package management view is that packages should just declare what they need and the package manager will take responsibility for ensuring that all the dependencies are installed.rQhjQjDjEhj]h}rQ(h]h]h]h]h]ujPMjjth]rQhXQThe “./configure” approach tends to encourage packages that adapt themselves to the environment in which they are built, for example by disabling optional features so that they can continue to work when a particular dependency is not available. This approach makes sense in a world where installing additional dependencies is a tiresome manual process and so minimising dependencies is important. The automatic package management view is that packages should just declare what they need and the package manager will take responsibility for ensuring that all the dependencies are installed.rQrQ}rQ(hjQjDNjPNjjthjQubaubjZ)rQ}rQ(hXSometimes of course optional features and optional dependencies do make sense. Cabal packages can have optional features and varying dependencies. These conditional dependencies are still specified in a declarative way however and remain compatible with automatic package management. The need to remain compatible with automatic package management means that Cabal's conditional dependencies system is a bit less flexible than with the "./configure" approach.rQhjQjDjEhj]h}rQ(h]h]h]h]h]ujPMjjth]rQhXSometimes of course optional features and optional dependencies do make sense. Cabal packages can have optional features and varying dependencies. These conditional dependencies are still specified in a declarative way however and remain compatible with automatic package management. The need to remain compatible with automatic package management means that Cabal’s conditional dependencies system is a bit less flexible than with the “./configure” approach.rQrQ}rQ(hjQjDNjPNjjthjQubaubj )rQ}rQ(hX`GNU autoconf places restrictions on paths, including the path that the user builds a package from. `_ Package authors using ``build-type: configure`` should be aware of these restrictions; because users may be unexpectedly constrained and face mysterious errors, it is recommended that ``build-type: configure`` is only used where strictly necessary.hjQjDjEhj h}rQ(h]h]h]h]h]ujPNjjth]rQjZ)rQ}rQ(hX`GNU autoconf places restrictions on paths, including the path that the user builds a package from. `_ Package authors using ``build-type: configure`` should be aware of these restrictions; because users may be unexpectedly constrained and face mysterious errors, it is recommended that ``build-type: configure`` is only used where strictly necessary.hjQjDjEhj]h}rQ(h]h]h]h]h]ujPMh]rQ(j!)rQ}rQ(hX`GNU autoconf places restrictions on paths, including the path that the user builds a package from. `_h}rQ(UnameXbGNU autoconf places restrictions on paths, including the path that the user builds a package from.j] XRhttps://www.gnu.org/software/autoconf/manual/autoconf.html#File-System-ConventionsrQh]h]h]h]h]uhjQh]rQhXbGNU autoconf places restrictions on paths, including the path that the user builds a package from.rQrR}rR(hXbGNU autoconf places restrictions on paths, including the path that the user builds a package from.hjQubahj%ubje)rR}rR(hXU jKhjQhjdh}rR(UrefurijQh]rRjLah]h]h]h]rRjauh]ubhX Package authors using rRrR}r R(hX Package authors using hjQubj)r R}r R(hX``build-type: configure``h}r R(h]h]h]h]h]uhjQh]r RhXbuild-type: configurerRrR}rR(hXbuild-type: configurehj RubahjubhX should be aware of these restrictions; because users may be unexpectedly constrained and face mysterious errors, it is recommended that rRrR}rR(hX should be aware of these restrictions; because users may be unexpectedly constrained and face mysterious errors, it is recommended that hjQubj)rR}rR(hX``build-type: configure``h}rR(h]h]h]h]h]uhjQh]rRhXbuild-type: configurerRrR}rR(hXbuild-type: configurehjRubahjubhX' is only used where strictly necessary.rRrR}rR(hX' is only used where strictly necessary.hjQubeubaubeubjn)rR}rR(hUhjPjDjEhjqh}r R(h]h]h]h]r!RjLah]r"RjaujPMjjth]r#R(h)r$R}r%R(hX Portabilityr&RhjRjDjEhhh}r'R(h]h]h]h]h]ujPMjjth]r(RhX Portabilityr)Rr*R}r+R(hj&RjDNjPNjjthj$RubaubjZ)r,R}r-R(hXOne of the purposes of Cabal is to make it easier to build packages on different platforms (operating systems and CPU architectures), with different compiler versions and indeed even with different Haskell implementations. (Yes, there are Haskell implementations other than GHC!)r.RhjRjDjEhj]h}r/R(h]h]h]h]h]ujPMjjth]r0RhXOne of the purposes of Cabal is to make it easier to build packages on different platforms (operating systems and CPU architectures), with different compiler versions and indeed even with different Haskell implementations. (Yes, there are Haskell implementations other than GHC!)r1Rr2R}r3R(hj.RjDNjPNjjthj,RubaubjZ)r4R}r5R(hXCabal provides abstractions of features present in different Haskell implementations and wherever possible it is best to take advantage of these to increase portability. Where necessary however it is possible to use specific features of specific implementations.r6RhjRjDjEhj]h}r7R(h]h]h]h]h]ujPMjjth]r8RhXCabal provides abstractions of features present in different Haskell implementations and wherever possible it is best to take advantage of these to increase portability. Where necessary however it is possible to use specific features of specific implementations.r9Rr:R}r;R(hj6RjDNjPNjjthj4RubaubjZ)rR(h]h]h]h]h]ujPMjjth]r?R(hX9For example a package author can list in the package’s r@RrAR}rBR(hX7For example a package author can list in the package's jDNjPNjjthjS(hX hj2Subj)r?S}r@S(hX*name*h}rAS(h]h]h]h]h]uhj2Sh]rBShXnamerCSrDS}rES(hXnamehj?SubahjubhX rFS}rGS(hX hj2Subj)rHS}rIS(hX *buildinfo*h}rJS(h]h]h]h]h]uhj2Sh]rKShX buildinforLSrMS}rNS(hX buildinfohjHSubahjubhX …rOSrPS}rQS(hX ...hj2SubeubeubjZ)rRS}rSS(hX4where each *buildinfo* consists of settings of fields listed in the section on `build information`_. The first one (if present) relates to the library, while each of the others relate to the named executable. (The names must match the package description, but you don't have to have entries for all of them.)hj|RjDjEhj]h}rTS(h]h]h]h]h]ujPM jjth]rUS(hX where each rVSrWS}rXS(hX where each jDNjPNjjthjRSubj)rYS}rZS(hX *buildinfo*h}r[S(h]h]h]h]h]uhjRSh]r\ShX buildinfor]Sr^S}r_S(hX buildinfohjYSubahjubhX9 consists of settings of fields listed in the section on r`SraS}rbS(hX9 consists of settings of fields listed in the section on jDNjPNjjthjRSubj!)rcS}rdS(hX`build information`_j$KhjRShj%h}reS(UnameXbuild informationh]h]h]h]h]j'jouh]rfShXbuild informationrgSrhS}riS(hXbuild informationhjcSubaubhX. The first one (if present) relates to the library, while each of the others relate to the named executable. (The names must match the package description, but you don’t have to have entries for all of them.)rjSrkS}rlS(hX. The first one (if present) relates to the library, while each of the others relate to the named executable. (The names must match the package description, but you don't have to have entries for all of them.)jDNjPNjjthjRSubeubjZ)rmS}rnS(hXkNeither of these files is required. If they are absent, this setup script is equivalent to ``defaultMain``.hj|RjDjEhj]h}roS(h]h]h]h]h]ujPM jjth]rpS(hX[Neither of these files is required. If they are absent, this setup script is equivalent to rqSrrS}rsS(hX[Neither of these files is required. If they are absent, this setup script is equivalent to jDNjPNjjthjmSubj)rtS}ruS(hX``defaultMain``h}rvS(h]h]h]h]h]uhjmSh]rwShX defaultMainrxSryS}rzS(hX defaultMainhjtSubahjubhX.r{S}r|S(hX.jDNjPNjjthjmSubeubjn)r}S}r~S(hUhj|RjDjEhjqh}rS(h]h]h]h]rSjKah]rSjaujPM jjth]rS(h)rS}rS(hXExample: Using autoconfrShj}SjDjEhhh}rS(h]h]h]h]h]ujPM jjth]rShXExample: Using autoconfrSrS}rS(hjSjDNjPNjjthjSubaubjZ)rS}rS(hXhThis example is for people familiar with the `autoconf `__ tools.hj}SjDjEhj]h}rS(h]h]h]h]h]ujPM jjth]rS(hX-This example is for people familiar with the rSrS}rS(hX-This example is for people familiar with the jDNjPNjjthjSubj!)rS}rS(hX4`autoconf `__h}rS(UnameXautoconfj] X%http://www.gnu.org/software/autoconf/h]h]h]h]h]uhjSh]rShXautoconfrSrS}rS(hXautoconfhjSubahj%ubhX tools.rSrS}rS(hX tools.jDNjPNjjthjSubeubjZ)rS}rS(hX7In the X11 package, the file ``configure.ac`` contains:rShj}SjDjEhj]h}rS(h]h]h]h]h]ujPM jjth]rS(hXIn the X11 package, the file rSrS}rS(hXIn the X11 package, the file jDNjPNjjthjSubj)rS}rS(hX``configure.ac``h}rS(h]h]h]h]h]uhjSh]rShX configure.acrSrS}rS(hX configure.achjSubahjubhX contains:rSrS}rS(hX contains:jDNjPNjjthjSubeubj)rS}rS(hX*AC_INIT([Haskell X11 package], [1.1], [libraries@haskell.org], [X11]) # Safety check: Ensure that we are in the correct source directory. AC_CONFIG_SRCDIR([X11.cabal]) # Header file to place defines in AC_CONFIG_HEADERS([include/HsX11Config.h]) # Check for X11 include paths and libraries AC_PATH_XTRA AC_TRY_CPP([#include ],,[no_x=yes]) # Build the package if we found X11 stuff if test "$no_x" = yes then BUILD_PACKAGE_BOOL=False else BUILD_PACKAGE_BOOL=True fi AC_SUBST([BUILD_PACKAGE_BOOL]) AC_CONFIG_FILES([X11.buildinfo]) AC_OUTPUThj}SjDjEhjh}rS(jjXshelljjh]h]h]j}h]h]ujPM jjth]rShX*AC_INIT([Haskell X11 package], [1.1], [libraries@haskell.org], [X11]) # Safety check: Ensure that we are in the correct source directory. AC_CONFIG_SRCDIR([X11.cabal]) # Header file to place defines in AC_CONFIG_HEADERS([include/HsX11Config.h]) # Check for X11 include paths and libraries AC_PATH_XTRA AC_TRY_CPP([#include ],,[no_x=yes]) # Build the package if we found X11 stuff if test "$no_x" = yes then BUILD_PACKAGE_BOOL=False else BUILD_PACKAGE_BOOL=True fi AC_SUBST([BUILD_PACKAGE_BOOL]) AC_CONFIG_FILES([X11.buildinfo]) AC_OUTPUTrSrS}rS(hUhjSubaubjZ)rS}rS(hXThen the setup script will run the ``configure`` script, which checks for the presence of the X11 libraries and substitutes for variables in the file ``X11.buildinfo.in``:hj}SjDjEhj]h}rS(h]h]h]h]h]ujPM jjth]rS(hX#Then the setup script will run the rSrS}rS(hX#Then the setup script will run the jDNjPNjjthjSubj)rS}rS(hX ``configure``h}rS(h]h]h]h]h]uhjSh]rShX configurerSrS}rS(hX configurehjSubahjubhXf script, which checks for the presence of the X11 libraries and substitutes for variables in the file rSrS}rS(hXf script, which checks for the presence of the X11 libraries and substitutes for variables in the file jDNjPNjjthjSubj)rS}rS(hX``X11.buildinfo.in``h}rS(h]h]h]h]h]uhjSh]rShXX11.buildinfo.inrSrS}rS(hXX11.buildinfo.inhjSubahjubhX:rS}rS(hX:jDNjPNjjthjSubeubj)rS}rS(hXKbuildable: @BUILD_PACKAGE_BOOL@ cc-options: @X_CFLAGS@ ld-options: @X_LIBS@hj}SjDjEhjh}rS(jjh]h]h]h]h]ujPM jjth]rShXKbuildable: @BUILD_PACKAGE_BOOL@ cc-options: @X_CFLAGS@ ld-options: @X_LIBS@rSrS}rS(hUhjSubaubjZ)rS}rS(hXXThis generates a file ``X11.buildinfo`` supplying the parameters needed by later stages:hj}SjDjEhj]h}rS(h]h]h]h]h]ujPM jjth]rS(hXThis generates a file rSrS}rS(hXThis generates a file jDNjPNjjthjSubj)rS}rS(hX``X11.buildinfo``h}rS(h]h]h]h]h]uhjSh]rShX X11.buildinforSrS}rS(hX X11.buildinfohjSubahjubhX1 supplying the parameters needed by later stages:rSrS}rS(hX1 supplying the parameters needed by later stages:jDNjPNjjthjSubeubj)rS}rS(hXObuildable: True cc-options: -I/usr/X11R6/include ld-options: -L/usr/X11R6/libhj}SjDjEhjh}rS(jjh]h]h]h]h]ujPM jjth]rShXObuildable: True cc-options: -I/usr/X11R6/include ld-options: -L/usr/X11R6/librSrS}rS(hUhjSubaubjZ)rS}rS(hXThe ``configure`` script also generates a header file ``include/HsX11Config.h`` containing C preprocessor defines recording the results of various tests. This file may be included by C source files and preprocessed Haskell source files in the package.hj}SjDjEhj]h}rS(h]h]h]h]h]ujPM jjth]rS(hXThe rSrS}rS(hXThe jDNjPNjjthjSubj)rS}rS(hX ``configure``h}rS(h]h]h]h]h]uhjSh]rShX configurerSrS}rS(hX configurehjSubahjubhX% script also generates a header file rSrS}rS(hX% script also generates a header file jDNjPNjjthjSubj)rS}rT(hX``include/HsX11Config.h``h}rT(h]h]h]h]h]uhjSh]rThXinclude/HsX11Config.hrTrT}rT(hXinclude/HsX11Config.hhjSubahjubhX containing C preprocessor defines recording the results of various tests. This file may be included by C source files and preprocessed Haskell source files in the package.rTrT}rT(hX containing C preprocessor defines recording the results of various tests. This file may be included by C source files and preprocessed Haskell source files in the package.jDNjPNjjthjSubeubj )r T}r T(hXPackages using these features will also need to list additional files such as ``configure``, templates for ``.buildinfo`` files, files named only in ``.buildinfo`` files, header files and so on in the :pkg-field:`extra-source-files` field to ensure that they are included in source distributions. They should also list files and directories generated by ``configure`` in the :pkg-field:`extra-tmp-files` field to ensure that they are removed by ``setup clean``.hj}SjDjEhj h}r T(h]h]h]h]h]ujPNjjth]r TjZ)r T}rT(hXPackages using these features will also need to list additional files such as ``configure``, templates for ``.buildinfo`` files, files named only in ``.buildinfo`` files, header files and so on in the :pkg-field:`extra-source-files` field to ensure that they are included in source distributions. They should also list files and directories generated by ``configure`` in the :pkg-field:`extra-tmp-files` field to ensure that they are removed by ``setup clean``.hj TjDjEhj]h}rT(h]h]h]h]h]ujPM h]rT(hXNPackages using these features will also need to list additional files such as rTrT}rT(hXNPackages using these features will also need to list additional files such as hj Tubj)rT}rT(hX ``configure``h}rT(h]h]h]h]h]uhj Th]rThX configurerTrT}rT(hX configurehjTubahjubhX, templates for rTrT}rT(hX, templates for hj Tubj)rT}rT(hX``.buildinfo``h}r T(h]h]h]h]h]uhj Th]r!ThX .buildinfor"Tr#T}r$T(hX .buildinfohjTubahjubhX files, files named only in r%Tr&T}r'T(hX files, files named only in hj Tubj)r(T}r)T(hX``.buildinfo``h}r*T(h]h]h]h]h]uhj Th]r+ThX .buildinfor,Tr-T}r.T(hX .buildinfohj(TubahjubhX& files, header files and so on in the r/Tr0T}r1T(hX& files, header files and so on in the hj TubjM)r2T}r3T(hX:pkg-field:`extra-source-files`hj TjDjEhjPh}r4T(UreftypeX pkg-fieldjRjSXextra-source-filesr5TU refdomainXcabalr6Th]h]U refexplicith]h]h]jVj jlj}ujPM h]r7Tj)r8T}r9T(hj5Th}r:T(h]h]r;T(j]j6TXcabal-pkg-fieldrTr?T}r@T(hUhj8TubahjubaubhXz field to ensure that they are included in source distributions. They should also list files and directories generated by rATrBT}rCT(hXz field to ensure that they are included in source distributions. They should also list files and directories generated by hj Tubj)rDT}rET(hX ``configure``h}rFT(h]h]h]h]h]uhj Th]rGThX configurerHTrIT}rJT(hX configurehjDTubahjubhX in the rKTrLT}rMT(hX in the hj TubjM)rNT}rOT(hX:pkg-field:`extra-tmp-files`hj TjDjEhjPh}rPT(UreftypeX pkg-fieldjRjSXextra-tmp-filesrQTU refdomainXcabalrRTh]h]U refexplicith]h]h]jVj jlj}ujPM h]rSTj)rTT}rUT(hjQTh}rVT(h]h]rWT(j]jRTXcabal-pkg-fieldrXTeh]h]h]uhjNTh]rYThXextra-tmp-filesrZTr[T}r\T(hUhjTTubahjubaubhX* field to ensure that they are removed by r]Tr^T}r_T(hX* field to ensure that they are removed by hj Tubj)r`T}raT(hX``setup clean``h}rbT(h]h]h]h]h]uhj Th]rcThX setup cleanrdTreT}rfT(hX setup cleanhj`TubahjubhX.rgT}rhT(hX.hj TubeubaubjZ)riT}rjT(hXQuite often the files generated by ``configure`` need to be listed somewhere in the package description (for example, in the :pkg-field:`install-includes` field). However, we usually don't want generated files to be included in the source tarball. The solution is again provided by the ``.buildinfo`` file. In the above example, the following line should be added to ``X11.buildinfo``:hj}SjDjEhj]h}rkT(h]h]h]h]h]ujPM jjth]rlT(hX#Quite often the files generated by rmTrnT}roT(hX#Quite often the files generated by jDNjPNjjthjiTubj)rpT}rqT(hX ``configure``h}rrT(h]h]h]h]h]uhjiTh]rsThX configurertTruT}rvT(hX configurehjpTubahjubhXM need to be listed somewhere in the package description (for example, in the rwTrxT}ryT(hXM need to be listed somewhere in the package description (for example, in the jDNjPNjjthjiTubjM)rzT}r{T(hX:pkg-field:`install-includes`hjiTjDjEhjPh}r|T(UreftypeX pkg-fieldjRjSXinstall-includesr}TU refdomainXcabalr~Th]h]U refexplicith]h]h]jVj jlj}ujPM h]rTj)rT}rT(hj}Th}rT(h]h]rT(j]j~TXcabal-pkg-fieldrTeh]h]h]uhjzTh]rThXinstall-includesrTrT}rT(hUhjTubahjubaubhX field). However, we usually don’t want generated files to be included in the source tarball. The solution is again provided by the rTrT}rT(hX field). However, we usually don't want generated files to be included in the source tarball. The solution is again provided by the jDNjPNjjthjiTubj)rT}rT(hX``.buildinfo``h}rT(h]h]h]h]h]uhjiTh]rThX .buildinforTrT}rT(hX .buildinfohjTubahjubhXC file. In the above example, the following line should be added to rTrT}rT(hXC file. In the above example, the following line should be added to jDNjPNjjthjiTubj)rT}rT(hX``X11.buildinfo``h}rT(h]h]h]h]h]uhjiTh]rThX X11.buildinforTrT}rT(hX X11.buildinfohjTubahjubhX:rT}rT(hX:jDNjPNjjthjiTubeubj)rT}rT(hXinstall-includes: HsX11Config.hhj}SjDjEhjh}rT(jjh]h]h]h]h]ujPM jjth]rThXinstall-includes: HsX11Config.hrTrT}rT(hUhjTubaubjZ)rT}rT(hXOIn this way, the generated ``HsX11Config.h`` file won't be included in the source tarball in addition to ``HsX11Config.h.in``, but it will be copied to the right location during the install process. Packages that use custom ``Setup.hs`` scripts can update the necessary fields programmatically instead of using the ``.buildinfo`` file.hj}SjDjEhj]h}rT(h]h]h]h]h]ujPMjjth]rT(hXIn this way, the generated rTrT}rT(hXIn this way, the generated jDNjPNjjthjTubj)rT}rT(hX``HsX11Config.h``h}rT(h]h]h]h]h]uhjTh]rThX HsX11Config.hrTrT}rT(hX HsX11Config.hhjTubahjubhX? file won’t be included in the source tarball in addition to rTrT}rT(hX= file won't be included in the source tarball in addition to jDNjPNjjthjTubj)rT}rT(hX``HsX11Config.h.in``h}rT(h]h]h]h]h]uhjTh]rThXHsX11Config.h.inrTrT}rT(hXHsX11Config.h.inhjTubahjubhXc, but it will be copied to the right location during the install process. Packages that use custom rTrT}rT(hXc, but it will be copied to the right location during the install process. Packages that use custom jDNjPNjjthjTubj)rT}rT(hX ``Setup.hs``h}rT(h]h]h]h]h]uhjTh]rThXSetup.hsrTrT}rT(hXSetup.hshjTubahjubhXO scripts can update the necessary fields programmatically instead of using the rTrT}rT(hXO scripts can update the necessary fields programmatically instead of using the jDNjPNjjthjTubj)rT}rT(hX``.buildinfo``h}rT(h]h]h]h]h]uhjTh]rThX .buildinforTrT}rT(hX .buildinfohjTubahjubhX file.rTrT}rT(hX file.jDNjPNjjthjTubeubeubeubjDjEhj h}rT(j X-h]h]h]h]h]ujPM jjth]rT(j )rT}rT(hX'The package root directory must contain a shell script called ``configure``. The configure step will run the script. This ``configure`` script may be produced by `autoconf `__ or may be hand-written. The ``configure`` script typically discovers information about the system and records it for later steps, e.g. by generating system-dependent header files for inclusion in C source files and preprocessed Haskell source files. (Clearly this won't work for Windows without MSYS or Cygwin: other ideas are needed.) hjzRjDjEhj h}rT(h]h]h]h]h]ujPNjjth]rTjZ)rT}rT(hX&The package root directory must contain a shell script called ``configure``. The configure step will run the script. This ``configure`` script may be produced by `autoconf `__ or may be hand-written. The ``configure`` script typically discovers information about the system and records it for later steps, e.g. by generating system-dependent header files for inclusion in C source files and preprocessed Haskell source files. (Clearly this won't work for Windows without MSYS or Cygwin: other ideas are needed.)hjTjDjEhj]h}rT(h]h]h]h]h]ujPM h]rT(hX>The package root directory must contain a shell script called rTrT}rT(hX>The package root directory must contain a shell script called hjTubj)rT}rT(hX ``configure``h}rT(h]h]h]h]h]uhjTh]rThX configurerTrT}rT(hX configurehjTubahjubhX/. The configure step will run the script. This rTrT}rT(hX/. The configure step will run the script. This hjTubj)rT}rT(hX ``configure``h}rT(h]h]h]h]h]uhjTh]rThX configurerTrT}rT(hX configurehjTubahjubhX script may be produced by rTrT}rT(hX script may be produced by hjTubj!)rT}rT(hX4`autoconf `__h}rT(UnameXautoconfj] X%http://www.gnu.org/software/autoconf/h]h]h]h]h]uhjTh]rThXautoconfrTrT}rT(hXautoconfhjTubahj%ubhX or may be hand-written. The rTrT}rT(hX or may be hand-written. The hjTubj)rU}rU(hX ``configure``h}rU(h]h]h]h]h]uhjTh]rUhX configurerUrU}rU(hX configurehjUubahjubhX( script typically discovers information about the system and records it for later steps, e.g. by generating system-dependent header files for inclusion in C source files and preprocessed Haskell source files. (Clearly this won’t work for Windows without MSYS or Cygwin: other ideas are needed.)rUrU}r U(hX& script typically discovers information about the system and records it for later steps, e.g. by generating system-dependent header files for inclusion in C source files and preprocessed Haskell source files. (Clearly this won't work for Windows without MSYS or Cygwin: other ideas are needed.)hjTubeubaubjxReubjDjEhj h}r U(h]h]h]h]h]ujPNjjth]r UjvRaubjDjEhj]h}r U(h]h]h]h]h]ujPM h]r U(hX5If the package root directory contains a file called rUrU}rU(hX5If the package root directory contains a file called hjvRubj)rU}rU(hX *package*h}rU(h]h]h]h]h]uhjvRh]rUhXpackagerUrU}rU(hXpackagehjUubahjubhXrU}rU(hX\ hjvRubj)rU}rU(hX``.buildinfo``h}rU(h]h]h]h]h]uhjvRh]rUhX .buildinforUrU}r U(hX .buildinfohjUubahjubhX_ after the configuration step, subsequent steps will read it to obtain additional settings for r!Ur"U}r#U(hX_ after the configuration step, subsequent steps will read it to obtain additional settings for hjvRubjtRhX0 fields,to be merged with the ones given in the r$Ur%U}r&U(hX0 fields,to be merged with the ones given in the hjvRubj)r'U}r(U(hX ``.cabal``h}r)U(h]h]h]h]h]uhjvRh]r*UhX.cabalr+Ur,U}r-U(hX.cabalhj'UubahjubhX8 file. In particular, this file may be generated by the r.Ur/U}r0U(hX8 file. In particular, this file may be generated by the hjvRubj)r1U}r2U(hX ``configure``h}r3U(h]h]h]h]h]uhjvRh]r4UhX configurer5Ur6U}r7U(hX configurehj1UubahjubhX\ script mentioned above, allowing these settings to vary depending on the build environment.r8Ur9U}r:U(hX\ script mentioned above, allowing these settings to vary depending on the build environment.hjvRubeubhj%h}r;U(UnameXbuild informationh]h]h]h]h]j'jouh]rU}r?U(hXbuild informationhjtRubaubjcSeXpackage descriptions]r@U(j"jS ej ]rAUj aXhackage]rBUjaXsystem-dependent parameters]rCU(jl j=jnj)jF5j;jr=eXhaddock]rDU(jj!)rEU}rFU(hXHaddock_j$KhjZ)rGU}rHU(hXCabal also allows to detect when the source code is being used for generating documentation. The ``__HADDOCK_VERSION__`` macro is defined only when compiling via Haddock_ instead of a normal Haskell compiler. The value of the ``__HADDOCK_VERSION__`` macro is defined as ``A*1000 + B*10 + C``, where ``A.B.C`` is the Haddock version. This can be useful for working around bugs in Haddock or generating prettier documentation in some special cases.hjn)rIU}rJU(hUhjqjDjEhjqh}rKU(h]h]h]h]rLUjKah]rMUjaujPMjjth]rNU(h)rOU}rPU(hXConditional compilationrQUhjIUjDjEhhh}rRU(h]h]h]h]h]ujPMjjth]rSUhXConditional compilationrTUrUU}rVU(hjQUjDNjPNjjthjOUubaubjZ)rWU}rXU(hXSometimes you want to write code that works with more than one version of a dependency. You can specify a range of versions for the dependency in the :pkg-field:`build-depends`, but how do you then write the code that can use different versions of the API?hjIUjDjEhj]h}rYU(h]h]h]h]h]ujPM jjth]rZU(hXSometimes you want to write code that works with more than one version of a dependency. You can specify a range of versions for the dependency in the r[Ur\U}r]U(hXSometimes you want to write code that works with more than one version of a dependency. You can specify a range of versions for the dependency in the jDNjPNjjthjWUubjM)r^U}r_U(hX:pkg-field:`build-depends`hjWUjDjEhjPh}r`U(UreftypeX pkg-fieldjRjSX build-dependsraUU refdomainXcabalrbUh]h]U refexplicith]h]h]jVj jlj}ujPM h]rcUj)rdU}reU(hjaUh}rfU(h]h]rgU(j]jbUXcabal-pkg-fieldrhUeh]h]h]uhj^Uh]riUhX build-dependsrjUrkU}rlU(hUhjdUubahjubaubhXP, but how do you then write the code that can use different versions of the API?rmUrnU}roU(hXP, but how do you then write the code that can use different versions of the API?jDNjPNjjthjWUubeubjZ)rpU}rqU(hXHaskell lets you preprocess your code using the C preprocessor (either the real C preprocessor, or ``cpphs``). To enable this, add ``extensions: CPP`` to your package description. When using CPP, Cabal provides some pre-defined macros to let you test the version of dependent packages; for example, suppose your package works with either version 3 or version 4 of the ``base`` package, you could select the available version in your Haskell modules like this:hjIUjDjEhj]h}rrU(h]h]h]h]h]ujPMjjth]rsU(hXcHaskell lets you preprocess your code using the C preprocessor (either the real C preprocessor, or rtUruU}rvU(hXcHaskell lets you preprocess your code using the C preprocessor (either the real C preprocessor, or jDNjPNjjthjpUubj)rwU}rxU(hX ``cpphs``h}ryU(h]h]h]h]h]uhjpUh]rzUhXcpphsr{Ur|U}r}U(hXcpphshjwUubahjubhX). To enable this, add r~UrU}rU(hX). To enable this, add jDNjPNjjthjpUubj)rU}rU(hX``extensions: CPP``h}rU(h]h]h]h]h]uhjpUh]rUhXextensions: CPPrUrU}rU(hXextensions: CPPhjUubahjubhX to your package description. When using CPP, Cabal provides some pre-defined macros to let you test the version of dependent packages; for example, suppose your package works with either version 3 or version 4 of the rUrU}rU(hX to your package description. When using CPP, Cabal provides some pre-defined macros to let you test the version of dependent packages; for example, suppose your package works with either version 3 or version 4 of the jDNjPNjjthjpUubj)rU}rU(hX``base``h}rU(h]h]h]h]h]uhjpUh]rUhXbaserUrU}rU(hXbasehjUubahjubhXS package, you could select the available version in your Haskell modules like this:rUrU}rU(hXS package, you could select the available version in your Haskell modules like this:jDNjPNjjthjpUubeubj)rU}rU(hXp#if MIN_VERSION_base(4,0,0) ... code that works with base-4 ... #else ... code that works with base-3 ... #endifhjIUjDjEhjh}rU(jjXcppjjh]h]h]j}h]h]ujPMjjth]rUhXp#if MIN_VERSION_base(4,0,0) ... code that works with base-4 ... #else ... code that works with base-3 ... #endifrUrU}rU(hUhjUubaubjZ)rU}rU(hXIn general, Cabal supplies a macro ``MIN_VERSION_``\ *``package``*\ ``_(A,B,C)`` for each package depended on via :pkg-field:`build-depends`. This macro is true if the actual version of the package in use is greater than or equal to ``A.B.C`` (using the conventional ordering on version numbers, which is lexicographic on the sequence, but numeric on each component, so for example 1.2.0 is greater than 1.0.3).hjIUjDjEhj]h}rU(h]h]h]h]h]ujPMjjth]rU(hX#In general, Cabal supplies a macro rUrU}rU(hX#In general, Cabal supplies a macro jDNjPNjjthjUubj)rU}rU(hX``MIN_VERSION_``h}rU(h]h]h]h]h]uhjUh]rUhX MIN_VERSION_rUrU}rU(hX MIN_VERSION_hjUubahjubhXrU}rU(hX\ rUjDNjPNjjthjUubj)rU}rU(hX *``package``*h}rU(h]h]h]h]h]uhjUh]rUhX ``package``rUrU}rU(hX ``package``hjUubahjubhXrU}rU(hjUhjUubj)rU}rU(hX ``_(A,B,C)``h}rU(h]h]h]h]h]uhjUh]rUhX_(A,B,C)rUrU}rU(hX_(A,B,C)hjUubahjubhX" for each package depended on via rUrU}rU(hX" for each package depended on via jDNjPNjjthjUubjM)rU}rU(hX:pkg-field:`build-depends`hjUjDjEhjPh}rU(UreftypeX pkg-fieldjRjSX build-dependsrUU refdomainXcabalrUh]h]U refexplicith]h]h]jVj jlj}ujPMh]rUj)rU}rU(hjUh}rU(h]h]rU(j]jUXcabal-pkg-fieldrUeh]h]h]uhjUh]rUhX build-dependsrUrU}rU(hUhjUubahjubaubhX]. This macro is true if the actual version of the package in use is greater than or equal to rUrU}rU(hX]. This macro is true if the actual version of the package in use is greater than or equal to jDNjPNjjthjUubj)rU}rU(hX ``A.B.C``h}rU(h]h]h]h]h]uhjUh]rUhXA.B.CrUrU}rU(hXA.B.ChjUubahjubhX (using the conventional ordering on version numbers, which is lexicographic on the sequence, but numeric on each component, so for example 1.2.0 is greater than 1.0.3).rUrU}rU(hX (using the conventional ordering on version numbers, which is lexicographic on the sequence, but numeric on each component, so for example 1.2.0 is greater than 1.0.3).jDNjPNjjthjUubeubjZ)rU}rU(hXSince version 1.20, the ``MIN_TOOL_VERSION_``\ *``tool``* family of macros lets you condition on the version of build tools used to build the program (e.g. ``hsc2hs``).hjIUjDjEhj]h}rU(h]h]h]h]h]ujPM'jjth]rU(hXSince version 1.20, the rUrU}rU(hXSince version 1.20, the jDNjPNjjthjUubj)rU}rU(hX``MIN_TOOL_VERSION_``h}rU(h]h]h]h]h]uhjUh]rUhXMIN_TOOL_VERSION_rUrU}rU(hXMIN_TOOL_VERSION_hjUubahjubhXrU}rU(hX\ jDNjPNjjthjUubj)rU}rU(hX *``tool``*h}rU(h]h]h]h]h]uhjUh]rUhX``tool``rUrU}rU(hX``tool``hjUubahjubhXc family of macros lets you condition on the version of build tools used to build the program (e.g. rUrU}rU(hXc family of macros lets you condition on the version of build tools used to build the program (e.g. jDNjPNjjthjUubj)rU}rU(hX ``hsc2hs``h}rU(h]h]h]h]h]uhjUh]rUhXhsc2hsrUrU}rU(hXhsc2hshjUubahjubhX).rUrU}rU(hX).jDNjPNjjthjUubeubjZ)rV}rV(hX=Since version 1.24, the macro ``CURRENT_COMPONENT_ID``, which expands to the string of the component identifier that uniquely identifies this component. Furthermore, if the package is a library, the macro ``CURRENT_PACKAGE_KEY`` records the identifier that was passed to GHC for use in symbols and for type equality.hjIUjDjEhj]h}rV(h]h]h]h]h]ujPM+jjth]rV(hXSince version 1.24, the macro rVrV}rV(hXSince version 1.24, the macro jDNjPNjjthjVubj)rV}rV(hX``CURRENT_COMPONENT_ID``h}r V(h]h]h]h]h]uhjVh]r VhXCURRENT_COMPONENT_IDr Vr V}r V(hXCURRENT_COMPONENT_IDhjVubahjubhX, which expands to the string of the component identifier that uniquely identifies this component. Furthermore, if the package is a library, the macro rVrV}rV(hX, which expands to the string of the component identifier that uniquely identifies this component. Furthermore, if the package is a library, the macro jDNjPNjjthjVubj)rV}rV(hX``CURRENT_PACKAGE_KEY``h}rV(h]h]h]h]h]uhjVh]rVhXCURRENT_PACKAGE_KEYrVrV}rV(hXCURRENT_PACKAGE_KEYhjVubahjubhXX records the identifier that was passed to GHC for use in symbols and for type equality.rVrV}rV(hXX records the identifier that was passed to GHC for use in symbols and for type equality.jDNjPNjjthjVubeubjZ)rV}rV(hXuSince version 2.0, the macro ``CURRENT_PACKAGE_VERSION`` expands to the string version number of the current package.hjIUjDjEhj]h}rV(h]h]h]h]h]ujPM1jjth]rV(hXSince version 2.0, the macro rVr V}r!V(hXSince version 2.0, the macro jDNjPNjjthjVubj)r"V}r#V(hX``CURRENT_PACKAGE_VERSION``h}r$V(h]h]h]h]h]uhjVh]r%VhXCURRENT_PACKAGE_VERSIONr&Vr'V}r(V(hXCURRENT_PACKAGE_VERSIONhj"VubahjubhX= expands to the string version number of the current package.r)Vr*V}r+V(hX= expands to the string version number of the current package.jDNjPNjjthjVubeubjZ)r,V}r-V(hXCabal places the definitions of these macros into an automatically-generated header file, which is included when preprocessing Haskell source code by passing options to the C preprocessor.r.VhjIUjDjEhj]h}r/V(h]h]h]h]h]ujPM4jjth]r0VhXCabal places the definitions of these macros into an automatically-generated header file, which is included when preprocessing Haskell source code by passing options to the C preprocessor.r1Vr2V}r3V(hj.VjDNjPNjjthj,VubaubjGUeubjDjEhj]h}r4V(h]h]h]h]h]ujPM9jjth]r5V(hXaCabal also allows to detect when the source code is being used for generating documentation. The r6Vr7V}r8V(hXaCabal also allows to detect when the source code is being used for generating documentation. The jDNjPNjjthjGUubj)r9V}r:V(hX``__HADDOCK_VERSION__``h}r;V(h]h]h]h]h]uhjGUh]rV}r?V(hX__HADDOCK_VERSION__hj9VubahjubhX* macro is defined only when compiling via r@VrAV}rBV(hX* macro is defined only when compiling via jDNjPNjjthjGUubjEUhX8 instead of a normal Haskell compiler. The value of the rCVrDV}rEV(hX8 instead of a normal Haskell compiler. The value of the jDNjPNjjthjGUubj)rFV}rGV(hX``__HADDOCK_VERSION__``h}rHV(h]h]h]h]h]uhjGUh]rIVhX__HADDOCK_VERSION__rJVrKV}rLV(hX__HADDOCK_VERSION__hjFVubahjubhX macro is defined as rMVrNV}rOV(hX macro is defined as jDNjPNjjthjGUubj)rPV}rQV(hX``A*1000 + B*10 + C``h}rRV(h]h]h]h]h]uhjGUh]rSVhXA*1000 + B*10 + CrTVrUV}rVV(hXA*1000 + B*10 + ChjPVubahjubhX, where rWVrXV}rYV(hX, where jDNjPNjjthjGUubj)rZV}r[V(hX ``A.B.C``h}r\V(h]h]h]h]h]uhjGUh]r]VhXA.B.Cr^Vr_V}r`V(hXA.B.ChjZVubahjubhX is the Haddock version. This can be useful for working around bugs in Haddock or generating prettier documentation in some special cases.raVrbV}rcV(hX is the Haddock version. This can be useful for working around bugs in Haddock or generating prettier documentation in some special cases.jDNjPNjjthjGUubeubhj%h}rdV(UnameXHaddockreVj] jh]h]h]h]h]uh]rfVhXHaddockrgVrhV}riV(hjeVhjEUubaubeXcommon stanzas]rjVjOaXabnf]rkV(j j jj@eXmore complex packages]rlVjiaj0 ]rmVj- aXpackage versioning policy]rnV(jPjejk ]roVjh aj ]rpV(j j)jReuUsymbol_footnotesrqV]rrVUautofootnote_refsrsV]rtVj0aUsymbol_footnote_refsruV]rvVjo]rwVjjtU current_linerxVNUtransform_messagesryV]rzV(j)r{V}r|V(hUh}r}V(h]UlevelKh]h]r~VjWaUsourcejEh]h]UlineM UtypejKuh]rVjZ)rV}rV(hUh}rV(h]h]h]h]h]uhj{Vh]rVhX2Duplicate implicit target name: "foo-bench.cabal".rVrV}rV(hUhjVubahj]ubahjKubj)rV}rV(hUh}rV(h]UlevelKh]h]UsourcejEh]h]UlineMUtypejKuh]rVjZ)rV}rV(hUh}rV(h]h]h]h]h]uhjVh]rVhX.Hyperlink target "pkg-desc" is not referenced.rVrV}rV(hUhjVubahj]ubahjKubj)rV}rV(hUh}rV(h]UlevelKh]h]UsourcejEh]h]UlineMUtypejKuh]rVjZ)rV}rV(hUh}rV(h]h]h]h]h]uhjVh]rVhX-Hyperlink target "sublibs" is not referenced.rVrV}rV(hUhjVubahj]ubahjKubj)rV}rV(hUh}rV(h]UlevelKh]h]UsourcejEh]h]UlineM UtypejKuh]rVjZ)rV}rV(hUh}rV(h]h]h]h]h]uhjVh]rVhX2Hyperlink target "buildtoolsbc" is not referenced.rVrV}rV(hUhjVubahj]ubahjKubj)rV}rV(hUh}rV(h]UlevelKh]h]UsourcejEh]h]UlineM UtypejKuh]rVjZ)rV}rV(hUh}rV(h]h]h]h]h]uhjVh]rVhX3Hyperlink target "buildtoolsmap" is not referenced.rVrV}rV(hUhjVubahj]ubahjKubj)rV}rV(hUh}rV(h]UlevelKh]h]UsourcejEh]h]UtypejKuh]rVjZ)rV}rV(hUh}rV(h]h]h]h]h]uhjVh]rVhX-Hyperlink target "index-0" is not referenced.rVrV}rV(hUhjVubahj]ubahjKubj)rV}rV(hUh}rV(h]UlevelKh]h]UsourcejXdoc/references.incrVrV}rVbh]h]UlineMUtypejKuh]rVjZ)rV}rV(hUh}rV(h]h]h]h]h]uhjVh]rVhX-Hyperlink target "haskell" is not referenced.rVrV}rV(hUhjVubahj]ubahjKubj)rV}rV(hUh}rV(h]UlevelKh]h]UsourcejVh]h]UlineMUtypejKuh]rVjZ)rV}rV(hUh}rV(h]h]h]h]h]uhjVh]rVhX,Hyperlink target "hoogle" is not referenced.rVrV}rV(hUhjVubahj]ubahjKubj)rV}rV(hUh}rV(h]UlevelKh]h]UsourcejVh]h]UlineMUtypejKuh]rVjZ)rV}rV(hUh}rV(h]h]h]h]h]uhjVh]rVhX.Hyperlink target "hscolour" is not referenced.rVrV}rV(hUhjVubahj]ubahjKubeUreporterrVNUid_startrVK U autofootnotesrV]rVcdocutils.nodes footnote rV)rV}rV(hXSome packages (ab)use :pkg-field:`build-depends` on old-style builds, but this has a few major drawbacks: - using Nix-style builds it's considered an error if you depend on a exe-only package via build-depends: the solver will refuse it. - it may or may not place the executable on ``$PATH``. - it does not ensure the correct version of the package is installed, so you might end up overwriting versions with each other.hjn)rV}rV(hUjKhjqjDjEhjqh}rV(h]h]h]h]rVjlah]rVjaujPMCjjth]rV(h)rV}rV(hXMore complex packagesrVhjVjDjEhhh}rV(h]h]h]h]h]ujPMCjjth]rVhXMore complex packagesrVrV}rV(hjVjDNjPNjjthjVubaubjZ)rV}rV(hXWFor packages that don't fit the simple schemes described above, you have a few options:rVhjVjDjEhj]h}rV(h]h]h]h]h]ujPMEjjth]rVhXYFor packages that don’t fit the simple schemes described above, you have a few options:rVrV}rV(hjVjDNjPNjjthjVubaubj )rV}rW(hUhjVjDjEhj h}rW(j X-h]h]h]h]h]ujPMHjjth]rW(j )rW}rW(hXBy using the :pkg-field:`build-type` ``Custom``, you can supply your own ``Setup.hs`` file, and customize the simple build infrastructure using *hooks*. These allow you to perform additional actions before and after each command is run, and also to specify additional preprocessors. A typical ``Setup.hs`` may look like this: .. code-block:: haskell import Distribution.Simple main = defaultMainWithHooks simpleUserHooks { postHaddock = posthaddock } posthaddock args flags desc info = .... See ``UserHooks`` in `Distribution.Simple <../release/cabal-latest/doc/API/Cabal/Distribution-Simple.html>`__ for the details, but note that this interface is experimental, and likely to change in future releases. If you use a custom ``Setup.hs`` file you should strongly consider adding a :pkg-section:`custom-setup` stanza with a :pkg-field:`custom-setup:setup-depends` field to ensure that your setup script does not break with future dependency versions. hjVjDjEhj h}rW(h]h]h]h]h]ujPNjjth]rW(jZ)rW}rW(hXEBy using the :pkg-field:`build-type` ``Custom``, you can supply your own ``Setup.hs`` file, and customize the simple build infrastructure using *hooks*. These allow you to perform additional actions before and after each command is run, and also to specify additional preprocessors. A typical ``Setup.hs`` may look like this:hjWjDjEhj]h}r W(h]h]h]h]h]ujPMHh]r W(hX By using the r Wr W}r W(hX By using the hjWubjM)rW}rW(hX:pkg-field:`build-type`hjWjDjEhjPh}rW(UreftypeX pkg-fieldjRjSX build-typerWU refdomainXcabalrWh]h]U refexplicith]h]h]jVj jlj}ujPMHh]rWj)rW}rW(hjWh}rW(h]h]rW(j]jWXcabal-pkg-fieldrWeh]h]h]uhjWh]rWhX build-typerWrW}rW(hUhjWubahjubaubhX rW}rW(hX hjWubj)rW}r W(hX ``Custom``h}r!W(h]h]h]h]h]uhjWh]r"WhXCustomr#Wr$W}r%W(hXCustomhjWubahjubhX, you can supply your own r&Wr'W}r(W(hX, you can supply your own hjWubj)r)W}r*W(hX ``Setup.hs``h}r+W(h]h]h]h]h]uhjWh]r,WhXSetup.hsr-Wr.W}r/W(hXSetup.hshj)WubahjubhX; file, and customize the simple build infrastructure using r0Wr1W}r2W(hX; file, and customize the simple build infrastructure using hjWubj)r3W}r4W(hX*hooks*h}r5W(h]h]h]h]h]uhjWh]r6WhXhooksr7Wr8W}r9W(hXhookshj3WubahjubhX. These allow you to perform additional actions before and after each command is run, and also to specify additional preprocessors. A typical r:Wr;W}rW(hX ``Setup.hs``h}r?W(h]h]h]h]h]uhjWh]r@WhXSetup.hsrAWrBW}rCW(hXSetup.hshj=WubahjubhX may look like this:rDWrEW}rFW(hX may look like this:hjWubeubj)rGW}rHW(hXimport Distribution.Simple main = defaultMainWithHooks simpleUserHooks { postHaddock = posthaddock } posthaddock args flags desc info = ....hjWjDjEhjh}rIW(jjXhaskelljjh]h]h]j}h]h]ujPMNh]rJWhXimport Distribution.Simple main = defaultMainWithHooks simpleUserHooks { postHaddock = posthaddock } posthaddock args flags desc info = ....rKWrLW}rMW(hUhjGWubaubjZ)rNW}rOW(hXSee ``UserHooks`` in `Distribution.Simple <../release/cabal-latest/doc/API/Cabal/Distribution-Simple.html>`__ for the details, but note that this interface is experimental, and likely to change in future releases.hjWjDjEhj]h}rPW(h]h]h]h]h]ujPMUh]rQW(hXSee rRWrSW}rTW(hXSee hjNWubj)rUW}rVW(hX ``UserHooks``h}rWW(h]h]h]h]h]uhjNWh]rXWhX UserHooksrYWrZW}r[W(hX UserHookshjUWubahjubhX in r\Wr]W}r^W(hX in hjNWubj!)r_W}r`W(hXX`Distribution.Simple <../release/cabal-latest/doc/API/Cabal/Distribution-Simple.html>`__h}raW(UnameXDistribution.Simplej] X>../release/cabal-latest/doc/API/Cabal/Distribution-Simple.htmlh]h]h]h]h]uhjNWh]rbWhXDistribution.SimplercWrdW}reW(hXDistribution.Simplehj_Wubahj%ubhXh for the details, but note that this interface is experimental, and likely to change in future releases.rfWrgW}rhW(hXh for the details, but note that this interface is experimental, and likely to change in future releases.hjNWubeubjZ)riW}rjW(hXIf you use a custom ``Setup.hs`` file you should strongly consider adding a :pkg-section:`custom-setup` stanza with a :pkg-field:`custom-setup:setup-depends` field to ensure that your setup script does not break with future dependency versions.hjWjDjEhj]h}rkW(h]h]h]h]h]ujPMZh]rlW(hXIf you use a custom rmWrnW}roW(hXIf you use a custom hjiWubj)rpW}rqW(hX ``Setup.hs``h}rrW(h]h]h]h]h]uhjiWh]rsWhXSetup.hsrtWruW}rvW(hXSetup.hshjpWubahjubhX, file you should strongly consider adding a rwWrxW}ryW(hX, file you should strongly consider adding a hjiWubjM)rzW}r{W(hX:pkg-section:`custom-setup`hjiWjDjEhjPh}r|W(UreftypeX pkg-sectionjRjSX custom-setupr}WU refdomainXcabalr~Wh]h]U refexplicith]h]h]jVj ujPMZh]rWj)rW}rW(hj}Wh}rW(h]h]rW(j]j~WXcabal-pkg-sectionrWeh]h]h]uhjzWh]rWhX custom-setuprWrW}rW(hUhjWubahjubaubhX stanza with a rWrW}rW(hX stanza with a hjiWubjM)rW}rW(hX':pkg-field:`custom-setup:setup-depends`hjiWjDjEhjPh}rW(UreftypeX pkg-fieldjRjSX setup-dependsU refdomainXcabalrWh]h]U refexplicith]h]h]jVj jlX custom-setupujPMZh]rWj)rW}rW(hXcustom-setup:setup-dependsh}rW(h]h]rW(j]jWXcabal-pkg-fieldrWeh]h]h]uhjWh]rWhXcustom-setup:setup-dependsrWrW}rW(hUhjWubahjubaubhXW field to ensure that your setup script does not break with future dependency versions.rWrW}rW(hXW field to ensure that your setup script does not break with future dependency versions.hjiWubeubeubj )rW}rW(hX^You could delegate all the work to ``make``, though this is unlikely to be very portable. Cabal supports this with the :pkg-field:`build-type` ``Make`` and a trivial setup library `Distribution.Make <../release/cabal-latest/doc/API/Cabal/Distribution-Make.html>`__, which simply parses the command line arguments and invokes ``make``. Here ``Setup.hs`` should look like this: .. code-block:: haskell import Distribution.Make main = defaultMain The root directory of the package should contain a ``configure`` script, and, after that has run, a ``Makefile`` with a default target that builds the package, plus targets ``install``, ``register``, ``unregister``, ``clean``, ``dist`` and ``docs``. Some options to commands are passed through as follows: - The ``--with-hc-pkg``, ``--prefix``, ``--bindir``, ``--libdir``, ``--dynlibdir``, ``--datadir``, ``--libexecdir`` and ``--sysconfdir`` options to the ``configure`` command are passed on to the ``configure`` script. In addition the value of the ``--with-compiler`` option is passed in a ``--with-hc`` option and all options specified with ``--configure-option=`` are passed on. - The ``--destdir`` option to the ``copy`` command becomes a setting of a ``destdir`` variable on the invocation of ``make copy``. The supplied ``Makefile`` should provide a ``copy`` target, which will probably look like this: .. code-block:: make copy : $(MAKE) install prefix=$(destdir)/$(prefix) \ bindir=$(destdir)/$(bindir) \ libdir=$(destdir)/$(libdir) \ dynlibdir=$(destdir)/$(dynlibdir) \ datadir=$(destdir)/$(datadir) \ libexecdir=$(destdir)/$(libexecdir) \ sysconfdir=$(destdir)/$(sysconfdir) \ hjVjDNhj h}rW(h]h]h]h]h]ujPNjjth]rW(jZ)rW}rW(hXwYou could delegate all the work to ``make``, though this is unlikely to be very portable. Cabal supports this with the :pkg-field:`build-type` ``Make`` and a trivial setup library `Distribution.Make <../release/cabal-latest/doc/API/Cabal/Distribution-Make.html>`__, which simply parses the command line arguments and invokes ``make``. Here ``Setup.hs`` should look like this:hjWjDjEhj]h}rW(h]h]h]h]h]ujPM_h]rW(hX#You could delegate all the work to rWrW}rW(hX#You could delegate all the work to hjWubj)rW}rW(hX``make``h}rW(h]h]h]h]h]uhjWh]rWhXmakerWrW}rW(hXmakehjWubahjubhXL, though this is unlikely to be very portable. Cabal supports this with the rWrW}rW(hXL, though this is unlikely to be very portable. Cabal supports this with the hjWubjM)rW}rW(hX:pkg-field:`build-type`hjWjDjEhjPh}rW(UreftypeX pkg-fieldjRjSX build-typerWU refdomainXcabalrWh]h]U refexplicith]h]h]jVj jlj}ujPM_h]rWj)rW}rW(hjWh}rW(h]h]rW(j]jWXcabal-pkg-fieldrWeh]h]h]uhjWh]rWhX build-typerWrW}rW(hUhjWubahjubaubhX rW}rW(hX hjWubj)rW}rW(hX``Make``h}rW(h]h]h]h]h]uhjWh]rWhXMakerWrW}rW(hXMakehjWubahjubhX and a trivial setup library rWrW}rW(hX and a trivial setup library hjWubj!)rW}rW(hXT`Distribution.Make <../release/cabal-latest/doc/API/Cabal/Distribution-Make.html>`__h}rW(UnameXDistribution.Makej] X<../release/cabal-latest/doc/API/Cabal/Distribution-Make.htmlh]h]h]h]h]uhjWh]rWhXDistribution.MakerWrW}rW(hXDistribution.MakehjWubahj%ubhX=, which simply parses the command line arguments and invokes rWrW}rW(hX=, which simply parses the command line arguments and invokes hjWubj)rW}rW(hX``make``h}rW(h]h]h]h]h]uhjWh]rWhXmakerWrW}rW(hXmakehjWubahjubhX. Here rWrW}rW(hX. Here hjWubj)rW}rW(hX ``Setup.hs``h}rW(h]h]h]h]h]uhjWh]rWhXSetup.hsrWrW}rW(hXSetup.hshjWubahjubhX should look like this:rWrW}rW(hX should look like this:hjWubeubj)rW}rW(hX+import Distribution.Make main = defaultMainhjWjDjEhjh}rW(jjXhaskelljjh]h]h]j}h]h]ujPMfh]rWhX+import Distribution.Make main = defaultMainrWrW}rW(hUhjWubaubjZ)rW}rW(hX1The root directory of the package should contain a ``configure`` script, and, after that has run, a ``Makefile`` with a default target that builds the package, plus targets ``install``, ``register``, ``unregister``, ``clean``, ``dist`` and ``docs``. Some options to commands are passed through as follows:hjWjDjEhj]h}rW(h]h]h]h]h]ujPMkh]rW(hX3The root directory of the package should contain a rWrW}rW(hX3The root directory of the package should contain a hjWubj)rW}rW(hX ``configure``h}rW(h]h]h]h]h]uhjWh]rWhX configurerWrW}rW(hX configurehjWubahjubhX$ script, and, after that has run, a rXrX}rX(hX$ script, and, after that has run, a hjWubj)rX}rX(hX ``Makefile``h}rX(h]h]h]h]h]uhjWh]rXhXMakefilerXrX}r X(hXMakefilehjXubahjubhX= with a default target that builds the package, plus targets r Xr X}r X(hX= with a default target that builds the package, plus targets hjWubj)r X}rX(hX ``install``h}rX(h]h]h]h]h]uhjWh]rXhXinstallrXrX}rX(hXinstallhj XubahjubhX, rXrX}rX(hX, rXhjWubj)rX}rX(hX ``register``h}rX(h]h]h]h]h]uhjWh]rXhXregisterrXrX}rX(hXregisterhjXubahjubhX, rXr X}r!X(hX, hjWubj)r"X}r#X(hX``unregister``h}r$X(h]h]h]h]h]uhjWh]r%XhX unregisterr&Xr'X}r(X(hX unregisterhj"XubahjubhX, r)Xr*X}r+X(hX, hjWubj)r,X}r-X(hX ``clean``h}r.X(h]h]h]h]h]uhjWh]r/XhXcleanr0Xr1X}r2X(hXcleanhj,XubahjubhX, r3Xr4X}r5X(hjXhjWubj)r6X}r7X(hX``dist``h}r8X(h]h]h]h]h]uhjWh]r9XhXdistr:Xr;X}rX}r?X(hX and hjWubj)r@X}rAX(hX``docs``h}rBX(h]h]h]h]h]uhjWh]rCXhXdocsrDXrEX}rFX(hXdocshj@XubahjubhX9. Some options to commands are passed through as follows:rGXrHX}rIX(hX9. Some options to commands are passed through as follows:hjWubeubj )rJX}rKX(hUhjWjDjEhj h}rLX(j X-h]h]h]h]h]ujPMqh]rMX(j )rNX}rOX(hXyThe ``--with-hc-pkg``, ``--prefix``, ``--bindir``, ``--libdir``, ``--dynlibdir``, ``--datadir``, ``--libexecdir`` and ``--sysconfdir`` options to the ``configure`` command are passed on to the ``configure`` script. In addition the value of the ``--with-compiler`` option is passed in a ``--with-hc`` option and all options specified with ``--configure-option=`` are passed on. h}rPX(h]h]h]h]h]uhjJXh]rQXjZ)rRX}rSX(hXxThe ``--with-hc-pkg``, ``--prefix``, ``--bindir``, ``--libdir``, ``--dynlibdir``, ``--datadir``, ``--libexecdir`` and ``--sysconfdir`` options to the ``configure`` command are passed on to the ``configure`` script. In addition the value of the ``--with-compiler`` option is passed in a ``--with-hc`` option and all options specified with ``--configure-option=`` are passed on.hjNXjDjEhj]h}rTX(h]h]h]h]h]ujPMqh]rUX(hXThe rVXrWX}rXX(hXThe hjRXubj)rYX}rZX(hX``--with-hc-pkg``h}r[X(h]h]h]h]h]uhjRXh]r\XhX --with-hc-pkgr]Xr^X}r_X(hX --with-hc-pkghjYXubahjubhX, r`XraX}rbX(hX, rcXhjRXubj)rdX}reX(hX ``--prefix``h}rfX(h]h]h]h]h]uhjRXh]rgXhX--prefixrhXriX}rjX(hX--prefixhjdXubahjubhX, rkXrlX}rmX(hX, hjRXubj)rnX}roX(hX ``--bindir``h}rpX(h]h]h]h]h]uhjRXh]rqXhX--bindirrrXrsX}rtX(hX--bindirhjnXubahjubhX, ruXrvX}rwX(hX, hjRXubj)rxX}ryX(hX ``--libdir``h}rzX(h]h]h]h]h]uhjRXh]r{XhX--libdirr|Xr}X}r~X(hX--libdirhjxXubahjubhX, rXrX}rX(hX, hjRXubj)rX}rX(hX``--dynlibdir``h}rX(h]h]h]h]h]uhjRXh]rXhX --dynlibdirrXrX}rX(hX --dynlibdirhjXubahjubhX, rXrX}rX(hX, hjRXubj)rX}rX(hX ``--datadir``h}rX(h]h]h]h]h]uhjRXh]rXhX --datadirrXrX}rX(hX --datadirhjXubahjubhX, rXrX}rX(hjcXhjRXubj)rX}rX(hX``--libexecdir``h}rX(h]h]h]h]h]uhjRXh]rXhX --libexecdirrXrX}rX(hX --libexecdirhjXubahjubhX and rXrX}rX(hX and hjRXubj)rX}rX(hX``--sysconfdir``h}rX(h]h]h]h]h]uhjRXh]rXhX --sysconfdirrXrX}rX(hX --sysconfdirhjXubahjubhX options to the rXrX}rX(hX options to the hjRXubj)rX}rX(hX ``configure``h}rX(h]h]h]h]h]uhjRXh]rXhX configurerXrX}rX(hX configurehjXubahjubhX command are passed on to the rXrX}rX(hX command are passed on to the hjRXubj)rX}rX(hX ``configure``h}rX(h]h]h]h]h]uhjRXh]rXhX configurerXrX}rX(hX configurehjXubahjubhX& script. In addition the value of the rXrX}rX(hX& script. In addition the value of the hjRXubj)rX}rX(hX``--with-compiler``h}rX(h]h]h]h]h]uhjRXh]rXhX--with-compilerrXrX}rX(hX--with-compilerhjXubahjubhX option is passed in a rXrX}rX(hX option is passed in a hjRXubj)rX}rX(hX ``--with-hc``h}rX(h]h]h]h]h]uhjRXh]rXhX --with-hcrXrX}rX(hX --with-hchjXubahjubhX' option and all options specified with rXrX}rX(hX' option and all options specified with hjRXubj)rX}rX(hX``--configure-option=``h}rX(h]h]h]h]h]uhjRXh]rXhX--configure-option=rXrX}rX(hX--configure-option=hjXubahjubhX are passed on.rXrX}rX(hX are passed on.hjRXubeubahj ubj )rX}rX(hXThe ``--destdir`` option to the ``copy`` command becomes a setting of a ``destdir`` variable on the invocation of ``make copy``. The supplied ``Makefile`` should provide a ``copy`` target, which will probably look like this: .. code-block:: make copy : $(MAKE) install prefix=$(destdir)/$(prefix) \ bindir=$(destdir)/$(bindir) \ libdir=$(destdir)/$(libdir) \ dynlibdir=$(destdir)/$(dynlibdir) \ datadir=$(destdir)/$(datadir) \ libexecdir=$(destdir)/$(libexecdir) \ sysconfdir=$(destdir)/$(sysconfdir) \ h}rX(h]h]h]h]h]uhjJXh]rX(jZ)rX}rX(hXThe ``--destdir`` option to the ``copy`` command becomes a setting of a ``destdir`` variable on the invocation of ``make copy``. The supplied ``Makefile`` should provide a ``copy`` target, which will probably look like this:hjXjDjEhj]h}rX(h]h]h]h]h]ujPMxh]rX(hXThe rXrX}rX(hXThe hjXubj)rX}rX(hX ``--destdir``h}rX(h]h]h]h]h]uhjXh]rXhX --destdirrXrX}rX(hX --destdirhjXubahjubhX option to the rXrX}rX(hX option to the hjXubj)rX}rX(hX``copy``h}rX(h]h]h]h]h]uhjXh]rXhXcopyrXrX}rX(hXcopyhjXubahjubhX command becomes a setting of a rXrX}rX(hX command becomes a setting of a hjXubj)rX}rX(hX ``destdir``h}rX(h]h]h]h]h]uhjXh]rXhXdestdirrXrY}rY(hXdestdirhjXubahjubhX variable on the invocation of rYrY}rY(hX variable on the invocation of hjXubj)rY}rY(hX ``make copy``h}rY(h]h]h]h]h]uhjXh]rYhX make copyr Yr Y}r Y(hX make copyhjYubahjubhX. The supplied r Yr Y}rY(hX. The supplied hjXubj)rY}rY(hX ``Makefile``h}rY(h]h]h]h]h]uhjXh]rYhXMakefilerYrY}rY(hXMakefilehjYubahjubhX should provide a rYrY}rY(hX should provide a hjXubj)rY}rY(hX``copy``h}rY(h]h]h]h]h]uhjXh]rYhXcopyrYrY}rY(hXcopyhjYubahjubhX, target, which will probably look like this:r Yr!Y}r"Y(hX, target, which will probably look like this:hjXubeubj)r#Y}r$Y(hXcopy : $(MAKE) install prefix=$(destdir)/$(prefix) \ bindir=$(destdir)/$(bindir) \ libdir=$(destdir)/$(libdir) \ dynlibdir=$(destdir)/$(dynlibdir) \ datadir=$(destdir)/$(datadir) \ libexecdir=$(destdir)/$(libexecdir) \ sysconfdir=$(destdir)/$(sysconfdir) \hjXjDjEhjh}r%Y(jjXmakejjh]h]h]j}h]h]ujPM}h]r&YhXcopy : $(MAKE) install prefix=$(destdir)/$(prefix) \ bindir=$(destdir)/$(bindir) \ libdir=$(destdir)/$(libdir) \ dynlibdir=$(destdir)/$(dynlibdir) \ datadir=$(destdir)/$(datadir) \ libexecdir=$(destdir)/$(libexecdir) \ sysconfdir=$(destdir)/$(sysconfdir) \r'Yr(Y}r)Y(hUhj#Yubaubehj ubeubeubj )r*Y}r+Y(hXFinally, with the :pkg-field:`build-type` ``Custom``, you can also write your own setup script from scratch. It must conform to the interface described in the section on `building and installing packages `__, and you may use the Cabal library for all or part of the work. One option is to copy the source of ``Distribution.Simple``, and alter it for your needs. Good luck. hjVjDjEhj h}r,Y(h]h]h]h]h]ujPNjjth]r-YjZ)r.Y}r/Y(hXFinally, with the :pkg-field:`build-type` ``Custom``, you can also write your own setup script from scratch. It must conform to the interface described in the section on `building and installing packages `__, and you may use the Cabal library for all or part of the work. One option is to copy the source of ``Distribution.Simple``, and alter it for your needs. Good luck.hj*YjDjEhj]h}r0Y(h]h]h]h]h]ujPMh]r1Y(hXFinally, with the r2Yr3Y}r4Y(hXFinally, with the hj.YubjM)r5Y}r6Y(hX:pkg-field:`build-type`hj.YjDjEhjPh}r7Y(UreftypeX pkg-fieldjRjSX build-typer8YU refdomainXcabalr9Yh]h]U refexplicith]h]h]jVj jlj}ujPMh]r:Yj)r;Y}rY(j]j9YXcabal-pkg-fieldr?Yeh]h]h]uhj5Yh]r@YhX build-typerAYrBY}rCY(hUhj;YubahjubaubhX rDY}rEY(hX hj.Yubj)rFY}rGY(hX ``Custom``h}rHY(h]h]h]h]h]uhj.Yh]rIYhXCustomrJYrKY}rLY(hXCustomhjFYubahjubhXv, you can also write your own setup script from scratch. It must conform to the interface described in the section on rMYrNY}rOY(hXv, you can also write your own setup script from scratch. It must conform to the interface described in the section on hj.Yubj!)rPY}rQY(hX?`building and installing packages `__h}rRY(UnameX building and installing packagesj] Xinstalling-packages.htmlh]h]h]h]h]uhj.Yh]rSYhX building and installing packagesrTYrUY}rVY(hX building and installing packageshjPYubahj%ubhXe, and you may use the Cabal library for all or part of the work. One option is to copy the source of rWYrXY}rYY(hXe, and you may use the Cabal library for all or part of the work. One option is to copy the source of hj.Yubj)rZY}r[Y(hX``Distribution.Simple``h}r\Y(h]h]h]h]h]uhj.Yh]r]YhXDistribution.Simpler^Yr_Y}r`Y(hXDistribution.SimplehjZYubahjubhX), and alter it for your needs. Good luck.raYrbY}rcY(hX), and alter it for your needs. Good luck.hj.Yubeubaubeubcdocutils.nodes comment rdY)reY}rfY(hX[-*- rst -*- This file contains commonly used link-references See also "extlinks" in conf.pyhjVjDjVhUcommentrgYh}rhY(jjh]h]h]h]h]ujPKjjth]riYhX[-*- rst -*- This file contains commonly used link-references See also "extlinks" in conf.pyrjYrkY}rlY(hUhjeYubaubje)rmY}rnY(hX .. _`Package Versioning Policy`:jKhjVjDjVhjdh}roY(h]h]h]h]h]j'jLujPMjjth]ubje)rpY}rqY(hX .. _PVP: http://pvp.haskell.org/jKhjVjDjVj}rrYjjmYshjdh}rsY(j] jh]rtY(jKjLeh]h]h]h]ruY(jyjeujPMjjtj }rvYjLjmYsh]ubje)rwY}rxY(hX(.. _Hackage: http://hackage.haskell.org/jKhjVjDjVhjdh}ryY(j] jh]rzYjKah]h]h]h]r{YjaujPMjjth]ubje)r|Y}r}Y(hX$.. _Haskell: http://www.haskell.org/hjVjDjVhjdh}r~Y(j] Xhttp://www.haskell.org/h]rYjLah]h]h]h]rYjaujPMjjth]ubje)rY}rY(hX,.. _Haddock: http://www.haskell.org/haddock/jKhjVjDjVhjdh}rY(j] jh]rYjKah]h]h]h]rYjaujPMjjth]ubje)rY}rY(hX&.. _Alex: http://www.haskell.org/alex/jKhjVjDjVhjdh}rY(j] jO h]rYjKah]h]h]h]rYjaujPMjjth]ubje)rY}rY(hX(.. _Happy: http://www.haskell.org/happy/jKhjVjDjVhjdh}rY(j] j1 h]rYjKah]h]h]h]rYjaujPMjjth]ubje)rY}rY(hX*.. _Hoogle: http://www.haskell.org/hoogle/hjVjDjVhjdh}rY(j] Xhttp://www.haskell.org/hoogle/h]rYjKah]h]h]h]rYjaujPMjjth]ubje)rY}rY(hX9.. _HsColour: http://www.cs.york.ac.uk/fp/darcs/hscolour/hjVjDjVhjdh}rY(j] X+http://www.cs.york.ac.uk/fp/darcs/hscolour/h]rYjKah]h]h]h]rYjaujPMjjth]ubje)rY}rY(hX-.. _cpphs: http://projects.haskell.org/cpphs/jKhjVjDjVhjdh}rY(j] jl h]rYjKah]h]h]h]rYjaujPMjjth]ubje)rY}rY(hX-.. _ABNF: https://tools.ietf.org/html/rfc5234jKhjVjDjVhjdh}rY(j] j h]rYjKah]h]h]h]rYjaujPMjjth]ubje)rY}rY(hX<.. _Backpack: https://ghc.haskell.org/trac/ghc/wiki/BackpackjKhjVjDjVhjdh}rY(j] jh]rYjLah]h]h]h]rYjaujPMjjth]ubcdocutils.nodes rubric rY)rY}rY(hX FootnotesrYhjVjDjEhUrubricrYh}rY(h]h]h]h]h]ujPMjjth]rYhX FootnotesrYrY}rY(hjYjDNjPNjjthjYubaubjVeubjDjEhUfootnoterYh}rY(j0Kh]rYj0ah]rYj0ah]h]h]rYjaj%j ujPMjjth]rY(cdocutils.nodes label rY)rY}rY(hUhjVjDNhUlabelrYh}rY(h]h]h]h]h]ujPNjjth]rYhX1rY}rY(hUjDNjPNjjthjYubaubjZ)rY}rY(hXiSome packages (ab)use :pkg-field:`build-depends` on old-style builds, but this has a few major drawbacks:hjVjDjEhj]h}rY(h]h]h]h]h]ujPMh]rY(hXSome packages (ab)use rYrY}rY(hXSome packages (ab)use hjYubjM)rY}rY(hX:pkg-field:`build-depends`hjYjDjEhjPh}rY(UreftypeX pkg-fieldjRjSX build-dependsrYU refdomainXcabalrYh]h]U refexplicith]h]h]jVj jlj}ujPMh]rYj)rY}rY(hjYh}rY(h]h]rY(j]jYXcabal-pkg-fieldrYeh]h]h]uhjYh]rYhX build-dependsrYrY}rY(hUhjYubahjubaubhX9 on old-style builds, but this has a few major drawbacks:rYrY}rY(hX9 on old-style builds, but this has a few major drawbacks:hjYubeubj@)rY}rY(hUh}rY(h]h]h]h]h]uhjVh]rYj )rY}rY(hUhjYjDjEhj h}rY(j X-h]h]h]h]h]ujPMh]rY(j )rY}rY(hXusing Nix-style builds it's considered an error if you depend on a exe-only package via build-depends: the solver will refuse it.rYh}rY(h]h]h]h]h]uhjYh]rYjZ)rY}rY(hjYhjYjDjEhj]h}rY(h]h]h]h]h]ujPMh]rYhXusing Nix-style builds it’s considered an error if you depend on a exe-only package via build-depends: the solver will refuse it.rYrY}rY(hjYhjYubaubahj ubj )rY}rY(hX4it may or may not place the executable on ``$PATH``.rYh}rY(h]h]h]h]h]uhjYh]rYjZ)rY}rY(hjYhjYjDjEhj]h}rY(h]h]h]h]h]ujPMh]rY(hX*it may or may not place the executable on rYrY}rY(hX*it may or may not place the executable on hjYubj)rY}rY(hX ``$PATH``h}rY(h]h]h]h]h]uhjYh]rYhX$PATHrYrY}rZ(hX$PATHhjYubahjubhX.rZ}rZ(hX.hjYubeubahj ubj )rZ}rZ(hX}it does not ensure the correct version of the package is installed, so you might end up overwriting versions with each other.rZh}rZ(h]h]h]h]h]uhjYh]rZjZ)rZ}r Z(hjZhjZjDjEhj]h}r Z(h]h]h]h]h]ujPMh]r ZhX}it does not ensure the correct version of the package is installed, so you might end up overwriting versions with each other.r Zr Z}rZ(hjZhjZubaubahj ubeubahjCubeubaj}rZUindirect_targetsrZ]rZUsettingsrZ(cdocutils.frontend Values rZorZ}rZ(Ufootnote_backlinksrZKUrecord_dependenciesrZNU language_coderZUenrZU tracebackrZUpep_referencesrZNUstrip_commentsrZNU toc_backlinksrZjU rfc_base_urlrZUhttps://tools.ietf.org/html/rZU datestampr ZNU report_levelr!ZKUsmartquotes_localesr"Z]r#ZU _destinationr$ZNU halt_levelr%ZKU strip_classesr&ZNhNUerror_encoding_error_handlerr'ZUbackslashreplacer(ZUdebugr)ZNUembed_stylesheetr*ZUoutput_encoding_error_handlerr+ZUstrictr,ZU sectnum_xformr-ZKUdump_transformsr.ZNU docinfo_xformr/ZKUwarning_streamr0ZNUpep_file_url_templater1ZUpep-%04dr2ZUexit_status_levelr3ZKUconfigr4ZNUstrict_visitorr5ZNUcloak_email_addressesr6ZUtrim_footnote_reference_spacer7ZUenvr8ZNUdump_pseudo_xmlr9ZNUexpose_internalsr:ZNUsectsubtitle_xformr;ZU source_linkrZUutf-8r?ZU source_urlr@ZNUinput_encodingrAZU utf-8-sigrBZU_disable_configrCZNU id_prefixrDZUUcharacter_level_inline_markuprEZU tab_widthrFZKUerror_encodingrGZUUTF-8rHZU_sourcerIZjEU generatorrJZNUdump_internalsrKZNU smart_quotesrLZU pep_base_urlrMZU https://www.python.org/dev/peps/rNZUsyntax_highlightrOZUlongrPZUinput_encoding_error_handlerrQZj,ZUauto_id_prefixrRZUidrSZUdoctitle_xformrTZUstrip_elements_with_classesrUZNU _config_filesrVZ]Ufile_insertion_enabledrWZU raw_enabledrXZKU dump_settingsrYZNubUsymbol_footnote_startrZZKUidsr[Z}r\Z(jjAj%j%jojl)jj|@jj/jjZHj>j6jKjIUjnjjj2jJjf@jjj,@j(@jLjYjBj7jsjc:jHjHj|j jS%jM%j8j4jKjn)r]Z}r^Z(hUhjqjDjEhjqh}r_Z(h]h]h]h]r`ZjKah]raZjzaujPM@ jjth]rbZ(h)rcZ}rdZ(hX&Accessing data files from package codereZhj]ZjDjEhhh}rfZ(h]h]h]h]h]ujPM@ jjth]rgZhX&Accessing data files from package coderhZriZ}rjZ(hjeZjDNjPNjjthjcZubaubjZ)rkZ}rlZ(hXThe placement on the target system of files listed in the :pkg-field:`data-files` field varies between systems, and in some cases one can even move packages around after installation (see `prefix independence `__). To enable packages to find these files in a portable way, Cabal generates a module called :file:`Paths_{pkgname}` (with any hyphens in *pkgname* replaced by underscores) during building, so that it may be imported by modules of the package. This module defines a functionhj]ZjDjEhj]h}rmZ(h]h]h]h]h]ujPMB jjth]rnZ(hX:The placement on the target system of files listed in the roZrpZ}rqZ(hX:The placement on the target system of files listed in the jDNjPNjjthjkZubjM)rrZ}rsZ(hX:pkg-field:`data-files`hjkZjDjEhjPh}rtZ(UreftypeX pkg-fieldjRjSX data-filesruZU refdomainXcabalrvZh]h]U refexplicith]h]h]jVj jlj}ujPMB h]rwZj)rxZ}ryZ(hjuZh}rzZ(h]h]r{Z(j]jvZXcabal-pkg-fieldr|Zeh]h]h]uhjrZh]r}ZhX data-filesr~ZrZ}rZ(hUhjxZubahjubaubhXk field varies between systems, and in some cases one can even move packages around after installation (see rZrZ}rZ(hXk field varies between systems, and in some cases one can even move packages around after installation (see jDNjPNjjthjkZubj!)rZ}rZ(hXF`prefix independence `__h}rZ(UnameXprefix independencej] X,installing-packages.html#prefix-independenceh]h]h]h]h]uhjkZh]rZhXprefix independencerZrZ}rZ(hXprefix independencehjZubahj%ubhX]). To enable packages to find these files in a portable way, Cabal generates a module called rZrZ}rZ(hX]). To enable packages to find these files in a portable way, Cabal generates a module called jDNjPNjjthjkZubj)rZ}rZ(hX Paths_pkgnameh}rZ(h]h]h]h]rZXfilerZaUrolejZh]uhjkZh]rZ(hXPaths_rZrZ}rZ(hXPaths_{pkgname}hjZubj)rZ}rZ(hXpkgnameh}rZ(h]h]h]h]h]uhjZh]rZhXpkgnamerZrZ}rZ(hUhjZubahjubehjubhX (with any hyphens in rZrZ}rZ(hX (with any hyphens in jDNjPNjjthjkZubj)rZ}rZ(hX *pkgname*h}rZ(h]h]h]h]h]uhjkZh]rZhXpkgnamerZrZ}rZ(hXpkgnamehjZubahjubhX replaced by underscores) during building, so that it may be imported by modules of the package. This module defines a functionrZrZ}rZ(hX replaced by underscores) during building, so that it may be imported by modules of the package. This module defines a functionjDNjPNjjthjkZubeubj)rZ}rZ(hX*getDataFileName :: FilePath -> IO FilePathhj]ZjDjEhjh}rZ(jjXhaskelljjh]h]h]j}h]h]ujPMK jjth]rZhX*getDataFileName :: FilePath -> IO FilePathrZrZ}rZ(hUhjZubaubjZ)rZ}rZ(hXIf the argument is a filename listed in the :pkg-field:`data-files` field, the result is the name of the corresponding file on the system on which the program is running.hj]ZjDjEhj]h}rZ(h]h]h]h]h]ujPMO jjth]rZ(hX,If the argument is a filename listed in the rZrZ}rZ(hX,If the argument is a filename listed in the jDNjPNjjthjZubjM)rZ}rZ(hX:pkg-field:`data-files`hjZjDjEhjPh}rZ(UreftypeX pkg-fieldjRjSX data-filesrZU refdomainXcabalrZh]h]U refexplicith]h]h]jVj jlj}ujPMO h]rZj)rZ}rZ(hjZh}rZ(h]h]rZ(j]jZXcabal-pkg-fieldrZeh]h]h]uhjZh]rZhX data-filesrZrZ}rZ(hUhjZubahjubaubhXg field, the result is the name of the corresponding file on the system on which the program is running.rZrZ}rZ(hXg field, the result is the name of the corresponding file on the system on which the program is running.jDNjPNjjthjZubeubj )rZ}rZ(hXIf you decide to import the :file:`Paths_{pkgname}` module then it *must* be listed in the :pkg-field:`other-modules` field just like any other module in your package and on :pkg-field:`autogen-modules` as the file is autogenerated.hj]ZjDjEhj h}rZ(h]h]h]h]h]ujPNjjth]rZjZ)rZ}rZ(hXIf you decide to import the :file:`Paths_{pkgname}` module then it *must* be listed in the :pkg-field:`other-modules` field just like any other module in your package and on :pkg-field:`autogen-modules` as the file is autogenerated.hjZjDjEhj]h}rZ(h]h]h]h]h]ujPMU h]rZ(hXIf you decide to import the rZrZ}rZ(hXIf you decide to import the hjZubj)rZ}rZ(hX Paths_pkgnameh}rZ(h]h]h]h]rZXfilerZaUrolejZh]uhjZh]rZ(hXPaths_rZrZ}rZ(hXPaths_{pkgname}hjZubj)rZ}rZ(hXpkgnameh}rZ(h]h]h]h]h]uhjZh]rZhXpkgnamerZrZ}rZ(hUhjZubahjubehjubhX module then it rZrZ}rZ(hX module then it hjZubj)rZ}rZ(hX*must*h}rZ(h]h]h]h]h]uhjZh]rZhXmustrZrZ}rZ(hXmusthjZubahjubhX be listed in the rZrZ}rZ(hX be listed in the hjZubjM)rZ}rZ(hX:pkg-field:`other-modules`hjZjDjEhjPh}rZ(UreftypeX pkg-fieldjRjSX other-modulesrZU refdomainXcabalrZh]h]U refexplicith]h]h]jVj jlj}ujPMU h]rZj)rZ}rZ(hjZh}rZ(h]h]rZ(j]jZXcabal-pkg-fieldrZeh]h]h]uhjZh]rZhX other-modulesrZr[}r[(hUhjZubahjubaubhX9 field just like any other module in your package and on r[r[}r[(hX9 field just like any other module in your package and on hjZubjM)r[}r[(hX:pkg-field:`autogen-modules`hjZjDjEhjPh}r[(UreftypeX pkg-fieldjRjSXautogen-modulesr[U refdomainXcabalr [h]h]U refexplicith]h]h]jVj jlj}ujPMU h]r [j)r [}r [(hj[h}r [(h]h]r[(j]j [Xcabal-pkg-fieldr[eh]h]h]uhj[h]r[hXautogen-modulesr[r[}r[(hUhj [ubahjubaubhX as the file is autogenerated.r[r[}r[(hX as the file is autogenerated.hjZubeubaubjZ)r[}r[(hXThe :file:`Paths_{pkgname}` module is not platform independent, as any other autogenerated module, so it does not get included in the source tarballs generated by ``sdist``.hj]ZjDjEhj]h}r[(h]h]h]h]h]ujPMZ jjth]r[(hXThe r[}r[(hXThe jDNjPNjjthj[ubj)r[}r[(hX Paths_pkgnameh}r [(h]h]h]h]r![Xfiler"[aUrolej"[h]uhj[h]r#[(hXPaths_r$[r%[}r&[(hXPaths_{pkgname}hj[ubj)r'[}r([(hXpkgnameh}r)[(h]h]h]h]h]uhj[h]r*[hXpkgnamer+[r,[}r-[(hUhj'[ubahjubehjubhX module is not platform independent, as any other autogenerated module, so it does not get included in the source tarballs generated by r.[r/[}r0[(hX module is not platform independent, as any other autogenerated module, so it does not get included in the source tarballs generated by jDNjPNjjthj[ubj)r1[}r2[(hX ``sdist``h}r3[(h]h]h]h]h]uhj[h]r4[hXsdistr5[r6[}r7[(hXsdisthj1[ubahjubhX.r8[}r9[(hX.jDNjPNjjthj[ubeubjZ)r:[}r;[(hXThe :file:`Paths_{pkgname}` module also includes some other useful functions and values, which record the version of the package and some other directories which the package has been configured to be installed into (e.g. data files live in ``getDataDir``):hj]ZjDjEhj]h}r<[(h]h]h]h]h]ujPM^ jjth]r=[(hXThe r>[r?[}r@[(hXThe jDNjPNjjthj:[ubj)rA[}rB[(hX Paths_pkgnameh}rC[(h]h]h]h]rD[XfilerE[aUrolejE[h]uhj:[h]rF[(hXPaths_rG[rH[}rI[(hXPaths_{pkgname}hjA[ubj)rJ[}rK[(hXpkgnameh}rL[(h]h]h]h]h]uhjA[h]rM[hXpkgnamerN[rO[}rP[(hUhjJ[ubahjubehjubhX module also includes some other useful functions and values, which record the version of the package and some other directories which the package has been configured to be installed into (e.g. data files live in rQ[rR[}rS[(hX module also includes some other useful functions and values, which record the version of the package and some other directories which the package has been configured to be installed into (e.g. data files live in jDNjPNjjthj:[ubj)rT[}rU[(hX``getDataDir``h}rV[(h]h]h]h]h]uhj:[h]rW[hX getDataDirrX[rY[}rZ[(hX getDataDirhjT[ubahjubhX):r[[r\[}r][(hX):jDNjPNjjthj:[ubeubj)r^[}r_[(hXversion :: Version getBinDir :: IO FilePath getLibDir :: IO FilePath getDynLibDir :: IO FilePath getDataDir :: IO FilePath getLibexecDir :: IO FilePath getSysconfDir :: IO FilePathhj]ZjDjEhjh}r`[(jjXhaskelljjh]h]h]j}h]h]ujPMc jjth]ra[hXversion :: Version getBinDir :: IO FilePath getLibDir :: IO FilePath getDynLibDir :: IO FilePath getDataDir :: IO FilePath getLibexecDir :: IO FilePath getSysconfDir :: IO FilePathrb[rc[}rd[(hUhj^[ubaubjZ)re[}rf[(hXThe actual location of all these directories can be individually overridden at runtime using environment variables of the form ``pkg_name_var``, where ``pkg_name`` is the name of the package with all hyphens converted into underscores, and ``var`` is either ``bindir``, ``libdir``, ``dynlibdir``, ``datadir``, ``libexedir`` or ``sysconfdir``. For example, the configured data directory for ``pretty-show`` is controlled with the ``pretty_show_datadir`` environment variable.hj]ZjDjEhj]h}rg[(h]h]h]h]h]ujPMn jjth]rh[(hXThe actual location of all these directories can be individually overridden at runtime using environment variables of the form ri[rj[}rk[(hXThe actual location of all these directories can be individually overridden at runtime using environment variables of the form jDNjPNjjthje[ubj)rl[}rm[(hX``pkg_name_var``h}rn[(h]h]h]h]h]uhje[h]ro[hX pkg_name_varrp[rq[}rr[(hX pkg_name_varhjl[ubahjubhX, where rs[rt[}ru[(hX, where jDNjPNjjthje[ubj)rv[}rw[(hX ``pkg_name``h}rx[(h]h]h]h]h]uhje[h]ry[hXpkg_namerz[r{[}r|[(hXpkg_namehjv[ubahjubhXM is the name of the package with all hyphens converted into underscores, and r}[r~[}r[(hXM is the name of the package with all hyphens converted into underscores, and jDNjPNjjthje[ubj)r[}r[(hX``var``h}r[(h]h]h]h]h]uhje[h]r[hXvarr[r[}r[(hXvarhj[ubahjubhX is either r[r[}r[(hX is either jDNjPNjjthje[ubj)r[}r[(hX ``bindir``h}r[(h]h]h]h]h]uhje[h]r[hXbindirr[r[}r[(hXbindirhj[ubahjubhX, r[r[}r[(hX, jDNjPNjjthje[ubj)r[}r[(hX ``libdir``h}r[(h]h]h]h]h]uhje[h]r[hXlibdirr[r[}r[(hXlibdirhj[ubahjubhX, r[r[}r[(hX, r[jDNjPNjjthje[ubj)r[}r[(hX ``dynlibdir``h}r[(h]h]h]h]h]uhje[h]r[hX dynlibdirr[r[}r[(hX dynlibdirhj[ubahjubhX, r[r[}r[(hX, hje[ubj)r[}r[(hX ``datadir``h}r[(h]h]h]h]h]uhje[h]r[hXdatadirr[r[}r[(hXdatadirhj[ubahjubhX, r[r[}r[(hj[hje[ubj)r[}r[(hX ``libexedir``h}r[(h]h]h]h]h]uhje[h]r[hX libexedirr[r[}r[(hX libexedirhj[ubahjubhX or r[r[}r[(hX or jDNjPNjjthje[ubj)r[}r[(hX``sysconfdir``h}r[(h]h]h]h]h]uhje[h]r[hX sysconfdirr[r[}r[(hX sysconfdirhj[ubahjubhX1. For example, the configured data directory for r[r[}r[(hX1. For example, the configured data directory for jDNjPNjjthje[ubj)r[}r[(hX``pretty-show``h}r[(h]h]h]h]h]uhje[h]r[hX pretty-showr[r[}r[(hX pretty-showhj[ubahjubhX is controlled with the r[r[}r[(hX is controlled with the jDNjPNjjthje[ubj)r[}r[(hX``pretty_show_datadir``h}r[(h]h]h]h]h]uhje[h]r[hXpretty_show_datadirr[r[}r[(hXpretty_show_datadirhj[ubahjubhX environment variable.r[r[}r[(hX environment variable.jDNjPNjjthje[ubeubjn)r[}r[(hUhj]ZjDjEhjqh}r[(h]h]h]h]r[jKah]r[jaujPMw jjth]r[(h)r[}r[(hXAccessing the package versionr[hj[jDjEhhh}r[(h]h]h]h]h]ujPMw jjth]r[hXAccessing the package versionr[r[}r[(hj[jDNjPNjjthj[ubaubjZ)r[}r[(hX The aforementioned auto generated :file:`Paths_{pkgname}` module also exports the constant ``version ::`` `Version `__ which is defined as the version of your package as specified in the ``version`` field.hj[jDjEhj]h}r[(h]h]h]h]h]ujPMy jjth]r[(hX"The aforementioned auto generated r[r[}r[(hX"The aforementioned auto generated jDNjPNjjthj[ubj)r[}r[(hX Paths_pkgnameh}r[(h]h]h]h]r[Xfiler[aUrolej[h]uhj[h]r[(hXPaths_r[r[}r[(hXPaths_{pkgname}hj[ubj)r[}r[(hXpkgnameh}r[(h]h]h]h]h]uhj[h]r[hXpkgnamer[r[}r[(hUhj[ubahjubehjubhX" module also exports the constant r\r\}r\(hX" module also exports the constant jDNjPNjjthj[ubj)r\}r\(hX``version ::``h}r\(h]h]h]h]h]uhj[h]r\hX version ::r\r\}r \(hX version ::hj\ubahjubhX r \}r \(hX jDNjPNjjthj[ubj!)r \}r \(hXL`Version `__h}r\(UnameXVersionj] X>http://hackage.haskell.org/package/base/docs/Data-Version.htmlh]h]h]h]h]uhj[h]r\hXVersionr\r\}r\(hXVersionhj \ubahj%ubhXE which is defined as the version of your package as specified in the r\r\}r\(hXE which is defined as the version of your package as specified in the jDNjPNjjthj[ubj)r\}r\(hX ``version``h}r\(h]h]h]h]h]uhj[h]r\hXversionr\r\}r\(hXversionhj\ubahjubhX field.r\r\}r\(hX field.jDNjPNjjthj[ubeubeubeubjj1.jKj[j]j2jjjLjRjKjYjKjqQjKj^PjljVjIjX2jj;jj#jj )r \}r!\(hXautogen-modules: module listhjljDjEhj h}r"\(h]r#\jah]h]h]h]j ujPNjjth]r$\(j )r%\}r&\(hUhj \jDjEhjnh}r'\(h]h]h]h]h]Uentries]r(\(j! X1custom-setup:autogen-modules; package.cabal fieldjUNtr)\aujPNjjth]ubj# )r*\}r+\(hjhj \jDjEhj& h}r,\(jjh]h]h]h]h]ujPNjjth]r-\hXautogen-modulesr.\r/\}r0\(hUjDNjPNjjthj*\ubaubj, )r1\}r2\(hj/ hj \jDjEhj0 h}r3\(jjh]h]h]h]h]ujPNjjth]r4\hX: r5\r6\}r7\(hUjDNjPNjjthj1\ubaubj6 )r8\}r9\(hX module listhj \jDjEhj9 h}r:\(jjh]h]h]h]h]ujPNjjth]r;\hX module listr<\r=\}r>\(hUjDNjPNjjthj8\ubaubeubjj7jKjYj|jjjLjPjj-j(j=jjIj(jj j?jKjpYjKjQjKjj\j(Uindex-0r?\jG)r@\}rA\(hjJhjijDjEj}hjKh}rB\(U targetrefrC\jMh]rD\j?\ah]h]h]rE\jOah]ujPM jjtj }rF\j?\jfsh]rG\(h)rH\}rI\(hjThj@\jDjEhhh}rJ\(h]h]h]h]h]ujPM h]rK\hXTodorL\rM\}rN\(hUhjH\ubaubjZ)rO\}rP\(hjJhj@\jDjEhj]h}rQ\(h]h]h]h]h]ujPM h]rR\hXdocument autogen-modules fieldrS\rT\}rU\(hjJhjO\ubaubeubjjIjjuj-Dj)Djj )rV\}rW\(hj}hjk)rX\}rY\(hUhjn)rZ\}r[\(hUhjqjDjEhjqh}r\\(h]h]h]h]r]\jah]r^\jaujPM jjth]r_\(h)r`\}ra\(hXCustom setup scriptsrb\hjZ\jDjEhhh}rc\(h]h]h]h]h]ujPM jjth]rd\hXCustom setup scriptsre\rf\}rg\(hjb\jDNjPNjjthj`\ubaubjZ)rh\}ri\(hX+Since Cabal 1.24, custom ``Setup.hs`` are required to accurately track their dependencies by declaring them in the ``.cabal`` file rather than rely on dependencies being implicitly in scope. Please refer `this article `__ for more details.hjZ\jDjEhj]h}rj\(h]h]h]h]h]ujPM jjth]rk\(hXSince Cabal 1.24, custom rl\rm\}rn\(hXSince Cabal 1.24, custom jDNjPNjjthjh\ubj)ro\}rp\(hX ``Setup.hs``h}rq\(h]h]h]h]h]uhjh\h]rr\hXSetup.hsrs\rt\}ru\(hXSetup.hshjo\ubahjubhXN are required to accurately track their dependencies by declaring them in the rv\rw\}rx\(hXN are required to accurately track their dependencies by declaring them in the jDNjPNjjthjh\ubj)ry\}rz\(hX ``.cabal``h}r{\(h]h]h]h]h]uhjh\h]r|\hX.cabalr}\r~\}r\(hX.cabalhjy\ubahjubhXP file rather than rely on dependencies being implicitly in scope. Please refer r\r\}r\(hXP file rather than rely on dependencies being implicitly in scope. Please refer jDNjPNjjthjh\ubj!)r\}r\(hXL`this article `__h}r\(UnameX this articlej] X9https://www.well-typed.com/blog/2015/07/cabal-setup-deps/h]h]h]h]h]uhjh\h]r\hX this articler\r\}r\(hX this articlehj\ubahj%ubhX for more details.r\r\}r\(hX for more details.jDNjPNjjthjh\ubeubjZ)r\}r\(hXAs of Cabal library version 3.0, ``defaultMain*`` variants implement support for response files. Custom ``Setup.hs`` files that do not use one of these main functions are required to implement their own support, such as by using ``GHC.ResponseFile.getArgsWithResponseFiles``.hjZ\jDjEhj]h}r\(h]h]h]h]h]ujPM jjth]r\(hX!As of Cabal library version 3.0, r\r\}r\(hX!As of Cabal library version 3.0, jDNjPNjjthj\ubj)r\}r\(hX``defaultMain*``h}r\(h]h]h]h]h]uhj\h]r\hX defaultMain*r\r\}r\(hX defaultMain*hj\ubahjubhX7 variants implement support for response files. Custom r\r\}r\(hX7 variants implement support for response files. Custom jDNjPNjjthj\ubj)r\}r\(hX ``Setup.hs``h}r\(h]h]h]h]h]uhj\h]r\hXSetup.hsr\r\}r\(hXSetup.hshj\ubahjubhXq files that do not use one of these main functions are required to implement their own support, such as by using r\r\}r\(hXq files that do not use one of these main functions are required to implement their own support, such as by using jDNjPNjjthj\ubj)r\}r\(hX-``GHC.ResponseFile.getArgsWithResponseFiles``h}r\(h]h]h]h]h]uhj\h]r\hX)GHC.ResponseFile.getArgsWithResponseFilesr\r\}r\(hX)GHC.ResponseFile.getArgsWithResponseFileshj\ubahjubhX.r\}r\(hX.jDNjPNjjthj\ubeubjZ)r\}r\(hXDeclaring a ``custom-setup`` stanza also enables the generation of ``MIN_VERSION_package_(A,B,C)`` CPP macros for the Setup component.hjZ\jDjEhj]h}r\(h]h]h]h]h]ujPM jjth]r\(hX Declaring a r\r\}r\(hX Declaring a jDNjPNjjthj\ubj)r\}r\(hX``custom-setup``h}r\(h]h]h]h]h]uhj\h]r\hX custom-setupr\r\}r\(hX custom-setuphj\ubahjubhX' stanza also enables the generation of r\r\}r\(hX' stanza also enables the generation of jDNjPNjjthj\ubj)r\}r\(hX``MIN_VERSION_package_(A,B,C)``h}r\(h]h]h]h]h]uhj\h]r\hXMIN_VERSION_package_(A,B,C)r\r\}r\(hXMIN_VERSION_package_(A,B,C)hj\ubahjubhX$ CPP macros for the Setup component.r\r\}r\(hX$ CPP macros for the Setup component.jDNjPNjjthj\ubeubj )r\}r\(hUhjZ\jDjEhjnh}r\(h]h]h]h]h]Uentries]ujPNjjth]ubjX\j)r\}r\(hXUcustom-setup setup-depends: base >= 4.5 && < 4.11, Cabal >= 1.14 && < 1.25hjZ\jDjEhjh}r\(jjh]h]h]h]h]ujPM jjth]r\hXUcustom-setup setup-depends: base >= 4.5 && < 4.11, Cabal >= 1.14 && < 1.25r\r\}r\(hUhj\ubaubj )r\}r\(hUhjZ\jDjEhjnh}r\(h]h]h]h]h]Uentries]ujPNjjth]ubjk)r\}r\(hUhjZ\jDjEhj h}r\(j j Xcabalh]h]h]h]h]j X pkg-fieldr\j j\ujPNjjth]r\(j )r\}r\(hXsetup-depends: package listhj\jDjEhj h}r\(h]r\jah]h]h]h]j ujPNjjth]r\(j )r\}r\(hUhj\jDjEhjnh}r\(h]h]h]h]h]Uentries]r\(j! X/custom-setup:setup-depends; package.cabal fieldjUNtr\aujPNjjth]ubj# )r\}r\(hj~hj\jDjEhj& h}r\(jjh]h]h]h]h]ujPNjjth]r\hX setup-dependsr\r\}r\(hUjDNjPNjjthj\ubaubj, )r\}r\(hj/ hj\jDjEhj0 h}r\(jjh]h]h]h]h]ujPNjjth]r\hX: r\r\}r\(hUjDNjPNjjthj\ubaubj6 )r\}r\(hX package listhj\jDjEhj9 h}r\(jjh]h]h]h]h]ujPNjjth]r\hX package listr\r\}r\(hUjDNjPNjjthj\ubaubeubjh)r\}r\(hUhj\jDjEhjA h}r\(h]h]h]h]h]ujPNjjth]r](j)r]}r](hUhj\jDjEhjh}r](h]h]h]h]h]ujPNjjth]r]j)r]}r](hUhj]jDjEhj.h}r](h]h]h]h]h]ujPNjjth]r](j )r ]}r ](hj+hj]jDjEhj h}r ](h]h]h]h]h]ujPKh]r ]hXSincer ]r]}r](hUhj ]ubaubj)r]}r](hU Cabal 1.24r]h}r](h]h]h]h]h]uhj]h]r]jZ)r]}r](hj]h}r](h]h]h]h]h]uhj]h]r]hX Cabal 1.24r]r]}r](hUhj]ubahj]ubahj-ubeubaubjZ)r]}r](hXThe dependencies needed to compile ``Setup.hs``. See the :pkg-field:`build-depends` field for a description of the syntax expected by this field.hj\jDjEhj]h}r](h]h]h]h]h]ujPM jjth]r](hX#The dependencies needed to compile r ]r!]}r"](hX#The dependencies needed to compile jDNjPNjjthj]ubj)r#]}r$](hX ``Setup.hs``h}r%](h]h]h]h]h]uhj]h]r&]hXSetup.hsr']r(]}r)](hXSetup.hshj#]ubahjubhX . See the r*]r+]}r,](hX . See the jDNjPNjjthj]ubjM)r-]}r.](hX:pkg-field:`build-depends`hj]jDjEhjPh}r/](UreftypeX pkg-fieldjRjSX build-dependsr0]U refdomainXcabalr1]h]h]U refexplicith]h]h]jVj jlj}ujPM h]r2]j)r3]}r4](hj0]h}r5](h]h]r6](j]j1]Xcabal-pkg-fieldr7]eh]h]h]uhj-]h]r8]hX build-dependsr9]r:]}r;](hUhj3]ubahjubaubhX> field for a description of the syntax expected by this field.r<]r=]}r>](hX> field for a description of the syntax expected by this field.jDNjPNjjthj]ubeubeubeubjn)r?]}r@](hUhjZ\jDjEhjqh}rA](h]h]h]h]rB]jKah]rC]jaujPM jjth]rD](h)rE]}rF](hX+Backward compatibility and ``custom-setup``rG]hj?]jDjEhhh}rH](h]h]h]h]h]ujPM jjth]rI](hXBackward compatibility and rJ]rK]}rL](hXBackward compatibility and rM]jDNjPNjjthjE]ubj)rN]}rO](hX``custom-setup``rP]h}rQ](h]h]h]h]h]uhjE]h]rR]hX custom-setuprS]rT]}rU](hX custom-setuprV]hjN]ubahjubeubjZ)rW]}rX](hXVersions prior to Cabal 1.24 don't recognise ``custom-setup`` stanzas, and will behave agnostic to them (except for warning about an unknown section). Consequently, versions prior to Cabal 1.24 can't ensure the declared dependencies ``setup-depends`` are in scope, and instead whatever is registered in the current package database environment will become eligible (and resolved by the compiler) for the ``Setup.hs`` module.hj?]jDjEhj]h}rY](h]h]h]h]h]ujPM jjth]rZ](hX/Versions prior to Cabal 1.24 don’t recognise r[]r\]}r]](hX-Versions prior to Cabal 1.24 don't recognise jDNjPNjjthjW]ubj)r^]}r_](hX``custom-setup``h}r`](h]h]h]h]h]uhjW]h]ra]hX custom-setuprb]rc]}rd](hX custom-setuphj^]ubahjubhX stanzas, and will behave agnostic to them (except for warning about an unknown section). Consequently, versions prior to Cabal 1.24 can’t ensure the declared dependencies re]rf]}rg](hX stanzas, and will behave agnostic to them (except for warning about an unknown section). Consequently, versions prior to Cabal 1.24 can't ensure the declared dependencies jDNjPNjjthjW]ubj)rh]}ri](hX``setup-depends``h}rj](h]h]h]h]h]uhjW]h]rk]hX setup-dependsrl]rm]}rn](hX setup-dependshjh]ubahjubhX are in scope, and instead whatever is registered in the current package database environment will become eligible (and resolved by the compiler) for the ro]rp]}rq](hX are in scope, and instead whatever is registered in the current package database environment will become eligible (and resolved by the compiler) for the jDNjPNjjthjW]ubj)rr]}rs](hX ``Setup.hs``h}rt](h]h]h]h]h]uhjW]h]ru]hXSetup.hsrv]rw]}rx](hXSetup.hshjr]ubahjubhX module.ry]rz]}r{](hX module.jDNjPNjjthjW]ubeubjZ)r|]}r}](hXThe availability of the ``MIN_VERSION_package_(A,B,C)`` CPP macros inside ``Setup.hs`` scripts depends on the condition that eitherhj?]jDjEhj]h}r~](h]h]h]h]h]ujPM jjth]r](hXThe availability of the r]r]}r](hXThe availability of the jDNjPNjjthj|]ubj)r]}r](hX``MIN_VERSION_package_(A,B,C)``h}r](h]h]h]h]h]uhj|]h]r]hXMIN_VERSION_package_(A,B,C)r]r]}r](hXMIN_VERSION_package_(A,B,C)hj]ubahjubhX CPP macros inside r]r]}r](hX CPP macros inside jDNjPNjjthj|]ubj)r]}r](hX ``Setup.hs``h}r](h]h]h]h]h]uhj|]h]r]hXSetup.hsr]r]}r](hXSetup.hshj]ubahjubhX- scripts depends on the condition that eitherr]r]}r](hX- scripts depends on the condition that eitherjDNjPNjjthj|]ubeubj )r]}r](hUhj?]jDjEhj h}r](j X-h]h]h]h]h]ujPM jjth]r](j )r]}r](hXa ``custom-setup`` section has been declared (or ``cabal v2-build`` is being used which injects an implicit hard-coded ``custom-setup`` stanza if it's missing), orhj]jDjEhj h}r](h]h]h]h]h]ujPNjjth]r]jZ)r]}r](hXa ``custom-setup`` section has been declared (or ``cabal v2-build`` is being used which injects an implicit hard-coded ``custom-setup`` stanza if it's missing), orhj]jDjEhj]h}r](h]h]h]h]h]ujPM h]r](hXa r]r]}r](hXa hj]ubj)r]}r](hX``custom-setup``h}r](h]h]h]h]h]uhj]h]r]hX custom-setupr]r]}r](hX custom-setuphj]ubahjubhX section has been declared (or r]r]}r](hX section has been declared (or hj]ubj)r]}r](hX``cabal v2-build``h}r](h]h]h]h]h]uhj]h]r]hXcabal v2-buildr]r]}r](hXcabal v2-buildhj]ubahjubhX4 is being used which injects an implicit hard-coded r]r]}r](hX4 is being used which injects an implicit hard-coded hj]ubj)r]}r](hX``custom-setup``h}r](h]h]h]h]h]uhj]h]r]hX custom-setupr]r]}r](hX custom-setuphj]ubahjubhX stanza if it’s missing), orr]r]}r](hX stanza if it's missing), orhj]ubeubaubj )r]}r](hXMGHC 8.0 or later is used (which natively injects package version CPP macros) hj]jDjEhj h}r](h]h]h]h]h]ujPNjjth]r]jZ)r]}r](hXLGHC 8.0 or later is used (which natively injects package version CPP macros)r]hj]jDjEhj]h}r](h]h]h]h]h]ujPM h]r]hXLGHC 8.0 or later is used (which natively injects package version CPP macros)r]r]}r](hj]hj]ubaubaubeubjZ)r]}r](hXConsequently, if you need to write backward compatible ``Setup.hs`` scripts using CPP, you should declare a ``custom-setup`` stanza and use the pattern below:hj?]jDjEhj]h}r](h]h]h]h]h]ujPM jjth]r](hX7Consequently, if you need to write backward compatible r]r]}r](hX7Consequently, if you need to write backward compatible jDNjPNjjthj]ubj)r]}r](hX ``Setup.hs``h}r](h]h]h]h]h]uhj]h]r]hXSetup.hsr]r]}r](hXSetup.hshj]ubahjubhX) scripts using CPP, you should declare a r]r]}r](hX) scripts using CPP, you should declare a jDNjPNjjthj]ubj)r]}r](hX``custom-setup``h}r](h]h]h]h]h]uhj]h]r]hX custom-setupr]r]}r](hX custom-setuphj]ubahjubhX" stanza and use the pattern below:r]r]}r](hX" stanza and use the pattern below:jDNjPNjjthj]ubeubj)r]}r](hX{-# LANGUAGE CPP #-} import Distribution.Simple #if defined(MIN_VERSION_Cabal) -- version macros are available and can be used as usual # if MIN_VERSION_Cabal(a,b,c) -- code specific to lib:Cabal >= a.b.c # else -- code specific to lib:Cabal < a.b.c # endif #else # warning Enabling heuristic fall-back. Please upgrade cabal-install to 1.24 or later if Setup.hs fails to compile. -- package version macros not available; except for exotic environments, -- you can heuristically assume that lib:Cabal's version is correlated -- with __GLASGOW_HASKELL__, and specifically since we can assume that -- GHC < 8.0, we can assume that lib:Cabal is version 1.22 or older. #endif main = ...hj?]jDjEhjh}r](jjXhaskelljjh]h]h]j}h]h]ujPM jjth]r]hX{-# LANGUAGE CPP #-} import Distribution.Simple #if defined(MIN_VERSION_Cabal) -- version macros are available and can be used as usual # if MIN_VERSION_Cabal(a,b,c) -- code specific to lib:Cabal >= a.b.c # else -- code specific to lib:Cabal < a.b.c # endif #else # warning Enabling heuristic fall-back. Please upgrade cabal-install to 1.24 or later if Setup.hs fails to compile. -- package version macros not available; except for exotic environments, -- you can heuristically assume that lib:Cabal's version is correlated -- with __GLASGOW_HASKELL__, and specifically since we can assume that -- GHC < 8.0, we can assume that lib:Cabal is version 1.22 or older. #endif main = ...r]r]}r](hUhj]ubaubjZ)r]}r](hXThe simplified (heuristic) CPP pattern shown below is useful if all you need is to distinguish ``Cabal < 2.0`` from ``Cabal >= 2.0``.hj?]jDjEhj]h}r](h]h]h]h]h]ujPM jjth]r](hX_The simplified (heuristic) CPP pattern shown below is useful if all you need is to distinguish r]r]}r](hX_The simplified (heuristic) CPP pattern shown below is useful if all you need is to distinguish jDNjPNjjthj]ubj)r]}r](hX``Cabal < 2.0``h}r](h]h]h]h]h]uhj]h]r]hX Cabal < 2.0r]r]}r](hX Cabal < 2.0hj]ubahjubhX from r^r^}r^(hX from jDNjPNjjthj]ubj)r^}r^(hX``Cabal >= 2.0``h}r^(h]h]h]h]h]uhj]h]r^hX Cabal >= 2.0r^r^}r ^(hX Cabal >= 2.0hj^ubahjubhX.r ^}r ^(hX.jDNjPNjjthj]ubeubj)r ^}r ^(hX{-# LANGUAGE CPP #-} import Distribution.Simple #if !defined(MIN_VERSION_Cabal) # define MIN_VERSION_Cabal(a,b,c) 0 #endif #if MIN_VERSION_Cabal(2,0,0) -- code for lib:Cabal >= 2.0 #else -- code for lib:Cabal < 2.0 #endif main = ...hj?]jDjEhjh}r^(jjXhaskelljjh]h]h]j}h]h]ujPM jjth]r^hX{-# LANGUAGE CPP #-} import Distribution.Simple #if !defined(MIN_VERSION_Cabal) # define MIN_VERSION_Cabal(a,b,c) 0 #endif #if MIN_VERSION_Cabal(2,0,0) -- code for lib:Cabal >= 2.0 #else -- code for lib:Cabal < 2.0 #endif main = ...r^r^}r^(hUhj ^ubaubeubeubjDjEhj h}r^(j j Xcabalh]h]h]h]h]j X pkg-sectionr^j j^ujPNjjth]r^(jV\jh)r^}r^(hUhjX\jDjEhjA h}r^(h]h]h]h]h]ujPNjjth]r^(j)r^}r^(hUhj^jDjEhjh}r^(h]h]h]h]h]ujPNjjth]r^j)r^}r^(hUhj^jDjEhj.h}r ^(h]h]h]h]h]ujPNjjth]r!^(j )r"^}r#^(hj+hj^jDjEhj h}r$^(h]h]h]h]h]ujPKh]r%^hXSincer&^r'^}r(^(hUhj"^ubaubj)r)^}r*^(hU Cabal 1.24r+^h}r,^(h]h]h]h]h]uhj^h]r-^jZ)r.^}r/^(hj+^h}r0^(h]h]h]h]h]uhj)^h]r1^hX Cabal 1.24r2^r3^}r4^(hUhj.^ubahj]ubahj-ubeubaubjZ)r5^}r6^(hXThe optional :pkg-section:`custom-setup` stanza contains information needed for the compilation of custom ``Setup.hs`` scripts,hj^jDjEhj]h}r7^(h]h]h]h]h]ujPM jjth]r8^(hX The optional r9^r:^}r;^(hX The optional jDNjPNjjthj5^ubjM)r<^}r=^(hX:pkg-section:`custom-setup`hj5^jDjEhjPh}r>^(UreftypeX pkg-sectionjRjSX custom-setupr?^U refdomainXcabalr@^h]h]U refexplicith]h]h]jVj ujPM h]rA^j)rB^}rC^(hj?^h}rD^(h]h]rE^(j]j@^Xcabal-pkg-sectionrF^eh]h]h]uhj<^h]rG^hX custom-setuprH^rI^}rJ^(hUhjB^ubahjubaubhXB stanza contains information needed for the compilation of custom rK^rL^}rM^(hXB stanza contains information needed for the compilation of custom jDNjPNjjthj5^ubj)rN^}rO^(hX ``Setup.hs``h}rP^(h]h]h]h]h]uhj5^h]rQ^hXSetup.hsrR^rS^}rT^(hXSetup.hshjN^ubahjubhX scripts,rU^rV^}rW^(hX scripts,jDNjPNjjthj5^ubeubeubeubjDjEhj h}rX^(h]rY^jah]h]h]h]j ujPNjjth]rZ^(j )r[^}r\^(hUhjV\jDjEhjnh}r]^(h]h]h]h]h]Uentries]r^^(j! X0custom-setup:custom-setup; package.cabal sectionjUNtr_^aujPNjjth]ubj# )r`^}ra^(hj}hjV\jDjEhj& h}rb^(jjh]h]h]h]h]ujPNjjth]rc^hX custom-setuprd^re^}rf^(hUjDNjPNjjthj`^ubaubj, )rg^}rh^(hU hjV\jDjEhj0 h}ri^(jjh]h]h]h]h]ujPNjjth]rj^hX rk^}rl^(hUjDNjPNjjthjg^ubaubeubjj7j"j"jj|9jj9jPjf8jjT'jj EjjWJj j jKjzLjKjKj%j%j%j%j%j}%jj<j0j0j@j@jtKjjjjWjKjj!jjkjCBj?Bjjt6jj/jLjPjjFjLjpYjLj@j`jjFjBjT@jP@jjjj#jo j|RjKjOjjH=jUjjjxjjjxj jj)jjjj|jKj(PjjJjj0:jjw!jjjKj?]jjjLj|YjKjYjj!jj<jjjHjjjj!Ej,j(jKjYjj\jj'jdj61jjj0jjjjjjGj"AjKjYjj*>jj.9j jHjjI&jjjx>jTjj5jw;jjmGjKjMj' jjj jjojLjRjj&jj.jKjYjj.jjjj'j@jAj0jVjj=jKjLjjV"jKj}Sjjm/jm ji jjbjjjyj8jjEjKjYjjh#jKjVNjKjqj&j&jjW5jjjDjDjKjMjj$jj jjEjj%#jj6(jjjj+jjjj5j=Kj9Kjj )rm^}rn^(hXautogen-includes: filename listhjk)ro^}rp^(hUhjojDjEhj h}rq^(j j Xcabalh]h]h]h]h]j X pkg-fieldrr^j jr^ujPNjjth]rs^(jm^jh)rt^}ru^(hUhjo^jDjEhjA h}rv^(h]h]h]h]h]ujPNjjth]rw^(j)rx^}ry^(hUhjt^jDjEhjh}rz^(h]h]h]h]h]ujPNjjth]r{^j)r|^}r}^(hUhjx^jDjEhj.h}r~^(h]h]h]h]h]ujPNjjth]r^(j )r^}r^(hj+hj|^jDjEhj h}r^(h]h]h]h]h]ujPKh]r^hXSincer^r^}r^(hUhj^ubaubj)r^}r^(hU Cabal 3.0r^h}r^(h]h]h]h]h]uhj|^h]r^jZ)r^}r^(hj^h}r^(h]h]h]h]h]uhj^h]r^hX Cabal 3.0r^r^}r^(hUhj^ubahj]ubahj-ubeubaubjZ)r^}r^(hXA list of header files from this package which are autogenerated (e.g. by a ``configure`` script). Autogenerated header files are not packaged by ``sdist`` command.hjt^jDjEhj]h}r^(h]h]h]h]h]ujPM; jjth]r^(hXLA list of header files from this package which are autogenerated (e.g. by a r^r^}r^(hXLA list of header files from this package which are autogenerated (e.g. by a jDNjPNjjthj^ubj)r^}r^(hX ``configure``h}r^(h]h]h]h]h]uhj^h]r^hX configurer^r^}r^(hX configurehj^ubahjubhX9 script). Autogenerated header files are not packaged by r^r^}r^(hX9 script). Autogenerated header files are not packaged by jDNjPNjjthj^ubj)r^}r^(hX ``sdist``h}r^(h]h]h]h]h]uhj^h]r^hXsdistr^r^}r^(hXsdisthj^ubahjubhX command.r^r^}r^(hX command.jDNjPNjjthj^ubeubeubeubjDjEhj h}r^(h]r^jah]h]h]h]j ujPNjjth]r^(j )r^}r^(hUhjm^jDjEhjnh}r^(h]h]h]h]h]Uentries]r^(j! X2custom-setup:autogen-includes; package.cabal fieldjUNtr^aujPNjjth]ubj# )r^}r^(hjhjm^jDjEhj& h}r^(jjh]h]h]h]h]ujPNjjth]r^hXautogen-includesr^r^}r^(hUjDNjPNjjthj^ubaubj, )r^}r^(hj/ hjm^jDjEhj0 h}r^(jjh]h]h]h]h]ujPNjjth]r^hX: r^r^}r^(hUjDNjPNjjthj^ubaubj6 )r^}r^(hX filename listhjm^jDjEhj9 h}r^(jjh]h]h]h]h]ujPNjjth]r^hX filename listr^r^}r^(hUjDNjPNjjthj^ubaubeubjjGj%j%jj4jjjKjOjjZ\jXj9j#j;j)(j%(jjD;jKjwYj9j8uUsubstitution_namesr^}r^hjh}r^(h]h]h]UsourcejEh]h]uU footnotesr^]r^Urefidsr^}r^(jI]r^jU2ajK]r^jajL]r^jmYajU]r^jaj]]r^j2aj?\]r^jfaj0]r^j0auubjDjEhjqh}r^(h]h]h]h]r^jKah]r^jaujPMjjth]r^(h)r^}r^(hXDeveloping packagesr^hjqjDjEhhh}r^(h]h]h]h]h]ujPMjjth]r^hXDeveloping packagesr^r^}r^(hj^jDNjPNjjthj^ubaubjZ)r^}r^(hX`The Cabal package is the unit of distribution. When installed, its purpose is to make available:r^hjqjDjEhj]h}r^(h]h]h]h]h]ujPMjjth]r^hX`The Cabal package is the unit of distribution. When installed, its purpose is to make available:r^r^}r^(hj^jDNjPNjjthj^ubaubj )r^}r^(hUhjqjDjEhj h}r^(j X-h]h]h]h]h]ujPMjjth]r^(j )r^}r^(hXOne or more Haskell programs. hj^jDjEhj h}r^(h]h]h]h]h]ujPNjjth]r^jZ)r^}r^(hXOne or more Haskell programs.r^hj^jDjEhj]h}r^(h]h]h]h]h]ujPMh]r^hXOne or more Haskell programs.r^r^}r^(hj^hj^ubaubaubj )r^}r^(hX;At most one library, exposing a number of Haskell modules. hj^jDjEhj h}r^(h]h]h]h]h]ujPNjjth]r_jZ)r_}r_(hX:At most one library, exposing a number of Haskell modules.r_hj^jDjEhj]h}r_(h]h]h]h]h]ujPMh]r_hX:At most one library, exposing a number of Haskell modules.r_r_}r_(hj_hj_ubaubaubeubjZ)r _}r _(hXHowever having both a library and executables in a package does not work very well; if the executables depend on the library, they must explicitly list all the modules they directly or indirectly import from that library. Fortunately, starting with Cabal 1.8.0.4, executables can also declare the package that they are in as a dependency, and Cabal will treat them as if they were in another package that depended on the library.r _hjqjDjEhj]h}r _(h]h]h]h]h]ujPMjjth]r _hXHowever having both a library and executables in a package does not work very well; if the executables depend on the library, they must explicitly list all the modules they directly or indirectly import from that library. Fortunately, starting with Cabal 1.8.0.4, executables can also declare the package that they are in as a dependency, and Cabal will treat them as if they were in another package that depended on the library.r_r_}r_(hj _jDNjPNjjthj _ubaubjZ)r_}r_(hXInternally, the package may consist of much more than a bunch of Haskell modules: it may also have C source code and header files, source code meant for preprocessing, documentation, test cases, auxiliary tools etc.r_hjqjDjEhj]h}r_(h]h]h]h]h]ujPMjjth]r_hXInternally, the package may consist of much more than a bunch of Haskell modules: it may also have C source code and header files, source code meant for preprocessing, documentation, test cases, auxiliary tools etc.r_r_}r_(hj_jDNjPNjjthj_ubaubjZ)r_}r_(hXWA package is identified by a globally-unique *package name*, which consists of one or more alphanumeric words separated by hyphens. To avoid ambiguity, each of these words should contain at least one letter. Chaos will result if two distinct packages with the same name are installed on the same system. A particular version of the package is distinguished by a *version number*, consisting of a sequence of one or more integers separated by dots. These can be combined to form a single text string called the *package ID*, using a hyphen to separate the name from the version, e.g. "``HUnit-1.1``".hjqjDjEhj]h}r_(h]h]h]h]h]ujPMjjth]r_(hX-A package is identified by a globally-unique r_r_}r_(hX-A package is identified by a globally-unique jDNjPNjjthj_ubj)r _}r!_(hX*package name*h}r"_(h]h]h]h]h]uhj_h]r#_hX package namer$_r%_}r&_(hX package namehj _ubahjubhX/, which consists of one or more alphanumeric words separated by hyphens. To avoid ambiguity, each of these words should contain at least one letter. Chaos will result if two distinct packages with the same name are installed on the same system. A particular version of the package is distinguished by a r'_r(_}r)_(hX/, which consists of one or more alphanumeric words separated by hyphens. To avoid ambiguity, each of these words should contain at least one letter. Chaos will result if two distinct packages with the same name are installed on the same system. A particular version of the package is distinguished by a jDNjPNjjthj_ubj)r*_}r+_(hX*version number*h}r,_(h]h]h]h]h]uhj_h]r-_hXversion numberr._r/_}r0_(hXversion numberhj*_ubahjubhX, consisting of a sequence of one or more integers separated by dots. These can be combined to form a single text string called the r1_r2_}r3_(hX, consisting of a sequence of one or more integers separated by dots. These can be combined to form a single text string called the jDNjPNjjthj_ubj)r4_}r5_(hX *package ID*h}r6_(h]h]h]h]h]uhj_h]r7_hX package IDr8_r9_}r:_(hX package IDhj4_ubahjubhX@, using a hyphen to separate the name from the version, e.g. “r;_r<_}r=_(hX>, using a hyphen to separate the name from the version, e.g. "jDNjPNjjthj_ubj)r>_}r?_(hX ``HUnit-1.1``h}r@_(h]h]h]h]h]uhj_h]rA_hX HUnit-1.1rB_rC_}rD_(hX HUnit-1.1hj>_ubahjubhX”.rE_rF_}rG_(hX".jDNjPNjjthj_ubeubj )rH_}rI_(hXTPackages are not part of the Haskell language; they simply populate the hierarchical space of module names. In GHC 6.6 and later a program may contain multiple modules with the same name if they come from separate packages; in all other current Haskell systems packages may not overlap in the modules they provide, including hidden modules.hjqjDjEhj h}rJ_(h]h]h]h]h]ujPNjjth]rK_jZ)rL_}rM_(hXTPackages are not part of the Haskell language; they simply populate the hierarchical space of module names. In GHC 6.6 and later a program may contain multiple modules with the same name if they come from separate packages; in all other current Haskell systems packages may not overlap in the modules they provide, including hidden modules.rN_hjH_jDjEhj]h}rO_(h]h]h]h]h]ujPMh]rP_hXTPackages are not part of the Haskell language; they simply populate the hierarchical space of module names. In GHC 6.6 and later a program may contain multiple modules with the same name if they come from separate packages; in all other current Haskell systems packages may not overlap in the modules they provide, including hidden modules.rQ_rR_}rS_(hjN_hjL_ubaubaubjjjZ\joj]Zj|RjIUjVeubjDjEhjqh}rT_(h]h]h]h]rU_jah]rV_jaujPM jjth]rW_(h)rX_}rY_(hX"Autogenerated modules and includesrZ_hjojDjEhhh}r[_(h]h]h]h]h]ujPM jjth]r\_hX"Autogenerated modules and includesr]_r^_}r__(hjZ_jDNjPNjjthjX_ubaubjZ)r`_}ra_(hXzModules that are built automatically at setup, created with a custom setup script, must appear on :pkg-field:`other-modules` for the library, executable, test-suite or benchmark stanzas or also on :pkg-field:`library:exposed-modules` for libraries to be used, but are not really on the package when distributed. This makes commands like sdist fail because the file is not found.hjojDjEhj]h}rb_(h]h]h]h]h]ujPM jjth]rc_(hXbModules that are built automatically at setup, created with a custom setup script, must appear on rd_re_}rf_(hXbModules that are built automatically at setup, created with a custom setup script, must appear on jDNjPNjjthj`_ubjM)rg_}rh_(hX:pkg-field:`other-modules`hj`_jDjEhjPh}ri_(UreftypeX pkg-fieldjRjSX other-modulesrj_U refdomainXcabalrk_h]h]U refexplicith]h]h]jVj jlj}ujPM h]rl_j)rm_}rn_(hjj_h}ro_(h]h]rp_(j]jk_Xcabal-pkg-fieldrq_eh]h]h]uhjg_h]rr_hX other-modulesrs_rt_}ru_(hUhjm_ubahjubaubhXI for the library, executable, test-suite or benchmark stanzas or also on rv_rw_}rx_(hXI for the library, executable, test-suite or benchmark stanzas or also on jDNjPNjjthj`_ubjM)ry_}rz_(hX$:pkg-field:`library:exposed-modules`hj`_jDjEhjPh}r{_(UreftypeX pkg-fieldjRjSXexposed-modulesU refdomainXcabalr|_h]h]U refexplicith]h]h]jVj jlXlibraryujPM h]r}_j)r~_}r_(hXlibrary:exposed-modulesh}r_(h]h]r_(j]j|_Xcabal-pkg-fieldr_eh]h]h]uhjy_h]r_hXlibrary:exposed-modulesr_r_}r_(hUhj~_ubahjubaubhX for libraries to be used, but are not really on the package when distributed. This makes commands like sdist fail because the file is not found.r_r_}r_(hX for libraries to be used, but are not really on the package when distributed. This makes commands like sdist fail because the file is not found.jDNjPNjjthj`_ubeubjZ)r_}r_(hXThese special modules must appear again on the :pkg-field:`autogen-modules` field of the stanza that is using it, besides :pkg-field:`other-modules` or :pkg-field:`library:exposed-modules`. With this there is no need to create complex build hooks for this poweruser case.hjojDjEhj]h}r_(h]h]h]h]h]ujPM jjth]r_(hX/These special modules must appear again on the r_r_}r_(hX/These special modules must appear again on the jDNjPNjjthj_ubjM)r_}r_(hX:pkg-field:`autogen-modules`hj_jDjEhjPh}r_(UreftypeX pkg-fieldjRjSXautogen-modulesr_U refdomainXcabalr_h]h]U refexplicith]h]h]jVj jlj}ujPM h]r_j)r_}r_(hj_h}r_(h]h]r_(j]j_Xcabal-pkg-fieldr_eh]h]h]uhj_h]r_hXautogen-modulesr_r_}r_(hUhj_ubahjubaubhX/ field of the stanza that is using it, besides r_r_}r_(hX/ field of the stanza that is using it, besides jDNjPNjjthj_ubjM)r_}r_(hX:pkg-field:`other-modules`hj_jDjEhjPh}r_(UreftypeX pkg-fieldjRjSX other-modulesr_U refdomainXcabalr_h]h]U refexplicith]h]h]jVj jlj}ujPM h]r_j)r_}r_(hj_h}r_(h]h]r_(j]j_Xcabal-pkg-fieldr_eh]h]h]uhj_h]r_hX other-modulesr_r_}r_(hUhj_ubahjubaubhX or r_r_}r_(hX or jDNjPNjjthj_ubjM)r_}r_(hX$:pkg-field:`library:exposed-modules`hj_jDjEhjPh}r_(UreftypeX pkg-fieldjRjSXexposed-modulesU refdomainXcabalr_h]h]U refexplicith]h]h]jVj jlXlibraryujPM h]r_j)r_}r_(hXlibrary:exposed-modulesh}r_(h]h]r_(j]j_Xcabal-pkg-fieldr_eh]h]h]uhj_h]r_hXlibrary:exposed-modulesr_r_}r_(hUhj_ubahjubaubhXS. With this there is no need to create complex build hooks for this poweruser case.r_r_}r_(hXS. With this there is no need to create complex build hooks for this poweruser case.jDNjPNjjthj_ubeubj )r_}r_(hUhjojDNhjnh}r_(h]h]h]h]h]Uentries]ujPNjjth]ubjljZ)r_}r_(hXdRight now :pkg-field:`executable:main-is` modules are not supported on :pkg-field:`autogen-modules`.hjojDjEhj]h}r_(h]h]h]h]h]ujPM jjth]r_(hX Right now r_r_}r_(hX Right now jDNjPNjjthj_ubjM)r_}r_(hX:pkg-field:`executable:main-is`hj_jDjEhjPh}r_(UreftypeX pkg-fieldjRjSXmain-isU refdomainXcabalr_h]h]U refexplicith]h]h]jVj jlX executableujPM h]r_j)r_}r_(hXexecutable:main-ish}r_(h]h]r_(j]j_Xcabal-pkg-fieldr_eh]h]h]uhj_h]r_hXexecutable:main-isr_r_}r_(hUhj_ubahjubaubhX modules are not supported on r_r_}r_(hX modules are not supported on jDNjPNjjthj_ubjM)r_}r_(hX:pkg-field:`autogen-modules`hj_jDjEhjPh}r_(UreftypeX pkg-fieldjRjSXautogen-modulesr_U refdomainXcabalr_h]h]U refexplicith]h]h]jVj jlj}ujPM h]r_j)r_}r_(hj_h}r_(h]h]r_(j]j_Xcabal-pkg-fieldr_eh]h]h]uhj_h]r_hXautogen-modulesr_r_}r_(hUhj_ubahjubaubhX.r_}r_(hX.jDNjPNjjthj_ubeubj)r_}r_(hXLibrary default-language: Haskell2010 build-depends: base exposed-modules: MyLibrary MyLibHelperModule other-modules: MyLibModule autogen-modules: MyLibHelperModule Executable Exe default-language: Haskell2010 main-is: Dummy.hs build-depends: base other-modules: MyExeModule MyExeHelperModule autogen-modules: MyExeHelperModulehjojDjEhjh}r_(jjh]h]h]h]h]ujPM# jjth]r_hXLibrary default-language: Haskell2010 build-depends: base exposed-modules: MyLibrary MyLibHelperModule other-modules: MyLibModule autogen-modules: MyLibHelperModule Executable Exe default-language: Haskell2010 main-is: Dummy.hs build-depends: base other-modules: MyExeModule MyExeHelperModule autogen-modules: MyExeHelperModuler_r_}r_(hUhj_ubaubj )r_}r_(hUhjojDjEhjnh}r_(h]h]h]h]h]Uentries]ujPNjjth]ubjo^eubjDNhj h}r_(j j Xcabalh]h]h]h]h]j X pkg-fieldr_j j_ujPNjjth]r_(j \jieubjDjEhjA h}r_(h]h]h]h]h]ujPNjjth]r`(j)r`}r`(hUhjijDNhjh}r`(h]h]h]h]h]ujPNjjth]r`j)r`}r`(hUhj`jDNhj.h}r`(h]h]h]h]h]ujPNjjth]r`(j )r `}r `(hj+hj`jDjEhj h}r `(h]h]h]h]h]ujPKh]r `hXSincer `r`}r`(hUhj `ubaubj)r`}r`(hU Cabal 2.0r`h}r`(h]h]h]h]h]uhj`h]r`jZ)r`}r`(hj`h}r`(h]h]h]h]h]uhj`h]r`hX Cabal 2.0r`r`}r`(hUhj`ubahj]ubahj-ubeubaubjfj@\eubjDjEhjdh}r`(h]h]h]h]h]j'j?\ujPNjjth]ubu}r`(j%hjDXG/home/refold/code/haskell/cabal-3.0/Cabal/doc/file-format-changelog.rstr`jFjG)r`}r `(hXOthis needs to be researched; there were only few changes between 1.12 and 1.18;r!`jDj`hjKh}r"`(U targetrefXfile-format-changelog:index-0r#`h]h]h]r$`jOah]ujPKh]r%`(h)r&`}r'`(hXTodor(`hj`jDj`hhh}r)`(h]h]h]h]h]ujPKh]r*`hXTodor+`r,`}r-`(hUhj&`ubaubjZ)r.`}r/`(hXOthis needs to be researched; there were only few changes between 1.12 and 1.18;r0`hj`jDj`hj]h}r1`(h]h]h]h]h]ujPKh]r2`hXOthis needs to be researched; there were only few changes between 1.12 and 1.18;r3`r4`}r5`(hj0`hj.`ubaubeubjcKjdje)r6`}r7`(hUhjn)r8`}r9`(hUhjn)r:`}r;`(hUhjs)r<`}r=`(jv}r>`(Xpvpr?`Xcabal-version: 2.4r@`NXcabal-version: 3.0rA`NXcabal-version: 2.2rB`NXcabal-version: 2.0rC`NXhaskellrD`XhooglerE`X0package description format specification historyrF`NXhscolourrG`XabnfrH`XbackpackrI`XhackagerJ`Xcabal-version: 1.18rK`NjfXcabal-version: 1.16rL`NXcpphsrM`XhappyrN`XalexrO`XhaddockrP`Xpackage versioning policyrQ`Xcabal-version: 1.20rR`NXcabal-version: 1.22rS`NXcabal-version: 1.12rT`NXcabal-version: 1.24rU`Nuj}rV`j]rW`jKNjKNjKKjK}rX`(j?`UpvprY`j@`Ucabal-version-2-4rZ`jA`Ucabal-version-3-0r[`jB`Ucabal-version-2-2r\`jC`Ucabal-version-2-0r]`jD`Uhaskellr^`jE`Uhoogler_`jF`U0package-description-format-specification-historyr``jG`Uhscolourra`jH`Uabnfrb`jI`Ubackpackrc`jJ`Uhackagerd`jK`Ucabal-version-1-18re`jfjgjL`Ucabal-version-1-16rf`jM`Ucpphsrg`jN`Uhappyrh`jO`Ualexri`jP`Uhaddockrj`jQ`Upackage-versioning-policyrk`jR`Ucabal-version-1-20rl`jS`Ucabal-version-1-22rm`jT`Ucabal-version-1-12rn`jU`Ucabal-version-1-24ro`uh]rp`(je)rq`}rr`(hX.. _spec-history:hj<`jDj`hjdh}rs`(h]h]h]h]h]j'jgujPKjj<`h]ubj:`ehUjeRNjfR}rt`jjR}ru`(Xpvp]rv`j!)rw`}rx`(hXPVP_j$KhjZ)ry`}rz`(hX`Support for new PVP_ caret-style version operator (``^>=``) added to :pkg-field:`build-depends`.hj )r{`}r|`(hXaSupport for new PVP_ caret-style version operator (``^>=``) added to :pkg-field:`build-depends`. hj )r}`}r~`(hUhjn)r`}r`(hUhj:`jDj`hjqh}r`(h]h]h]h]r`j]`ah]r`jC`aujPKjj<`h]r`(h)r`}r`(hX``cabal-version: 2.0``r`hj`jDj`hhh}r`(h]h]h]h]h]ujPKjj<`h]r`j)r`}r`(hj`h}r`(h]h]h]h]h]uhj`h]r`hXcabal-version: 2.0r`r`}r`(hXcabal-version: 2.0r`hj`ubahjubaubj}`eubjDj`hj h}r`(j X*h]h]h]h]h]ujPKjj<`h]r`(j )r`}r`(hXcNew :pkg-field:`library:signatures` and :pkg-field:`mixins` fields added for supporting Backpack_. hj}`jDj`hj h}r`(h]h]h]h]h]ujPNjj<`h]r`jZ)r`}r`(hXbNew :pkg-field:`library:signatures` and :pkg-field:`mixins` fields added for supporting Backpack_.hj`jDj`hj]h}r`(h]h]h]h]h]ujPKh]r`(hXNew r`r`}r`(hXNew hj`ubjM)r`}r`(hX:pkg-field:`library:signatures`hj`jDj`hjPh}r`(UreftypeX pkg-fieldjRjSX signaturesU refdomainXcabalr`h]h]U refexplicith]h]h]jVhjlXlibraryujPKh]r`j)r`}r`(hXlibrary:signaturesh}r`(h]h]r`(j]j`Xcabal-pkg-fieldr`eh]h]h]uhj`h]r`hXlibrary:signaturesr`r`}r`(hUhj`ubahjubaubhX and r`r`}r`(hX and hj`ubjM)r`}r`(hX:pkg-field:`mixins`hj`jDj`hjPh}r`(UreftypeX pkg-fieldjRjSXmixinsr`U refdomainXcabalr`h]h]U refexplicith]h]h]jVhjlNujPKh]r`j)r`}r`(hj`h}r`(h]h]r`(j]j`Xcabal-pkg-fieldr`eh]h]h]uhj`h]r`hXmixinsr`r`}r`(hUhj`ubahjubaubhX fields added for supporting r`r`}r`(hX fields added for supporting hj`ubj!)r`}r`(hX Backpack_j$Khj`hj%h}r`(UnameXBackpackr`j] X.https://ghc.haskell.org/trac/ghc/wiki/Backpackr`h]h]h]h]h]uh]r`hXBackpackr`r`}r`(hj`hj`ubaubhX.r`}r`(hX.hj`ubeubaubj )r`}r`(hXmNew :pkg-field:`build-tool-depends` field added for adding build-time dependencies of executable components. hj}`jDj`hj h}r`(h]h]h]h]h]ujPNjj<`h]r`jZ)r`}r`(hXlNew :pkg-field:`build-tool-depends` field added for adding build-time dependencies of executable components.hj`jDj`hj]h}r`(h]h]h]h]h]ujPKh]r`(hXNew r`r`}r`(hXNew hj`ubjM)r`}r`(hX:pkg-field:`build-tool-depends`hj`jDj`hjPh}r`(UreftypeX pkg-fieldjRjSXbuild-tool-dependsr`U refdomainXcabalr`h]h]U refexplicith]h]h]jVhjlNujPKh]r`j)r`}r`(hj`h}r`(h]h]r`(j]j`Xcabal-pkg-fieldr`eh]h]h]uhj`h]r`hXbuild-tool-dependsr`r`}r`(hUhj`ubahjubaubhXI field added for adding build-time dependencies of executable components.r`r`}r`(hXI field added for adding build-time dependencies of executable components.hj`ubeubaubj )r`}r`(hXsNew :pkg-field:`custom-setup:autogen-modules` field added for declaring modules which are generated at build time. hj}`jDj`hj h}r`(h]h]h]h]h]ujPNjj<`h]r`jZ)r`}r`(hXrNew :pkg-field:`custom-setup:autogen-modules` field added for declaring modules which are generated at build time.hj`jDj`hj]h}r`(h]h]h]h]h]ujPKh]r`(hXNew r`r`}r`(hXNew hj`ubjM)r`}r`(hX):pkg-field:`custom-setup:autogen-modules`hj`jDj`hjPh}r`(UreftypeX pkg-fieldjRjSXautogen-modulesU refdomainXcabalr`h]h]U refexplicith]h]h]jVhjlX custom-setupujPKh]r`j)r`}r`(hXcustom-setup:autogen-modulesh}r`(h]h]r`(j]j`Xcabal-pkg-fieldr`eh]h]h]uhj`h]r`hXcustom-setup:autogen-modulesrara}ra(hUhj`ubahjubaubhXE field added for declaring modules which are generated at build time.rara}ra(hXE field added for declaring modules which are generated at build time.hj`ubeubaubj{`j )ra}ra(hX;Add support for new :pkg-section:`foreign-library` stanza. hj}`jDj`hj h}ra(h]h]h]h]h]ujPNjj<`h]r ajZ)r a}r a(hX:Add support for new :pkg-section:`foreign-library` stanza.hjajDj`hj]h}r a(h]h]h]h]h]ujPKh]r a(hXAdd support for new rara}ra(hXAdd support for new hj aubjM)ra}ra(hX:pkg-section:`foreign-library`hj ajDj`hjPh}ra(UreftypeX pkg-sectionjRjSXforeign-libraryraU refdomainXcabalrah]h]U refexplicith]h]h]jVhujPKh]raj)ra}ra(hjah}ra(h]h]ra(j]jaXcabal-pkg-sectionraeh]h]h]uhjah]rahXforeign-libraryrara}ra(hUhjaubahjubaubhX stanza.r ar!a}r"a(hX stanza.hj aubeubaubj )r#a}r$a(hX;Add support for :ref:`internal library stanzas `. hj}`jDj`hj h}r%a(h]h]h]h]h]ujPNjj<`h]r&ajZ)r'a}r(a(hX:Add support for :ref:`internal library stanzas `.hj#ajDj`hj]h}r)a(h]h]h]h]h]ujPKh]r*a(hXAdd support for r+ar,a}r-a(hXAdd support for hj'aubjM)r.a}r/a(hX):ref:`internal library stanzas `hj'ajDj`hjPh}r0a(UreftypeXrefjRjSXsublibsU refdomainXstdr1ah]h]U refexplicith]h]h]jVhujPKh]r2ajX)r3a}r4a(hX"internal library stanzas h}r5a(h]h]r6a(j]j1aXstd-refr7aeh]h]h]uhj.ah]r8ahXinternal library stanzasr9ar:a}r;a(hUhj3aubahjcubaubhX.ra}r?a(hX+New CPP Macro ``CURRENT_PACKAGE_VERSION``. hj}`jDj`hj h}r@a(h]h]h]h]h]ujPNjj<`h]rAajZ)rBa}rCa(hX*New CPP Macro ``CURRENT_PACKAGE_VERSION``.hj>ajDj`hj]h}rDa(h]h]h]h]h]ujPKh]rEa(hXNew CPP Macro rFarGa}rHa(hXNew CPP Macro hjBaubj)rIa}rJa(hX``CURRENT_PACKAGE_VERSION``h}rKa(h]h]h]h]h]uhjBah]rLahXCURRENT_PACKAGE_VERSIONrMarNa}rOa(hXCURRENT_PACKAGE_VERSIONhjIaubahjubhX.rPa}rQa(hX.hjBaubeubaubeubjDj`hj h}rRa(h]h]h]h]h]ujPNjj<`h]rSajy`aubjDj`hj]h}rTa(h]h]h]h]h]ujPKh]rUa(hXSupport for new rVarWa}rXa(hXSupport for new hjy`ubjw`hX caret-style version operator (rYarZa}r[a(hX caret-style version operator (hjy`ubj)r\a}r]a(hX``^>=``h}r^a(h]h]h]h]h]uhjy`h]r_ahX^>=r`araa}rba(hX^>=hj\aubahjubhX ) added to rcarda}rea(hX ) added to hjy`ubjM)rfa}rga(hX:pkg-field:`build-depends`hjy`jDj`hjPh}rha(UreftypeX pkg-fieldjRjSX build-dependsriaU refdomainXcabalrjah]h]U refexplicith]h]h]jVhjlNujPKh]rkaj)rla}rma(hjiah}rna(h]h]roa(j]jjaXcabal-pkg-fieldrpaeh]h]h]uhjfah]rqahX build-dependsrrarsa}rta(hUhjlaubahjubaubhX.rua}rva(hX.hjy`ubeubhj%h}rwa(UnameXPVPrxaj] Xhttp://pvp.haskell.org/ryah]h]h]h]h]uh]rzahXPVPr{ar|a}r}a(hjxahjw`ubaubaXbackpack]r~aj`aujqV]rajsV]rajuV]rajo]rajj<`jxVNjyV]ra(j)ra}ra(hUh}ra(h]UlevelKh]h]Usourcej`h]h]UlineKUtypejKuh]rajZ)ra}ra(hUh}ra(h]h]h]h]h]uhjah]rahX2Hyperlink target "spec-history" is not referenced.rara}ra(hUhjaubahj]ubahjKubj)ra}ra(hUh}ra(h]UlevelKh]h]Usourcej`h]h]UtypejKuh]rajZ)ra}ra(hUh}ra(h]h]h]h]h]uhjah]rahX-Hyperlink target "index-0" is not referenced.rara}ra(hUhjaubahj]ubahjKubj)ra}ra(hUh}ra(h]UlevelKh]h]UsourcejXdoc/references.incrara}rabh]h]UlineKUtypejKuh]rajZ)ra}ra(hUh}ra(h]h]h]h]h]uhjah]rahX?Hyperlink target "package-versioning-policy" is not referenced.rara}ra(hUhjaubahj]ubahjKubj)ra}ra(hUh}ra(h]UlevelKh]h]Usourcejah]h]UlineKUtypejKuh]rajZ)ra}ra(hUh}ra(h]h]h]h]h]uhjah]rahX-Hyperlink target "hackage" is not referenced.rara}ra(hUhjaubahj]ubahjKubj)ra}ra(hUh}ra(h]UlevelKh]h]Usourcejah]h]UlineKUtypejKuh]rajZ)ra}ra(hUh}ra(h]h]h]h]h]uhjah]rahX-Hyperlink target "haskell" is not referenced.rara}ra(hUhjaubahj]ubahjKubj)ra}ra(hUh}ra(h]UlevelKh]h]Usourcejah]h]UlineKUtypejKuh]rajZ)ra}ra(hUh}ra(h]h]h]h]h]uhjah]rahX-Hyperlink target "haddock" is not referenced.rara}ra(hUhjaubahj]ubahjKubj)ra}ra(hUh}ra(h]UlevelKh]h]Usourcejah]h]UlineKUtypejKuh]rajZ)ra}ra(hUh}ra(h]h]h]h]h]uhjah]rahX*Hyperlink target "alex" is not referenced.rara}ra(hUhjaubahj]ubahjKubj)ra}ra(hUh}ra(h]UlevelKh]h]Usourcejah]h]UlineKUtypejKuh]rajZ)ra}ra(hUh}ra(h]h]h]h]h]uhjah]rahX+Hyperlink target "happy" is not referenced.rara}ra(hUhjaubahj]ubahjKubj)ra}ra(hUh}ra(h]UlevelKh]h]Usourcejah]h]UlineKUtypejKuh]rajZ)ra}ra(hUh}ra(h]h]h]h]h]uhjah]rahX,Hyperlink target "hoogle" is not referenced.rara}ra(hUhjaubahj]ubahjKubj)ra}ra(hUh}ra(h]UlevelKh]h]Usourcejah]h]UlineKUtypejKuh]rajZ)ra}ra(hUh}ra(h]h]h]h]h]uhjah]rahX.Hyperlink target "hscolour" is not referenced.rara}ra(hUhjaubahj]ubahjKubj)ra}ra(hUh}ra(h]UlevelKh]h]Usourcejah]h]UlineKUtypejKuh]rajZ)ra}ra(hUh}ra(h]h]h]h]h]uhjah]rahX+Hyperlink target "cpphs" is not referenced.rara}ra(hUhjaubahj]ubahjKubj)rb}rb(hUh}rb(h]UlevelKh]h]Usourcejah]h]UlineKUtypejKuh]rbjZ)rb}rb(hUh}rb(h]h]h]h]h]uhjbh]rbhX*Hyperlink target "abnf" is not referenced.rbr b}r b(hUhjbubahj]ubahjKubejVNjVKjV]r bj}r bjZ]r bjZ(jZorb}rb(jZKjZNjZjZjZjZNjZNjZjjZjZj ZNj!ZKj"Zj#Zj$ZNj%ZKj&ZNhNj'Zj(Zj)ZNj*Zj+Zj,Zj-ZKj.ZNj/ZKj0ZNj1Zj2Zj3ZKj4ZNj5ZNj6Zj7Zj8ZNj9ZNj:ZNj;ZjZj?Zj@ZNjAZjBZjCZNjDZUjEZjFZKjGZjHZjIZj`jJZNjKZNjLZjMZjNZjOZjPZjQZj,ZjRZjSZjTZjUZNjVZ]jWZjXZKjYZNubjZZKj[Z}rb(jY`je)rb}rb(hX .. _PVP: http://pvp.haskell.org/jKhjn)rb}rb(hUhj:`jDj`hjqh}rb(h]h]h]h]rbjn`ah]rbjT`aujPKjj<`h]rb(h)rb}rb(hX``cabal-version: 1.12``rbhjbjDj`hhh}rb(h]h]h]h]h]ujPKjj<`h]rbj)rb}rb(hjbh}r b(h]h]h]h]h]uhjbh]r!bhXcabal-version: 1.12r"br#b}r$b(hXcabal-version: 1.12r%bhjbubahjubaubj )r&b}r'b(hUhjbjDj`hj h}r(b(j X*h]h]h]h]h]ujPKjj<`h]r)bj )r*b}r+b(hXjChange syntax of :pkg-field:`cabal-version` to support the new recommended ``cabal-version: x.y`` style hj&bjDj`hj h}r,b(h]h]h]h]h]ujPNjj<`h]r-bjZ)r.b}r/b(hXgChange syntax of :pkg-field:`cabal-version` to support the new recommended ``cabal-version: x.y`` stylehj*bjDj`hj]h}r0b(h]h]h]h]h]ujPKh]r1b(hXChange syntax of r2br3b}r4b(hXChange syntax of hj.bubjM)r5b}r6b(hX:pkg-field:`cabal-version`hj.bjDj`hjPh}r7b(UreftypeX pkg-fieldjRjSX cabal-versionr8bU refdomainXcabalr9bh]h]U refexplicith]h]h]jVhjlNujPKh]r:bj)r;b}rb(j]j9bXcabal-pkg-fieldr?beh]h]h]uhj5bh]r@bhX cabal-versionrAbrBb}rCb(hUhj;bubahjubaubhX to support the new recommended rDbrEb}rFb(hX to support the new recommended hj.bubj)rGb}rHb(hX``cabal-version: x.y``h}rIb(h]h]h]h]h]uhj.bh]rJbhXcabal-version: x.yrKbrLb}rMb(hXcabal-version: x.yhjGbubahjubhX stylerNbrOb}rPb(hX stylehj.bubeubaubaubjdY)rQb}rRb(hX[-*- rst -*- This file contains commonly used link-references See also "extlinks" in conf.pyhjbjDjahjgYh}rSb(jjh]h]h]h]h]ujPKjj<`h]rTbhX[-*- rst -*- This file contains commonly used link-references See also "extlinks" in conf.pyrUbrVb}rWb(hUhjQbubaubje)rXb}rYb(hX .. _`Package Versioning Policy`:hjbjDjahjdh}rZb(h]h]h]h]h]j'jk`ujPKjj<`h]ubjbje)r[b}r\b(hX(.. _Hackage: http://hackage.haskell.org/hjbjDjahjdh}r]b(j] Xhttp://hackage.haskell.org/h]r^bjd`ah]h]h]h]r_bjJ`aujPKjj<`h]ubje)r`b}rab(hX$.. _Haskell: http://www.haskell.org/hjbjDjahjdh}rbb(j] Xhttp://www.haskell.org/h]rcbj^`ah]h]h]h]rdbjD`aujPKjj<`h]ubje)reb}rfb(hX,.. _Haddock: http://www.haskell.org/haddock/hjbjDjahjdh}rgb(j] Xhttp://www.haskell.org/haddock/h]rhbjj`ah]h]h]h]ribjP`aujPKjj<`h]ubje)rjb}rkb(hX&.. _Alex: http://www.haskell.org/alex/hjbjDjahjdh}rlb(j] Xhttp://www.haskell.org/alex/h]rmbji`ah]h]h]h]rnbjO`aujPKjj<`h]ubje)rob}rpb(hX(.. _Happy: http://www.haskell.org/happy/hjbjDjahjdh}rqb(j] Xhttp://www.haskell.org/happy/h]rrbjh`ah]h]h]h]rsbjN`aujPKjj<`h]ubje)rtb}rub(hX*.. _Hoogle: http://www.haskell.org/hoogle/hjbjDjahjdh}rvb(j] Xhttp://www.haskell.org/hoogle/h]rwbj_`ah]h]h]h]rxbjE`aujPKjj<`h]ubje)ryb}rzb(hX9.. _HsColour: http://www.cs.york.ac.uk/fp/darcs/hscolour/hjbjDjahjdh}r{b(j] X+http://www.cs.york.ac.uk/fp/darcs/hscolour/h]r|bja`ah]h]h]h]r}bjG`aujPKjj<`h]ubje)r~b}rb(hX-.. _cpphs: http://projects.haskell.org/cpphs/hjbjDjahjdh}rb(j] X"http://projects.haskell.org/cpphs/h]rbjg`ah]h]h]h]rbjM`aujPKjj<`h]ubje)rb}rb(hX-.. _ABNF: https://tools.ietf.org/html/rfc5234hjbjDjahjdh}rb(j] X#https://tools.ietf.org/html/rfc5234h]rbjb`ah]h]h]h]rbjH`aujPKjj<`h]ubje)rb}rb(hX<.. _Backpack: https://ghc.haskell.org/trac/ghc/wiki/BackpackjKhjbjDjahjdh}rb(j] j`h]rbjc`ah]h]h]h]rbjI`aujPKjj<`h]ubeubjDjaj}rbjQ`jXbshjdh}rb(j] jyah]rb(jY`jk`eh]h]h]h]rb(j?`jQ`eujPKjj<`j }rbjk`jXbsh]ubjf`j8`jn`jbj^`j`bj_`jtbje`jn)rb}rb(hUhj:`jDj`hjqh}rb(h]h]h]h]rbje`ah]rbjK`aujPKjj<`h]rb(h)rb}rb(hX``cabal-version: 1.18``rbhjbjDj`hhh}rb(h]h]h]h]h]ujPKjj<`h]rbj)rb}rb(hjbh}rb(h]h]h]h]h]uhjbh]rbhXcabal-version: 1.18rbrb}rb(hXcabal-version: 1.18rbhjbubahjubaubj )rb}rb(hUhjbjDj`hj h}rb(j X*h]h]h]h]h]ujPKjj<`h]rb(j )rb}rb(hXAdd support for new :pkg-field:`extra-doc-files` field for specifying extra file assets referenced by the Haddock documentation. hjbjDj`hj h}rb(h]h]h]h]h]ujPNjj<`h]rbjZ)rb}rb(hXAdd support for new :pkg-field:`extra-doc-files` field for specifying extra file assets referenced by the Haddock documentation.hjbjDj`hj]h}rb(h]h]h]h]h]ujPKh]rb(hXAdd support for new rbrb}rb(hXAdd support for new hjbubjM)rb}rb(hX:pkg-field:`extra-doc-files`hjbjDj`hjPh}rb(UreftypeX pkg-fieldjRjSXextra-doc-filesrbU refdomainXcabalrbh]h]U refexplicith]h]h]jVhjlNujPKh]rbj)rb}rb(hjbh}rb(h]h]rb(j]jbXcabal-pkg-fieldrbeh]h]h]uhjbh]rbhXextra-doc-filesrbrb}rb(hUhjbubahjubaubhXP field for specifying extra file assets referenced by the Haddock documentation.rbrb}rb(hXP field for specifying extra file assets referenced by the Haddock documentation.hjbubeubaubj )rb}rb(hX=New :pkg-field:`license` type ``AGPL`` and ``AGPL-3`` added. hjbjDj`hj h}rb(h]h]h]h]h]ujPNjj<`h]rbjZ)rb}rb(hX<New :pkg-field:`license` type ``AGPL`` and ``AGPL-3`` added.hjbjDj`hj]h}rb(h]h]h]h]h]ujPKh]rb(hXNew rbrb}rb(hXNew hjbubjM)rb}rb(hX:pkg-field:`license`hjbjDj`hjPh}rb(UreftypeX pkg-fieldjRjSXlicenserbU refdomainXcabalrbh]h]U refexplicith]h]h]jVhjlNujPKh]rbj)rb}rb(hjbh}rb(h]h]rb(j]jbXcabal-pkg-fieldrbeh]h]h]uhjbh]rbhXlicenserbrb}rb(hUhjbubahjubaubhX type rbrb}rb(hX type hjbubj)rb}rb(hX``AGPL``h}rb(h]h]h]h]h]uhjbh]rbhXAGPLrbrb}rb(hXAGPLhjbubahjubhX and rbrb}rb(hX and hjbubj)rb}rb(hX ``AGPL-3``h}rb(h]h]h]h]h]uhjbh]rbhXAGPL-3rbrb}rb(hXAGPL-3hjbubahjubhX added.rbrb}rb(hX added.hjbubeubaubj )rb}rb(hX_Add support for specifying a C/C++/obj-C source file in :pkg-field:`executable:main-is` field. hjbjDj`hj h}rb(h]h]h]h]h]ujPNjj<`h]rbjZ)rb}rb(hX^Add support for specifying a C/C++/obj-C source file in :pkg-field:`executable:main-is` field.hjbjDj`hj]h}rb(h]h]h]h]h]ujPKh]rb(hX8Add support for specifying a C/C++/obj-C source file in rbrc}rc(hX8Add support for specifying a C/C++/obj-C source file in hjbubjM)rc}rc(hX:pkg-field:`executable:main-is`hjbjDj`hjPh}rc(UreftypeX pkg-fieldjRjSXmain-isU refdomainXcabalrch]h]U refexplicith]h]h]jVhjlX executableujPKh]rcj)rc}rc(hXexecutable:main-ish}r c(h]h]r c(j]jcXcabal-pkg-fieldr ceh]h]h]uhjch]r chXexecutable:main-isr crc}rc(hUhjcubahjubaubhX field.rcrc}rc(hX field.hjbubeubaubj )rc}rc(hX3Add ``getSysconfDir`` operation to ``Paths_`` API. hjbjDj`hj h}rc(h]h]h]h]h]ujPNjj<`h]rcjZ)rc}rc(hX2Add ``getSysconfDir`` operation to ``Paths_`` API.hjcjDj`hj]h}rc(h]h]h]h]h]ujPKh]rc(hXAdd rcrc}rc(hXAdd hjcubj)rc}rc(hX``getSysconfDir``h}r c(h]h]h]h]h]uhjch]r!chX getSysconfDirr"cr#c}r$c(hX getSysconfDirhjcubahjubhX operation to r%cr&c}r'c(hX operation to hjcubj)r(c}r)c(hX ``Paths_``h}r*c(h]h]h]h]h]uhjch]r+chXPaths_r,cr-c}r.c(hXPaths_hj(cubahjubhX API.r/cr0c}r1c(hX API.hjcubeubaubeubeubjZ`jn)r2c}r3c(hUhj:`jDj`hjqh}r4c(h]h]h]h]r5cjZ`ah]r6cj@`aujPKQjj<`h]r7c(h)r8c}r9c(hX``cabal-version: 2.4``r:chj2cjDj`hhh}r;c(h]h]h]h]h]ujPKQjj<`h]rc(hj:ch}r?c(h]h]h]h]h]uhj8ch]r@chXcabal-version: 2.4rAcrBc}rCc(hXcabal-version: 2.4rDchj=cubahjubaubj )rEc}rFc(hUhj2cjDj`hj h}rGc(j X*h]h]h]h]h]ujPKSjj<`h]rHc(j )rIc}rJc(hX Wildcard matching has been expanded. All previous wildcard expressions are still valid; some will match strictly more files than before. Specifically: * Double-star (``**``) wildcards are now accepted for recursive matching immediately before the final slash; they must be followed by a filename wildcard (e.g., ``foo/**/*.html`` is valid; ``foo/**/bar/*.html`` and ``foo/**/**/*.html``, ``foo/**/bar.html`` are all invalid). As ``**`` was an error in globs before, this does not affect any existing ``.cabal`` files that previously worked. * Wildcards now match when the pattern's extensions form a suffix of the candidate file's extension, rather than requiring strict equality (e.g., previously ``*.html`` did not match ``foo.en.html``, but now it does). hjEcjDNhj h}rKc(h]h]h]h]h]ujPNjj<`h]rLc(jZ)rMc}rNc(hXWildcard matching has been expanded. All previous wildcard expressions are still valid; some will match strictly more files than before. Specifically:rOchjIcjDj`hj]h}rPc(h]h]h]h]h]ujPKSh]rQchXWildcard matching has been expanded. All previous wildcard expressions are still valid; some will match strictly more files than before. Specifically:rRcrSc}rTc(hjOchjMcubaubj )rUc}rVc(hUhjIcjDj`hj h}rWc(j X*h]h]h]h]h]ujPKWh]rXc(j )rYc}rZc(hXDouble-star (``**``) wildcards are now accepted for recursive matching immediately before the final slash; they must be followed by a filename wildcard (e.g., ``foo/**/*.html`` is valid; ``foo/**/bar/*.html`` and ``foo/**/**/*.html``, ``foo/**/bar.html`` are all invalid). As ``**`` was an error in globs before, this does not affect any existing ``.cabal`` files that previously worked. h}r[c(h]h]h]h]h]uhjUch]r\cjZ)r]c}r^c(hXDouble-star (``**``) wildcards are now accepted for recursive matching immediately before the final slash; they must be followed by a filename wildcard (e.g., ``foo/**/*.html`` is valid; ``foo/**/bar/*.html`` and ``foo/**/**/*.html``, ``foo/**/bar.html`` are all invalid). As ``**`` was an error in globs before, this does not affect any existing ``.cabal`` files that previously worked.hjYcjDj`hj]h}r_c(h]h]h]h]h]ujPKWh]r`c(hX Double-star (racrbc}rcc(hX Double-star (hj]cubj)rdc}rec(hX``**``h}rfc(h]h]h]h]h]uhj]ch]rgchX**rhcric}rjc(hX**hjdcubahjubhX) wildcards are now accepted for recursive matching immediately before the final slash; they must be followed by a filename wildcard (e.g., rkcrlc}rmc(hX) wildcards are now accepted for recursive matching immediately before the final slash; they must be followed by a filename wildcard (e.g., hj]cubj)rnc}roc(hX``foo/**/*.html``h}rpc(h]h]h]h]h]uhj]ch]rqchX foo/**/*.htmlrrcrsc}rtc(hX foo/**/*.htmlhjncubahjubhX is valid; rucrvc}rwc(hX is valid; hj]cubj)rxc}ryc(hX``foo/**/bar/*.html``h}rzc(h]h]h]h]h]uhj]ch]r{chXfoo/**/bar/*.htmlr|cr}c}r~c(hXfoo/**/bar/*.htmlhjxcubahjubhX and rcrc}rc(hX and hj]cubj)rc}rc(hX``foo/**/**/*.html``h}rc(h]h]h]h]h]uhj]ch]rchXfoo/**/**/*.htmlrcrc}rc(hXfoo/**/**/*.htmlhjcubahjubhX, rcrc}rc(hX, hj]cubj)rc}rc(hX``foo/**/bar.html``h}rc(h]h]h]h]h]uhj]ch]rchXfoo/**/bar.htmlrcrc}rc(hXfoo/**/bar.htmlhjcubahjubhX are all invalid). As rcrc}rc(hX are all invalid). As hj]cubj)rc}rc(hX``**``h}rc(h]h]h]h]h]uhj]ch]rchX**rcrc}rc(hX**hjcubahjubhXA was an error in globs before, this does not affect any existing rcrc}rc(hXA was an error in globs before, this does not affect any existing hj]cubj)rc}rc(hX ``.cabal``h}rc(h]h]h]h]h]uhj]ch]rchX.cabalrcrc}rc(hX.cabalhjcubahjubhX files that previously worked.rcrc}rc(hX files that previously worked.hj]cubeubahj ubj )rc}rc(hXWildcards now match when the pattern's extensions form a suffix of the candidate file's extension, rather than requiring strict equality (e.g., previously ``*.html`` did not match ``foo.en.html``, but now it does). h}rc(h]h]h]h]h]uhjUch]rcjZ)rc}rc(hXWildcards now match when the pattern's extensions form a suffix of the candidate file's extension, rather than requiring strict equality (e.g., previously ``*.html`` did not match ``foo.en.html``, but now it does).hjcjDj`hj]h}rc(h]h]h]h]h]ujPK_h]rc(hXWildcards now match when the pattern’s extensions form a suffix of the candidate file’s extension, rather than requiring strict equality (e.g., previously rcrc}rc(hXWildcards now match when the pattern's extensions form a suffix of the candidate file's extension, rather than requiring strict equality (e.g., previously hjcubj)rc}rc(hX ``*.html``h}rc(h]h]h]h]h]uhjch]rchX*.htmlrcrc}rc(hX*.htmlhjcubahjubhX did not match rcrc}rc(hX did not match hjcubj)rc}rc(hX``foo.en.html``h}rc(h]h]h]h]h]uhjch]rchX foo.en.htmlrcrc}rc(hX foo.en.htmlhjcubahjubhX, but now it does).rcrc}rc(hX, but now it does).hjcubeubahj ubeubeubj )rc}rc(hXRLicense fields use identifiers from SPDX License List version ``3.2 2018-07-10`` hjEcjDj`hj h}rc(h]h]h]h]h]ujPNjj<`h]rcjZ)rc}rc(hXPLicense fields use identifiers from SPDX License List version ``3.2 2018-07-10``hjcjDj`hj]h}rc(h]h]h]h]h]ujPKdh]rc(hX>License fields use identifiers from SPDX License List version rcrc}rc(hX>License fields use identifiers from SPDX License List version hjcubj)rc}rc(hX``3.2 2018-07-10``h}rc(h]h]h]h]h]uhjch]rchX3.2 2018-07-10rcrc}rc(hX3.2 2018-07-10hjcubahjubeubaubeubeubja`jybj]`j`j\`jn)rc}rc(hUhj:`jDj`hjqh}rc(h]h]h]h]rcj\`ah]rcjB`aujPKijj<`h]rc(h)rc}rc(hX``cabal-version: 2.2``rchjcjDj`hhh}rc(h]h]h]h]h]ujPKijj<`h]rcj)rc}rc(hjch}rc(h]h]h]h]h]uhjch]rchXcabal-version: 2.2rcrc}rc(hXcabal-version: 2.2rchjcubahjubaubj )rc}rc(hUhjcjDj`hj h}rc(j X*h]h]h]h]h]ujPKkjj<`h]rc(j )rc}rc(hXNNew :pkg-section:`common` stanzas and :pkg-field:`import` pseudo-field added. hjcjDj`hj h}rc(h]h]h]h]h]ujPNjj<`h]rcjZ)rc}rc(hXMNew :pkg-section:`common` stanzas and :pkg-field:`import` pseudo-field added.hjcjDj`hj]h}rc(h]h]h]h]h]ujPKkh]rc(hXNew rcrc}rc(hXNew hjcubjM)rc}rc(hX:pkg-section:`common`hjcjDj`hjPh}rc(UreftypeX pkg-sectionjRjSXcommonrdU refdomainXcabalrdh]h]U refexplicith]h]h]jVhujPKkh]rdj)rd}rd(hjdh}rd(h]h]rd(j]jdXcabal-pkg-sectionrdeh]h]h]uhjch]rdhXcommonr dr d}r d(hUhjdubahjubaubhX stanzas and r dr d}rd(hX stanzas and hjcubjM)rd}rd(hX:pkg-field:`import`hjcjDj`hjPh}rd(UreftypeX pkg-fieldjRjSXimportrdU refdomainXcabalrdh]h]U refexplicith]h]h]jVhjlNujPKkh]rdj)rd}rd(hjdh}rd(h]h]rd(j]jdXcabal-pkg-fieldrdeh]h]h]uhjdh]rdhXimportrdrd}rd(hUhjdubahjubaubhX pseudo-field added.rdrd}r d(hX pseudo-field added.hjcubeubaubj )r!d}r"d(hX6New :pkg-field:`library:virtual-modules` field added. hjcjDj`hj h}r#d(h]h]h]h]h]ujPNjj<`h]r$djZ)r%d}r&d(hX5New :pkg-field:`library:virtual-modules` field added.hj!djDj`hj]h}r'd(h]h]h]h]h]ujPKnh]r(d(hXNew r)dr*d}r+d(hXNew hj%dubjM)r,d}r-d(hX$:pkg-field:`library:virtual-modules`hj%djDj`hjPh}r.d(UreftypeX pkg-fieldjRjSXvirtual-modulesU refdomainXcabalr/dh]h]U refexplicith]h]h]jVhjlXlibraryujPKnh]r0dj)r1d}r2d(hXlibrary:virtual-modulesh}r3d(h]h]r4d(j]j/dXcabal-pkg-fieldr5deh]h]h]uhj,dh]r6dhXlibrary:virtual-modulesr7dr8d}r9d(hUhj1dubahjubaubhX field added.r:dr;d}rd(hXNew :pkg-field:`cxx-sources` and :pkg-field:`cxx-options` fields added for suppporting bundled foreign routines implemented in C++. hjcjDj`hj h}r?d(h]h]h]h]h]ujPNjj<`h]r@djZ)rAd}rBd(hXNew :pkg-field:`cxx-sources` and :pkg-field:`cxx-options` fields added for suppporting bundled foreign routines implemented in C++.hj=djDj`hj]h}rCd(h]h]h]h]h]ujPKph]rDd(hXNew rEdrFd}rGd(hXNew hjAdubjM)rHd}rId(hX:pkg-field:`cxx-sources`hjAdjDj`hjPh}rJd(UreftypeX pkg-fieldjRjSX cxx-sourcesrKdU refdomainXcabalrLdh]h]U refexplicith]h]h]jVhjlNujPKph]rMdj)rNd}rOd(hjKdh}rPd(h]h]rQd(j]jLdXcabal-pkg-fieldrRdeh]h]h]uhjHdh]rSdhX cxx-sourcesrTdrUd}rVd(hUhjNdubahjubaubhX and rWdrXd}rYd(hX and hjAdubjM)rZd}r[d(hX:pkg-field:`cxx-options`hjAdjDj`hjPh}r\d(UreftypeX pkg-fieldjRjSX cxx-optionsr]dU refdomainXcabalr^dh]h]U refexplicith]h]h]jVhjlNujPKph]r_dj)r`d}rad(hj]dh}rbd(h]h]rcd(j]j^dXcabal-pkg-fieldrddeh]h]h]uhjZdh]redhX cxx-optionsrfdrgd}rhd(hUhj`dubahjubaubhXJ fields added for suppporting bundled foreign routines implemented in C++.ridrjd}rkd(hXJ fields added for suppporting bundled foreign routines implemented in C++.hjAdubeubaubj )rld}rmd(hXqNew :pkg-field:`extra-bundled-libraries` field for specifying additional custom library objects to be installed. hjcjDj`hj h}rnd(h]h]h]h]h]ujPNjj<`h]rodjZ)rpd}rqd(hXpNew :pkg-field:`extra-bundled-libraries` field for specifying additional custom library objects to be installed.hjldjDj`hj]h}rrd(h]h]h]h]h]ujPKsh]rsd(hXNew rtdrud}rvd(hXNew hjpdubjM)rwd}rxd(hX$:pkg-field:`extra-bundled-libraries`hjpdjDj`hjPh}ryd(UreftypeX pkg-fieldjRjSXextra-bundled-librariesrzdU refdomainXcabalr{dh]h]U refexplicith]h]h]jVhjlNujPKsh]r|dj)r}d}r~d(hjzdh}rd(h]h]rd(j]j{dXcabal-pkg-fieldrdeh]h]h]uhjwdh]rdhXextra-bundled-librariesrdrd}rd(hUhj}dubahjubaubhXH field for specifying additional custom library objects to be installed.rdrd}rd(hXH field for specifying additional custom library objects to be installed.hjpdubeubaubj )rd}rd(hXEExtended ``if`` control structure with support for ``elif`` keyword. hjcjDj`hj h}rd(h]h]h]h]h]ujPNjj<`h]rdjZ)rd}rd(hXDExtended ``if`` control structure with support for ``elif`` keyword.hjdjDj`hj]h}rd(h]h]h]h]h]ujPKvh]rd(hX Extended rdrd}rd(hX Extended hjdubj)rd}rd(hX``if``h}rd(h]h]h]h]h]uhjdh]rdhXifrdrd}rd(hXifhjdubahjubhX$ control structure with support for rdrd}rd(hX$ control structure with support for hjdubj)rd}rd(hX``elif``h}rd(h]h]h]h]h]uhjdh]rdhXelifrdrd}rd(hXelifhjdubahjubhX keyword.rdrd}rd(hX keyword.hjdubeubaubj )rd}rd(hXsChanged default rules of :pkg-field:`build-type` field to infer "build-type:" for "Simple"/"Custom" automatically. hjcjDj`hj h}rd(h]h]h]h]h]ujPNjj<`h]rdjZ)rd}rd(hXrChanged default rules of :pkg-field:`build-type` field to infer "build-type:" for "Simple"/"Custom" automatically.hjdjDj`hj]h}rd(h]h]h]h]h]ujPKxh]rd(hXChanged default rules of rdrd}rd(hXChanged default rules of hjdubjM)rd}rd(hX:pkg-field:`build-type`hjdjDj`hjPh}rd(UreftypeX pkg-fieldjRjSX build-typerdU refdomainXcabalrdh]h]U refexplicith]h]h]jVhjlNujPKxh]rdj)rd}rd(hjdh}rd(h]h]rd(j]jdXcabal-pkg-fieldrdeh]h]h]uhjdh]rdhX build-typerdrd}rd(hUhjdubahjubaubhXN field to infer “build-type:” for “Simple”/”Custom” automatically.rdrd}rd(hXB field to infer "build-type:" for "Simple"/"Custom" automatically.hjdubeubaubj )rd}rd(hX:pkg-field:`license` field syntax changed to require SPDX expression syntax (using SPDX license list version ``3.0 2017-12-28``). hjcjDj`hj h}rd(h]h]h]h]h]ujPNjj<`h]rdjZ)rd}rd(hX:pkg-field:`license` field syntax changed to require SPDX expression syntax (using SPDX license list version ``3.0 2017-12-28``).hjdjDj`hj]h}rd(h]h]h]h]h]ujPK{h]rd(jM)rd}rd(hX:pkg-field:`license`hjdjDj`hjPh}rd(UreftypeX pkg-fieldjRjSXlicenserdU refdomainXcabalrdh]h]U refexplicith]h]h]jVhjlNujPK{h]rdj)rd}rd(hjdh}rd(h]h]rd(j]jdXcabal-pkg-fieldrdeh]h]h]uhjdh]rdhXlicenserdrd}rd(hUhjdubahjubaubhXY field syntax changed to require SPDX expression syntax (using SPDX license list version rdrd}rd(hXY field syntax changed to require SPDX expression syntax (using SPDX license list version hjdubj)rd}rd(hX``3.0 2017-12-28``h}rd(h]h]h]h]h]uhjdh]rdhX3.0 2017-12-28rdrd}rd(hX3.0 2017-12-28hjdubahjubhX).rdrd}rd(hX).hjdubeubaubj )rd}rd(hXyAllow redundant leading or trailing commas in package fields (which require commas) such as :pkg-field:`build-depends`. hjcjDj`hj h}rd(h]h]h]h]h]ujPNjj<`h]rdjZ)rd}rd(hXwAllow redundant leading or trailing commas in package fields (which require commas) such as :pkg-field:`build-depends`.hjdjDj`hj]h}rd(h]h]h]h]h]ujPK~h]rd(hX\Allow redundant leading or trailing commas in package fields (which require commas) such as rdrd}rd(hX\Allow redundant leading or trailing commas in package fields (which require commas) such as hjdubjM)rd}rd(hX:pkg-field:`build-depends`hjdjDj`hjPh}rd(UreftypeX pkg-fieldjRjSX build-dependsrdU refdomainXcabalrdh]h]U refexplicith]h]h]jVhjlNujPK~h]rdj)rd}rd(hjdh}rd(h]h]rd(j]jdXcabal-pkg-fieldrdeh]h]h]uhjdh]rdhX build-dependsrere}re(hUhjdubahjubaubhX.re}re(hX.hjdubeubaubeubeubjb`jbjc`jbjd`j[bUindex-0rejG)re}re(hj!`hj8`jDj`j}hjKh}re(jC\j#`h]r ejeah]h]h]r ejOah]ujPKjj<`j }r ejej6`sh]r e(h)r e}re(hj(`hjejDj`hhh}re(h]h]h]h]h]ujPKh]rehXTodorere}re(hUhj eubaubjZ)re}re(hj0`hjejDj`hj]h}re(h]h]h]h]h]ujPKh]rehXOthis needs to be researched; there were only few changes between 1.12 and 1.18;rere}re(hj0`hjeubaubeubjk`jbjgj:`jg`j~bjh`jobj``j:`jo`jn)re}re(hUhj:`jDj`hjqh}re(h]h]h]h]rejo`ah]rejU`aujPKjj<`h]r e(h)r!e}r"e(hX``cabal-version: 1.24``r#ehjejDj`hhh}r$e(h]h]h]h]h]ujPKjj<`h]r%ej)r&e}r'e(hj#eh}r(e(h]h]h]h]h]uhj!eh]r)ehXcabal-version: 1.24r*er+e}r,e(hXcabal-version: 1.24r-ehj&eubahjubaubj )r.e}r/e(hUhjejDj`hj h}r0e(j X*h]h]h]h]h]ujPKjj<`h]r1e(j )r2e}r3e(hXNew :pkg-section:`custom-setup` stanza and :pkg-field:`custom-setup:setup-depends` field added for specifying dependencies of custom ``Setup.hs`` scripts. hj.ejDj`hj h}r4e(h]h]h]h]h]ujPNjj<`h]r5ejZ)r6e}r7e(hXNew :pkg-section:`custom-setup` stanza and :pkg-field:`custom-setup:setup-depends` field added for specifying dependencies of custom ``Setup.hs`` scripts.hj2ejDj`hj]h}r8e(h]h]h]h]h]ujPKh]r9e(hXNew r:er;e}re(hX:pkg-section:`custom-setup`hj6ejDj`hjPh}r?e(UreftypeX pkg-sectionjRjSX custom-setupr@eU refdomainXcabalrAeh]h]U refexplicith]h]h]jVhujPKh]rBej)rCe}rDe(hj@eh}rEe(h]h]rFe(j]jAeXcabal-pkg-sectionrGeeh]h]h]uhj=eh]rHehX custom-setuprIerJe}rKe(hUhjCeubahjubaubhX stanza and rLerMe}rNe(hX stanza and hj6eubjM)rOe}rPe(hX':pkg-field:`custom-setup:setup-depends`hj6ejDj`hjPh}rQe(UreftypeX pkg-fieldjRjSX setup-dependsU refdomainXcabalrReh]h]U refexplicith]h]h]jVhjlX custom-setupujPKh]rSej)rTe}rUe(hXcustom-setup:setup-dependsh}rVe(h]h]rWe(j]jReXcabal-pkg-fieldrXeeh]h]h]uhjOeh]rYehXcustom-setup:setup-dependsrZer[e}r\e(hUhjTeubahjubaubhX3 field added for specifying dependencies of custom r]er^e}r_e(hX3 field added for specifying dependencies of custom hj6eubj)r`e}rae(hX ``Setup.hs``h}rbe(h]h]h]h]h]uhj6eh]rcehXSetup.hsrderee}rfe(hXSetup.hshj`eubahjubhX scripts.rgerhe}rie(hX scripts.hj6eubeubaubj )rje}rke(hXmCPP Macros ``VERSION_$pkgname`` and ``MIN_VERSION_$pkgname`` are now also generated for the current package. hj.ejDj`hj h}rle(h]h]h]h]h]ujPNjj<`h]rmejZ)rne}roe(hXlCPP Macros ``VERSION_$pkgname`` and ``MIN_VERSION_$pkgname`` are now also generated for the current package.hjjejDj`hj]h}rpe(h]h]h]h]h]ujPKh]rqe(hX CPP Macros rrerse}rte(hX CPP Macros hjneubj)rue}rve(hX``VERSION_$pkgname``h}rwe(h]h]h]h]h]uhjneh]rxehXVERSION_$pkgnameryerze}r{e(hXVERSION_$pkgnamehjueubahjubhX and r|er}e}r~e(hX and hjneubj)re}re(hX``MIN_VERSION_$pkgname``h}re(h]h]h]h]h]uhjneh]rehXMIN_VERSION_$pkgnamerere}re(hXMIN_VERSION_$pkgnamehjeubahjubhX0 are now also generated for the current package.rere}re(hX0 are now also generated for the current package.hjneubeubaubj )re}re(hXENew CPP Macros ``CURRENT_COMPONENT_ID`` and ``CURRENT_PACKAGE_KEY``. hj.ejDj`hj h}re(h]h]h]h]h]ujPNjj<`h]rejZ)re}re(hXDNew CPP Macros ``CURRENT_COMPONENT_ID`` and ``CURRENT_PACKAGE_KEY``.hjejDj`hj]h}re(h]h]h]h]h]ujPKh]re(hXNew CPP Macros rere}re(hXNew CPP Macros hjeubj)re}re(hX``CURRENT_COMPONENT_ID``h}re(h]h]h]h]h]uhjeh]rehXCURRENT_COMPONENT_IDrere}re(hXCURRENT_COMPONENT_IDhjeubahjubhX and rere}re(hX and hjeubj)re}re(hX``CURRENT_PACKAGE_KEY``h}re(h]h]h]h]h]uhjeh]rehXCURRENT_PACKAGE_KEYrere}re(hXCURRENT_PACKAGE_KEYhjeubahjubhX.re}re(hX.hjeubeubaubj )re}re(hXjNew :pkg-field:`extra-framework-dirs` field added for specifying extra locations to find OS X frameworks. hj.ejDj`hj h}re(h]h]h]h]h]ujPNjj<`h]rejZ)re}re(hXiNew :pkg-field:`extra-framework-dirs` field added for specifying extra locations to find OS X frameworks.hjejDj`hj]h}re(h]h]h]h]h]ujPKh]re(hXNew rere}re(hXNew hjeubjM)re}re(hX!:pkg-field:`extra-framework-dirs`hjejDj`hjPh}re(UreftypeX pkg-fieldjRjSXextra-framework-dirsreU refdomainXcabalreh]h]U refexplicith]h]h]jVhjlNujPKh]rej)re}re(hjeh}re(h]h]re(j]jeXcabal-pkg-fieldreeh]h]h]uhjeh]rehXextra-framework-dirsrere}re(hUhjeubahjubaubhXD field added for specifying extra locations to find OS X frameworks.rere}re(hXD field added for specifying extra locations to find OS X frameworks.hjeubeubaubeubeubjl`jn)re}re(hUhj:`jDj`hjqh}re(h]h]h]h]rejl`ah]rejR`aujPKjj<`h]re(h)re}re(hX``cabal-version: 1.20``rehjejDj`hhh}re(h]h]h]h]h]ujPKjj<`h]rej)re}re(hjeh}re(h]h]h]h]h]uhjeh]rehXcabal-version: 1.20rere}re(hXcabal-version: 1.20rehjeubahjubaubj )re}re(hUhjejDj`hj h}re(j X*h]h]h]h]h]ujPKjj<`h]re(j )re}re(hX_Add support for new :pkg-field:`license-files` field for declaring multiple license documents. hjejDj`hj h}re(h]h]h]h]h]ujPNjj<`h]rejZ)re}re(hX^Add support for new :pkg-field:`license-files` field for declaring multiple license documents.hjejDj`hj]h}re(h]h]h]h]h]ujPKh]re(hXAdd support for new rere}re(hXAdd support for new hjeubjM)re}re(hX:pkg-field:`license-files`hjejDj`hjPh}re(UreftypeX pkg-fieldjRjSX license-filesreU refdomainXcabalreh]h]U refexplicith]h]h]jVhjlNujPKh]rej)re}re(hjeh}re(h]h]re(j]jeXcabal-pkg-fieldreeh]h]h]uhjeh]rehX license-filesrere}re(hUhjeubahjubaubhX0 field for declaring multiple license documents.rere}re(hX0 field for declaring multiple license documents.hjeubeubaubj )re}re(hX/New CPP Macro ``MIN_TOOL_VERSION_$buildtool``. hjejDj`hj h}re(h]h]h]h]h]ujPNjj<`h]rejZ)re}re(hX.New CPP Macro ``MIN_TOOL_VERSION_$buildtool``.hjejDj`hj]h}re(h]h]h]h]h]ujPKh]re(hXNew CPP Macro rfrf}rf(hXNew CPP Macro hjeubj)rf}rf(hX``MIN_TOOL_VERSION_$buildtool``h}rf(h]h]h]h]h]uhjeh]rfhXMIN_TOOL_VERSION_$buildtoolrfrf}r f(hXMIN_TOOL_VERSION_$buildtoolhjfubahjubhX.r f}r f(hX.hjeubeubaubj )r f}r f(hX?New :pkg-field:`license` types ``BSD2`` and ``MPL-2.0`` added. hjejDj`hj h}rf(h]h]h]h]h]ujPNjj<`h]rfjZ)rf}rf(hX>New :pkg-field:`license` types ``BSD2`` and ``MPL-2.0`` added.hj fjDj`hj]h}rf(h]h]h]h]h]ujPKh]rf(hXNew rfrf}rf(hXNew hjfubjM)rf}rf(hX:pkg-field:`license`hjfjDj`hjPh}rf(UreftypeX pkg-fieldjRjSXlicenserfU refdomainXcabalrfh]h]U refexplicith]h]h]jVhjlNujPKh]rfj)rf}rf(hjfh}rf(h]h]r f(j]jfXcabal-pkg-fieldr!feh]h]h]uhjfh]r"fhXlicenser#fr$f}r%f(hUhjfubahjubaubhX types r&fr'f}r(f(hX types hjfubj)r)f}r*f(hX``BSD2``h}r+f(h]h]h]h]h]uhjfh]r,fhXBSD2r-fr.f}r/f(hXBSD2hj)fubahjubhX and r0fr1f}r2f(hX and hjfubj)r3f}r4f(hX ``MPL-2.0``h}r5f(h]h]h]h]h]uhjfh]r6fhXMPL-2.0r7fr8f}r9f(hXMPL-2.0hj3fubahjubhX added.r:fr;f}rf(hUhj:`jDj`hjqh}r?f(h]h]h]h]r@fjm`ah]rAfjS`aujPKjj<`h]rBf(h)rCf}rDf(hX``cabal-version: 1.22``rEfhj=fjDj`hhh}rFf(h]h]h]h]h]ujPKjj<`h]rGfj)rHf}rIf(hjEfh}rJf(h]h]h]h]h]uhjCfh]rKfhXcabal-version: 1.22rLfrMf}rNf(hXcabal-version: 1.22rOfhjHfubahjubaubj )rPf}rQf(hUhj=fjDj`hj h}rRf(j X*h]h]h]h]h]ujPKjj<`h]rSf(j )rTf}rUf(hX3New :pkg-field:`library:reexported-modules` field. hjPfjDj`hj h}rVf(h]h]h]h]h]ujPNjj<`h]rWfjZ)rXf}rYf(hX2New :pkg-field:`library:reexported-modules` field.hjTfjDj`hj]h}rZf(h]h]h]h]h]ujPKh]r[f(hXNew r\fr]f}r^f(hXNew hjXfubjM)r_f}r`f(hX':pkg-field:`library:reexported-modules`hjXfjDj`hjPh}raf(UreftypeX pkg-fieldjRjSXreexported-modulesU refdomainXcabalrbfh]h]U refexplicith]h]h]jVhjlXlibraryujPKh]rcfj)rdf}ref(hXlibrary:reexported-modulesh}rff(h]h]rgf(j]jbfXcabal-pkg-fieldrhfeh]h]h]uhj_fh]rifhXlibrary:reexported-modulesrjfrkf}rlf(hUhjdfubahjubaubhX field.rmfrnf}rof(hX field.hjXfubeubaubj )rpf}rqf(hXNSupport for ``-none`` version constraint added to :pkg-field:`build-depends`. hjPfjDj`hj h}rrf(h]h]h]h]h]ujPNjj<`h]rsfjZ)rtf}ruf(hXMSupport for ``-none`` version constraint added to :pkg-field:`build-depends`.hjpfjDj`hj]h}rvf(h]h]h]h]h]ujPKh]rwf(hX Support for rxfryf}rzf(hX Support for hjtfubj)r{f}r|f(hX ``-none``h}r}f(h]h]h]h]h]uhjtfh]r~fhX-nonerfrf}rf(hX-nonehj{fubahjubhX version constraint added to rfrf}rf(hX version constraint added to hjtfubjM)rf}rf(hX:pkg-field:`build-depends`hjtfjDj`hjPh}rf(UreftypeX pkg-fieldjRjSX build-dependsrfU refdomainXcabalrfh]h]U refexplicith]h]h]jVhjlNujPKh]rfj)rf}rf(hjfh}rf(h]h]rf(j]jfXcabal-pkg-fieldrfeh]h]h]uhjfh]rfhX build-dependsrfrf}rf(hUhjfubahjubaubhX.rf}rf(hX.hjtfubeubaubj )rf}rf(hX-New :pkg-field:`license` type ``ISC`` added. hjPfjDj`hj h}rf(h]h]h]h]h]ujPNjj<`h]rfjZ)rf}rf(hX,New :pkg-field:`license` type ``ISC`` added.hjfjDj`hj]h}rf(h]h]h]h]h]ujPKh]rf(hXNew rfrf}rf(hXNew hjfubjM)rf}rf(hX:pkg-field:`license`hjfjDj`hjPh}rf(UreftypeX pkg-fieldjRjSXlicenserfU refdomainXcabalrfh]h]U refexplicith]h]h]jVhjlNujPKh]rfj)rf}rf(hjfh}rf(h]h]rf(j]jfXcabal-pkg-fieldrfeh]h]h]uhjfh]rfhXlicenserfrf}rf(hUhjfubahjubaubhX type rfrf}rf(hX type hjfubj)rf}rf(hX``ISC``h}rf(h]h]h]h]h]uhjfh]rfhXISCrfrf}rf(hXISChjfubahjubhX added.rfrf}rf(hX added.hjfubeubaubeubeubji`jjbj[`jn)rf}rf(hUhj:`jDj`hjqh}rf(h]h]h]h]rfj[`ah]rfjA`aujPKjj<`h]rf(h)rf}rf(hX``cabal-version: 3.0``rfhjfjDj`hhh}rf(h]h]h]h]h]ujPKjj<`h]rfj)rf}rf(hjfh}rf(h]h]h]h]h]uhjfh]rfhXcabal-version: 3.0rfrf}rf(hXcabal-version: 3.0rfhjfubahjubaubj )rf}rf(hUhjfjDj`hj h}rf(j X*h]h]h]h]h]ujPKjj<`h]rf(j )rf}rf(hXAdded the :pkg-field:`extra-dynamic-library-flavours` field to specify non-trivial variants of dynamic flavours. It is :pkg-field:`extra-library-flavours` but for shared libraries. Mainly useful for GHC's RTS library. hjfjDj`hj h}rf(h]h]h]h]h]ujPNjj<`h]rfjZ)rf}rf(hXAdded the :pkg-field:`extra-dynamic-library-flavours` field to specify non-trivial variants of dynamic flavours. It is :pkg-field:`extra-library-flavours` but for shared libraries. Mainly useful for GHC's RTS library.hjfjDj`hj]h}rf(h]h]h]h]h]ujPKh]rf(hX Added the rfrf}rf(hX Added the hjfubjM)rf}rf(hX+:pkg-field:`extra-dynamic-library-flavours`hjfjDj`hjPh}rf(UreftypeX pkg-fieldjRjSXextra-dynamic-library-flavoursrfU refdomainXcabalrfh]h]U refexplicith]h]h]jVhjlNujPKh]rfj)rf}rf(hjfh}rf(h]h]rf(j]jfXcabal-pkg-fieldrfeh]h]h]uhjfh]rfhXextra-dynamic-library-flavoursrfrf}rf(hUhjfubahjubaubhXB field to specify non-trivial variants of dynamic flavours. It is rfrf}rf(hXB field to specify non-trivial variants of dynamic flavours. It is hjfubjM)rf}rf(hX#:pkg-field:`extra-library-flavours`hjfjDj`hjPh}rf(UreftypeX pkg-fieldjRjSXextra-library-flavoursrfU refdomainXcabalrfh]h]U refexplicith]h]h]jVhjlNujPKh]rfj)rf}rf(hjfh}rf(h]h]rf(j]jfXcabal-pkg-fieldrfeh]h]h]uhjfh]rfhXextra-library-flavoursrfrf}rf(hUhjfubahjubaubhXA but for shared libraries. Mainly useful for GHC’s RTS library.rgrg}rg(hX? but for shared libraries. Mainly useful for GHC's RTS library.hjfubeubaubj )rg}rg(hXFree text fields (e.g. :pkg-field:`description`) preserve empty lines and indentation. In other words, you don't need to add dots for blank lines. hjfjDj`hj h}rg(h]h]h]h]h]ujPNjj<`h]rgjZ)rg}rg(hXFree text fields (e.g. :pkg-field:`description`) preserve empty lines and indentation. In other words, you don't need to add dots for blank lines.hjgjDj`hj]h}r g(h]h]h]h]h]ujPKh]r g(hXFree text fields (e.g. r gr g}r g(hXFree text fields (e.g. hjgubjM)rg}rg(hX:pkg-field:`description`hjgjDj`hjPh}rg(UreftypeX pkg-fieldjRjSX descriptionrgU refdomainXcabalrgh]h]U refexplicith]h]h]jVhjlNujPKh]rgj)rg}rg(hjgh}rg(h]h]rg(j]jgXcabal-pkg-fieldrgeh]h]h]uhjgh]rghX descriptionrgrg}rg(hUhjgubahjubaubhXe) preserve empty lines and indentation. In other words, you don’t need to add dots for blank lines.rgrg}rg(hXc) preserve empty lines and indentation. In other words, you don't need to add dots for blank lines.hjgubeubaubj )r g}r!g(hXQLicense fields use identifiers from SPDX License List version ``3.6 2019-07-10`` hjfjDj`hj h}r"g(h]h]h]h]h]ujPNjj<`h]r#gjZ)r$g}r%g(hXPLicense fields use identifiers from SPDX License List version ``3.6 2019-07-10``hj gjDj`hj]h}r&g(h]h]h]h]h]ujPK h]r'g(hX>License fields use identifiers from SPDX License List version r(gr)g}r*g(hX>License fields use identifiers from SPDX License List version hj$gubj)r+g}r,g(hX``3.6 2019-07-10``h}r-g(h]h]h]h]h]uhj$gh]r.ghX3.6 2019-07-10r/gr0g}r1g(hX3.6 2019-07-10hj+gubahjubeubaubj )r2g}r3g(hXbRemove deprecated ``hs-source-dir``, :pkg-field:`extensions` and :pkg-field:`build-tools` fields. hjfjDj`hj h}r4g(h]h]h]h]h]ujPNjj<`h]r5gjZ)r6g}r7g(hXaRemove deprecated ``hs-source-dir``, :pkg-field:`extensions` and :pkg-field:`build-tools` fields.hj2gjDj`hj]h}r8g(h]h]h]h]h]ujPK#h]r9g(hXRemove deprecated r:gr;g}rg(hX``hs-source-dir``h}r?g(h]h]h]h]h]uhj6gh]r@ghX hs-source-dirrAgrBg}rCg(hX hs-source-dirhj=gubahjubhX, rDgrEg}rFg(hX, hj6gubjM)rGg}rHg(hX:pkg-field:`extensions`hj6gjDj`hjPh}rIg(UreftypeX pkg-fieldjRjSX extensionsrJgU refdomainXcabalrKgh]h]U refexplicith]h]h]jVhjlNujPK#h]rLgj)rMg}rNg(hjJgh}rOg(h]h]rPg(j]jKgXcabal-pkg-fieldrQgeh]h]h]uhjGgh]rRghX extensionsrSgrTg}rUg(hUhjMgubahjubaubhX and rVgrWg}rXg(hX and hj6gubjM)rYg}rZg(hX:pkg-field:`build-tools`hj6gjDj`hjPh}r[g(UreftypeX pkg-fieldjRjSX build-toolsr\gU refdomainXcabalr]gh]h]U refexplicith]h]h]jVhjlNujPK#h]r^gj)r_g}r`g(hj\gh}rag(h]h]rbg(j]j]gXcabal-pkg-fieldrcgeh]h]h]uhjYgh]rdghX build-toolsregrfg}rgg(hUhj_gubahjubaubhX fields.rhgrig}rjg(hX fields.hj6gubeubaubj )rkg}rlg(hXCommon stanzas are now allowed also in the beginnning of conditional sections. In other words, the following is valid :: library import deps if flag(foo) import foo-deps hjfjDj`hj h}rmg(h]h]h]h]h]ujPNjj<`h]rng(jZ)rog}rpg(hXvCommon stanzas are now allowed also in the beginnning of conditional sections. In other words, the following is validrqghjkgjDj`hj]h}rrg(h]h]h]h]h]ujPK&h]rsghXvCommon stanzas are now allowed also in the beginnning of conditional sections. In other words, the following is validrtgrug}rvg(hjqghjogubaubj@)rwg}rxg(hUh}ryg(h]h]h]h]h]uhjkgh]rzgj)r{g}r|g(hXAlibrary import deps if flag(foo) import foo-depshjwgjDj`hjh}r}g(jjh]h]h]h]h]ujPK+h]r~ghXAlibrary import deps if flag(foo) import foo-depsrgrg}rg(hUhj{gubaubahjCubeubj )rg}rg(hXxAllow redundant leading or trailing commas in package fields with optional commas, such as :pkg-field:`exposed-modules` hjfjDj`hj h}rg(h]h]h]h]h]ujPNjj<`h]rgjZ)rg}rg(hXwAllow redundant leading or trailing commas in package fields with optional commas, such as :pkg-field:`exposed-modules`hjgjDj`hj]h}rg(h]h]h]h]h]ujPK1h]rg(hX[Allow redundant leading or trailing commas in package fields with optional commas, such as rgrg}rg(hX[Allow redundant leading or trailing commas in package fields with optional commas, such as hjgubjM)rg}rg(hX:pkg-field:`exposed-modules`hjgjDj`hjPh}rg(UreftypeX pkg-fieldjRjSXexposed-modulesrgU refdomainXcabalrgh]h]U refexplicith]h]h]jVhjlNujPK1h]rgj)rg}rg(hjgh}rg(h]h]rg(j]jgXcabal-pkg-fieldrgeh]h]h]uhjgh]rghXexposed-modulesrgrg}rg(hUhjgubahjubaubeubaubj )rg}rg(hX[Require fields with optional commas to consistently omit or place commas between elements. hjfjDj`hj h}rg(h]h]h]h]h]ujPNjj<`h]rgjZ)rg}rg(hXZRequire fields with optional commas to consistently omit or place commas between elements.rghjgjDj`hj]h}rg(h]h]h]h]h]ujPK4h]rghXZRequire fields with optional commas to consistently omit or place commas between elements.rgrg}rg(hjghjgubaubaubj )rg}rg(hXChanged the behavior of :pkg-field:`extra-bundled-libraries` field. The naming convention of dynamic library files (e.g. generated by a custom build script) has changed. For library names prefixed with "C", the dynamic library file name(s) must be of the form `lib.*` instead of the old `libC-ghc.` hjfjDj`hj h}rg(h]h]h]h]h]ujPNjj<`h]rgjZ)rg}rg(hXChanged the behavior of :pkg-field:`extra-bundled-libraries` field. The naming convention of dynamic library files (e.g. generated by a custom build script) has changed. For library names prefixed with "C", the dynamic library file name(s) must be of the form `lib.*` instead of the old `libC-ghc.`hjgjDj`hj]h}rg(h]h]h]h]h]ujPK7h]rg(hXChanged the behavior of rgrg}rg(hXChanged the behavior of hjgubjM)rg}rg(hX$:pkg-field:`extra-bundled-libraries`hjgjDj`hjPh}rg(UreftypeX pkg-fieldjRjSXextra-bundled-librariesrgU refdomainXcabalrgh]h]U refexplicith]h]h]jVhjlNujPK7h]rgj)rg}rg(hjgh}rg(h]h]rg(j]jgXcabal-pkg-fieldrgeh]h]h]uhjgh]rghXextra-bundled-librariesrgrg}rg(hUhjgubahjubaubhX field. The naming convention of dynamic library files (e.g. generated by a custom build script) has changed. For library names prefixed with “C”, the dynamic library file name(s) must be of the form rgrg}rg(hX field. The naming convention of dynamic library files (e.g. generated by a custom build script) has changed. For library names prefixed with "C", the dynamic library file name(s) must be of the form hjgubj")rg}rg(hX,`lib.*`h}rg(h]h]h]h]h]uhjgh]rghX*lib.*rgrg}rg(hX*lib.*hjgubahj"ubhX instead of the old rgrg}rg(hX instead of the old hjgubj")rg}rg(hXJ`libC-ghc.`h}rg(h]h]h]h]h]uhjgh]rghXHlibC-ghc.rgrg}rg(hXHlibC-ghc.hjgubahj"ubeubaubj )rg}rg(hX{New set-notation syntax for ``==`` and ``^>=`` operators, see :pkg-field:`build-depends` field documentation for examples. hjfjDj`hj h}rg(h]h]h]h]h]ujPNjj<`h]rgjZ)rg}rg(hXzNew set-notation syntax for ``==`` and ``^>=`` operators, see :pkg-field:`build-depends` field documentation for examples.hjgjDj`hj]h}rg(h]h]h]h]h]ujPK=h]rg(hXNew set-notation syntax for rgrg}rg(hXNew set-notation syntax for hjgubj)rg}rg(hX``==``h}rg(h]h]h]h]h]uhjgh]rghX==rgrg}rg(hX==hjgubahjubhX and rgrg}rg(hX and hjgubj)rg}rg(hX``^>=``h}rg(h]h]h]h]h]uhjgh]rghX^>=rgrg}rg(hX^>=hjgubahjubhX operators, see rgrg}rg(hX operators, see hjgubjM)rg}rg(hX:pkg-field:`build-depends`hjgjDj`hjPh}rg(UreftypeX pkg-fieldjRjSX build-dependsrgU refdomainXcabalrgh]h]U refexplicith]h]h]jVhjlNujPK=h]rgj)rg}rg(hjgh}rg(h]h]rg(j]jgXcabal-pkg-fieldrgeh]h]h]uhjgh]rhhX build-dependsrhrh}rh(hUhjgubahjubaubhX" field documentation for examples.rhrh}rh(hX" field documentation for examples.hjgubeubaubj )rh}rh(hX3Allow more whitespace in :pkg-field:`mixins` field hjfjDj`hj h}r h(h]h]h]h]h]ujPNjj<`h]r hjZ)r h}r h(hX2Allow more whitespace in :pkg-field:`mixins` fieldhjhjDj`hj]h}r h(h]h]h]h]h]ujPK@h]rh(hXAllow more whitespace in rhrh}rh(hXAllow more whitespace in hj hubjM)rh}rh(hX:pkg-field:`mixins`hj hjDj`hjPh}rh(UreftypeX pkg-fieldjRjSXmixinsrhU refdomainXcabalrhh]h]U refexplicith]h]h]jVhjlNujPK@h]rhj)rh}rh(hjhh}rh(h]h]rh(j]jhXcabal-pkg-fieldrheh]h]h]uhjhh]rhhXmixinsrhrh}r h(hUhjhubahjubaubhX fieldr!hr"h}r#h(hX fieldhj hubeubaubj )r$h}r%h(hXWildcards are disallowed in :pkg-field:`pkgconfig-depends`, Yet the pkgconfig format is relaxed to accept e.g. versions like ``1.1.0h``. hjfjDj`hj h}r&h(h]h]h]h]h]ujPNjj<`h]r'hjZ)r(h}r)h(hXWildcards are disallowed in :pkg-field:`pkgconfig-depends`, Yet the pkgconfig format is relaxed to accept e.g. versions like ``1.1.0h``.hj$hjDj`hj]h}r*h(h]h]h]h]h]ujPKBh]r+h(hXWildcards are disallowed in r,hr-h}r.h(hXWildcards are disallowed in hj(hubjM)r/h}r0h(hX:pkg-field:`pkgconfig-depends`hj(hjDj`hjPh}r1h(UreftypeX pkg-fieldjRjSXpkgconfig-dependsr2hU refdomainXcabalr3hh]h]U refexplicith]h]h]jVhjlNujPKBh]r4hj)r5h}r6h(hj2hh}r7h(h]h]r8h(j]j3hXcabal-pkg-fieldr9heh]h]h]uhj/hh]r:hhXpkgconfig-dependsr;hrhr?h}r@h(hXC, Yet the pkgconfig format is relaxed to accept e.g. versions like hj(hubj)rAh}rBh(hX ``1.1.0h``h}rCh(h]h]h]h]h]uhj(hh]rDhhX1.1.0hrEhrFh}rGh(hX1.1.0hhjAhubahjubhX.rHh}rIh(hX.hj(hubeubaubj )rJh}rKh(hXNew :pkg-field:`autogen-includes` for specifying :pkg-field:`install-includes` which are autogenerated (e.g. by a ``configure`` script). hjfjDj`hj h}rLh(h]h]h]h]h]ujPNjj<`h]rMhjZ)rNh}rOh(hXNew :pkg-field:`autogen-includes` for specifying :pkg-field:`install-includes` which are autogenerated (e.g. by a ``configure`` script).hjJhjDj`hj]h}rPh(h]h]h]h]h]ujPKEh]rQh(hXNew rRhrSh}rTh(hXNew hjNhubjM)rUh}rVh(hX:pkg-field:`autogen-includes`hjNhjDj`hjPh}rWh(UreftypeX pkg-fieldjRjSXautogen-includesrXhU refdomainXcabalrYhh]h]U refexplicith]h]h]jVhjlNujPKEh]rZhj)r[h}r\h(hjXhh}r]h(h]h]r^h(j]jYhXcabal-pkg-fieldr_heh]h]h]uhjUhh]r`hhXautogen-includesrahrbh}rch(hUhj[hubahjubaubhX for specifying rdhreh}rfh(hX for specifying hjNhubjM)rgh}rhh(hX:pkg-field:`install-includes`hjNhjDj`hjPh}rih(UreftypeX pkg-fieldjRjSXinstall-includesrjhU refdomainXcabalrkhh]h]U refexplicith]h]h]jVhjlNujPKEh]rlhj)rmh}rnh(hjjhh}roh(h]h]rph(j]jkhXcabal-pkg-fieldrqheh]h]h]uhjghh]rrhhXinstall-includesrshrth}ruh(hUhjmhubahjubaubhX$ which are autogenerated (e.g. by a rvhrwh}rxh(hX$ which are autogenerated (e.g. by a hjNhubj)ryh}rzh(hX ``configure``h}r{h(h]h]h]h]h]uhjNhh]r|hhX configurer}hr~h}rh(hX configurehjyhubahjubhX script).rhrh}rh(hX script).hjNhubeubaubj )rh}rh(hXNew :pkg-field:`asm-sources` and :pkg-field:`asm-options` fields added for suppporting bundled foreign routines implemented in assembler. hjfjDj`hj h}rh(h]h]h]h]h]ujPNjj<`h]rhjZ)rh}rh(hXNew :pkg-field:`asm-sources` and :pkg-field:`asm-options` fields added for suppporting bundled foreign routines implemented in assembler.hjhjDj`hj]h}rh(h]h]h]h]h]ujPKHh]rh(hXNew rhrh}rh(hXNew hjhubjM)rh}rh(hX:pkg-field:`asm-sources`hjhjDj`hjPh}rh(UreftypeX pkg-fieldjRjSX asm-sourcesrhU refdomainXcabalrhh]h]U refexplicith]h]h]jVhjlNujPKHh]rhj)rh}rh(hjhh}rh(h]h]rh(j]jhXcabal-pkg-fieldrheh]h]h]uhjhh]rhhX asm-sourcesrhrh}rh(hUhjhubahjubaubhX and rhrh}rh(hX and hjhubjM)rh}rh(hX:pkg-field:`asm-options`hjhjDj`hjPh}rh(UreftypeX pkg-fieldjRjSX asm-optionsrhU refdomainXcabalrhh]h]U refexplicith]h]h]jVhjlNujPKHh]rhj)rh}rh(hjhh}rh(h]h]rh(j]jhXcabal-pkg-fieldrheh]h]h]uhjhh]rhhX asm-optionsrhrh}rh(hUhjhubahjubaubhXP fields added for suppporting bundled foreign routines implemented in assembler.rhrh}rh(hXP fields added for suppporting bundled foreign routines implemented in assembler.hjhubeubaubj )rh}rh(hXNew :pkg-field:`cmm-sources` and :pkg-field:`cmm-options` fields added for suppporting bundled foreign primops implemented in C--. hjfjDj`hj h}rh(h]h]h]h]h]ujPNjj<`h]rhjZ)rh}rh(hXNew :pkg-field:`cmm-sources` and :pkg-field:`cmm-options` fields added for suppporting bundled foreign primops implemented in C--.hjhjDj`hj]h}rh(h]h]h]h]h]ujPKLh]rh(hXNew rhrh}rh(hXNew hjhubjM)rh}rh(hX:pkg-field:`cmm-sources`hjhjDj`hjPh}rh(UreftypeX pkg-fieldjRjSX cmm-sourcesrhU refdomainXcabalrhh]h]U refexplicith]h]h]jVhjlNujPKLh]rhj)rh}rh(hjhh}rh(h]h]rh(j]jhXcabal-pkg-fieldrheh]h]h]uhjhh]rhhX cmm-sourcesrhrh}rh(hUhjhubahjubaubhX and rhrh}rh(hX and hjhubjM)rh}rh(hX:pkg-field:`cmm-options`hjhjDj`hjPh}rh(UreftypeX pkg-fieldjRjSX cmm-optionsrhU refdomainXcabalrhh]h]U refexplicith]h]h]jVhjlNujPKLh]rhj)rh}rh(hjhh}rh(h]h]rh(j]jhXcabal-pkg-fieldrheh]h]h]uhjhh]rhhX cmm-optionsrhrh}rh(hUhjhubahjubaubhXJ fields added for suppporting bundled foreign primops implemented in C–.rhrh}rh(hXI fields added for suppporting bundled foreign primops implemented in C--.hjhubeubaubeubeubjj`jebuj^}rhhjh}rh(h]h]h]Usourcej`h]h]uj^]rhj^}rh(jk`]rhjXbajg]rhjq`aje]rhj6`auubjDj`j}rhjfjq`shjqh}rh(h]h]h]h]rh(j``jgeh]rh(jF`jfeujPKjj<`j }rhjgjq`sh]rh(h)rh}rh(hhhj:`jDj`hhh}rh(h]h]h]h]h]ujPKjj<`h]rhhX0Package Description Format Specification Historyrhrh}rh(hhjDNjPNjj<`hjhubaubjZ)rh}rh(hX':ref:`pkg-desc` need to specify the version of the specification they need to be interpreted in via the :pkg-field:`cabal-version` declaration. The following list describes changes that occurred in each version of the cabal specification relative to the respective preceding *published* version.hj:`jDj`hj]h}rh(h]h]h]h]h]ujPKjj<`h]rh(jM)rh}rh(hX:ref:`pkg-desc`hjhjDj`hjPh}rh(UreftypeXrefjRjSXpkg-descrhU refdomainXstdrhh]h]U refexplicith]h]h]jVhujPKh]rhjX)rh}ri(hjhh}ri(h]h]ri(j]jhXstd-refrieh]h]h]uhjhh]rihXpkg-descriri}ri(hUhjhubahjcubaubhXY need to specify the version of the specification they need to be interpreted in via the rir i}r i(hXY need to specify the version of the specification they need to be interpreted in via the jDNjPNjj<`hjhubjM)r i}r i(hX:pkg-field:`cabal-version`hjhjDj`hjPh}r i(UreftypeX pkg-fieldjRjSX cabal-versionriU refdomainXcabalrih]h]U refexplicith]h]h]jVhjlNujPKh]rij)ri}ri(hjih}ri(h]h]ri(j]jiXcabal-pkg-fieldrieh]h]h]uhj ih]rihX cabal-versionriri}ri(hUhjiubahjubaubhX declaration. The following list describes changes that occurred in each version of the cabal specification relative to the respective preceding riri}ri(hX declaration. The following list describes changes that occurred in each version of the cabal specification relative to the respective preceding jDNjPNjj<`hjhubj)ri}ri(hX *published*h}ri(h]h]h]h]h]uhjhh]r ihX publishedr!ir"i}r#i(hX publishedhjiubahjubhX version.r$ir%i}r&i(hX version.jDNjPNjj<`hjhubeubj )r'i}r(i(hX`The sequence of specification version numbers is *not* contiguous because it's synchronised with the version of the ``Cabal`` library. As a consequence, only *even* versions are considered proper published versions of the specification as *odd* versions of the ``Cabal`` library denote unreleased development branches which have no stability guarantee.hj:`jDj`hj h}r)i(h]h]h]h]h]ujPNjj<`h]r*ijZ)r+i}r,i(hX`The sequence of specification version numbers is *not* contiguous because it's synchronised with the version of the ``Cabal`` library. As a consequence, only *even* versions are considered proper published versions of the specification as *odd* versions of the ``Cabal`` library denote unreleased development branches which have no stability guarantee.hj'ijDj`hj]h}r-i(h]h]h]h]h]ujPKh]r.i(hX1The sequence of specification version numbers is r/ir0i}r1i(hX1The sequence of specification version numbers is hj+iubj)r2i}r3i(hX*not*h}r4i(h]h]h]h]h]uhj+ih]r5ihXnotr6ir7i}r8i(hXnothj2iubahjubhX@ contiguous because it’s synchronised with the version of the r9ir:i}r;i(hX> contiguous because it's synchronised with the version of the hj+iubj)ri(h]h]h]h]h]uhj+ih]r?ihXCabalr@irAi}rBi(hXCabalhj`__ package provides a library for parsing ``plan.json`` files into a Haskell data structure as well as an example tool showing possible applications. .. todo:: Document JSON schema (including version history of schema) hj)ri}ri(hUhjn)ri}ri(hUhjn)ri}ri(hUhjs)ri}ri(jv}ri(X%configuring builds with cabal.projectriNX)how can i profile my library/application?riNX quickstartriNXis the first versionrijPXcmdoption--store-dirriX cabal v2-testriNXpackage versioning policyriXsolver configuration optionsriNXhoogleriXcabal v2-benchriNXhscolourriXcabal v2-buildriNXcabal v2-updateriNX%advanced global configuration optionsriNXbackpackriX cabal v2-runriNXcmdoption--project-fileriX cabal v2-execriNXhackageriXspecifying the local packagesriNXghc package environment fileriX cabal v2-replriNXcpphsriXcabal v2-configureriNXhappyriXcabal v2-installriNXhaskellriXcmdoption--builddirriXcabal v2-haddockriNX how it worksriNXpvpriX9specifying packages from remote version control locationsriNXcabal v2-cleanriNXdeveloping multiple packagesriNXabnfriXcabal v2-sdistriNXcommandsriNXthis section of the ghc manualriXalexriXcabal v2-freezeriNXglobal configuration optionsriNXwhere are my build products?riNXhaddockriXlocal versus external packagesriNXpackage configuration optionsriNXcachingriNXcookbookriNuj}rij]ri(j)ri}ri(hUhjn)ri}ri(hUhjijDjwihjqh}ri(h]h]h]h]riUlocal-versus-external-packagesriah]rijiaujPKojjih]ri(h)ri}ri(hXLocal versus external packagesrihjijDjwihhh}ri(h]h]h]h]h]ujPKojjih]rihXLocal versus external packagesriri}ri(hjijDNjPNjjihjiubaubjZ)ri}ri(hXOne of the primary innovations of Nix-style local builds is the distinction between local packages, which users edit and recompile and must be built per-project, versus external packages, which can be cached across projects. To be more precise:rihjijDjwihj]h}ri(h]h]h]h]h]ujPKqjjih]rihXOne of the primary innovations of Nix-style local builds is the distinction between local packages, which users edit and recompile and must be built per-project, versus external packages, which can be cached across projects. To be more precise:riri}ri(hjijDNjPNjjihjiubaubjf0)ri}ri(hUhjijDjwihji0h}ri(jk0U.h]h]h]jl0Uh]h]jm0jn0ujPKvjjih]rij )ri}ri(hXXA **local package** is one that is listed explicitly in the ``packages``, ``optional-packages`` or ``extra-packages`` field of a project. Usually, these refer to packages whose source code lives directly in a folder in your project (although, you can list an arbitrary Hackage package in ``extra-packages`` to force it to be treated as local). hjijDjwihj h}ri(h]h]h]h]h]ujPNjjih]rijZ)ri}ri(hXWA **local package** is one that is listed explicitly in the ``packages``, ``optional-packages`` or ``extra-packages`` field of a project. Usually, these refer to packages whose source code lives directly in a folder in your project (although, you can list an arbitrary Hackage package in ``extra-packages`` to force it to be treated as local).hjijDjwihj]h}ri(h]h]h]h]h]ujPKvh]ri(hXA riri}ri(hXA hjiubj)ri}ri(hX**local package**h}ri(h]h]h]h]h]uhjih]rihX local packageriri}ri(hX local packagehjiubahjubhX) is one that is listed explicitly in the rjrj}rj(hX) is one that is listed explicitly in the hjiubj)rj}rj(hX ``packages``h}rj(h]h]h]h]h]uhjih]rjhXpackagesrjrj}r j(hXpackageshjjubahjubhX, r jr j}r j(hX, hjiubj)r j}rj(hX``optional-packages``h}rj(h]h]h]h]h]uhjih]rjhXoptional-packagesrjrj}rj(hXoptional-packageshj jubahjubhX or rjrj}rj(hX or hjiubj)rj}rj(hX``extra-packages``h}rj(h]h]h]h]h]uhjih]rjhXextra-packagesrjrj}rj(hXextra-packageshjjubahjubhX field of a project. Usually, these refer to packages whose source code lives directly in a folder in your project (although, you can list an arbitrary Hackage package in rjrj}r j(hX field of a project. Usually, these refer to packages whose source code lives directly in a folder in your project (although, you can list an arbitrary Hackage package in hjiubj)r!j}r"j(hX``extra-packages``h}r#j(h]h]h]h]h]uhjih]r$jhXextra-packagesr%jr&j}r'j(hXextra-packageshj!jubahjubhX% to force it to be treated as local).r(jr)j}r*j(hX% to force it to be treated as local).hjiubeubaubaubjZ)r+j}r,j(hXOLocal packages, as well as the external packages (below) which depend on them, are built **inplace**, meaning that they are always built specifically for the project and are not installed globally. Inplace packages are not cached and not given unique hashes, which makes them suitable for packages which you want to edit and recompile.hjijDjwihj]h}r-j(h]h]h]h]h]ujPK}jjih]r.j(hXYLocal packages, as well as the external packages (below) which depend on them, are built r/jr0j}r1j(hXYLocal packages, as well as the external packages (below) which depend on them, are built jDNjPNjjihj+jubj)r2j}r3j(hX **inplace**h}r4j(h]h]h]h]h]uhj+jh]r5jhXinplacer6jr7j}r8j(hXinplacehj2jubahjubhX, meaning that they are always built specifically for the project and are not installed globally. Inplace packages are not cached and not given unique hashes, which makes them suitable for packages which you want to edit and recompile.r9jr:j}r;j(hX, meaning that they are always built specifically for the project and are not installed globally. Inplace packages are not cached and not given unique hashes, which makes them suitable for packages which you want to edit and recompile.jDNjPNjjihj+jubeubjf0)rj(jk0U.Ustartr?jKh]h]h]jl0Uh]h]jm0jn0ujPKjjih]r@jj )rAj}rBj(hXAn **external package** is any package which is not listed in the ``packages`` field. The source code for external packages is usually retrieved from Hackage. hj`__, where each component of a package is configured and built separately. This can massively speed up rebuilds of packages with lots of components (e.g., a package that defines multiple executables), as only one executable needs to be rebuilt. Packages that use Custom setup scripts are not currently built on a per-component basis.hjijDjwihj]h}rj(h]h]h]h]h]ujPKjjih]rj(hXkIn cabal-install 2.0 and above, Nix-style local builds also take advantage of a new Cabal library feature, rjrj}rj(hXkIn cabal-install 2.0 and above, Nix-style local builds also take advantage of a new Cabal library feature, jDNjPNjjihjjubj!)rj}rj(hXu`per-component builds `__h}rj(UnameXper-component buildsj] XZhttps://github.com/ezyang/ghc-proposals/blob/master/proposals/0000-componentized-cabal.rsth]h]h]h]h]uhjjh]rjhXper-component buildsrjrj}rj(hXper-component buildshjjubahj%ubhXJ, where each component of a package is configured and built separately. This can massively speed up rebuilds of packages with lots of components (e.g., a package that defines multiple executables), as only one executable needs to be rebuilt. Packages that use Custom setup scripts are not currently built on a per-component basis.rjrj}rj(hXJ, where each component of a package is configured and built separately. This can massively speed up rebuilds of packages with lots of components (e.g., a package that defines multiple executables), as only one executable needs to be rebuilt. Packages that use Custom setup scripts are not currently built on a per-component basis.jDNjPNjjihjjubeubeubjDjwihjKh}rj(h]UlevelKh]h]Usourcejwih]h]UlineKlUtypejKujPKjjih]rjjZ)rj}rj(hX:Enumerated list start value not ordinal-1: "2" (ordinal 2)h}rj(h]h]h]h]h]uhjih]rjhX>Enumerated list start value not ordinal-1: “2” (ordinal 2)rjrj}rj(hUhjjubahj]ubaubj)rj}rj(hUh}rj(h]UlevelKh]h]Usourcejwih]h]UlineMbUtypeUERRORrjuhj )rj}rj(hX%Components of a particular type: ``package:ctypes``, ``all:ctypes``: which specifies all components of the given type. Where valid ``ctypes`` are: - ``libs``, ``libraries``, - ``flibs``, ``foreign-libraries``, - ``exes``, ``executables``, - ``tests``, - ``benches``, ``benchmarks``. hj )rj}rj(hUhjn)rj}rj(hUhjn)rj}rj(hUhjijDjwihjqh}rj(h]h]h]h]rjUcommandsrjah]rjjiaujPMjjih]rj(h)rj}rj(hXCommandsrjhjjjDjwihhh}rj(h]h]h]h]h]ujPMjjih]rjhXCommandsrjrj}rj(hjjjDNjPNjjihjjubaubjZ)rj}rj(hXhWe now give an in-depth description of all the commands, describing the arguments and flags they accept.rjhjjjDjwihj]h}rj(h]h]h]h]h]ujPMjjih]rjhXhWe now give an in-depth description of all the commands, describing the arguments and flags they accept.rjrj}rj(hjjjDNjPNjjihjjubaubjn)rk}rk(hUhjjjDjwihjqh}rk(h]h]h]h]rkUcabal-v2-configurerkah]rkjiaujPMjjih]rk(h)rk}rk(hXcabal v2-configurer khjkjDjwihhh}r k(h]h]h]h]h]ujPMjjih]r khXcabal v2-configurer kr k}rk(hj kjDNjPNjjihjkubaubjZ)rk}rk(hXI``cabal v2-configure`` takes a set of arguments and writes a ``cabal.project.local`` file based on the flags passed to this command. ``cabal v2-configure FLAGS; cabal new-build`` is roughly equivalent to ``cabal v2-build FLAGS``, except that with ``new-configure`` the flags are persisted to all subsequent calls to ``v2-build``.hjkjDjwihj]h}rk(h]h]h]h]h]ujPMjjih]rk(j)rk}rk(hX``cabal v2-configure``h}rk(h]h]h]h]h]uhjkh]rkhXcabal v2-configurerkrk}rk(hXcabal v2-configurehjkubahjubhX' takes a set of arguments and writes a rkrk}rk(hX' takes a set of arguments and writes a jDNjPNjjihjkubj)rk}rk(hX``cabal.project.local``h}rk(h]h]h]h]h]uhjkh]r khXcabal.project.localr!kr"k}r#k(hXcabal.project.localhjkubahjubhX1 file based on the flags passed to this command. r$kr%k}r&k(hX1 file based on the flags passed to this command. jDNjPNjjihjkubj)r'k}r(k(hX-``cabal v2-configure FLAGS; cabal new-build``h}r)k(h]h]h]h]h]uhjkh]r*khX)cabal v2-configure FLAGS; cabal new-buildr+kr,k}r-k(hX)cabal v2-configure FLAGS; cabal new-buildhj'kubahjubhX is roughly equivalent to r.kr/k}r0k(hX is roughly equivalent to jDNjPNjjihjkubj)r1k}r2k(hX``cabal v2-build FLAGS``h}r3k(h]h]h]h]h]uhjkh]r4khXcabal v2-build FLAGSr5kr6k}r7k(hXcabal v2-build FLAGShj1kubahjubhX, except that with r8kr9k}r:k(hX, except that with jDNjPNjjihjkubj)r;k}rkhX new-configurer?kr@k}rAk(hX new-configurehj;kubahjubhX4 the flags are persisted to all subsequent calls to rBkrCk}rDk(hX4 the flags are persisted to all subsequent calls to jDNjPNjjihjkubj)rEk}rFk(hX ``v2-build``h}rGk(h]h]h]h]h]uhjkh]rHkhXv2-buildrIkrJk}rKk(hXv2-buildhjEkubahjubhX.rLk}rMk(hX.jDNjPNjjihjkubeubjZ)rNk}rOk(hX``cabal v2-configure`` is intended to be a convenient way to write out a ``cabal.project.local`` for simple configurations; e.g., ``cabal v2-configure -w ghc-7.8`` would ensure that all subsequent builds with ``cabal v2-build`` are performed with the compiler ``ghc-7.8``. For more complex configuration, we recommend writing the ``cabal.project.local`` file directly (or placing it in ``cabal.project``!)hjkjDjwihj]h}rPk(h]h]h]h]h]ujPM jjih]rQk(j)rRk}rSk(hX``cabal v2-configure``h}rTk(h]h]h]h]h]uhjNkh]rUkhXcabal v2-configurerVkrWk}rXk(hXcabal v2-configurehjRkubahjubhX3 is intended to be a convenient way to write out a rYkrZk}r[k(hX3 is intended to be a convenient way to write out a jDNjPNjjihjNkubj)r\k}r]k(hX``cabal.project.local``h}r^k(h]h]h]h]h]uhjNkh]r_khXcabal.project.localr`krak}rbk(hXcabal.project.localhj\kubahjubhX" for simple configurations; e.g., rckrdk}rek(hX" for simple configurations; e.g., jDNjPNjjihjNkubj)rfk}rgk(hX!``cabal v2-configure -w ghc-7.8``h}rhk(h]h]h]h]h]uhjNkh]rikhXcabal v2-configure -w ghc-7.8rjkrkk}rlk(hXcabal v2-configure -w ghc-7.8hjfkubahjubhX. would ensure that all subsequent builds with rmkrnk}rok(hX. would ensure that all subsequent builds with jDNjPNjjihjNkubj)rpk}rqk(hX``cabal v2-build``h}rrk(h]h]h]h]h]uhjNkh]rskhXcabal v2-buildrtkruk}rvk(hXcabal v2-buildhjpkubahjubhX! are performed with the compiler rwkrxk}ryk(hX! are performed with the compiler jDNjPNjjihjNkubj)rzk}r{k(hX ``ghc-7.8``h}r|k(h]h]h]h]h]uhjNkh]r}khXghc-7.8r~krk}rk(hXghc-7.8hjzkubahjubhX;. For more complex configuration, we recommend writing the rkrk}rk(hX;. For more complex configuration, we recommend writing the jDNjPNjjihjNkubj)rk}rk(hX``cabal.project.local``h}rk(h]h]h]h]h]uhjNkh]rkhXcabal.project.localrkrk}rk(hXcabal.project.localhjkubahjubhX! file directly (or placing it in rkrk}rk(hX! file directly (or placing it in jDNjPNjjihjNkubj)rk}rk(hX``cabal.project``h}rk(h]h]h]h]h]uhjNkh]rkhX cabal.projectrkrk}rk(hX cabal.projecthjkubahjubhX!)rkrk}rk(hX!)jDNjPNjjihjNkubeubjZ)rk}rk(hXB``cabal v2-configure`` inherits options from ``Cabal``. semantics:rkhjkjDjwihj]h}rk(h]h]h]h]h]ujPM(jjih]rk(j)rk}rk(hX``cabal v2-configure``h}rk(h]h]h]h]h]uhjkh]rkhXcabal v2-configurerkrk}rk(hXcabal v2-configurehjkubahjubhX inherits options from rkrk}rk(hX inherits options from jDNjPNjjihjkubj)rk}rk(hX ``Cabal``h}rk(h]h]h]h]h]uhjkh]rkhXCabalrkrk}rk(hXCabalhjkubahjubhX . semantics:rkrk}rk(hX . semantics:jDNjPNjjihjkubeubj )rk}rk(hUhjkjDjwihj h}rk(j X-h]h]h]h]h]ujPM*jjih]rk(j )rk}rk(hX,Any flag accepted by ``./Setup configure``. hjkjDjwihj h}rk(h]h]h]h]h]ujPNjjih]rkjZ)rk}rk(hX+Any flag accepted by ``./Setup configure``.hjkjDjwihj]h}rk(h]h]h]h]h]ujPM*h]rk(hXAny flag accepted by rkrk}rk(hXAny flag accepted by hjkubj)rk}rk(hX``./Setup configure``h}rk(h]h]h]h]h]uhjkh]rkhX./Setup configurerkrk}rk(hX./Setup configurehjkubahjubhX.rk}rk(hX.hjkubeubaubj )rk}rk(hXAny flag accepted by ``cabal configure`` beyond ``./Setup configure``, namely ``--cabal-lib-version``, ``--constraint``, ``--preference`` and ``--solver.`` hjkjDjwihj h}rk(h]h]h]h]h]ujPNjjih]rkjZ)rk}rk(hXAny flag accepted by ``cabal configure`` beyond ``./Setup configure``, namely ``--cabal-lib-version``, ``--constraint``, ``--preference`` and ``--solver.``hjkjDjwihj]h}rk(h]h]h]h]h]ujPM,h]rk(hXAny flag accepted by rkrk}rk(hXAny flag accepted by hjkubj)rk}rk(hX``cabal configure``h}rk(h]h]h]h]h]uhjkh]rkhXcabal configurerkrk}rk(hXcabal configurehjkubahjubhX beyond rkrk}rk(hX beyond hjkubj)rk}rk(hX``./Setup configure``h}rk(h]h]h]h]h]uhjkh]rkhX./Setup configurerkrk}rk(hX./Setup configurehjkubahjubhX , namely rkrk}rk(hX , namely hjkubj)rk}rk(hX``--cabal-lib-version``h}rk(h]h]h]h]h]uhjkh]rkhX--cabal-lib-versionrkrk}rk(hX--cabal-lib-versionhjkubahjubhX, rkrk}rk(hX, hjkubj)rk}rk(hX``--constraint``h}rk(h]h]h]h]h]uhjkh]rkhX --constraintrkrk}rk(hX --constrainthjkubahjubhX, rkrk}rk(hX, hjkubj)rk}rk(hX``--preference``h}rk(h]h]h]h]h]uhjkh]rkhX --preferencerlrl}rl(hX --preferencehjkubahjubhX and rlrl}rl(hX and hjkubj)rl}rl(hX ``--solver.``h}rl(h]h]h]h]h]uhjkh]r lhX --solver.r lr l}r l(hX --solver.hjlubahjubeubaubj )r l}rl(hXEAny flag accepted by ``cabal install`` beyond ``./Setup configure``. hjkjDjwihj h}rl(h]h]h]h]h]ujPNjjih]rljZ)rl}rl(hXDAny flag accepted by ``cabal install`` beyond ``./Setup configure``.hj ljDjwihj]h}rl(h]h]h]h]h]ujPM0h]rl(hXAny flag accepted by rlrl}rl(hXAny flag accepted by hjlubj)rl}rl(hX``cabal install``h}rl(h]h]h]h]h]uhjlh]rlhX cabal installrlrl}rl(hX cabal installhjlubahjubhX beyond rlr l}r!l(hX beyond hjlubj)r"l}r#l(hX``./Setup configure``h}r$l(h]h]h]h]h]uhjlh]r%lhX./Setup configurer&lr'l}r(l(hX./Setup configurehj"lubahjubhX.r)l}r*l(hX.hjlubeubaubj )r+l}r,l(hX*Any flag accepted by ``./Setup haddock``. hjkjDjwihj h}r-l(h]h]h]h]h]ujPNjjih]r.ljZ)r/l}r0l(hX)Any flag accepted by ``./Setup haddock``.hj+ljDjwihj]h}r1l(h]h]h]h]h]ujPM2h]r2l(hXAny flag accepted by r3lr4l}r5l(hXAny flag accepted by hj/lubj)r6l}r7l(hX``./Setup haddock``h}r8l(h]h]h]h]h]uhj/lh]r9lhX./Setup haddockr:lr;l}rl(hX.hj/lubeubaubeubjZ)r?l}r@l(hXThe options of all of these flags apply only to *local* packages in a project; this behavior is different than that of ``cabal install``, which applies flags to every package that would be built. The motivation for this is to avoid an innocuous addition to the flags of a package resulting in a rebuild of every package in the store (which might need to happen if a flag actually applied to every transitive dependency). To apply options to an external package, use a ``package`` stanza in a ``cabal.project`` file.hjkjDjwihj]h}rAl(h]h]h]h]h]ujPM4jjih]rBl(hX0The options of all of these flags apply only to rClrDl}rEl(hX0The options of all of these flags apply only to jDNjPNjjihj?lubj)rFl}rGl(hX*local*h}rHl(h]h]h]h]h]uhj?lh]rIlhXlocalrJlrKl}rLl(hXlocalhjFlubahjubhX@ packages in a project; this behavior is different than that of rMlrNl}rOl(hX@ packages in a project; this behavior is different than that of jDNjPNjjihj?lubj)rPl}rQl(hX``cabal install``h}rRl(h]h]h]h]h]uhj?lh]rSlhX cabal installrTlrUl}rVl(hX cabal installhjPlubahjubhXL, which applies flags to every package that would be built. The motivation for this is to avoid an innocuous addition to the flags of a package resulting in a rebuild of every package in the store (which might need to happen if a flag actually applied to every transitive dependency). To apply options to an external package, use a rWlrXl}rYl(hXL, which applies flags to every package that would be built. The motivation for this is to avoid an innocuous addition to the flags of a package resulting in a rebuild of every package in the store (which might need to happen if a flag actually applied to every transitive dependency). To apply options to an external package, use a jDNjPNjjihj?lubj)rZl}r[l(hX ``package``h}r\l(h]h]h]h]h]uhj?lh]r]lhXpackager^lr_l}r`l(hXpackagehjZlubahjubhX stanza in a ralrbl}rcl(hX stanza in a jDNjPNjjihj?lubj)rdl}rel(hX``cabal.project``h}rfl(h]h]h]h]h]uhj?lh]rglhX cabal.projectrhlril}rjl(hX cabal.projecthjdlubahjubhX file.rklrll}rml(hX file.jDNjPNjjihj?lubeubeubjn)rnl}rol(hUhjjjDjwihjqh}rpl(h]h]h]h]rqlUcabal-v2-updaterrlah]rsljiaujPM>jjih]rtl(h)rul}rvl(hXcabal v2-updaterwlhjnljDjwihhh}rxl(h]h]h]h]h]ujPM>jjih]rylhXcabal v2-updaterzlr{l}r|l(hjwljDNjPNjjihjulubaubjZ)r}l}r~l(hX``cabal v2-update`` updates the state of the package index. If the project contains multiple remote package repositories it will update the index of all of them (e.g. when using overlays).hjnljDjwihj]h}rl(h]h]h]h]h]ujPM@jjih]rl(j)rl}rl(hX``cabal v2-update``h}rl(h]h]h]h]h]uhj}lh]rlhXcabal v2-updaterlrl}rl(hXcabal v2-updatehjlubahjubhX updates the state of the package index. If the project contains multiple remote package repositories it will update the index of all of them (e.g. when using overlays).rlrl}rl(hX updates the state of the package index. If the project contains multiple remote package repositories it will update the index of all of them (e.g. when using overlays).jDNjPNjjihj}lubeubjZ)rl}rl(hXSome examples:rlhjnljDjwihj]h}rl(h]h]h]h]h]ujPMDjjih]rlhXSome examples:rlrl}rl(hjljDNjPNjjihjlubaubj)rl}rl(hXz$ cabal v2-update # update all remote repos $ cabal v2-update head.hackage # update only head.hackagehjnljDjwihjh}rl(jjh]h]h]h]h]ujPMHjjih]rlhXz$ cabal v2-update # update all remote repos $ cabal v2-update head.hackage # update only head.hackagerlrl}rl(hUhjlubaubeubjjjn)rl}rl(hUhjjjDjwihjqh}rl(h]h]h]h]rlU cabal-v2-replrlah]rljiaujPMjjih]rl(h)rl}rl(hX cabal v2-replrlhjljDjwihhh}rl(h]h]h]h]h]ujPMjjih]rlhX cabal v2-replrlrl}rl(hjljDNjPNjjihjlubaubjZ)rl}rl(hX``cabal v2-repl TARGET`` loads all of the modules of the target into GHCi as interpreted bytecode. In addition to ``cabal v2-build``'s flags, it takes an additional ``--repl-options`` flag.hjljDjwihj]h}rl(h]h]h]h]h]ujPMjjih]rl(j)rl}rl(hX``cabal v2-repl TARGET``h}rl(h]h]h]h]h]uhjlh]rlhXcabal v2-repl TARGETrlrl}rl(hXcabal v2-repl TARGEThjlubahjubhXZ loads all of the modules of the target into GHCi as interpreted bytecode. In addition to rlrl}rl(hXZ loads all of the modules of the target into GHCi as interpreted bytecode. In addition to jDNjPNjjihjlubj)rl}rl(hX``cabal v2-build``h}rl(h]h]h]h]h]uhjlh]rlhXcabal v2-buildrlrl}rl(hXcabal v2-buildhjlubahjubhX#’s flags, it takes an additional rlrl}rl(hX!'s flags, it takes an additional jDNjPNjjihjlubj)rl}rl(hX``--repl-options``h}rl(h]h]h]h]h]uhjlh]rlhX--repl-optionsrlrl}rl(hX--repl-optionshjlubahjubhX flag.rlrl}rl(hX flag.jDNjPNjjihjlubeubjZ)rl}rl(hXTo avoid ``ghci`` specific flags from triggering unneeded global rebuilds these flags are now stripped from the internal configuration. As a result ``--ghc-options`` will no longer (reliably) work to pass flags to ``ghci`` (or other repls). Instead, you should use the new ``--repl-options`` flag to specify these options to the invoked repl. (This flag also works on ``cabal repl`` and ``Setup repl`` on sufficiently new versions of Cabal.)hjljDjwihj]h}rl(h]h]h]h]h]ujPMjjih]rl(hX To avoid rlrl}rl(hX To avoid jDNjPNjjihjlubj)rl}rl(hX``ghci``h}rl(h]h]h]h]h]uhjlh]rlhXghcirlrl}rl(hXghcihjlubahjubhX specific flags from triggering unneeded global rebuilds these flags are now stripped from the internal configuration. As a result rlrl}rl(hX specific flags from triggering unneeded global rebuilds these flags are now stripped from the internal configuration. As a result jDNjPNjjihjlubj)rl}rl(hX``--ghc-options``h}rl(h]h]h]h]h]uhjlh]rlhX --ghc-optionsrlrl}rl(hX --ghc-optionshjlubahjubhX1 will no longer (reliably) work to pass flags to rlrl}rl(hX1 will no longer (reliably) work to pass flags to jDNjPNjjihjlubj)rl}rl(hX``ghci``h}rl(h]h]h]h]h]uhjlh]rlhXghcirlrl}rl(hXghcihjlubahjubhX3 (or other repls). Instead, you should use the new rlrl}rl(hX3 (or other repls). Instead, you should use the new jDNjPNjjihjlubj)rl}rl(hX``--repl-options``h}rl(h]h]h]h]h]uhjlh]rlhX--repl-optionsrlrl}rl(hX--repl-optionshjlubahjubhXM flag to specify these options to the invoked repl. (This flag also works on rlrl}rl(hXM flag to specify these options to the invoked repl. (This flag also works on jDNjPNjjihjlubj)rl}rl(hX``cabal repl``h}rl(h]h]h]h]h]uhjlh]rlhX cabal replrlrl}rm(hX cabal replhjlubahjubhX and rmrm}rm(hX and jDNjPNjjihjlubj)rm}rm(hX``Setup repl``h}rm(h]h]h]h]h]uhjlh]rmhX Setup replrmr m}r m(hX Setup replhjmubahjubhX( on sufficiently new versions of Cabal.)r mr m}r m(hX( on sufficiently new versions of Cabal.)jDNjPNjjihjlubeubjZ)rm}rm(hXCurrently, it is not supported to pass multiple targets to ``v2-repl`` (``v2-repl`` will just successively open a separate GHCi session for each target.)hjljDjwihj]h}rm(h]h]h]h]h]ujPMjjih]rm(hX;Currently, it is not supported to pass multiple targets to rmrm}rm(hX;Currently, it is not supported to pass multiple targets to jDNjPNjjihjmubj)rm}rm(hX ``v2-repl``h}rm(h]h]h]h]h]uhjmh]rmhXv2-replrmrm}rm(hXv2-replhjmubahjubhX (rmrm}rm(hX (jDNjPNjjihjmubj)rm}r m(hX ``v2-repl``h}r!m(h]h]h]h]h]uhjmh]r"mhXv2-replr#mr$m}r%m(hXv2-replhjmubahjubhXF will just successively open a separate GHCi session for each target.)r&mr'm}r(m(hXF will just successively open a separate GHCi session for each target.)jDNjPNjjihjmubeubjZ)r)m}r*m(hXzIt also provides a way to experiment with libraries without needing to download them manually or to install them globally.r+mhjljDjwihj]h}r,m(h]h]h]h]h]ujPMjjih]r-mhXzIt also provides a way to experiment with libraries without needing to download them manually or to install them globally.r.mr/m}r0m(hj+mjDNjPNjjihj)mubaubjZ)r1m}r2m(hXThis command opens a REPL with the current default target loaded, and a version of the ``vector`` package matching that specification exposed.hjljDjwihj]h}r3m(h]h]h]h]h]ujPMjjih]r4m(hXWThis command opens a REPL with the current default target loaded, and a version of the r5mr6m}r7m(hXWThis command opens a REPL with the current default target loaded, and a version of the jDNjPNjjihj1mubj)r8m}r9m(hX ``vector``h}r:m(h]h]h]h]h]uhj1mh]r;mhXvectorrm(hXvectorhj8mubahjubhX- package matching that specification exposed.r?mr@m}rAm(hX- package matching that specification exposed.jDNjPNjjihj1mubeubj)rBm}rCm(hX:$ cabal v2-repl --build-depends "vector >= 0.12 && < 0.13"hjljDjwihjh}rDm(jjh]h]h]h]h]ujPMjjih]rEmhX:$ cabal v2-repl --build-depends "vector >= 0.12 && < 0.13"rFmrGm}rHm(hUhjBmubaubjZ)rIm}rJm(hXBoth of these commands do the same thing as the above, but only exposes ``base``, ``vector``, and the ``vector`` package's transitive dependencies even if the user is in a project context.hjljDjwihj]h}rKm(h]h]h]h]h]ujPMjjih]rLm(hXHBoth of these commands do the same thing as the above, but only exposes rMmrNm}rOm(hXHBoth of these commands do the same thing as the above, but only exposes jDNjPNjjihjImubj)rPm}rQm(hX``base``h}rRm(h]h]h]h]h]uhjImh]rSmhXbaserTmrUm}rVm(hXbasehjPmubahjubhX, rWmrXm}rYm(hX, jDNjPNjjihjImubj)rZm}r[m(hX ``vector``h}r\m(h]h]h]h]h]uhjImh]r]mhXvectorr^mr_m}r`m(hXvectorhjZmubahjubhX , and the ramrbm}rcm(hX , and the jDNjPNjjihjImubj)rdm}rem(hX ``vector``h}rfm(h]h]h]h]h]uhjImh]rgmhXvectorrhmrim}rjm(hXvectorhjdmubahjubhXN package’s transitive dependencies even if the user is in a project context.rkmrlm}rmm(hXL package's transitive dependencies even if the user is in a project context.jDNjPNjjihjImubeubj)rnm}rom(hX$ cabal v2-repl --ignore-project --build-depends "vector >= 0.12 && < 0.13" $ cabal v2-repl --project='' --build-depends "vector >= 0.12 && < 0.13"hjljDjwihjh}rpm(jjh]h]h]h]h]ujPMjjih]rqmhX$ cabal v2-repl --ignore-project --build-depends "vector >= 0.12 && < 0.13" $ cabal v2-repl --project='' --build-depends "vector >= 0.12 && < 0.13"rrmrsm}rtm(hUhjnmubaubjZ)rum}rvm(hXThis command would add ``vector``, but not (for example) ``primitive``, because it only includes the packages specified on the command line (and ``base``, which cannot be excluded for technical reasons).hjljDjwihj]h}rwm(h]h]h]h]h]ujPMjjih]rxm(hXThis command would add rymrzm}r{m(hXThis command would add jDNjPNjjihjumubj)r|m}r}m(hX ``vector``h}r~m(h]h]h]h]h]uhjumh]rmhXvectorrmrm}rm(hXvectorhj|mubahjubhX, but not (for example) rmrm}rm(hX, but not (for example) jDNjPNjjihjumubj)rm}rm(hX ``primitive``h}rm(h]h]h]h]h]uhjumh]rmhX primitivermrm}rm(hX primitivehjmubahjubhXK, because it only includes the packages specified on the command line (and rmrm}rm(hXK, because it only includes the packages specified on the command line (and jDNjPNjjihjumubj)rm}rm(hX``base``h}rm(h]h]h]h]h]uhjumh]rmhXbasermrm}rm(hXbasehjmubahjubhX2, which cannot be excluded for technical reasons).rmrm}rm(hX2, which cannot be excluded for technical reasons).jDNjPNjjihjumubeubj)rm}rm(hX;$ cabal v2-repl --build-depends vector --no-transitive-depshjljDjwihjh}rm(jjh]h]h]h]h]ujPMjjih]rmhX;$ cabal v2-repl --build-depends vector --no-transitive-depsrmrm}rm(hUhjmubaubeubjn)rm}rm(hUhjjjDjwihjqh}rm(h]h]h]h]rmU cabal-v2-runrmah]rmjiaujPMjjih]rm(h)rm}rm(hX cabal v2-runrmhjmjDjwihhh}rm(h]h]h]h]h]ujPMjjih]rmhX cabal v2-runrmrm}rm(hjmjDNjPNjjihjmubaubjZ)rm}rm(hX``cabal v2-run [TARGET [ARGS]]`` runs the executable specified by the target, which can be a component, a package or can be left blank, as long as it can uniquely identify an executable within the project. Tests and benchmarks are also treated as executables.hjmjDjwihj]h}rm(h]h]h]h]h]ujPMjjih]rm(j)rm}rm(hX ``cabal v2-run [TARGET [ARGS]]``h}rm(h]h]h]h]h]uhjmh]rmhXcabal v2-run [TARGET [ARGS]]rmrm}rm(hXcabal v2-run [TARGET [ARGS]]hjmubahjubhX runs the executable specified by the target, which can be a component, a package or can be left blank, as long as it can uniquely identify an executable within the project. Tests and benchmarks are also treated as executables.rmrm}rm(hX runs the executable specified by the target, which can be a component, a package or can be left blank, as long as it can uniquely identify an executable within the project. Tests and benchmarks are also treated as executables.jDNjPNjjihjmubeubjZ)rm}rm(hXFSee `the v2-build section <#cabal-new-build>`__ for the target syntax.rmhjmjDjwihj]h}rm(h]h]h]h]h]ujPMjjih]rm(hXSee rmrm}rm(hXSee jDNjPNjjihjmubj!)rm}rm(hX+`the v2-build section <#cabal-new-build>`__h}rm(UnameXthe v2-build sectionj] X#cabal-new-buildh]h]h]h]h]uhjmh]rmhXthe v2-build sectionrmrm}rm(hXthe v2-build sectionhjmubahj%ubhX for the target syntax.rmrm}rm(hX for the target syntax.jDNjPNjjihjmubeubjZ)rm}rm(hXkExcept in the case of the empty target, the strings after it will be passed to the executable as arguments.rmhjmjDjwihj]h}rm(h]h]h]h]h]ujPMjjih]rmhXkExcept in the case of the empty target, the strings after it will be passed to the executable as arguments.rmrm}rm(hjmjDNjPNjjihjmubaubjZ)rm}rm(hXIf one of the arguments starts with ``-`` it will be interpreted as a cabal flag, so if you need to pass flags to the executable you have to separate them with ``--``.hjmjDjwihj]h}rm(h]h]h]h]h]ujPMjjih]rm(hX$If one of the arguments starts with rmrm}rm(hX$If one of the arguments starts with jDNjPNjjihjmubj)rm}rm(hX``-``h}rm(h]h]h]h]h]uhjmh]rmhX-rm}rm(hX-hjmubahjubhXw it will be interpreted as a cabal flag, so if you need to pass flags to the executable you have to separate them with rmrm}rm(hXw it will be interpreted as a cabal flag, so if you need to pass flags to the executable you have to separate them with jDNjPNjjihjmubj)rm}rm(hX``--``h}rm(h]h]h]h]h]uhjmh]rmhX--rmrm}rm(hX--hjmubahjubhX.rm}rm(hX.jDNjPNjjihjmubeubj)rm}rm(hX+$ cabal v2-run target -- -a -bcd --argumenthjmjDjwihjh}rm(jjh]h]h]h]h]ujPMjjih]rmhX+$ cabal v2-run target -- -a -bcd --argumentrmrm}rm(hUhjmubaubjZ)rm}rm(hXe'v2-run' also supports running script files that use a certain format. With a script that looks like:rmhjmjDjwihj]h}rm(h]h]h]h]h]ujPMjjih]rmhXi‘v2-run’ also supports running script files that use a certain format. With a script that looks like:rmrm}rm(hjmjDNjPNjjihjmubaubj)rn}rn(hX~#!/usr/bin/env cabal {- cabal: build-depends: base ^>= 4.11 , shelly ^>= 1.8.1 -} main :: IO () main = do ...hjmjDjwihjh}rn(jjh]h]h]h]h]ujPMjjih]rnhX~#!/usr/bin/env cabal {- cabal: build-depends: base ^>= 4.11 , shelly ^>= 1.8.1 -} main :: IO () main = do ...rnrn}rn(hUhjnubaubjZ)rn}rn(hXlIt can either be executed like any other script, using ``cabal`` as an interpreter, or through this command:hjmjDjwihj]h}r n(h]h]h]h]h]ujPMjjih]r n(hX7It can either be executed like any other script, using r nr n}r n(hX7It can either be executed like any other script, using jDNjPNjjihjnubj)rn}rn(hX ``cabal``h}rn(h]h]h]h]h]uhjnh]rnhXcabalrnrn}rn(hXcabalhjnubahjubhX, as an interpreter, or through this command:rnrn}rn(hX, as an interpreter, or through this command:jDNjPNjjihjnubeubj)rn}rn(hXW$ cabal v2-run script.hs $ cabal v2-run script.hs -- --arg1 # args are passed like thishjmjDjwihjh}rn(jjh]h]h]h]h]ujPMjjih]rnhXW$ cabal v2-run script.hs $ cabal v2-run script.hs -- --arg1 # args are passed like thisrnrn}rn(hUhjnubaubeubjn)rn}r n(hUhjjjDjwihjqh}r!n(h]h]h]h]r"nUcabal-v2-freezer#nah]r$njiaujPMjjih]r%n(h)r&n}r'n(hXcabal v2-freezer(nhjnjDjwihhh}r)n(h]h]h]h]h]ujPMjjih]r*nhXcabal v2-freezer+nr,n}r-n(hj(njDNjPNjjihj&nubaubjZ)r.n}r/n(hX``cabal v2-freeze`` writes out a **freeze file** which records all of the versions and flags which that are picked by the solver under the current index and flags. Default name of this file is ``cabal.project.freeze`` but in combination with a ``--project-file=my.project`` flag (see :ref:`project-file `) the name will be ``my.project.freeze``. A freeze file has the same syntax as ``cabal.project`` and looks something like this:hjnjDjwihj]h}r0n(h]h]h]h]h]ujPMjjih]r1n(j)r2n}r3n(hX``cabal v2-freeze``h}r4n(h]h]h]h]h]uhj.nh]r5nhXcabal v2-freezer6nr7n}r8n(hXcabal v2-freezehj2nubahjubhX writes out a r9nr:n}r;n(hX writes out a jDNjPNjjihj.nubj)rn(h]h]h]h]h]uhj.nh]r?nhX freeze filer@nrAn}rBn(hX freeze filehj`hj.njDjwihjPh}r\n(UreftypeXrefjRjSXcmdoption-project-fileU refdomainXstdr]nh]h]U refexplicith]h]h]jVhujPMh]r^njX)r_n}r`n(hX%project-file h}ran(h]h]rbn(j]j]nXstd-refrcneh]h]h]uhjZnh]rdnhX project-filerenrfn}rgn(hUhj_nubahjcubaubhX) the name will be rhnrin}rjn(hX) the name will be jDNjPNjjihj.nubj)rkn}rln(hX``my.project.freeze``h}rmn(h]h]h]h]h]uhj.nh]rnnhXmy.project.freezeronrpn}rqn(hXmy.project.freezehjknubahjubhX'. A freeze file has the same syntax as rrnrsn}rtn(hX'. A freeze file has the same syntax as jDNjPNjjihj.nubj)run}rvn(hX``cabal.project``h}rwn(h]h]h]h]h]uhj.nh]rxnhX cabal.projectrynrzn}r{n(hX cabal.projecthjunubahjubhX and looks something like this:r|nr}n}r~n(hX and looks something like this:jDNjPNjjihj.nubeubj%L)rn}rn(hUhjnjDjwihj(Lh}rn(UlangXcabalUlinenothresholdI9223372036854775807 h]h]h]h]h]ujPMjjih]ubj)rn}rn(hXconstraints: HTTP ==4000.3.3, HTTP +warp-tests -warn-as-error -network23 +network-uri -mtl1 -conduit10, QuickCheck ==2.9.1, QuickCheck +templatehaskell, -- etc...hjnjDjwihjh}rn(jjh]h]h]h]h]ujPMjjih]rnhXconstraints: HTTP ==4000.3.3, HTTP +warp-tests -warn-as-error -network23 +network-uri -mtl1 -conduit10, QuickCheck ==2.9.1, QuickCheck +templatehaskell, -- etc...rnrn}rn(hUhjnubaubjZ)rn}rn(hX>For end-user executables, it is recommended that you distribute the ``cabal.project.freeze`` file in your source repository so that all users see a consistent set of dependencies. For libraries, this is not recommended: users often need to build against different versions of libraries than what you developed against.hjnjDjwihj]h}rn(h]h]h]h]h]ujPMjjih]rn(hXDFor end-user executables, it is recommended that you distribute the rnrn}rn(hXDFor end-user executables, it is recommended that you distribute the jDNjPNjjihjnubj)rn}rn(hX``cabal.project.freeze``h}rn(h]h]h]h]h]uhjnh]rnhXcabal.project.freezernrn}rn(hXcabal.project.freezehjnubahjubhX file in your source repository so that all users see a consistent set of dependencies. For libraries, this is not recommended: users often need to build against different versions of libraries than what you developed against.rnrn}rn(hX file in your source repository so that all users see a consistent set of dependencies. For libraries, this is not recommended: users often need to build against different versions of libraries than what you developed against.jDNjPNjjihjnubeubeubjn)rn}rn(hUhjjjDjwihjqh}rn(h]h]h]h]rnUcabal-v2-benchrnah]rnjiaujPMjjih]rn(h)rn}rn(hXcabal v2-benchrnhjnjDjwihhh}rn(h]h]h]h]h]ujPMjjih]rnhXcabal v2-benchrnrn}rn(hjnjDNjPNjjihjnubaubjZ)rn}rn(hX``cabal v2-bench [TARGETS] [OPTIONS]`` runs the specified benchmarks (all the benchmarks in the current package by default), first ensuring they are up to date.hjnjDjwihj]h}rn(h]h]h]h]h]ujPMjjih]rn(j)rn}rn(hX&``cabal v2-bench [TARGETS] [OPTIONS]``h}rn(h]h]h]h]h]uhjnh]rnhX"cabal v2-bench [TARGETS] [OPTIONS]rnrn}rn(hX"cabal v2-bench [TARGETS] [OPTIONS]hjnubahjubhXz runs the specified benchmarks (all the benchmarks in the current package by default), first ensuring they are up to date.rnrn}rn(hXz runs the specified benchmarks (all the benchmarks in the current package by default), first ensuring they are up to date.jDNjPNjjihjnubeubeubjn)rn}rn(hUhjjjDjwihjqh}rn(h]h]h]h]rnU cabal-v2-testrnah]rnjiaujPMjjih]rn(h)rn}rn(hX cabal v2-testrnhjnjDjwihhh}rn(h]h]h]h]h]ujPMjjih]rnhX cabal v2-testrnrn}rn(hjnjDNjPNjjihjnubaubjZ)rn}rn(hX``cabal v2-test [TARGETS] [OPTIONS]`` runs the specified test suites (all the test suites in the current package by default), first ensuring they are up to date.hjnjDjwihj]h}rn(h]h]h]h]h]ujPMjjih]rn(j)rn}rn(hX%``cabal v2-test [TARGETS] [OPTIONS]``h}rn(h]h]h]h]h]uhjnh]rnhX!cabal v2-test [TARGETS] [OPTIONS]rnrn}rn(hX!cabal v2-test [TARGETS] [OPTIONS]hjnubahjubhX| runs the specified test suites (all the test suites in the current package by default), first ensuring they are up to date.rnrn}rn(hX| runs the specified test suites (all the test suites in the current package by default), first ensuring they are up to date.jDNjPNjjihjnubeubeubjn)rn}rn(hUhjjjDjwihjqh}rn(h]h]h]h]rnUcabal-v2-haddockrnah]rnjiaujPM jjih]rn(h)rn}rn(hXcabal v2-haddockrnhjnjDjwihhh}rn(h]h]h]h]h]ujPM jjih]rnhXcabal v2-haddockrnrn}rn(hjnjDNjPNjjihjnubaubjZ)rn}rn(hXq``cabal v2-haddock [FLAGS] [TARGET]`` builds Haddock documentation for the specified packages within the project.hjnjDjwihj]h}rn(h]h]h]h]h]ujPMjjih]rn(j)rn}rn(hX%``cabal v2-haddock [FLAGS] [TARGET]``h}rn(h]h]h]h]h]uhjnh]rnhX!cabal v2-haddock [FLAGS] [TARGET]rnrn}rn(hX!cabal v2-haddock [FLAGS] [TARGET]hjnubahjubhXL builds Haddock documentation for the specified packages within the project.rnrn}rn(hXL builds Haddock documentation for the specified packages within the project.jDNjPNjjihjnubeubjZ)rn}rn(hXIf a target is not a library :cfg-field:`haddock-benchmarks`, :cfg-field:`haddock-executables`, :cfg-field:`haddock-internal`, :cfg-field:`haddock-tests` will be implied as necessary.hjnjDjwihj]h}rn(h]h]h]h]h]ujPMjjih]rn(hXIf a target is not a library rnrn}rn(hXIf a target is not a library jDNjPNjjihjnubjM)rn}rn(hX:cfg-field:`haddock-benchmarks`hjnjDjwihjPh}rn(UreftypeX cfg-fieldjRjSXhaddock-benchmarksrnU refdomainXcabalrnh]h]U refexplicith]h]h]jVhUcabal:cfg-sectionrnNujPMh]rnj)rn}ro(hjnh}ro(h]h]ro(j]jnXcabal-cfg-fieldroeh]h]h]uhjnh]rohXhaddock-benchmarksroro}ro(hUhjnubahjubaubhX, ror o}r o(hX, r ojDNjPNjjihjnubjM)r o}r o(hX :cfg-field:`haddock-executables`hjnjDjwihjPh}ro(UreftypeX cfg-fieldjRjSXhaddock-executablesroU refdomainXcabalroh]h]U refexplicith]h]h]jVhjnNujPMh]roj)ro}ro(hjoh}ro(h]h]ro(j]joXcabal-cfg-fieldroeh]h]h]uhj oh]rohXhaddock-executablesroro}ro(hUhjoubahjubaubhX, roro}ro(hX, jDNjPNjjihjnubjM)ro}ro(hX:cfg-field:`haddock-internal`hjnjDjwihjPh}r o(UreftypeX cfg-fieldjRjSXhaddock-internalr!oU refdomainXcabalr"oh]h]U refexplicith]h]h]jVhjnNujPMh]r#oj)r$o}r%o(hj!oh}r&o(h]h]r'o(j]j"oXcabal-cfg-fieldr(oeh]h]h]uhjoh]r)ohXhaddock-internalr*or+o}r,o(hUhj$oubahjubaubhX, r-or.o}r/o(hj ohjnubjM)r0o}r1o(hX:cfg-field:`haddock-tests`hjnjDjwihjPh}r2o(UreftypeX cfg-fieldjRjSX haddock-testsr3oU refdomainXcabalr4oh]h]U refexplicith]h]h]jVhjnNujPMh]r5oj)r6o}r7o(hj3oh}r8o(h]h]r9o(j]j4oXcabal-cfg-fieldr:oeh]h]h]uhj0oh]r;ohX haddock-testsro(hUhj6oubahjubaubhX will be implied as necessary.r?or@o}rAo(hX will be implied as necessary.jDNjPNjjihjnubeubeubjn)rBo}rCo(hUhjjjDjwihjqh}rDo(h]h]h]h]rEoU cabal-v2-execrFoah]rGojiaujPMjjih]rHo(h)rIo}rJo(hX cabal v2-execrKohjBojDjwihhh}rLo(h]h]h]h]h]ujPMjjih]rMohX cabal v2-execrNorOo}rPo(hjKojDNjPNjjihjIoubaubjZ)rQo}rRo(hX``cabal v2-exec [FLAGS] [--] COMMAND [--] [ARGS]`` runs the specified command using the project's environment. That is, passing the right flags to compiler invocations and bringing the project's executables into scope.hjBojDjwihj]h}rSo(h]h]h]h]h]ujPMjjih]rTo(j)rUo}rVo(hX2``cabal v2-exec [FLAGS] [--] COMMAND [--] [ARGS]``h}rWo(h]h]h]h]h]uhjQoh]rXohX.cabal v2-exec [FLAGS] [--] COMMAND [--] [ARGS]rYorZo}r[o(hX.cabal v2-exec [FLAGS] [--] COMMAND [--] [ARGS]hjUoubahjubhX runs the specified command using the project’s environment. That is, passing the right flags to compiler invocations and bringing the project’s executables into scope.r\or]o}r^o(hX runs the specified command using the project's environment. That is, passing the right flags to compiler invocations and bringing the project's executables into scope.jDNjPNjjihjQoubeubeubjn)r_o}r`o(hUhjjjDjwihjqh}rao(h]h]h]h]rboUcabal-v2-installrcoah]rdojiaujPMjjih]reo(h)rfo}rgo(hXcabal v2-installrhohj_ojDjwihhh}rio(h]h]h]h]h]ujPMjjih]rjohXcabal v2-installrkorlo}rmo(hjhojDNjPNjjihjfoubaubjZ)rno}roo(hX``cabal v2-install [FLAGS] PACKAGES`` builds the specified packages and symlinks/copies their executables in ``installdir`` (usually ``~/.cabal/bin``).hj_ojDjwihj]h}rpo(h]h]h]h]h]ujPMjjih]rqo(j)rro}rso(hX%``cabal v2-install [FLAGS] PACKAGES``h}rto(h]h]h]h]h]uhjnoh]ruohX!cabal v2-install [FLAGS] PACKAGESrvorwo}rxo(hX!cabal v2-install [FLAGS] PACKAGEShjroubahjubhXH builds the specified packages and symlinks/copies their executables in ryorzo}r{o(hXH builds the specified packages and symlinks/copies their executables in jDNjPNjjihjnoubj)r|o}r}o(hX``installdir``h}r~o(h]h]h]h]h]uhjnoh]rohX installdirroro}ro(hX installdirhj|oubahjubhX (usually roro}ro(hX (usually jDNjPNjjihjnoubj)ro}ro(hX``~/.cabal/bin``h}ro(h]h]h]h]h]uhjnoh]rohX ~/.cabal/binroro}ro(hX ~/.cabal/binhjoubahjubhX).roro}ro(hX).jDNjPNjjihjnoubeubjZ)ro}ro(hXfFor example this command will build the latest ``cabal-install`` and symlink its ``cabal`` executable:hj_ojDjwihj]h}ro(h]h]h]h]h]ujPM"jjih]ro(hX/For example this command will build the latest roro}ro(hX/For example this command will build the latest jDNjPNjjihjoubj)ro}ro(hX``cabal-install``h}ro(h]h]h]h]h]uhjoh]rohX cabal-installroro}ro(hX cabal-installhjoubahjubhX and symlink its roro}ro(hX and symlink its jDNjPNjjihjoubj)ro}ro(hX ``cabal``h}ro(h]h]h]h]h]uhjoh]rohXcabalroro}ro(hXcabalhjoubahjubhX executable:roro}ro(hX executable:jDNjPNjjihjoubeubj)ro}ro(hX $ cabal v2-install cabal-installhj_ojDjwihjh}ro(jjh]h]h]h]h]ujPM'jjih]rohX $ cabal v2-install cabal-installroro}ro(hUhjoubaubjZ)ro}ro(hXIn addition, it's possible to use ``cabal v2-install`` to install components of a local project. For example, with an up-to-date Git clone of the Cabal repository, this command will build cabal-install HEAD and symlink the ``cabal`` executable:hj_ojDjwihj]h}ro(h]h]h]h]h]ujPM)jjih]ro(hX$In addition, it’s possible to use roro}ro(hX"In addition, it's possible to use jDNjPNjjihjoubj)ro}ro(hX``cabal v2-install``h}ro(h]h]h]h]h]uhjoh]rohXcabal v2-installroro}ro(hXcabal v2-installhjoubahjubhX to install components of a local project. For example, with an up-to-date Git clone of the Cabal repository, this command will build cabal-install HEAD and symlink the roro}ro(hX to install components of a local project. For example, with an up-to-date Git clone of the Cabal repository, this command will build cabal-install HEAD and symlink the jDNjPNjjihjoubj)ro}ro(hX ``cabal``h}ro(h]h]h]h]h]uhjoh]rohXcabalroro}ro(hXcabalhjoubahjubhX executable:roro}ro(hX executable:jDNjPNjjihjoubeubj)ro}ro(hX$ cabal v2-install exe:cabalhj_ojDjwihjh}ro(jjh]h]h]h]h]ujPM0jjih]rohX$ cabal v2-install exe:cabalroro}ro(hUhjoubaubjZ)ro}ro(hXYWhere symlinking is not possible (eg. on Windows), ``--install-method=copy`` can be used:hj_ojDjwihj]h}ro(h]h]h]h]h]ujPM2jjih]ro(hX3Where symlinking is not possible (eg. on Windows), roro}ro(hX3Where symlinking is not possible (eg. on Windows), jDNjPNjjihjoubj)ro}ro(hX``--install-method=copy``h}ro(h]h]h]h]h]uhjoh]rohX--install-method=copyroro}ro(hX--install-method=copyhjoubahjubhX can be used:roro}ro(hX can be used:jDNjPNjjihjoubeubj)ro}ro(hXE$ cabal v2-install exe:cabal --install-method=copy --installdir=~/binhj_ojDjwihjh}ro(jjh]h]h]h]h]ujPM7jjih]rohXE$ cabal v2-install exe:cabal --install-method=copy --installdir=~/binroro}ro(hUhjoubaubjZ)ro}ro(hXdNote that copied executables are not self-contained, since they might use data-files from the store.rohj_ojDjwihj]h}ro(h]h]h]h]h]ujPM9jjih]rohXdNote that copied executables are not self-contained, since they might use data-files from the store.roro}ro(hjojDNjPNjjihjoubaubjZ)ro}ro(hXIt is also possible to "install" libraries using the ``--lib`` flag. For example, this command will build the latest Cabal library and install it:hj_ojDjwihj]h}ro(h]h]h]h]h]ujPM<jjih]ro(hX9It is also possible to “install” libraries using the roro}ro(hX5It is also possible to "install" libraries using the jDNjPNjjihjoubj)ro}ro(hX ``--lib``h}ro(h]h]h]h]h]uhjoh]rohX--librorp}rp(hX--libhjoubahjubhXT flag. For example, this command will build the latest Cabal library and install it:rprp}rp(hXT flag. For example, this command will build the latest Cabal library and install it:jDNjPNjjihjoubeubj)rp}rp(hX$ cabal v2-install --lib Cabalhj_ojDjwihjh}rp(jjh]h]h]h]h]ujPMAjjih]rphX$ cabal v2-install --lib Cabalr pr p}r p(hUhjpubaubjZ)r p}r p(hXThis works by managing GHC environments. By default, it is writing to the global environment in ``~/.ghc/$ARCH-$OS-$GHCVER/environments/default``. ``v2-install`` provides the ``--package-env`` flag to control which of these environments is modified.hj_ojDjwihj]h}rp(h]h]h]h]h]ujPMCjjih]rp(hX`This works by managing GHC environments. By default, it is writing to the global environment in rprp}rp(hX`This works by managing GHC environments. By default, it is writing to the global environment in jDNjPNjjihj pubj)rp}rp(hX1``~/.ghc/$ARCH-$OS-$GHCVER/environments/default``h}rp(h]h]h]h]h]uhj ph]rphX-~/.ghc/$ARCH-$OS-$GHCVER/environments/defaultrprp}rp(hX-~/.ghc/$ARCH-$OS-$GHCVER/environments/defaulthjpubahjubhX. rprp}rp(hX. jDNjPNjjihj pubj)rp}rp(hX``v2-install``h}rp(h]h]h]h]h]uhj ph]r phX v2-installr!pr"p}r#p(hX v2-installhjpubahjubhX provides the r$pr%p}r&p(hX provides the jDNjPNjjihj pubj)r'p}r(p(hX``--package-env``h}r)p(h]h]h]h]h]uhj ph]r*phX --package-envr+pr,p}r-p(hX --package-envhj'pubahjubhX9 flag to control which of these environments is modified.r.pr/p}r0p(hX9 flag to control which of these environments is modified.jDNjPNjjihj pubeubjZ)r1p}r2p(hXGThis command will modify the environment file in the current directory:r3phj_ojDjwihj]h}r4p(h]h]h]h]h]ujPMHjjih]r5phXGThis command will modify the environment file in the current directory:r6pr7p}r8p(hj3pjDNjPNjjihj1pubaubj)r9p}r:p(hX.$ cabal v2-install --lib Cabal --package-env .hj_ojDjwihjh}r;p(jjh]h]h]h]h]ujPMLjjih]rp}r?p(hUhj9pubaubjZ)r@p}rAp(hXIThis command will modify the environment file in the ``~/foo`` directory:rBphj_ojDjwihj]h}rCp(h]h]h]h]h]ujPMNjjih]rDp(hX5This command will modify the environment file in the rEprFp}rGp(hX5This command will modify the environment file in the jDNjPNjjihj@pubj)rHp}rIp(hX ``~/foo``h}rJp(h]h]h]h]h]uhj@ph]rKphX~/foorLprMp}rNp(hX~/foohjHpubahjubhX directory:rOprPp}rQp(hX directory:jDNjPNjjihj@pubeubj)rRp}rSp(hX1$ cabal v2-install --lib Cabal --package-env foo/hj_ojDjwihjh}rTp(jjh]h]h]h]h]ujPMRjjih]rUphX1$ cabal v2-install --lib Cabal --package-env foo/rVprWp}rXp(hUhjRpubaubjZ)rYp}rZp(hXDo note that the results of the previous two commands will be overwritten by the use of other v2-style commands, so it is not recommended to use them inside a project directory.r[phj_ojDjwihj]h}r\p(h]h]h]h]h]ujPMTjjih]r]phXDo note that the results of the previous two commands will be overwritten by the use of other v2-style commands, so it is not recommended to use them inside a project directory.r^pr_p}r`p(hj[pjDNjPNjjihjYpubaubjZ)rap}rbp(hXZThis command will modify the environment in the "local.env" file in the current directory:rcphj_ojDjwihj]h}rdp(h]h]h]h]h]ujPMXjjih]rephX^This command will modify the environment in the “local.env” file in the current directory:rfprgp}rhp(hjcpjDNjPNjjihjapubaubj)rip}rjp(hX6$ cabal v2-install --lib Cabal --package-env local.envhj_ojDjwihjh}rkp(jjh]h]h]h]h]ujPM]jjih]rlphX6$ cabal v2-install --lib Cabal --package-env local.envrmprnp}rop(hUhjipubaubjZ)rpp}rqp(hX@This command will modify the ``myenv`` named global environment:rrphj_ojDjwihj]h}rsp(h]h]h]h]h]ujPM_jjih]rtp(hXThis command will modify the ruprvp}rwp(hXThis command will modify the jDNjPNjjihjppubj)rxp}ryp(hX ``myenv``h}rzp(h]h]h]h]h]uhjpph]r{phXmyenvr|pr}p}r~p(hXmyenvhjxpubahjubhX named global environment:rprp}rp(hX named global environment:jDNjPNjjihjppubeubj)rp}rp(hX2$ cabal v2-install --lib Cabal --package-env myenvhj_ojDjwihjh}rp(jjh]h]h]h]h]ujPMcjjih]rphX2$ cabal v2-install --lib Cabal --package-env myenvrprp}rp(hUhjpubaubjZ)rp}rp(hXIf you wish to create a named environment file in the current directory where the name does not contain an extension, you must reference it as ``./myenv``.hj_ojDjwihj]h}rp(h]h]h]h]h]ujPMejjih]rp(hXIf you wish to create a named environment file in the current directory where the name does not contain an extension, you must reference it as rprp}rp(hXIf you wish to create a named environment file in the current directory where the name does not contain an extension, you must reference it as jDNjPNjjihjpubj)rp}rp(hX ``./myenv``h}rp(h]h]h]h]h]uhjph]rphX./myenvrprp}rp(hX./myenvhjpubahjubhX.rp}rp(hX.jDNjPNjjihjpubeubjZ)rp}rp(hXYou can learn more about how to use these environments in `this section of the GHC manual `_.hj_ojDjwihj]h}rp(h]h]h]h]h]ujPMhjjih]rp(hX:You can learn more about how to use these environments in rprp}rp(hX:You can learn more about how to use these environments in jDNjPNjjihjpubj!)rp}rp(hX`this section of the GHC manual `_h}rp(UnameXthis section of the GHC manualj] Xbhttps://downloads.haskell.org/~ghc/latest/docs/html/users_guide/packages.html#package-environmentsrph]h]h]h]h]uhjph]rphXthis section of the GHC manualrprp}rp(hXthis section of the GHC manualhjpubahj%ubje)rp}rp(hXe jKhjphjdh}rp(Urefurijph]rpUthis-section-of-the-ghc-manualrpah]h]h]h]rpjiauh]ubhX.rp}rp(hX.jDNjPNjjihjpubeubeubjn)rp}rp(hUhjjjDjwihjqh}rp(h]h]h]h]rpUcabal-v2-cleanrpah]rpjiaujPMljjih]rp(h)rp}rp(hXcabal v2-cleanrphjpjDjwihhh}rp(h]h]h]h]h]ujPMljjih]rphXcabal v2-cleanrprp}rp(hjpjDNjPNjjihjpubaubjZ)rp}rp(hXt``cabal v2-clean [FLAGS]`` cleans up the temporary files and build artifacts stored in the ``dist-newstyle`` folder.hjpjDjwihj]h}rp(h]h]h]h]h]ujPMnjjih]rp(j)rp}rp(hX``cabal v2-clean [FLAGS]``h}rp(h]h]h]h]h]uhjph]rphXcabal v2-clean [FLAGS]rprp}rp(hXcabal v2-clean [FLAGS]hjpubahjubhXA cleans up the temporary files and build artifacts stored in the rprp}rp(hXA cleans up the temporary files and build artifacts stored in the jDNjPNjjihjpubj)rp}rp(hX``dist-newstyle``h}rp(h]h]h]h]h]uhjph]rphX dist-newstylerprp}rp(hX dist-newstylehjpubahjubhX folder.rprp}rp(hX folder.jDNjPNjjihjpubeubjZ)rp}rp(hX'By default, it removes the entire folder, but it can also spare the configuration and caches if the ``--save-config`` option is given, in which case it only removes the build artefacts (``.hi``, ``.o`` along with any other temporary files generated by the compiler, along with the build output).hjpjDjwihj]h}rp(h]h]h]h]h]ujPMqjjih]rp(hXdBy default, it removes the entire folder, but it can also spare the configuration and caches if the rprp}rp(hXdBy default, it removes the entire folder, but it can also spare the configuration and caches if the jDNjPNjjihjpubj)rp}rp(hX``--save-config``h}rp(h]h]h]h]h]uhjph]rphX --save-configrprp}rp(hX --save-confighjpubahjubhXE option is given, in which case it only removes the build artefacts (rprp}rp(hXE option is given, in which case it only removes the build artefacts (jDNjPNjjihjpubj)rp}rp(hX``.hi``h}rp(h]h]h]h]h]uhjph]rphX.hirprp}rp(hX.hihjpubahjubhX, rprp}rp(hX, jDNjPNjjihjpubj)rp}rp(hX``.o``h}rp(h]h]h]h]h]uhjph]rphX.orprp}rp(hX.ohjpubahjubhX^ along with any other temporary files generated by the compiler, along with the build output).rprp}rp(hX^ along with any other temporary files generated by the compiler, along with the build output).jDNjPNjjihjpubeubeubjn)rp}rp(hUhjjjDjwihjqh}rp(h]h]h]h]rpUcabal-v2-sdistrqah]rqjiaujPMwjjih]rq(h)rq}rq(hXcabal v2-sdistrqhjpjDjwihhh}rq(h]h]h]h]h]ujPMwjjih]rqhXcabal v2-sdistrqr q}r q(hjqjDNjPNjjihjqubaubjZ)r q}r q(hX``cabal v2-sdist [FLAGS] [TARGETS]`` takes the crucial files needed to build ``TARGETS`` and puts them into an archive format ready for upload to Hackage. These archives are stable and two archives of the same format built from the same source will hash to the same value.hjpjDjwihj]h}r q(h]h]h]h]h]ujPMyjjih]rq(j)rq}rq(hX$``cabal v2-sdist [FLAGS] [TARGETS]``h}rq(h]h]h]h]h]uhj qh]rqhX cabal v2-sdist [FLAGS] [TARGETS]rqrq}rq(hX cabal v2-sdist [FLAGS] [TARGETS]hjqubahjubhX) takes the crucial files needed to build rqrq}rq(hX) takes the crucial files needed to build jDNjPNjjihj qubj)rq}rq(hX ``TARGETS``h}rq(h]h]h]h]h]uhj qh]rqhXTARGETSrqrq}rq(hXTARGETShjqubahjubhX and puts them into an archive format ready for upload to Hackage. These archives are stable and two archives of the same format built from the same source will hash to the same value.r qr!q}r"q(hX and puts them into an archive format ready for upload to Hackage. These archives are stable and two archives of the same format built from the same source will hash to the same value.jDNjPNjjihj qubeubjZ)r#q}r$q(hX-``cabal v2-sdist`` takes the following flags:r%qhjpjDjwihj]h}r&q(h]h]h]h]h]ujPM}jjih]r'q(j)r(q}r)q(hX``cabal v2-sdist``h}r*q(h]h]h]h]h]uhj#qh]r+qhXcabal v2-sdistr,qr-q}r.q(hXcabal v2-sdisthj(qubahjubhX takes the following flags:r/qr0q}r1q(hX takes the following flags:jDNjPNjjihj#qubeubj )r2q}r3q(hUhjpjDjwihj h}r4q(j X-h]h]h]h]h]ujPMjjih]r5q(j )r6q}r7q(hX``-l``, ``--list-only``: Rather than creating an archive, lists files that would be included. Output is to ``stdout`` by default. The file paths are relative to the project's root directory. hj2qjDjwihj h}r8q(h]h]h]h]h]ujPNjjih]r9qjZ)r:q}r;q(hX``-l``, ``--list-only``: Rather than creating an archive, lists files that would be included. Output is to ``stdout`` by default. The file paths are relative to the project's root directory.hj6qjDjwihj]h}rq}r?q(hX``-l``h}r@q(h]h]h]h]h]uhj:qh]rAqhX-lrBqrCq}rDq(hX-lhj>qubahjubhX, rEqrFq}rGq(hX, hj:qubj)rHq}rIq(hX``--list-only``h}rJq(h]h]h]h]h]uhj:qh]rKqhX --list-onlyrLqrMq}rNq(hX --list-onlyhjHqubahjubhXT: Rather than creating an archive, lists files that would be included. Output is to rOqrPq}rQq(hXT: Rather than creating an archive, lists files that would be included. Output is to hj:qubj)rRq}rSq(hX ``stdout``h}rTq(h]h]h]h]h]uhj:qh]rUqhXstdoutrVqrWq}rXq(hXstdouthjRqubahjubhXK by default. The file paths are relative to the project’s root directory.rYqrZq}r[q(hXI by default. The file paths are relative to the project's root directory.hj:qubeubaubj )r\q}r]q(hX``-o``, ``--output-dir``: Sets the output dir, if a non-default one is desired. The default is ``dist-newstyle/sdist/``. ``--output-dir -`` will send output to ``stdout`` unless multiple archives are being created. hj2qjDjwihj h}r^q(h]h]h]h]h]ujPNjjih]r_qjZ)r`q}raq(hX``-o``, ``--output-dir``: Sets the output dir, if a non-default one is desired. The default is ``dist-newstyle/sdist/``. ``--output-dir -`` will send output to ``stdout`` unless multiple archives are being created.hj\qjDjwihj]h}rbq(h]h]h]h]h]ujPMh]rcq(j)rdq}req(hX``-o``h}rfq(h]h]h]h]h]uhj`qh]rgqhX-orhqriq}rjq(hX-ohjdqubahjubhX, rkqrlq}rmq(hX, hj`qubj)rnq}roq(hX``--output-dir``h}rpq(h]h]h]h]h]uhj`qh]rqqhX --output-dirrrqrsq}rtq(hX --output-dirhjnqubahjubhXG: Sets the output dir, if a non-default one is desired. The default is ruqrvq}rwq(hXG: Sets the output dir, if a non-default one is desired. The default is hj`qubj)rxq}ryq(hX``dist-newstyle/sdist/``h}rzq(h]h]h]h]h]uhj`qh]r{qhXdist-newstyle/sdist/r|qr}q}r~q(hXdist-newstyle/sdist/hjxqubahjubhX. rqrq}rq(hX. hj`qubj)rq}rq(hX``--output-dir -``h}rq(h]h]h]h]h]uhj`qh]rqhX--output-dir -rqrq}rq(hX--output-dir -hjqubahjubhX will send output to rqrq}rq(hX will send output to hj`qubj)rq}rq(hX ``stdout``h}rq(h]h]h]h]h]uhj`qh]rqhXstdoutrqrq}rq(hXstdouthjqubahjubhX, unless multiple archives are being created.rqrq}rq(hX, unless multiple archives are being created.hj`qubeubaubj )rq}rq(hXm``-z``, ``--null``: Only used with ``--list-only``. Separates filenames with a NUL byte instead of newlines. hj2qjDjwihj h}rq(h]h]h]h]h]ujPNjjih]rqjZ)rq}rq(hXl``-z``, ``--null``: Only used with ``--list-only``. Separates filenames with a NUL byte instead of newlines.hjqjDjwihj]h}rq(h]h]h]h]h]ujPMh]rq(j)rq}rq(hX``-z``h}rq(h]h]h]h]h]uhjqh]rqhX-zrqrq}rq(hX-zhjqubahjubhX, rqrq}rq(hX, hjqubj)rq}rq(hX ``--null``h}rq(h]h]h]h]h]uhjqh]rqhX--nullrqrq}rq(hX--nullhjqubahjubhX: Only used with rqrq}rq(hX: Only used with hjqubj)rq}rq(hX``--list-only``h}rq(h]h]h]h]h]uhjqh]rqhX --list-onlyrqrq}rq(hX --list-onlyhjqubahjubhX:. Separates filenames with a NUL byte instead of newlines.rqrq}rq(hX:. Separates filenames with a NUL byte instead of newlines.hjqubeubaubeubjZ)rq}rq(hX``v2-sdist`` is inherently incompatible with sdist hooks, not due to implementation but due to fundamental core invariants (same source code should result in the same tarball, byte for byte) that must be satisfied for it to function correctly in the larger v2-build ecosystem. ``autogen-modules`` is able to replace uses of the hooks to add generated modules, along with the custom publishing of Haddock documentation to Hackage.hjpjDjwihj]h}rq(h]h]h]h]h]ujPMjjih]rq(j)rq}rq(hX ``v2-sdist``h}rq(h]h]h]h]h]uhjqh]rqhXv2-sdistrqrq}rq(hXv2-sdisthjqubahjubhX  is inherently incompatible with sdist hooks, not due to implementation but due to fundamental core invariants (same source code should result in the same tarball, byte for byte) that must be satisfied for it to function correctly in the larger v2-build ecosystem. rqrq}rq(hX  is inherently incompatible with sdist hooks, not due to implementation but due to fundamental core invariants (same source code should result in the same tarball, byte for byte) that must be satisfied for it to function correctly in the larger v2-build ecosystem. jDNjPNjjihjqubj)rq}rq(hX``autogen-modules``h}rq(h]h]h]h]h]uhjqh]rqhXautogen-modulesrqrq}rq(hXautogen-moduleshjqubahjubhX is able to replace uses of the hooks to add generated modules, along with the custom publishing of Haddock documentation to Hackage.rqrq}rq(hX is able to replace uses of the hooks to add generated modules, along with the custom publishing of Haddock documentation to Hackage.jDNjPNjjihjqubeubeubeubjDjwihjqh}rq(h]h]h]h]rqUcabal-v2-buildrqah]rqjiaujPMLjjih]rq(h)rq}rq(hXcabal v2-buildrqhjjjDjwihhh}rq(h]h]h]h]h]ujPMLjjih]rqhXcabal v2-buildrqrq}rq(hjqjDNjPNjjihjqubaubjZ)rq}rq(hX``cabal v2-build`` takes a set of targets and builds them. It automatically handles building and installing any dependencies of these targets.hjjjDjwihj]h}rq(h]h]h]h]h]ujPMNjjih]rq(j)rq}rq(hX``cabal v2-build``h}rq(h]h]h]h]h]uhjqh]rqhXcabal v2-buildrqrq}rq(hXcabal v2-buildhjqubahjubhX| takes a set of targets and builds them. It automatically handles building and installing any dependencies of these targets.rqrq}rq(hX| takes a set of targets and builds them. It automatically handles building and installing any dependencies of these targets.jDNjPNjjihjqubeubjZ)rq}rq(hX-A target can take any of the following forms:rqhjjjDjwihj]h}rq(h]h]h]h]h]ujPMRjjih]rqhX-A target can take any of the following forms:rqrq}rq(hjqjDNjPNjjihjqubaubjjjZ)rq}rq(hXIn component targets, ``package:`` and ``ctype:`` (valid component types are ``lib``, ``flib``, ``exe``, ``test`` and ``bench``) can be used to disambiguate when multiple packages define the same component, or the same component name is used in a package (e.g., a package ``foo`` defines both an executable and library named ``foo``). We always prefer interpreting a target as a package name rather than as a component name.hjjjDjwihj]h}rq(h]h]h]h]h]ujPMhjjih]rq(hXIn component targets, rqrq}rq(hXIn component targets, jDNjPNjjihjqubj)rq}rq(hX ``package:``h}rr(h]h]h]h]h]uhjqh]rrhXpackage:rrrr}rr(hXpackage:hjqubahjubhX and rrrr}rr(hX and rrjDNjPNjjihjqubj)r r}r r(hX ``ctype:``h}r r(h]h]h]h]h]uhjqh]r rhXctype:r rrr}rr(hXctype:hj rubahjubhX (valid component types are rrrr}rr(hX (valid component types are jDNjPNjjihjqubj)rr}rr(hX``lib``h}rr(h]h]h]h]h]uhjqh]rrhXlibrrrr}rr(hXlibhjrubahjubhX, rrrr}rr(hX, rrjDNjPNjjihjqubj)rr}rr(hX``flib``h}r r(h]h]h]h]h]uhjqh]r!rhXflibr"rr#r}r$r(hXflibhjrubahjubhX, r%rr&r}r'r(hX, hjqubj)r(r}r)r(hX``exe``h}r*r(h]h]h]h]h]uhjqh]r+rhXexer,rr-r}r.r(hXexehj(rubahjubhX, r/rr0r}r1r(hjrhjqubj)r2r}r3r(hX``test``h}r4r(h]h]h]h]h]uhjqh]r5rhXtestr6rr7r}r8r(hXtesthj2rubahjubhX and r9rr:r}r;r(hjrhjqubj)rr(h]h]h]h]h]uhjqh]r?rhXbenchr@rrAr}rBr(hXbenchhjs}r?s(hUhj:sjDjwihj h}r@s(j X-h]h]h]h]h]ujPMbh]rAs(j )rBs}rCs(hX``libs``, ``libraries``,rDsh}rEs(h]h]h]h]h]uhj>sh]rFsjZ)rGs}rHs(hjDshjBsjDjwihj]h}rIs(h]h]h]h]h]ujPMbh]rJs(j)rKs}rLs(hX``libs``h}rMs(h]h]h]h]h]uhjGsh]rNshXlibsrOsrPs}rQs(hXlibshjKsubahjubhX, rRsrSs}rTs(hX, hjGsubj)rUs}rVs(hX ``libraries``h}rWs(h]h]h]h]h]uhjGsh]rXshX librariesrYsrZs}r[s(hX librarieshjUsubahjubhX,r\s}r]s(hX,hjGsubeubahj ubj )r^s}r_s(hX!``flibs``, ``foreign-libraries``,r`sh}ras(h]h]h]h]h]uhj>sh]rbsjZ)rcs}rds(hj`shj^sjDjwihj]h}res(h]h]h]h]h]ujPMch]rfs(j)rgs}rhs(hX ``flibs``h}ris(h]h]h]h]h]uhjcsh]rjshXflibsrksrls}rms(hXflibshjgsubahjubhX, rnsros}rps(hX, hjcsubj)rqs}rrs(hX``foreign-libraries``h}rss(h]h]h]h]h]uhjcsh]rtshXforeign-librariesrusrvs}rws(hXforeign-librarieshjqsubahjubhX,rxs}rys(hX,hjcsubeubahj ubj )rzs}r{s(hX``exes``, ``executables``,r|sh}r}s(h]h]h]h]h]uhj>sh]r~sjZ)rs}rs(hj|shjzsjDjwihj]h}rs(h]h]h]h]h]ujPMdh]rs(j)rs}rs(hX``exes``h}rs(h]h]h]h]h]uhjsh]rshXexesrsrs}rs(hXexeshjsubahjubhX, rsrs}rs(hX, hjsubj)rs}rs(hX``executables``h}rs(h]h]h]h]h]uhjsh]rshX executablesrsrs}rs(hX executableshjsubahjubhX,rs}rs(hX,hjsubeubahj ubj )rs}rs(hX ``tests``,rsh}rs(h]h]h]h]h]uhj>sh]rsjZ)rs}rs(hjshjsjDjwihj]h}rs(h]h]h]h]h]ujPMeh]rs(j)rs}rs(hX ``tests``h}rs(h]h]h]h]h]uhjsh]rshXtestsrsrs}rs(hXtestshjsubahjubhX,rs}rs(hX,hjsubeubahj ubj )rs}rs(hX``benches``, ``benchmarks``. h}rs(h]h]h]h]h]uhj>sh]rsjZ)rs}rs(hX``benches``, ``benchmarks``.rshjsjDjwihj]h}rs(h]h]h]h]h]ujPMfh]rs(j)rs}rs(hX ``benches``h}rs(h]h]h]h]h]uhjsh]rshXbenchesrsrs}rs(hXbencheshjsubahjubhX, rsrs}rs(hX, hjsubj)rs}rs(hX``benchmarks``h}rs(h]h]h]h]h]uhjsh]rshX benchmarksrsrs}rs(hX benchmarkshjsubahjubhX.rs}rs(hX.hjsubeubahj ubeubahjCubeubh]rsjZ)rs}rs(hXUnexpected indentation.h}rs(h]h]h]h]h]uhjjh]rshXUnexpected indentation.rsrs}rs(hUhjsubahj]ubahjKubj)rs}rs(hUhjn)rs}rs(hUhjn)rs}rs(hUhjijDjwihjqh}rs(h]h]h]h]rsU%configuring-builds-with-cabal-projectrsah]rsjiaujPMjjih]rs(h)rs}rs(hX%Configuring builds with cabal.projectrshjsjDjwihhh}rs(h]h]h]h]h]ujPMjjih]rshX%Configuring builds with cabal.projectrsrs}rs(hjsjDNjPNjjihjsubaubjZ)rs}rs(hX``cabal.project`` files support a variety of options which configure the details of your build. The general syntax of a ``cabal.project`` file is similar to that of a Cabal file: there are a number of fields, some of which live inside stanzas:hjsjDjwihj]h}rs(h]h]h]h]h]ujPMjjih]rs(j)rs}rs(hX``cabal.project``h}rs(h]h]h]h]h]uhjsh]rshX cabal.projectrsrs}rs(hX cabal.projecthjsubahjubhXg files support a variety of options which configure the details of your build. The general syntax of a rsrs}rs(hXg files support a variety of options which configure the details of your build. The general syntax of a jDNjPNjjihjsubj)rs}rs(hX``cabal.project``h}rs(h]h]h]h]h]uhjsh]rshX cabal.projectrsrs}rs(hX cabal.projecthjsubahjubhXj file is similar to that of a Cabal file: there are a number of fields, some of which live inside stanzas:rsrs}rs(hXj file is similar to that of a Cabal file: there are a number of fields, some of which live inside stanzas:jDNjPNjjihjsubeubj)rs}rs(hXcpackages: */*.cabal with-compiler: /opt/ghc/8.0.1/bin/ghc package cryptohash optimization: FalsehjsjDjwihjh}rs(jjh]h]h]h]h]ujPMjjih]rshXcpackages: */*.cabal with-compiler: /opt/ghc/8.0.1/bin/ghc package cryptohash optimization: Falsersrs}rs(hUhjsubaubjZ)rs}rs(hXIn general, the accepted field names coincide with the accepted command line flags that ``cabal install`` and other commands take. For example, ``cabal v2-configure --enable-profiling`` will write out a project file with ``profiling: True``.hjsjDjwihj]h}rt(h]h]h]h]h]ujPMjjih]rt(hXXIn general, the accepted field names coincide with the accepted command line flags that rtrt}rt(hXXIn general, the accepted field names coincide with the accepted command line flags that jDNjPNjjihjsubj)rt}rt(hX``cabal install``h}rt(h]h]h]h]h]uhjsh]rthX cabal installr tr t}r t(hX cabal installhjtubahjubhX' and other commands take. For example, r tr t}rt(hX' and other commands take. For example, jDNjPNjjihjsubj)rt}rt(hX)``cabal v2-configure --enable-profiling``h}rt(h]h]h]h]h]uhjsh]rthX%cabal v2-configure --enable-profilingrtrt}rt(hX%cabal v2-configure --enable-profilinghjtubahjubhX$ will write out a project file with rtrt}rt(hX$ will write out a project file with jDNjPNjjihjsubj)rt}rt(hX``profiling: True``h}rt(h]h]h]h]h]uhjsh]rthXprofiling: Truertrt}rt(hXprofiling: TruehjtubahjubhX.r t}r!t(hX.jDNjPNjjihjsubeubjZ)r"t}r#t(hX{The full configuration of a project is determined by combining the following sources (later entries override earlier ones):r$thjsjDjwihj]h}r%t(h]h]h]h]h]ujPMjjih]r&thX{The full configuration of a project is determined by combining the following sources (later entries override earlier ones):r'tr(t}r)t(hj$tjDNjPNjjihj"tubaubjf0)r*t}r+t(hUhjsjDjwihji0h}r,t(jk0U.h]h]h]jl0Uh]h]jm0jn0ujPMjjih]r-t(j )r.t}r/t(hX9``~/.cabal/config`` (the user-wide global configuration) hj*tjDjwihj h}r0t(h]h]h]h]h]ujPNjjih]r1tjZ)r2t}r3t(hX8``~/.cabal/config`` (the user-wide global configuration)hj.tjDjwihj]h}r4t(h]h]h]h]h]ujPMh]r5t(j)r6t}r7t(hX``~/.cabal/config``h}r8t(h]h]h]h]h]uhj2th]r9thX~/.cabal/configr:tr;t}rt}r?t(hX% (the user-wide global configuration)hj2tubeubaubj )r@t}rAt(hX.``cabal.project`` (the project configuration) hj*tjDjwihj h}rBt(h]h]h]h]h]ujPNjjih]rCtjZ)rDt}rEt(hX-``cabal.project`` (the project configuration)hj@tjDjwihj]h}rFt(h]h]h]h]h]ujPMh]rGt(j)rHt}rIt(hX``cabal.project``h}rJt(h]h]h]h]h]uhjDth]rKthX cabal.projectrLtrMt}rNt(hX cabal.projecthjHtubahjubhX (the project configuration)rOtrPt}rQt(hX (the project configuration)hjDtubeubaubj )rRt}rSt(hX=``cabal.project.freeze`` (the output of ``cabal v2-freeze``) hj*tjDjwihj h}rTt(h]h]h]h]h]ujPNjjih]rUtjZ)rVt}rWt(hX<``cabal.project.freeze`` (the output of ``cabal v2-freeze``)hjRtjDjwihj]h}rXt(h]h]h]h]h]ujPMh]rYt(j)rZt}r[t(hX``cabal.project.freeze``h}r\t(h]h]h]h]h]uhjVth]r]thXcabal.project.freezer^tr_t}r`t(hXcabal.project.freezehjZtubahjubhX (the output of ratrbt}rct(hX (the output of hjVtubj)rdt}ret(hX``cabal v2-freeze``h}rft(h]h]h]h]h]uhjVth]rgthXcabal v2-freezerhtrit}rjt(hXcabal v2-freezehjdtubahjubhX)rkt}rlt(hX)hjVtubeubaubj )rmt}rnt(hX@``cabal.project.local`` (the output of ``cabal v2-configure``) hj*tjDjwihj h}rot(h]h]h]h]h]ujPNjjih]rptjZ)rqt}rrt(hX>``cabal.project.local`` (the output of ``cabal v2-configure``)hjmtjDjwihj]h}rst(h]h]h]h]h]ujPMh]rtt(j)rut}rvt(hX``cabal.project.local``h}rwt(h]h]h]h]h]uhjqth]rxthXcabal.project.localrytrzt}r{t(hXcabal.project.localhjutubahjubhX (the output of r|tr}t}r~t(hX (the output of hjqtubj)rt}rt(hX``cabal v2-configure``h}rt(h]h]h]h]h]uhjqth]rthXcabal v2-configurertrt}rt(hXcabal v2-configurehjtubahjubhX)rt}rt(hX)hjqtubeubaubeubjn)rt}rt(hUhjsjDjwihjqh}rt(h]h]h]h]rtjah]rtjiaujPMjjih]rt(h)rt}rt(hXSpecifying the local packagesrthjtjDjwihhh}rt(h]h]h]h]h]ujPMjjih]rthXSpecifying the local packagesrtrt}rt(hjtjDNjPNjjihjtubaubjZ)rt}rt(hXQThe following top-level options specify what the local packages of a project are:rthjtjDjwihj]h}rt(h]h]h]h]h]ujPMjjih]rthXQThe following top-level options specify what the local packages of a project are:rtrt}rt(hjtjDNjPNjjihjtubaubj )rt}rt(hUhjtjDjwihjnh}rt(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rt}rt(hUhjtjDjwihj h}rt(j j Xcabalh]h]h]h]h]j X cfg-fieldrtj jtujPNjjih]rt(j )rt}rt(hX:packages: package location list (space or comma separated)hjtjDjwihj h}rt(h]rtjah]h]h]h]j ujPNjjih]rt(j )rt}rt(hUhjtjDjwihjnh}rt(h]h]h]h]h]Uentries]rt(j! Xpackages ; cabal project optionjUNtrtaujPNjjih]ubj# )rt}rt(hjhjtjDjwihj& h}rt(jjh]h]h]h]h]ujPNjjih]rthXpackagesrtrt}rt(hUjDNjPNjjihjtubaubj, )rt}rt(hj/ hjtjDjwihj0 h}rt(jjh]h]h]h]h]ujPNjjih]rthX: rtrt}rt(hUjDNjPNjjihjtubaubj6 )rt}rt(hX0package location list (space or comma separated)hjtjDjwihj9 h}rt(jjh]h]h]h]h]ujPNjjih]rthX0package location list (space or comma separated)rtrt}rt(hUjDNjPNjjihjtubaubeubjh)rt}rt(hUhjtjDjwihjA h}rt(h]h]h]h]h]ujPNjjih]rt(j)rt}rt(hUhjtjDjwihjh}rt(h]h]h]h]h]ujPNjjih]rtj)rt}rt(hUh}rt(h]h]h]h]h]uhjth]rt(j )rt}rt(hX Default valuehjtjDjwihj h}rt(h]h]h]h]h]ujPKh]rthX Default valuertrt}rt(hUhjtubaubj)rt}rt(hUh}rt(h]h]h]h]h]uhjth]rtjZ)rt}rt(hX ./*.cabalh}rt(h]h]h]h]h]uhjth]rtj)rt}rt(hX ``./*.cabal``hjtjDjwihjh}rt(h]h]h]h]h]ujPNjjih]rthX ./*.cabalrtrt}rt(hX ./*.cabaljDNjPNjjihjtubaubahj]ubahj-ubehj.ubaubjZ)rt}rt(hXSpecifies the list of package locations which contain the local packages to be built by this project. Package locations can take the following forms:rthjtjDjwihj]h}rt(h]h]h]h]h]ujPMjjih]rthXSpecifies the list of package locations which contain the local packages to be built by this project. Package locations can take the following forms:rtrt}rt(hjtjDNjPNjjihjtubaubjf0)rt}rt(hUhjtjDjwihji0h}rt(jk0U.h]h]h]jl0Uh]h]jm0jn0ujPMjjih]rt(j )rt}rt(hXThey can specify a Cabal file, or a directory containing a Cabal file, e.g., ``packages: Cabal cabal-install/cabal-install.cabal``. hjtjDjwihj h}rt(h]h]h]h]h]ujPNjjih]rtjZ)rt}rt(hXThey can specify a Cabal file, or a directory containing a Cabal file, e.g., ``packages: Cabal cabal-install/cabal-install.cabal``.hjtjDjwihj]h}rt(h]h]h]h]h]ujPMh]rt(hXMThey can specify a Cabal file, or a directory containing a Cabal file, e.g., rtrt}rt(hXMThey can specify a Cabal file, or a directory containing a Cabal file, e.g., hjtubj)rt}rt(hX5``packages: Cabal cabal-install/cabal-install.cabal``h}ru(h]h]h]h]h]uhjth]ruhX1packages: Cabal cabal-install/cabal-install.cabalruru}ru(hX1packages: Cabal cabal-install/cabal-install.cabalhjtubahjubhX.ru}ru(hX.hjtubeubaubj )ru}ru(hXThey can specify a glob-style wildcards, which must match one or more (a) directories containing a (single) Cabal file, (b) Cabal files (extension ``.cabal``), or (c) tarballs which contain Cabal packages (extension ``.tar.gz``). For example, to match all Cabal files in all subdirectories, as well as the Cabal projects in the parent directories ``foo`` and ``bar``, use ``packages: */*.cabal ../{foo,bar}/`` hjtjDjwihj h}r u(h]h]h]h]h]ujPNjjih]r ujZ)r u}r u(hXThey can specify a glob-style wildcards, which must match one or more (a) directories containing a (single) Cabal file, (b) Cabal files (extension ``.cabal``), or (c) tarballs which contain Cabal packages (extension ``.tar.gz``). For example, to match all Cabal files in all subdirectories, as well as the Cabal projects in the parent directories ``foo`` and ``bar``, use ``packages: */*.cabal ../{foo,bar}/``hjujDjwihj]h}r u(h]h]h]h]h]ujPMh]ru(hXThey can specify a glob-style wildcards, which must match one or more (a) directories containing a (single) Cabal file, (b) Cabal files (extension ruru}ru(hXThey can specify a glob-style wildcards, which must match one or more (a) directories containing a (single) Cabal file, (b) Cabal files (extension hj uubj)ru}ru(hX ``.cabal``h}ru(h]h]h]h]h]uhj uh]ruhX.cabalruru}ru(hX.cabalhjuubahjubhX;), or (c) tarballs which contain Cabal packages (extension ruru}ru(hX;), or (c) tarballs which contain Cabal packages (extension hj uubj)ru}ru(hX ``.tar.gz``h}ru(h]h]h]h]h]uhj uh]ruhX.tar.gzr ur!u}r"u(hX.tar.gzhjuubahjubhXx). For example, to match all Cabal files in all subdirectories, as well as the Cabal projects in the parent directories r#ur$u}r%u(hXx). For example, to match all Cabal files in all subdirectories, as well as the Cabal projects in the parent directories hj uubj)r&u}r'u(hX``foo``h}r(u(h]h]h]h]h]uhj uh]r)uhXfoor*ur+u}r,u(hXfoohj&uubahjubhX and r-ur.u}r/u(hX and hj uubj)r0u}r1u(hX``bar``h}r2u(h]h]h]h]h]uhj uh]r3uhXbarr4ur5u}r6u(hXbarhj0uubahjubhX, use r7ur8u}r9u(hX, use hj uubj)r:u}r;u(hX%``packages: */*.cabal ../{foo,bar}/``h}rur?u}r@u(hX!packages: */*.cabal ../{foo,bar}/hj:uubahjubeubaubj )rAu}rBu(hXThey can specify an ``http``, ``https`` or ``file`` URL, representing the path to a remote tarball to be downloaded and built. hjtjDjwihj h}rCu(h]h]h]h]h]ujPNjjih]rDujZ)rEu}rFu(hX~They can specify an ``http``, ``https`` or ``file`` URL, representing the path to a remote tarball to be downloaded and built.hjAujDjwihj]h}rGu(h]h]h]h]h]ujPMh]rHu(hXThey can specify an rIurJu}rKu(hXThey can specify an hjEuubj)rLu}rMu(hX``http``h}rNu(h]h]h]h]h]uhjEuh]rOuhXhttprPurQu}rRu(hXhttphjLuubahjubhX, rSurTu}rUu(hX, hjEuubj)rVu}rWu(hX ``https``h}rXu(h]h]h]h]h]uhjEuh]rYuhXhttpsrZur[u}r\u(hXhttpshjVuubahjubhX or r]ur^u}r_u(hX or hjEuubj)r`u}rau(hX``file``h}rbu(h]h]h]h]h]uhjEuh]rcuhXfilerdureu}rfu(hXfilehj`uubahjubhXK URL, representing the path to a remote tarball to be downloaded and built.rgurhu}riu(hXK URL, representing the path to a remote tarball to be downloaded and built.hjEuubeubaubeubjZ)rju}rku(hXBThere is no command line variant of this field; see :issue:`3585`.hjtjDjwihj]h}rlu(h]h]h]h]h]ujPMjjih]rmu(hX4There is no command line variant of this field; see rnurou}rpu(hX4There is no command line variant of this field; see jDNjPNjjihjjuubj!)rqu}rru(hX#3585h}rsu(UrefuriX,https://github.com/haskell/cabal/issues/3585h]h]h]h]h]Uinternaluhjjuh]rtuhX#3585ruurvu}rwu(hX3585hjquubahj%ubhX.rxu}ryu(hX.jDNjPNjjihjjuubeubeubeubj )rzu}r{u(hUhjtjDjwihjnh}r|u(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}u}r~u(hUhjtjDjwihj h}ru(j j Xcabalh]h]h]h]h]j X cfg-fieldruj juujPNjjih]ru(j )ru}ru(hXCoptional-packages: package location list (space or comma-separated)hj}ujDjwihj h}ru(h]ruj4ah]h]h]h]j ujPNjjih]ru(j )ru}ru(hUhjujDjwihjnh}ru(h]h]h]h]h]Uentries]ru(j! X(optional-packages ; cabal project optionj4UNtruaujPNjjih]ubj# )ru}ru(hj3hjujDjwihj& h}ru(jjh]h]h]h]h]ujPNjjih]ruhXoptional-packagesruru}ru(hUjDNjPNjjihjuubaubj, )ru}ru(hj/ hjujDjwihj0 h}ru(jjh]h]h]h]h]ujPNjjih]ruhX: ruru}ru(hUjDNjPNjjihjuubaubj6 )ru}ru(hX0package location list (space or comma-separated)hjujDjwihj9 h}ru(jjh]h]h]h]h]ujPNjjih]ruhX0package location list (space or comma-separated)ruru}ru(hUjDNjPNjjihjuubaubeubjh)ru}ru(hUhj}ujDjwihjA h}ru(h]h]h]h]h]ujPNjjih]ru(j)ru}ru(hUhjujDjwihjh}ru(h]h]h]h]h]ujPNjjih]ruj)ru}ru(hUh}ru(h]h]h]h]h]uhjuh]ru(j )ru}ru(hX Default valuehjujDjwihj h}ru(h]h]h]h]h]ujPKh]ruhX Default valueruru}ru(hUhjuubaubj)ru}ru(hUh}ru(h]h]h]h]h]uhjuh]rujZ)ru}ru(hX ./*/*.cabalh}ru(h]h]h]h]h]uhjuh]ruj)ru}ru(hX``./*/*.cabal``hjujDjwihjh}ru(h]h]h]h]h]ujPNjjih]ruhX ./*/*.cabalruru}ru(hX ./*/*.cabaljDNjPNjjihjuubaubahj]ubahj-ubehj.ubaubjZ)ru}ru(hXLike :cfg-field:`packages`, specifies a list of package locations containing local packages to be built. Unlike :cfg-field:`packages`, if we glob for a package, it is permissible for the glob to match against zero packages. The intended use-case for :cfg-field:`optional-packages` is to make it so that vendored packages can be automatically picked up if they are placed in a subdirectory, but not error if there aren't any.hjujDjwihj]h}ru(h]h]h]h]h]ujPMjjih]ru(hXLike ruru}ru(hXLike jDNjPNjjihjuubjM)ru}ru(hX:cfg-field:`packages`hjujDjwihjPh}ru(UreftypeX cfg-fieldjRjSXpackagesruU refdomainXcabalruh]h]U refexplicith]h]h]jVhjnNujPMh]ruj)ru}ru(hjuh}ru(h]h]ru(j]juXcabal-cfg-fieldrueh]h]h]uhjuh]ruhXpackagesruru}ru(hUhjuubahjubaubhXV, specifies a list of package locations containing local packages to be built. Unlike ruru}ru(hXV, specifies a list of package locations containing local packages to be built. Unlike jDNjPNjjihjuubjM)ru}ru(hX:cfg-field:`packages`hjujDjwihjPh}ru(UreftypeX cfg-fieldjRjSXpackagesruU refdomainXcabalruh]h]U refexplicith]h]h]jVhjnNujPMh]ruj)ru}ru(hjuh}ru(h]h]ru(j]juXcabal-cfg-fieldrueh]h]h]uhjuh]ruhXpackagesruru}ru(hUhjuubahjubaubhXu, if we glob for a package, it is permissible for the glob to match against zero packages. The intended use-case for ruru}ru(hXu, if we glob for a package, it is permissible for the glob to match against zero packages. The intended use-case for jDNjPNjjihjuubjM)ru}ru(hX:cfg-field:`optional-packages`hjujDjwihjPh}ru(UreftypeX cfg-fieldjRjSXoptional-packagesruU refdomainXcabalruh]h]U refexplicith]h]h]jVhjnNujPMh]ruj)ru}ru(hjuh}ru(h]h]ru(j]juXcabal-cfg-fieldrueh]h]h]uhjuh]ruhXoptional-packagesruru}ru(hUhjuubahjubaubhX is to make it so that vendored packages can be automatically picked up if they are placed in a subdirectory, but not error if there aren’t any.ruru}ru(hX is to make it so that vendored packages can be automatically picked up if they are placed in a subdirectory, but not error if there aren't any.jDNjPNjjihjuubeubjZ)rv}rv(hX/There is no command line variant of this field.rvhjujDjwihj]h}rv(h]h]h]h]h]ujPMjjih]rvhX/There is no command line variant of this field.rvrv}rv(hjvjDNjPNjjihjvubaubeubeubj )rv}r v(hUhjtjDjwihjnh}r v(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r v}r v(hUhjtjDjwihj h}r v(j j Xcabalh]h]h]h]h]j X cfg-fieldrvj jvujPNjjih]rv(j )rv}rv(hXBextra-packages: package list with version bounds (comma separated)hj vjDjwihj h}rv(h]rvjah]h]h]h]j ujPNjjih]rv(j )rv}rv(hUhjvjDjwihjnh}rv(h]h]h]h]h]Uentries]rv(j! X%extra-packages ; cabal project optionjUNtrvaujPNjjih]ubj# )rv}rv(hjhjvjDjwihj& h}rv(jjh]h]h]h]h]ujPNjjih]rvhXextra-packagesrvrv}r v(hUjDNjPNjjihjvubaubj, )r!v}r"v(hj/ hjvjDjwihj0 h}r#v(jjh]h]h]h]h]ujPNjjih]r$vhX: r%vr&v}r'v(hUjDNjPNjjihj!vubaubj6 )r(v}r)v(hX2package list with version bounds (comma separated)hjvjDjwihj9 h}r*v(jjh]h]h]h]h]ujPNjjih]r+vhX2package list with version bounds (comma separated)r,vr-v}r.v(hUjDNjPNjjihj(vubaubeubjh)r/v}r0v(hUhj vjDjwihjA h}r1v(h]h]h]h]h]ujPNjjih]r2v(jZ)r3v}r4v(hX{[STRIKEOUT:Specifies a list of external packages from Hackage which should be considered local packages.] (Not implemented)r5vhj/vjDjwihj]h}r6v(h]h]h]h]h]ujPMjjih]r7vhX{[STRIKEOUT:Specifies a list of external packages from Hackage which should be considered local packages.] (Not implemented)r8vr9v}r:v(hj5vjDNjPNjjihj3vubaubjZ)r;v}rv(h]h]h]h]h]ujPMjjih]r?vhX/There is no command line variant of this field.r@vrAv}rBv(hj=vjDNjPNjjihj;vubaubeubeubjZ)rCv}rDv(hXAll local packages are *vendored*, in the sense that if other packages (including external ones from Hackage) depend on a package with the name of a local package, the local package is preferentially used. This motivates the default settings::hjtjDjwihj]h}rEv(h]h]h]h]h]ujPMjjih]rFv(hXAll local packages are rGvrHv}rIv(hXAll local packages are jDNjPNjjihjCvubj)rJv}rKv(hX *vendored*h}rLv(h]h]h]h]h]uhjCvh]rMvhXvendoredrNvrOv}rPv(hXvendoredhjJvubahjubhX, in the sense that if other packages (including external ones from Hackage) depend on a package with the name of a local package, the local package is preferentially used. This motivates the default settings:rQvrRv}rSv(hX, in the sense that if other packages (including external ones from Hackage) depend on a package with the name of a local package, the local package is preferentially used. This motivates the default settings:jDNjPNjjihjCvubeubj)rTv}rUv(hX2packages: ./*.cabal optional-packages: ./*/*.cabalhjtjDjwihjh}rVv(jjh]h]h]h]h]ujPMjjih]rWvhX2packages: ./*.cabal optional-packages: ./*/*.cabalrXvrYv}rZv(hUhjTvubaubjZ)r[v}r\v(hX...any package can be vendored simply by making a checkout in the top-level project directory, as might be seen in this hypothetical directory layout::hjtjDjwihj]h}r]v(h]h]h]h]h]ujPMjjih]r^vhX…any package can be vendored simply by making a checkout in the top-level project directory, as might be seen in this hypothetical directory layout:r_vr`v}rav(hX...any package can be vendored simply by making a checkout in the top-level project directory, as might be seen in this hypothetical directory layout:jDNjPNjjihj[vubaubj)rbv}rcv(hXUfoo.cabal foo-helper/ # local package unix/ # vendored external packagehjtjDjwihjh}rdv(jjh]h]h]h]h]ujPMjjih]revhXUfoo.cabal foo-helper/ # local package unix/ # vendored external packagerfvrgv}rhv(hUhjbvubaubjZ)riv}rjv(hXOAll of these options support globs. ``cabal v2-build`` has its own glob format:hjtjDjwihj]h}rkv(h]h]h]h]h]ujPMjjih]rlv(hX$All of these options support globs. rmvrnv}rov(hX$All of these options support globs. jDNjPNjjihjivubj)rpv}rqv(hX``cabal v2-build``h}rrv(h]h]h]h]h]uhjivh]rsvhXcabal v2-buildrtvruv}rvv(hXcabal v2-buildhjpvubahjubhX has its own glob format:rwvrxv}ryv(hX has its own glob format:jDNjPNjjihjivubeubj )rzv}r{v(hUhjtjDjwihj h}r|v(j X-h]h]h]h]h]ujPMjjih]r}v(j )r~v}rv(hX_Anywhere in a path, as many times as you like, you can specify an asterisk ``*`` wildcard. E.g., ``*/*.cabal`` matches all ``.cabal`` files in all immediate subdirectories. Like in glob(7), asterisks do not match hidden files unless there is an explicit period, e.g., ``.*/foo.cabal`` will match ``.private/foo.cabal`` (but ``*/foo.cabal`` will not). hjzvjDjwihj h}rv(h]h]h]h]h]ujPNjjih]rvjZ)rv}rv(hX^Anywhere in a path, as many times as you like, you can specify an asterisk ``*`` wildcard. E.g., ``*/*.cabal`` matches all ``.cabal`` files in all immediate subdirectories. Like in glob(7), asterisks do not match hidden files unless there is an explicit period, e.g., ``.*/foo.cabal`` will match ``.private/foo.cabal`` (but ``*/foo.cabal`` will not).hj~vjDjwihj]h}rv(h]h]h]h]h]ujPMh]rv(hXKAnywhere in a path, as many times as you like, you can specify an asterisk rvrv}rv(hXKAnywhere in a path, as many times as you like, you can specify an asterisk hjvubj)rv}rv(hX``*``h}rv(h]h]h]h]h]uhjvh]rvhX*rv}rv(hX*hjvubahjubhX wildcard. E.g., rvrv}rv(hX wildcard. E.g., hjvubj)rv}rv(hX ``*/*.cabal``h}rv(h]h]h]h]h]uhjvh]rvhX */*.cabalrvrv}rv(hX */*.cabalhjvubahjubhX matches all rvrv}rv(hX matches all hjvubj)rv}rv(hX ``.cabal``h}rv(h]h]h]h]h]uhjvh]rvhX.cabalrvrv}rv(hX.cabalhjvubahjubhX files in all immediate subdirectories. Like in glob(7), asterisks do not match hidden files unless there is an explicit period, e.g., rvrv}rv(hX files in all immediate subdirectories. Like in glob(7), asterisks do not match hidden files unless there is an explicit period, e.g., hjvubj)rv}rv(hX``.*/foo.cabal``h}rv(h]h]h]h]h]uhjvh]rvhX .*/foo.cabalrvrv}rv(hX .*/foo.cabalhjvubahjubhX will match rvrv}rv(hX will match hjvubj)rv}rv(hX``.private/foo.cabal``h}rv(h]h]h]h]h]uhjvh]rvhX.private/foo.cabalrvrv}rv(hX.private/foo.cabalhjvubahjubhX (but rvrv}rv(hX (but hjvubj)rv}rv(hX``*/foo.cabal``h}rv(h]h]h]h]h]uhjvh]rvhX */foo.cabalrvrv}rv(hX */foo.cabalhjvubahjubhX will not).rvrv}rv(hX will not).hjvubeubaubj )rv}rv(hXYou can use braces to specify specific directories; e.g., ``{vendor,pkgs}/*.cabal`` matches all Cabal files in the ``vendor`` and ``pkgs`` subdirectories. hjzvjDjwihj h}rv(h]h]h]h]h]ujPNjjih]rvjZ)rv}rv(hXYou can use braces to specify specific directories; e.g., ``{vendor,pkgs}/*.cabal`` matches all Cabal files in the ``vendor`` and ``pkgs`` subdirectories.hjvjDjwihj]h}rv(h]h]h]h]h]ujPMh]rv(hX:You can use braces to specify specific directories; e.g., rvrv}rv(hX:You can use braces to specify specific directories; e.g., hjvubj)rv}rv(hX``{vendor,pkgs}/*.cabal``h}rv(h]h]h]h]h]uhjvh]rvhX{vendor,pkgs}/*.cabalrvrv}rv(hX{vendor,pkgs}/*.cabalhjvubahjubhX matches all Cabal files in the rvrv}rv(hX matches all Cabal files in the hjvubj)rv}rv(hX ``vendor``h}rv(h]h]h]h]h]uhjvh]rvhXvendorrvrv}rv(hXvendorhjvubahjubhX and rvrv}rv(hX and hjvubj)rv}rv(hX``pkgs``h}rv(h]h]h]h]h]uhjvh]rvhXpkgsrvrv}rv(hXpkgshjvubahjubhX subdirectories.rvrv}rv(hX subdirectories.hjvubeubaubeubjZ)rv}rv(hX4Formally, the format described by the following BNF:rvhjtjDjwihj]h}rv(h]h]h]h]h]ujPMjjih]rvhX4Formally, the format described by the following BNF:rvrv}rv(hjvjDNjPNjjihjvubaubje)rv}rv(hUhjtjDjwihjdh}rv(h]h]h]h]h]j'Uindex-1rvujPNjjih]ubjG)rv}rv(hX/convert globbing grammar to proper ABNF_ syntaxrvhjtjDjwij}hjKh}rv(jC\Xnix-local-build:index-1rvh]rvjvah]h]h]rvjOah]ujPM jjij }rwjvjvsh]rw(h)rw}rw(hXTodorwhjvjDjwihhh}rw(h]h]h]h]h]ujPM h]rwhXTodorwrw}r w(hUhjwubaubjZ)r w}r w(hjvhjvjDjwihj]h}r w(h]h]h]h]h]ujPM h]r w(hX#convert globbing grammar to proper rwrw}rw(hX#convert globbing grammar to proper rwhj wubj!)rw}rw(hXABNF_rwj$Khj whj%h}rw(UnameXABNFrwj] X#https://tools.ietf.org/html/rfc5234rwh]h]h]h]h]uh]rwhXABNFrwrw}rw(hjwhjwubaubhX syntaxrwrw}rw(hX syntaxrwhj wubeubeubj)r w}r!w(hXFilePathGlob ::= FilePathRoot FilePathGlobRel FilePathRoot ::= {- empty -} # relative to cabal.project | "/" # Unix root | [a-zA-Z] ":" [/\\] # Windows root | "~" # home directory FilePathGlobRel ::= Glob "/" FilePathGlobRel # Unix directory | Glob "\\" FilePathGlobRel # Windows directory | Glob # file | {- empty -} # trailing slash Glob ::= GlobPiece * GlobPiece ::= "*" # wildcard | [^*{},/\\] * # literal string | "\\" [*{},] # escaped reserved character | "{" Glob "," ... "," Glob "}" # union (match any of these)hjtjDjwihjh}r"w(jjXabnfjjh]h]h]j}h]h]ujPM jjih]r#whXFilePathGlob ::= FilePathRoot FilePathGlobRel FilePathRoot ::= {- empty -} # relative to cabal.project | "/" # Unix root | [a-zA-Z] ":" [/\\] # Windows root | "~" # home directory FilePathGlobRel ::= Glob "/" FilePathGlobRel # Unix directory | Glob "\\" FilePathGlobRel # Windows directory | Glob # file | {- empty -} # trailing slash Glob ::= GlobPiece * GlobPiece ::= "*" # wildcard | [^*{},/\\] * # literal string | "\\" [*{},] # escaped reserved character | "{" Glob "," ... "," Glob "}" # union (match any of these)r$wr%w}r&w(hUhj wubaubjn)r'w}r(w(hUhjtjDjwihjqh}r)w(h]h]h]h]r*wU9specifying-packages-from-remote-version-control-locationsr+wah]r,wjiaujPM jjih]r-w(h)r.w}r/w(hX9Specifying Packages from Remote Version Control Locationsr0whj'wjDjwihhh}r1w(h]h]h]h]h]ujPM jjih]r2whX9Specifying Packages from Remote Version Control Locationsr3wr4w}r5w(hj0wjDNjPNjjihj.wubaubjZ)r6w}r7w(hXStarting with Cabal 2.4, there is now a stanza ``source-repository-package`` for specifying packages from an external version control which supports the following fields:hj'wjDjwihj]h}r8w(h]h]h]h]h]ujPM"jjih]r9w(hX/Starting with Cabal 2.4, there is now a stanza r:wr;w}rw(hX``source-repository-package``h}r?w(h]h]h]h]h]uhj6wh]r@whXsource-repository-packagerAwrBw}rCw(hXsource-repository-packagehj=wubahjubhX^ for specifying packages from an external version control which supports the following fields:rDwrEw}rFw(hX^ for specifying packages from an external version control which supports the following fields:jDNjPNjjihj6wubeubj )rGw}rHw(hUhj'wjDjwihj h}rIw(j X-h]h]h]h]h]ujPM&jjih]rJw(j )rKw}rLw(hX#:pkg-field:`source-repository:type`rMwhjGwjDjwihj h}rNw(h]h]h]h]h]ujPNjjih]rOwjZ)rPw}rQw(hjMwhjKwjDjwihj]h}rRw(h]h]h]h]h]ujPM&h]rSwjM)rTw}rUw(hjMwhjPwjDjwihjPh}rVw(UreftypeX pkg-fieldjRjSXtypeU refdomainXcabalrWwh]h]U refexplicith]h]h]jVhjlXsource-repositoryujPM&h]rXwj)rYw}rZw(hXsource-repository:typeh}r[w(h]h]r\w(j]jWwXcabal-pkg-fieldr]weh]h]h]uhjTwh]r^whXsource-repository:typer_wr`w}raw(hUhjYwubahjubaubaubaubj )rbw}rcw(hX':pkg-field:`source-repository:location`rdwhjGwjDjwihj h}rew(h]h]h]h]h]ujPNjjih]rfwjZ)rgw}rhw(hjdwhjbwjDjwihj]h}riw(h]h]h]h]h]ujPM'h]rjwjM)rkw}rlw(hjdwhjgwjDjwihjPh}rmw(UreftypeX pkg-fieldjRjSXlocationU refdomainXcabalrnwh]h]U refexplicith]h]h]jVhjlXsource-repositoryujPM'h]rowj)rpw}rqw(hXsource-repository:locationh}rrw(h]h]rsw(j]jnwXcabal-pkg-fieldrtweh]h]h]uhjkwh]ruwhXsource-repository:locationrvwrww}rxw(hUhjpwubahjubaubaubaubj )ryw}rzw(hX":pkg-field:`source-repository:tag`r{whjGwjDjwihj h}r|w(h]h]h]h]h]ujPNjjih]r}wjZ)r~w}rw(hj{whjywjDjwihj]h}rw(h]h]h]h]h]ujPM(h]rwjM)rw}rw(hj{whj~wjDjwihjPh}rw(UreftypeX pkg-fieldjRjSXtagU refdomainXcabalrwh]h]U refexplicith]h]h]jVhjlXsource-repositoryujPM(h]rwj)rw}rw(hXsource-repository:tagh}rw(h]h]rw(j]jwXcabal-pkg-fieldrweh]h]h]uhjwh]rwhXsource-repository:tagrwrw}rw(hUhjwubahjubaubaubaubj )rw}rw(hX&:pkg-field:`source-repository:subdir` hjGwjDjwihj h}rw(h]h]h]h]h]ujPNjjih]rwjZ)rw}rw(hX%:pkg-field:`source-repository:subdir`rwhjwjDjwihj]h}rw(h]h]h]h]h]ujPM)h]rwjM)rw}rw(hjwhjwjDjwihjPh}rw(UreftypeX pkg-fieldjRjSXsubdirU refdomainXcabalrwh]h]U refexplicith]h]h]jVhjlXsource-repositoryujPM)h]rwj)rw}rw(hXsource-repository:subdirh}rw(h]h]rw(j]jwXcabal-pkg-fieldrweh]h]h]uhjwh]rwhXsource-repository:subdirrwrw}rw(hUhjwubahjubaubaubaubeubjZ)rw}rw(hX A simple example is shown below:rwhj'wjDjwihj]h}rw(h]h]h]h]h]ujPM+jjih]rwhX A simple example is shown below:rwrw}rw(hjwjDNjPNjjihjwubaubj)rw}rw(hX5packages: . source-repository-package type: git location: https://github.com/hvr/HsYAML.git tag: e70cf0c171c9a586b62b3f75d72f1591e4e6aaa1 source-repository-package type: git location: https://github.com/well-typed/cborg tag: 3d274c14ca3077c3a081ba7ad57c5182da65c8c1 subdir: cborghj'wjDjwihjh}rw(jjXcabaljjh]h]h]j}h]h]ujPM-jjih]rwhX5packages: . source-repository-package type: git location: https://github.com/hvr/HsYAML.git tag: e70cf0c171c9a586b62b3f75d72f1591e4e6aaa1 source-repository-package type: git location: https://github.com/well-typed/cborg tag: 3d274c14ca3077c3a081ba7ad57c5182da65c8c1 subdir: cborgrwrw}rw(hUhjwubaubeubeubjn)rw}rw(hUhjsjDjwihjqh}rw(h]h]h]h]rwjOah]rwjiaujPM=jjih]rw(h)rw}rw(hXGlobal configuration optionsrwhjwjDjwihhh}rw(h]h]h]h]h]ujPM=jjih]rwhXGlobal configuration optionsrwrw}rw(hjwjDNjPNjjihjwubaubjZ)rw}rw(hXgThe following top-level configuration options are not specific to any package, and thus apply globally:rwhjwjDjwihj]h}rw(h]h]h]h]h]ujPM?jjih]rwhXgThe following top-level configuration options are not specific to any package, and thus apply globally:rwrw}rw(hjwjDNjPNjjihjwubaubj )rw}rw(hUhjwjDjwihjnh}rw(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rw}rw(hUhjwjDjwihj h}rw(j j Xcabalh]h]h]h]h]j X cfg-fieldrwj jwujPNjjih]rw(j )rw}rw(hX verbose: nathjwjDjwihj h}rw(h]rwjnah]h]h]h]j ujPNjjih]rw(j )rw}rw(hUhjwjDjwihjnh}rw(h]h]h]h]h]Uentries]rw(j! Xverbose ; cabal project optionjnUNtrwaujPNjjih]ubj# )rw}rw(hjmhjwjDjwihj& h}rw(jjh]h]h]h]h]ujPNjjih]rwhXverboserwrw}rw(hUjDNjPNjjihjwubaubj, )rw}rw(hj/ hjwjDjwihj0 h}rw(jjh]h]h]h]h]ujPNjjih]rwhX: rwrw}rw(hUjDNjPNjjihjwubaubj6 )rw}rw(hXnathjwjDjwihj9 h}rw(jjh]h]h]h]h]ujPNjjih]rwhXnatrwrw}rw(hUjDNjPNjjihjwubaubeubj )rw}rw(hX--verbose=n, -vnhjwjDjwihj h}rw(h]rwjah]h]h]h]j ujPNjjih]rw(j )rw}rw(hUhjwjDjwihjnh}rw(h]h]h]h]h]Uentries]rw(j! X--verbose; cabal project optionjUNtrwaujPNjjih]ubj# )rw}rw(hjhjwjDjwihj& h}rw(jjh]h]h]h]h]ujPNjjih]rxhX --verboserxrx}rx(hUjDNjPNjjihjwubaubj, )rx}rx(hX=nhjwjDjwihj0 h}rx(jjh]h]h]h]h]ujPNjjih]rxhX=nrxr x}r x(hUjDNjPNjjihjxubaubj# )r x}r x(hU, r xhjwjDjwihj& h}rx(jjh]h]h]h]h]ujPNjjih]rxhX, rxrx}rx(hUjDNjPNjjihj xubaubj# )rx}rx(hX-vnhjwjDjwihj& h}rx(jjh]h]h]h]h]ujPNjjih]rxhX-vnrxrx}rx(hUjDNjPNjjihjxubaubj, )rx}rx(hU hjwjDjwihj0 h}rx(jjh]h]h]h]h]ujPNjjih]rxhX rx}rx(hUjDNjPNjjihjxubaubeubjh)r x}r!x(hUhjwjDjwihjA h}r"x(h]h]h]h]h]ujPNjjih]r#x(j)r$x}r%x(hUhj xjDjwihjh}r&x(h]h]h]h]h]ujPNjjih]r'xj)r(x}r)x(hUh}r*x(h]h]h]h]h]uhj$xh]r+x(j )r,x}r-x(hX Default valuehj(xjDjwihj h}r.x(h]h]h]h]h]ujPKh]r/xhX Default valuer0xr1x}r2x(hUhj,xubaubj)r3x}r4x(hUh}r5x(h]h]h]h]h]uhj(xh]r6xjZ)r7x}r8x(hX1h}r9x(h]h]h]h]h]uhj3xh]r:xhX1r;x}rx(hXJControl the verbosity of ``cabal`` commands, valid values are from 0 to 3.hj xjDjwihj]h}r?x(h]h]h]h]h]ujPMIjjih]r@x(hXControl the verbosity of rAxrBx}rCx(hXControl the verbosity of jDNjPNjjihj=xubj)rDx}rEx(hX ``cabal``h}rFx(h]h]h]h]h]uhj=xh]rGxhXcabalrHxrIx}rJx(hXcabalhjDxubahjubhX( commands, valid values are from 0 to 3.rKxrLx}rMx(hX( commands, valid values are from 0 to 3.jDNjPNjjihj=xubeubjZ)rNx}rOx(hXbThe command line variant of this field is ``--verbose=2``; a short form ``-v2`` is also supported.hj xjDjwihj]h}rPx(h]h]h]h]h]ujPMLjjih]rQx(hX*The command line variant of this field is rRxrSx}rTx(hX*The command line variant of this field is jDNjPNjjihjNxubj)rUx}rVx(hX``--verbose=2``h}rWx(h]h]h]h]h]uhjNxh]rXxhX --verbose=2rYxrZx}r[x(hX --verbose=2hjUxubahjubhX; a short form r\xr]x}r^x(hX; a short form jDNjPNjjihjNxubj)r_x}r`x(hX``-v2``h}rax(h]h]h]h]h]uhjNxh]rbxhX-v2rcxrdx}rex(hX-v2hj_xubahjubhX is also supported.rfxrgx}rhx(hX is also supported.jDNjPNjjihjNxubeubeubeubj )rix}rjx(hUhjwjDjwihjnh}rkx(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rlx}rmx(hUhjwjDjwihj h}rnx(j j Xcabalh]h]h]h]h]j X cfg-fieldroxj joxujPNjjih]rpx(j )rqx}rrx(hXjobs: nat or $ncpushjlxjDjwihj h}rsx(h]rtxjah]h]h]h]j ujPNjjih]rux(j )rvx}rwx(hUhjqxjDjwihjnh}rxx(h]h]h]h]h]Uentries]ryx(j! Xjobs ; cabal project optionjUNtrzxaujPNjjih]ubj# )r{x}r|x(hjhjqxjDjwihj& h}r}x(jjh]h]h]h]h]ujPNjjih]r~xhXjobsrxrx}rx(hUjDNjPNjjihj{xubaubj, )rx}rx(hj/ hjqxjDjwihj0 h}rx(jjh]h]h]h]h]ujPNjjih]rxhX: rxrx}rx(hUjDNjPNjjihjxubaubj6 )rx}rx(hX nat or $ncpushjqxjDjwihj9 h}rx(jjh]h]h]h]h]ujPNjjih]rxhX nat or $ncpusrxrx}rx(hUjDNjPNjjihjxubaubeubj )rx}rx(hX--jobs=n, -jn, --jobs=$ncpushjlxjDjwihj h}rx(h]rxjLah]h]h]h]j ujPNjjih]rx(j )rx}rx(hUhjxjDjwihjnh}rx(h]h]h]h]h]Uentries]rx(j! X--jobs; cabal project optionjLUNtrxaujPNjjih]ubj# )rx}rx(hjKhjxjDjwihj& h}rx(jjh]h]h]h]h]ujPNjjih]rxhX--jobsrxrx}rx(hUjDNjPNjjihjxubaubj, )rx}rx(hX=nhjxjDjwihj0 h}rx(jjh]h]h]h]h]ujPNjjih]rxhX=nrxrx}rx(hUjDNjPNjjihjxubaubj# )rx}rx(hj xhjxjDjwihj& h}rx(jjh]h]h]h]h]ujPNjjih]rxhX, rxrx}rx(hUjDNjPNjjihjxubaubj# )rx}rx(hX-jnhjxjDjwihj& h}rx(jjh]h]h]h]h]ujPNjjih]rxhX-jnrxrx}rx(hUjDNjPNjjihjxubaubj, )rx}rx(hU hjxjDjwihj0 h}rx(jjh]h]h]h]h]ujPNjjih]rxhX rx}rx(hUjDNjPNjjihjxubaubj# )rx}rx(hj xhjxjDjwihj& h}rx(jjh]h]h]h]h]ujPNjjih]rxhX, rxrx}rx(hUjDNjPNjjihjxubaubj# )rx}rx(hX--jobshjxjDjwihj& h}rx(jjh]h]h]h]h]ujPNjjih]rxhX--jobsrxrx}rx(hUjDNjPNjjihjxubaubj, )rx}rx(hX=$ncpushjxjDjwihj0 h}rx(jjh]h]h]h]h]ujPNjjih]rxhX=$ncpusrxrx}rx(hUjDNjPNjjihjxubaubeubjh)rx}rx(hUhjlxjDjwihjA h}rx(h]h]h]h]h]ujPNjjih]rx(j)rx}rx(hUhjxjDjwihjh}rx(h]h]h]h]h]ujPNjjih]rxj)rx}rx(hUh}rx(h]h]h]h]h]uhjxh]rx(j )rx}rx(hX Default valuehjxjDjwihj h}rx(h]h]h]h]h]ujPKh]rxhX Default valuerxrx}rx(hUhjxubaubj)rx}rx(hUh}rx(h]h]h]h]h]uhjxh]rxjZ)rx}rx(hX1h}rx(h]h]h]h]h]uhjxh]rxhX1rx}rx(hX1jDNjPNjjihjxubahj]ubahj-ubehj.ubaubjZ)rx}rx(hXRun *nat* jobs simultaneously when building. If ``$ncpus`` is specified, run the number of jobs equal to the number of CPUs. Package building is often quite parallel, so turning on parallelism can speed up build times quite a bit!hjxjDjwihj]h}rx(h]h]h]h]h]ujPMUjjih]rx(hXRun rxrx}rx(hXRun jDNjPNjjihjxubj)rx}rx(hX*nat*h}rx(h]h]h]h]h]uhjxh]rxhXnatrxrx}rx(hXnathjxubahjubhX' jobs simultaneously when building. If rxrx}rx(hX' jobs simultaneously when building. If jDNjPNjjihjxubj)rx}ry(hX ``$ncpus``h}ry(h]h]h]h]h]uhjxh]ryhX$ncpusryry}ry(hX$ncpushjxubahjubhX is specified, run the number of jobs equal to the number of CPUs. Package building is often quite parallel, so turning on parallelism can speed up build times quite a bit!ryry}ry(hX is specified, run the number of jobs equal to the number of CPUs. Package building is often quite parallel, so turning on parallelism can speed up build times quite a bit!jDNjPNjjihjxubeubjZ)r y}r y(hXThe command line variant of this field is ``--jobs=2``; a short form ``-j2`` is also supported; a bare ``--jobs`` or ``-j`` is equivalent to ``--jobs=$ncpus``.hjxjDjwihj]h}r y(h]h]h]h]h]ujPMZjjih]r y(hX*The command line variant of this field is r yry}ry(hX*The command line variant of this field is jDNjPNjjihj yubj)ry}ry(hX ``--jobs=2``h}ry(h]h]h]h]h]uhj yh]ryhX--jobs=2ryry}ry(hX--jobs=2hjyubahjubhX; a short form ryry}ry(hX; a short form jDNjPNjjihj yubj)ry}ry(hX``-j2``h}ry(h]h]h]h]h]uhj yh]ryhX-j2ryry}r y(hX-j2hjyubahjubhX is also supported; a bare r!yr"y}r#y(hX is also supported; a bare jDNjPNjjihj yubj)r$y}r%y(hX ``--jobs``h}r&y(h]h]h]h]h]uhj yh]r'yhX--jobsr(yr)y}r*y(hX--jobshj$yubahjubhX or r+yr,y}r-y(hX or jDNjPNjjihj yubj)r.y}r/y(hX``-j``h}r0y(h]h]h]h]h]uhj yh]r1yhX-jr2yr3y}r4y(hX-jhj.yubahjubhX is equivalent to r5yr6y}r7y(hX is equivalent to jDNjPNjjihj yubj)r8y}r9y(hX``--jobs=$ncpus``h}r:y(h]h]h]h]h]uhj yh]r;yhX --jobs=$ncpusry(hX --jobs=$ncpushj8yubahjubhX.r?y}r@y(hX.jDNjPNjjihj yubeubeubeubj )rAy}rBy(hUhjwjDjwihjnh}rCy(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rDy}rEy(hUhjwjDjwihj h}rFy(j j Xcabalh]h]h]h]h]j X cfg-fieldrGyj jGyujPNjjih]rHy(j )rIy}rJy(hXkeep-going: booleanhjDyjDjwihj h}rKy(h]rLyjah]h]h]h]j ujPNjjih]rMy(j )rNy}rOy(hUhjIyjDjwihjnh}rPy(h]h]h]h]h]Uentries]rQy(j! X!keep-going ; cabal project optionjUNtrRyaujPNjjih]ubj# )rSy}rTy(hjhjIyjDjwihj& h}rUy(jjh]h]h]h]h]ujPNjjih]rVyhX keep-goingrWyrXy}rYy(hUjDNjPNjjihjSyubaubj, )rZy}r[y(hj/ hjIyjDjwihj0 h}r\y(jjh]h]h]h]h]ujPNjjih]r]yhX: r^yr_y}r`y(hUjDNjPNjjihjZyubaubj6 )ray}rby(hXbooleanhjIyjDjwihj9 h}rcy(jjh]h]h]h]h]ujPNjjih]rdyhXbooleanreyrfy}rgy(hUjDNjPNjjihjayubaubeubj )rhy}riy(hjhjDyjDjwihj h}rjy(h]rkyjah]h]h]h]j ujPNjjih]rly(j )rmy}rny(hUhjhyjDjwihjnh}roy(h]h]h]h]h]Uentries]rpy(j! X"--keep-going; cabal project optionjUNtrqyaujPNjjih]ubj# )rry}rsy(hjhjhyjDjwihj& h}rty(jjh]h]h]h]h]ujPNjjih]ruyhX --keep-goingrvyrwy}rxy(hUjDNjPNjjihjryubaubj, )ryy}rzy(hU hjhyjDjwihj0 h}r{y(jjh]h]h]h]h]ujPNjjih]r|yhX r}y}r~y(hUjDNjPNjjihjyyubaubeubjh)ry}ry(hUhjDyjDjwihjA h}ry(h]h]h]h]h]ujPNjjih]ry(j)ry}ry(hUhjyjDjwihjh}ry(h]h]h]h]h]ujPNjjih]ryj)ry}ry(hUh}ry(h]h]h]h]h]uhjyh]ry(j )ry}ry(hX Default valuehjyjDjwihj h}ry(h]h]h]h]h]ujPKh]ryhX Default valueryry}ry(hUhjyubaubj)ry}ry(hUh}ry(h]h]h]h]h]uhjyh]ryjZ)ry}ry(hXFalseh}ry(h]h]h]h]h]uhjyh]ryhXFalseryry}ry(hXFalsejDNjPNjjihjyubahj]ubahj-ubehj.ubaubjZ)ry}ry(hXLIf true, after a build failure, continue to build other unaffected packages.ryhjyjDjwihj]h}ry(h]h]h]h]h]ujPMdjjih]ryhXLIf true, after a build failure, continue to build other unaffected packages.ryry}ry(hjyjDNjPNjjihjyubaubjZ)ry}ry(hX;The command line variant of this field is ``--keep-going``.hjyjDjwihj]h}ry(h]h]h]h]h]ujPMgjjih]ry(hX*The command line variant of this field is ryry}ry(hX*The command line variant of this field is jDNjPNjjihjyubj)ry}ry(hX``--keep-going``h}ry(h]h]h]h]h]uhjyh]ryhX --keep-goingryry}ry(hX --keep-goinghjyubahjubhX.ry}ry(hX.jDNjPNjjihjyubeubeubeubj )ry}ry(hUhjwjDjwihjnh}ry(h]h]h]h]h]Uentries]ry(j! X#command line option; --builddir=DIRjUNtryaujPNjjih]ubjk)ry}ry(hUhjwjDjwihj h}ry(j j Xstdh]h]h]h]h]j Xoptionryj jyujPNjjih]ry(j )ry}ry(hX--builddir=DIRhjyjDjwihj h}ry(Uallnamesry]ryjah]ryjah]h]h]h]ryjiaj ujPMrjjih]ry(j# )ry}ry(hjhjyjDjwihj& h}ry(jjh]h]h]h]h]ujPMrjjih]ryhX --builddirryry}ry(hUjDNjPNjjihjyubaubj, )ry}ry(hX=DIRhjyjDjwihj0 h}ry(jjh]h]h]h]h]ujPMrjjih]ryhX=DIRryry}ry(hUjDNjPNjjihjyubaubeubjh)ry}ry(hUhjyjDjwihjA h}ry(h]h]h]h]h]ujPMrjjih]ry(jZ)ry}ry(hXSpecifies the name of the directory where build products for build will be stored; defaults to ``dist-newstyle``. If a relative name is specified, this directory is resolved relative to the root of the project (i.e., where the ``cabal.project`` file lives.)hjyjDjwihj]h}ry(h]h]h]h]h]ujPMkjjih]ry(hX_Specifies the name of the directory where build products for build will be stored; defaults to ryry}ry(hX_Specifies the name of the directory where build products for build will be stored; defaults to jDNjPNjjihjyubj)ry}ry(hX``dist-newstyle``h}ry(h]h]h]h]h]uhjyh]ryhX dist-newstyleryry}ry(hX dist-newstylehjyubahjubhXt. If a relative name is specified, this directory is resolved relative to the root of the project (i.e., where the ryry}ry(hXt. If a relative name is specified, this directory is resolved relative to the root of the project (i.e., where the jDNjPNjjihjyubj)ry}ry(hX``cabal.project``h}ry(h]h]h]h]h]uhjyh]ryhX cabal.projectryry}ry(hX cabal.projecthjyubahjubhX file lives.)ryry}ry(hX file lives.)jDNjPNjjihjyubeubjZ)ry}ry(hX=This option cannot be specified via a ``cabal.project`` file.hjyjDjwihj]h}ry(h]h]h]h]h]ujPMqjjih]ry(hX&This option cannot be specified via a ryry}ry(hX&This option cannot be specified via a jDNjPNjjihjyubj)ry}ry(hX``cabal.project``h}ry(h]h]h]h]h]uhjyh]ryhX cabal.projectryrz}rz(hX cabal.projecthjyubahjubhX file.rzrz}rz(hX file.jDNjPNjjihjyubeubeubeubje)rz}rz(hX.. _cmdoption-project-file:hjwjDjwihjdh}rz(h]h]h]h]rzjQah]r zjPaujPMsjjih]ubj )r z}r z(hUhjwjDjwihjnh}r z(h]h]h]h]h]Uentries]r z(j! X(command line option; --project-file=FILEjUNtrzaujPNjjih]ubjk)rz}rz(hUhjwjDjwihj h}rz(j j Xstdh]h]h]h]h]j Xoptionrzj jzujPNjjih]rz(j )rz}rz(hX--project-file=FILEhjzjDjwihj h}rz(jy]rzjah]rzjah]h]h]h]rzjiaj ujPMjjih]rz(j# )rz}rz(hjhjzjDjwihj& h}rz(jjh]h]h]h]h]ujPMjjih]rzhX--project-filerzr z}r!z(hUjDNjPNjjihjzubaubj, )r"z}r#z(hX=FILEhjzjDjwihj0 h}r$z(jjh]h]h]h]h]ujPMjjih]r%zhX=FILEr&zr'z}r(z(hUjDNjPNjjihj"zubaubeubjh)r)z}r*z(hUhjzjDjwihjA h}r+z(h]h]h]h]h]ujPMjjih]r,z(jZ)r-z}r.z(hXSpecifies the name of the project file used to specify the rest of the top-level configuration; defaults to ``cabal.project``. This name not only specifies the name of the main project file, but also the auxiliary project files ``cabal.project.freeze`` and ``cabal.project.local``; for example, if you specify ``--project-file=my.project``, then the other files that will be probed are ``my.project.freeze`` and ``my.project.local``.hj)zjDjwihj]h}r/z(h]h]h]h]h]ujPMvjjih]r0z(hXlSpecifies the name of the project file used to specify the rest of the top-level configuration; defaults to r1zr2z}r3z(hXlSpecifies the name of the project file used to specify the rest of the top-level configuration; defaults to jDNjPNjjihj-zubj)r4z}r5z(hX``cabal.project``h}r6z(h]h]h]h]h]uhj-zh]r7zhX cabal.projectr8zr9z}r:z(hX cabal.projecthj4zubahjubhXg. This name not only specifies the name of the main project file, but also the auxiliary project files r;zrz}r?z(hX``cabal.project.freeze``h}r@z(h]h]h]h]h]uhj-zh]rAzhXcabal.project.freezerBzrCz}rDz(hXcabal.project.freezehj>zubahjubhX and rEzrFz}rGz(hX and jDNjPNjjihj-zubj)rHz}rIz(hX``cabal.project.local``h}rJz(h]h]h]h]h]uhj-zh]rKzhXcabal.project.localrLzrMz}rNz(hXcabal.project.localhjHzubahjubhX; for example, if you specify rOzrPz}rQz(hX; for example, if you specify jDNjPNjjihj-zubj)rRz}rSz(hX``--project-file=my.project``h}rTz(h]h]h]h]h]uhj-zh]rUzhX--project-file=my.projectrVzrWz}rXz(hX--project-file=my.projecthjRzubahjubhX/, then the other files that will be probed are rYzrZz}r[z(hX/, then the other files that will be probed are jDNjPNjjihj-zubj)r\z}r]z(hX``my.project.freeze``h}r^z(h]h]h]h]h]uhj-zh]r_zhXmy.project.freezer`zraz}rbz(hXmy.project.freezehj\zubahjubhX and rczrdz}rez(hX and jDNjPNjjihj-zubj)rfz}rgz(hX``my.project.local``h}rhz(h]h]h]h]h]uhj-zh]rizhXmy.project.localrjzrkz}rlz(hXmy.project.localhjfzubahjubhX.rmz}rnz(hX.jDNjPNjjihj-zubeubjZ)roz}rpz(hXIf the specified project file is a relative path, we will look for the file relative to the current working directory, and then for the parent directory, until the project file is found or we have hit the top of the user's home directory.rqzhj)zjDjwihj]h}rrz(h]h]h]h]h]ujPM~jjih]rszhXIf the specified project file is a relative path, we will look for the file relative to the current working directory, and then for the parent directory, until the project file is found or we have hit the top of the user’s home directory.rtzruz}rvz(hjqzjDNjPNjjihjozubaubjZ)rwz}rxz(hX=This option cannot be specified via a ``cabal.project`` file.hj)zjDjwihj]h}ryz(h]h]h]h]h]ujPMjjih]rzz(hX&This option cannot be specified via a r{zr|z}r}z(hX&This option cannot be specified via a jDNjPNjjihjwzubj)r~z}rz(hX``cabal.project``h}rz(h]h]h]h]h]uhjwzh]rzhX cabal.projectrzrz}rz(hX cabal.projecthj~zubahjubhX file.rzrz}rz(hX file.jDNjPNjjihjwzubeubeubeubj )rz}rz(hUhjwjDjwihjnh}rz(h]h]h]h]h]Uentries]rz(j! X$command line option; --store-dir=DIRjUNtrzaujPNjjih]ubjk)rz}rz(hUhjwjDjwihj h}rz(j j Xstdh]h]h]h]h]j Xoptionrzj jzujPNjjih]rz(j )rz}rz(hX--store-dir=DIRhjzjDjwihj h}rz(jy]rzjah]rzjah]h]h]h]rzjiaj ujPMjjih]rz(j# )rz}rz(hjhjzjDjwihj& h}rz(jjh]h]h]h]h]ujPMjjih]rzhX --store-dirrzrz}rz(hUjDNjPNjjihjzubaubj, )rz}rz(hX=DIRhjzjDjwihj0 h}rz(jjh]h]h]h]h]ujPMjjih]rzhX=DIRrzrz}rz(hUjDNjPNjjihjzubaubeubjh)rz}rz(hUhjzjDjwihjA h}rz(h]h]h]h]h]ujPMjjih]rzjZ)rz}rz(hX@Specifies the name of the directory of the global package store.rzhjzjDjwihj]h}rz(h]h]h]h]h]ujPMjjih]rzhX@Specifies the name of the directory of the global package store.rzrz}rz(hjzjDNjPNjjihjzubaubaubeubeubjn)rz}rz(hUhjsjDjwihjqh}rz(h]h]h]h]rzj*ah]rzjiaujPMjjih]rz(h)rz}rz(hXSolver configuration optionsrzhjzjDjwihhh}rz(h]h]h]h]h]ujPMjjih]rzhXSolver configuration optionsrzrz}rz(hjzjDNjPNjjihjzubaubjZ)rz}rz(hXEThe following settings control the behavior of the dependency solver:rzhjzjDjwihj]h}rz(h]h]h]h]h]ujPMjjih]rzhXEThe following settings control the behavior of the dependency solver:rzrz}rz(hjzjDNjPNjjihjzubaubj )rz}rz(hUhjzjDjwihjnh}rz(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rz}rz(hUhjzjDjwihj h}rz(j j Xcabalh]h]h]h]h]j X cfg-fieldrzj jzujPNjjih]rz(j )rz}rz(hX/constraints: constraints list (comma separated)hjzjDjwihj h}rz(h]rzj?ah]h]h]h]j ujPNjjih]rz(j )rz}rz(hUhjzjDjwihjnh}rz(h]h]h]h]h]Uentries]rz(j! X"constraints ; cabal project optionj?UNtrzaujPNjjih]ubj# )rz}rz(hj>hjzjDjwihj& h}rz(jjh]h]h]h]h]ujPNjjih]rzhX constraintsrzrz}rz(hUjDNjPNjjihjzubaubj, )rz}rz(hj/ hjzjDjwihj0 h}rz(jjh]h]h]h]h]ujPNjjih]rzhX: rzrz}rz(hUjDNjPNjjihjzubaubj6 )rz}rz(hX"constraints list (comma separated)hjzjDjwihj9 h}rz(jjh]h]h]h]h]ujPNjjih]rzhX"constraints list (comma separated)rzrz}rz(hUjDNjPNjjihjzubaubeubj )rz}rz(hX--constraint="pkg >= 2.0"hjzjDjwihj h}rz(h]rzjah]h]h]h]j ujPNjjih]rz(j )rz}rz(hUhjzjDjwihjnh}rz(h]h]h]h]h]Uentries]rz(j! X"--constraint; cabal project optionjUNtrzaujPNjjih]ubj# )rz}rz(hjhjzjDjwihj& h}rz(jjh]h]h]h]h]ujPNjjih]rzhX --constraintrzrz}r{(hUjDNjPNjjihjzubaubj, )r{}r{(hX ="pkg > 2.0"hjzjDjwihj0 h}r{(jjh]h]h]h]h]ujPNjjih]r{hX ="pkg > 2.0"r{r{}r{(hUjDNjPNjjihj{ubaubeubjh)r{}r {(hUhjzjDjwihjA h}r {(h]h]h]h]h]ujPNjjih]r {(jZ)r {}r {(hX~Add extra constraints to the version bounds, flag settings, and other properties a solver can pick for a package. For example:r{hj{jDjwihj]h}r{(h]h]h]h]h]ujPMjjih]r{hX~Add extra constraints to the version bounds, flag settings, and other properties a solver can pick for a package. For example:r{r{}r{(hj{jDNjPNjjihj {ubaubj)r{}r{(hXconstraints: bar == 2.1hj{jDjwihjh}r{(jjh]h]h]h]h]ujPMjjih]r{hXconstraints: bar == 2.1r{r{}r{(hUhj{ubaubjZ)r{}r{(hX&A package can be specified multiple times in ``constraints``, in which case the specified constraints are intersected. This is useful, since the syntax does not allow you to specify multiple constraints at once. For example, to specify both version bounds and flag assignments, you would write:hj{jDjwihj]h}r{(h]h]h]h]h]ujPMjjih]r{(hX-A package can be specified multiple times in r{r {}r!{(hX-A package can be specified multiple times in jDNjPNjjihj{ubj)r"{}r#{(hX``constraints``h}r${(h]h]h]h]h]uhj{h]r%{hX constraintsr&{r'{}r({(hX constraintshj"{ubahjubhX, in which case the specified constraints are intersected. This is useful, since the syntax does not allow you to specify multiple constraints at once. For example, to specify both version bounds and flag assignments, you would write:r){r*{}r+{(hX, in which case the specified constraints are intersected. This is useful, since the syntax does not allow you to specify multiple constraints at once. For example, to specify both version bounds and flag assignments, you would write:jDNjPNjjihj{ubeubj)r,{}r-{(hX3constraints: bar == 2.1, bar +foo -bazhj{jDjwihjh}r.{(jjh]h]h]h]h]ujPMjjih]r/{hX3constraints: bar == 2.1, bar +foo -bazr0{r1{}r2{(hUhj,{ubaubjZ)r3{}r4{(hXValid constraints take the same form as for the `constraint command line option `__.hj{jDjwihj]h}r5{(h]h]h]h]h]ujPMjjih]r6{(hX0Valid constraints take the same form as for the r7{r8{}r9{(hX0Valid constraints take the same form as for the jDNjPNjjihj3{ubj!)r:{}r;{(hXb`constraint command line option `__h}r<{(UnameXconstraint command line optionj] X=installing-packages.html#cmdoption-setup-configure-constrainth]h]h]h]h]uhj3{h]r={hXconstraint command line optionr>{r?{}r@{(hXconstraint command line optionhj:{ubahj%ubhX.rA{}rB{(hX.jDNjPNjjihj3{ubeubeubeubj )rC{}rD{(hUhjzjDjwihjnh}rE{(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rF{}rG{(hUhjzjDjwihj h}rH{(j j Xcabalh]h]h]h]h]j X cfg-fieldrI{j jI{ujPNjjih]rJ{(j )rK{}rL{(hX)preferences: preference (comma separated)hjF{jDjwihj h}rM{(h]rN{jah]h]h]h]j ujPNjjih]rO{(j )rP{}rQ{(hUhjK{jDjwihjnh}rR{(h]h]h]h]h]Uentries]rS{(j! X"preferences ; cabal project optionjUNtrT{aujPNjjih]ubj# )rU{}rV{(hjhjK{jDjwihj& h}rW{(jjh]h]h]h]h]ujPNjjih]rX{hX preferencesrY{rZ{}r[{(hUjDNjPNjjihjU{ubaubj, )r\{}r]{(hj/ hjK{jDjwihj0 h}r^{(jjh]h]h]h]h]ujPNjjih]r_{hX: r`{ra{}rb{(hUjDNjPNjjihj\{ubaubj6 )rc{}rd{(hXpreference (comma separated)hjK{jDjwihj9 h}re{(jjh]h]h]h]h]ujPNjjih]rf{hXpreference (comma separated)rg{rh{}ri{(hUjDNjPNjjihjc{ubaubeubj )rj{}rk{(hX--preference="pkg >= 2.0"hjF{jDjwihj h}rl{(h]rm{jah]h]h]h]j ujPNjjih]rn{(j )ro{}rp{(hUhjj{jDjwihjnh}rq{(h]h]h]h]h]Uentries]rr{(j! X"--preference; cabal project optionjUNtrs{aujPNjjih]ubj# )rt{}ru{(hjhjj{jDjwihj& h}rv{(jjh]h]h]h]h]ujPNjjih]rw{hX --preferencerx{ry{}rz{(hUjDNjPNjjihjt{ubaubj, )r{{}r|{(hX ="pkg > 2.0"hjj{jDjwihj0 h}r}{(jjh]h]h]h]h]ujPNjjih]r~{hX ="pkg > 2.0"r{r{}r{(hUjDNjPNjjihj{{ubaubeubjh)r{}r{(hUhjF{jDjwihjA h}r{(h]h]h]h]h]ujPNjjih]r{(jZ)r{}r{(hX0Like :cfg-field:`constraints`, but the solver will attempt to satisfy these preferences on a best-effort basis. The resulting install is locally optimal with respect to preferences; specifically, no single package could be replaced with a more preferred version that still satisfies the hard constraints.hj{jDjwihj]h}r{(h]h]h]h]h]ujPMjjih]r{(hXLike r{r{}r{(hXLike jDNjPNjjihj{ubjM)r{}r{(hX:cfg-field:`constraints`hj{jDjwihjPh}r{(UreftypeX cfg-fieldjRjSX constraintsr{U refdomainXcabalr{h]h]U refexplicith]h]h]jVhjnNujPMh]r{j)r{}r{(hj{h}r{(h]h]r{(j]j{Xcabal-cfg-fieldr{eh]h]h]uhj{h]r{hX constraintsr{r{}r{(hUhj{ubahjubaubhX, but the solver will attempt to satisfy these preferences on a best-effort basis. The resulting install is locally optimal with respect to preferences; specifically, no single package could be replaced with a more preferred version that still satisfies the hard constraints.r{r{}r{(hX, but the solver will attempt to satisfy these preferences on a best-effort basis. The resulting install is locally optimal with respect to preferences; specifically, no single package could be replaced with a more preferred version that still satisfies the hard constraints.jDNjPNjjihj{ubeubjZ)r{}r{(hXOperationally, preferences can cause the solver to attempt certain version choices of a package before others, which can improve dependency solver runtime.r{hj{jDjwihj]h}r{(h]h]h]h]h]ujPMjjih]r{hXOperationally, preferences can cause the solver to attempt certain version choices of a package before others, which can improve dependency solver runtime.r{r{}r{(hj{jDNjPNjjihj{ubaubjZ)r{}r{(hX]One way to use :cfg-field:`preferences` is to take a known working set of constraints (e.g., via ``cabal v2-freeze``) and record them as preferences. In this case, the solver will first attempt to use this configuration, and if this violates hard constraints, it will try to find the minimal number of upgrades to satisfy the hard constraints again.hj{jDjwihj]h}r{(h]h]h]h]h]ujPMjjih]r{(hXOne way to use r{r{}r{(hXOne way to use jDNjPNjjihj{ubjM)r{}r{(hX:cfg-field:`preferences`hj{jDjwihjPh}r{(UreftypeX cfg-fieldjRjSX preferencesr{U refdomainXcabalr{h]h]U refexplicith]h]h]jVhjnNujPMh]r{j)r{}r{(hj{h}r{(h]h]r{(j]j{Xcabal-cfg-fieldr{eh]h]h]uhj{h]r{hX preferencesr{r{}r{(hUhj{ubahjubaubhX: is to take a known working set of constraints (e.g., via r{r{}r{(hX: is to take a known working set of constraints (e.g., via jDNjPNjjihj{ubj)r{}r{(hX``cabal v2-freeze``h}r{(h]h]h]h]h]uhj{h]r{hXcabal v2-freezer{r{}r{(hXcabal v2-freezehj{ubahjubhX) and record them as preferences. In this case, the solver will first attempt to use this configuration, and if this violates hard constraints, it will try to find the minimal number of upgrades to satisfy the hard constraints again.r{r{}r{(hX) and record them as preferences. In this case, the solver will first attempt to use this configuration, and if this violates hard constraints, it will try to find the minimal number of upgrades to satisfy the hard constraints again.jDNjPNjjihj{ubeubjZ)r{}r{(hXThe command line variant of this field is ``--preference="pkg >= 2.0"``; to specify multiple preferences, pass the flag multiple times.hj{jDjwihj]h}r{(h]h]h]h]h]ujPMjjih]r{(hX*The command line variant of this field is r{r{}r{(hX*The command line variant of this field is jDNjPNjjihj{ubj)r{}r{(hX``--preference="pkg >= 2.0"``h}r{(h]h]h]h]h]uhj{h]r{hX--preference="pkg >= 2.0"r{r{}r{(hX--preference="pkg >= 2.0"hj{ubahjubhX@; to specify multiple preferences, pass the flag multiple times.r{r{}r{(hX@; to specify multiple preferences, pass the flag multiple times.jDNjPNjjihj{ubeubeubeubj )r{}r{(hUhjzjDjwihjnh}r{(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r{}r{(hUhjzjDjwihj h}r{(j j Xcabalh]h]h]h]h]j X cfg-fieldr{j j{ujPNjjih]r{(j )r{}r{(hXQallow-newer: none, all or list of scoped package names (space or comma separated)hj{jDjwihj h}r{(h]r{jLah]h]h]h]j ujPNjjih]r{(j )r{}r{(hUhj{jDjwihjnh}r{(h]h]h]h]h]Uentries]r{(j! X"allow-newer ; cabal project optionjLUNtr{aujPNjjih]ubj# )r{}r{(hjKhj{jDjwihj& h}r{(jjh]h]h]h]h]ujPNjjih]r{hX allow-newerr{r{}r{(hUjDNjPNjjihj{ubaubj, )r{}r{(hj/ hj{jDjwihj0 h}r{(jjh]h]h]h]h]ujPNjjih]r{hX: r{r{}r{(hUjDNjPNjjihj{ubaubj6 )r{}r{(hXDnone, all or list of scoped package names (space or comma separated)hj{jDjwihj9 h}r{(jjh]h]h]h]h]ujPNjjih]r{hXDnone, all or list of scoped package names (space or comma separated)r{r|}r|(hUjDNjPNjjihj{ubaubeubj )r|}r|(hX6--allow-newer, --allow-newer=[none,all,[scope:][^]pkg]hj{jDjwihj h}r|(h]r|jah]h]h]h]j ujPNjjih]r|(j )r|}r|(hUhj|jDjwihjnh}r |(h]h]h]h]h]Uentries]r |(j! X#--allow-newer; cabal project optionjUNtr |aujPNjjih]ubj# )r |}r |(hjhj|jDjwihj& h}r|(jjh]h]h]h]h]ujPNjjih]r|hX --allow-newerr|r|}r|(hUjDNjPNjjihj |ubaubj, )r|}r|(hU hj|jDjwihj0 h}r|(jjh]h]h]h]h]ujPNjjih]r|hX r|}r|(hUjDNjPNjjihj|ubaubj# )r|}r|(hj xhj|jDjwihj& h}r|(jjh]h]h]h]h]ujPNjjih]r|hX, r|r|}r|(hUjDNjPNjjihj|ubaubj# )r |}r!|(hX --allow-newerhj|jDjwihj& h}r"|(jjh]h]h]h]h]ujPNjjih]r#|hX --allow-newerr$|r%|}r&|(hUjDNjPNjjihj |ubaubj, )r'|}r(|(hX=[nonehj|jDjwihj0 h}r)|(jjh]h]h]h]h]ujPNjjih]r*|hX=[noner+|r,|}r-|(hUjDNjPNjjihj'|ubaubj# )r.|}r/|(hj xhj|jDjwihj& h}r0|(jjh]h]h]h]h]ujPNjjih]r1|hX, r2|r3|}r4|(hUjDNjPNjjihj.|ubaubj# )r5|}r6|(hXallhj|jDjwihj& h}r7|(jjh]h]h]h]h]ujPNjjih]r8|hXallr9|r:|}r;|(hUjDNjPNjjihj5|ubaubj, )r<|}r=|(hU hj|jDjwihj0 h}r>|(jjh]h]h]h]h]ujPNjjih]r?|hX r@|}rA|(hUjDNjPNjjihj<|ubaubj# )rB|}rC|(hj xhj|jDjwihj& h}rD|(jjh]h]h]h]h]ujPNjjih]rE|hX, rF|rG|}rH|(hUjDNjPNjjihjB|ubaubj# )rI|}rJ|(hX[scope:][^]pkg]hj|jDjwihj& h}rK|(jjh]h]h]h]h]ujPNjjih]rL|hX[scope:][^]pkg]rM|rN|}rO|(hUjDNjPNjjihjI|ubaubj, )rP|}rQ|(hU hj|jDjwihj0 h}rR|(jjh]h]h]h]h]ujPNjjih]rS|hX rT|}rU|(hUjDNjPNjjihjP|ubaubeubjh)rV|}rW|(hUhj{jDjwihjA h}rX|(h]h]h]h]h]ujPNjjih]rY|(j)rZ|}r[|(hUhjV|jDjwihjh}r\|(h]h]h]h]h]ujPNjjih]r]|j)r^|}r_|(hUh}r`|(h]h]h]h]h]uhjZ|h]ra|(j )rb|}rc|(hX Default valuehj^|jDjwihj h}rd|(h]h]h]h]h]ujPKh]re|hX Default valuerf|rg|}rh|(hUhjb|ubaubj)ri|}rj|(hUh}rk|(h]h]h]h]h]uhj^|h]rl|jZ)rm|}rn|(hXnoneh}ro|(h]h]h]h]h]uhji|h]rp|j)rq|}rr|(hX``none``hjm|jDjwihjh}rs|(h]h]h]h]h]ujPNjjih]rt|hXnoneru|rv|}rw|(hXnonejDNjPNjjihjq|ubaubahj]ubahj-ubehj.ubaubjZ)rx|}ry|(hX Allow the solver to pick an newer version of some packages than would normally be permitted by than the :pkg-field:`build-depends` bounds of packages in the install plan. This option may be useful if the dependency solver cannot otherwise find a valid install plan.hjV|jDjwihj]h}rz|(h]h]h]h]h]ujPMjjih]r{|(hXhAllow the solver to pick an newer version of some packages than would normally be permitted by than the r||r}|}r~|(hXhAllow the solver to pick an newer version of some packages than would normally be permitted by than the jDNjPNjjihjx|ubjM)r|}r|(hX:pkg-field:`build-depends`hjx|jDjwihjPh}r|(UreftypeX pkg-fieldjRjSX build-dependsr|U refdomainXcabalr|h]h]U refexplicith]h]h]jVhjlNujPMh]r|j)r|}r|(hj|h}r|(h]h]r|(j]j|Xcabal-pkg-fieldr|eh]h]h]uhj|h]r|hX build-dependsr|r|}r|(hUhj|ubahjubaubhX bounds of packages in the install plan. This option may be useful if the dependency solver cannot otherwise find a valid install plan.r|r|}r|(hX bounds of packages in the install plan. This option may be useful if the dependency solver cannot otherwise find a valid install plan.jDNjPNjjihjx|ubeubjZ)r|}r|(hXFor example, to relax ``pkg``\ s :pkg-field:`build-depends` upper bound on ``dep-pkg``, write a scoped package name of the form:hjV|jDjwihj]h}r|(h]h]h]h]h]ujPMjjih]r|(hXFor example, to relax r|r|}r|(hXFor example, to relax jDNjPNjjihj|ubj)r|}r|(hX``pkg``h}r|(h]h]h]h]h]uhj|h]r|hXpkgr|r|}r|(hXpkghj|ubahjubhXs r|r|}r|(hX\ s jDNjPNjjihj|ubjM)r|}r|(hX:pkg-field:`build-depends`hj|jDjwihjPh}r|(UreftypeX pkg-fieldjRjSX build-dependsr|U refdomainXcabalr|h]h]U refexplicith]h]h]jVhjlNujPMh]r|j)r|}r|(hj|h}r|(h]h]r|(j]j|Xcabal-pkg-fieldr|eh]h]h]uhj|h]r|hX build-dependsr|r|}r|(hUhj|ubahjubaubhX upper bound on r|r|}r|(hX upper bound on jDNjPNjjihj|ubj)r|}r|(hX ``dep-pkg``h}r|(h]h]h]h]h]uhj|h]r|hXdep-pkgr|r|}r|(hXdep-pkghj|ubahjubhX*, write a scoped package name of the form:r|r|}r|(hX*, write a scoped package name of the form:jDNjPNjjihj|ubeubj)r|}r|(hXallow-newer: pkg:dep-pkghjV|jDjwihjh}r|(jjh]h]h]h]h]ujPMjjih]r|hXallow-newer: pkg:dep-pkgr|r|}r|(hUhj|ubaubjZ)r|}r|(hXVIf the scope shall be limited to specific releases of ``pkg``, the extended form as inhjV|jDjwihj]h}r|(h]h]h]h]h]ujPMjjih]r|(hX6If the scope shall be limited to specific releases of r|r|}r|(hX6If the scope shall be limited to specific releases of jDNjPNjjihj|ubj)r|}r|(hX``pkg``h}r|(h]h]h]h]h]uhj|h]r|hXpkgr|r|}r|(hXpkghj|ubahjubhX, the extended form as inr|r|}r|(hX, the extended form as injDNjPNjjihj|ubeubj)r|}r|(hX1allow-newer: pkg-1.2.3:dep-pkg, pkg-1.1.2:dep-pkghjV|jDjwihjh}r|(jjh]h]h]h]h]ujPMjjih]r|hX1allow-newer: pkg-1.2.3:dep-pkg, pkg-1.1.2:dep-pkgr|r|}r|(hUhj|ubaubjZ)r|}r|(hXxcan be used to limit the relaxation of dependencies on ``dep-pkg`` by the ``pkg-1.2.3`` and ``pkg-1.1.2`` releases only.hjV|jDjwihj]h}r|(h]h]h]h]h]ujPMjjih]r|(hX7can be used to limit the relaxation of dependencies on r|r|}r|(hX7can be used to limit the relaxation of dependencies on jDNjPNjjihj|ubj)r|}r|(hX ``dep-pkg``h}r|(h]h]h]h]h]uhj|h]r|hXdep-pkgr|r|}r|(hXdep-pkghj|ubahjubhX by the r|r|}r|(hX by the jDNjPNjjihj|ubj)r|}r|(hX ``pkg-1.2.3``h}r|(h]h]h]h]h]uhj|h]r|hX pkg-1.2.3r|r|}r|(hX pkg-1.2.3hj|ubahjubhX and r|r|}r|(hX and jDNjPNjjihj|ubj)r|}r|(hX ``pkg-1.1.2``h}r|(h]h]h]h]h]uhj|h]r|hX pkg-1.1.2r|r|}r|(hX pkg-1.1.2hj|ubahjubhX releases only.r|r}}r}(hX releases only.jDNjPNjjihj|ubeubjZ)r}}r}(hXThe scoped syntax is recommended, as it is often only a single package whose upper bound is misbehaving. In this case, the upper bounds of other packages should still be respected; indeed, relaxing the bound can break some packages which test the selected version of packages.r}hjV|jDjwihj]h}r}(h]h]h]h]h]ujPMjjih]r}hXThe scoped syntax is recommended, as it is often only a single package whose upper bound is misbehaving. In this case, the upper bounds of other packages should still be respected; indeed, relaxing the bound can break some packages which test the selected version of packages.r}r}}r }(hj}jDNjPNjjihj}ubaubjZ)r }}r }(hX\The syntax also allows to prefix the dependee package with a modifier symbol to modify the scope/semantic of the relaxation transformation in a additional ways. Currently only one modifier symbol is defined, i.e. ``^`` (i.e. caret) which causes the relaxation to be applied only to ``^>=`` operators and leave all other version operators untouched.hjV|jDjwihj]h}r }(h]h]h]h]h]ujPMjjih]r }(hXThe syntax also allows to prefix the dependee package with a modifier symbol to modify the scope/semantic of the relaxation transformation in a additional ways. Currently only one modifier symbol is defined, i.e. r}r}}r}(hXThe syntax also allows to prefix the dependee package with a modifier symbol to modify the scope/semantic of the relaxation transformation in a additional ways. Currently only one modifier symbol is defined, i.e. jDNjPNjjihj }ubj)r}}r}(hX``^``h}r}(h]h]h]h]h]uhj }h]r}hX^r}}r}(hX^hj}ubahjubhX@ (i.e. caret) which causes the relaxation to be applied only to r}r}}r}(hX@ (i.e. caret) which causes the relaxation to be applied only to jDNjPNjjihj }ubj)r}}r}(hX``^>=``h}r}(h]h]h]h]h]uhj }h]r}hX^>=r}r}}r }(hX^>=hj}ubahjubhX; operators and leave all other version operators untouched.r!}r"}}r#}(hX; operators and leave all other version operators untouched.jDNjPNjjihj }ubeubjZ)r$}}r%}(hX!However, in some situations (e.g., when attempting to build packages on a new version of GHC), it is useful to disregard *all* upper-bounds, with respect to a package or all packages. This can be done by specifying just a package name, or using the keyword ``all`` to specify all packages:hjV|jDjwihj]h}r&}(h]h]h]h]h]ujPMjjih]r'}(hXyHowever, in some situations (e.g., when attempting to build packages on a new version of GHC), it is useful to disregard r(}r)}}r*}(hXyHowever, in some situations (e.g., when attempting to build packages on a new version of GHC), it is useful to disregard jDNjPNjjihj$}ubj)r+}}r,}(hX*all*h}r-}(h]h]h]h]h]uhj$}h]r.}hXallr/}r0}}r1}(hXallhj+}ubahjubhX upper-bounds, with respect to a package or all packages. This can be done by specifying just a package name, or using the keyword r2}r3}}r4}(hX upper-bounds, with respect to a package or all packages. This can be done by specifying just a package name, or using the keyword jDNjPNjjihj$}ubj)r5}}r6}(hX``all``h}r7}(h]h]h]h]h]uhj$}h]r8}hXallr9}r:}}r;}(hXallhj5}ubahjubhX to specify all packages:r<}r=}}r>}(hX to specify all packages:jDNjPNjjihj$}ubeubj)r?}}r@}(hXF-- Disregard upper bounds involving the dependencies on -- packages bar, baz. For quux only, relax -- 'quux ^>= ...'-style constraints only. allow-newer: bar, baz, ^quux -- Disregard all upper bounds when dependency solving allow-newer: all -- Disregard all `^>=`-style upper bounds when dependency solving allow-newer: ^allhjV|jDjwihjh}rA}(jjh]h]h]h]h]ujPMjjih]rB}hXF-- Disregard upper bounds involving the dependencies on -- packages bar, baz. For quux only, relax -- 'quux ^>= ...'-style constraints only. allow-newer: bar, baz, ^quux -- Disregard all upper bounds when dependency solving allow-newer: all -- Disregard all `^>=`-style upper bounds when dependency solving allow-newer: ^allrC}rD}}rE}(hUhj?}ubaubjZ)rF}}rG}(hXFor consistency, there is also the explicit wildcard scope syntax ``*`` (or its alphabetic synonym ``all``). Consequently, the examples above are equivalent to the explicitly scoped variants:hjV|jDjwihj]h}rH}(h]h]h]h]h]ujPMjjih]rI}(hXBFor consistency, there is also the explicit wildcard scope syntax rJ}rK}}rL}(hXBFor consistency, there is also the explicit wildcard scope syntax jDNjPNjjihjF}ubj)rM}}rN}(hX``*``h}rO}(h]h]h]h]h]uhjF}h]rP}hX*rQ}}rR}(hX*hjM}ubahjubhX (or its alphabetic synonym rS}rT}}rU}(hX (or its alphabetic synonym jDNjPNjjihjF}ubj)rV}}rW}(hX``all``h}rX}(h]h]h]h]h]uhjF}h]rY}hXallrZ}r[}}r\}(hXallhjV}ubahjubhXU). Consequently, the examples above are equivalent to the explicitly scoped variants:r]}r^}}r_}(hXU). Consequently, the examples above are equivalent to the explicitly scoped variants:jDNjPNjjihjF}ubeubj)r`}}ra}(hXtallow-newer: all:bar, *:baz, *:^quux allow-newer: *:* allow-newer: all:all allow-newer: *:^* allow-newer: all:^allhjV|jDjwihjh}rb}(jjh]h]h]h]h]ujPMjjih]rc}hXtallow-newer: all:bar, *:baz, *:^quux allow-newer: *:* allow-newer: all:all allow-newer: *:^* allow-newer: all:^allrd}re}}rf}(hUhj`}ubaubjZ)rg}}rh}(hXIn order to ignore all bounds specified by a package ``pkg-1.2.3`` you can combine scoping with a right-hand-side wildcard like sohjV|jDjwihj]h}ri}(h]h]h]h]h]ujPM jjih]rj}(hX5In order to ignore all bounds specified by a package rk}rl}}rm}(hX5In order to ignore all bounds specified by a package jDNjPNjjihjg}ubj)rn}}ro}(hX ``pkg-1.2.3``h}rp}(h]h]h]h]h]uhjg}h]rq}hX pkg-1.2.3rr}rs}}rt}(hX pkg-1.2.3hjn}ubahjubhX@ you can combine scoping with a right-hand-side wildcard like soru}rv}}rw}(hX@ you can combine scoping with a right-hand-side wildcard like sojDNjPNjjihjg}ubeubj)rx}}ry}(hX-- Disregard any upper bounds specified by pkg-1.2.3 allow-newer: pkg-1.2.3:* -- Disregard only `^>=`-style upper bounds in pkg-1.2.3 allow-newer: pkg-1.2.3:^*hjV|jDjwihjh}rz}(jjh]h]h]h]h]ujPMjjih]r{}hX-- Disregard any upper bounds specified by pkg-1.2.3 allow-newer: pkg-1.2.3:* -- Disregard only `^>=`-style upper bounds in pkg-1.2.3 allow-newer: pkg-1.2.3:^*r|}r}}}r~}(hUhjx}ubaubjZ)r}}r}(hX:cfg-field:`allow-newer` is often used in conjunction with a constraint (in the cfg-field:`constraints` field) forcing the usage of a specific, newer version of a package.hjV|jDjwihj]h}r}(h]h]h]h]h]ujPMjjih]r}(jM)r}}r}(hX:cfg-field:`allow-newer`hj}jDjwihjPh}r}(UreftypeX cfg-fieldjRjSX allow-newerr}U refdomainXcabalr}h]h]U refexplicith]h]h]jVhjnNujPMh]r}j)r}}r}(hj}h}r}(h]h]r}(j]j}Xcabal-cfg-fieldr}eh]h]h]uhj}h]r}hX allow-newerr}r}}r}(hUhj}ubahjubaubhXB is often used in conjunction with a constraint (in the cfg-field:r}r}}r}(hXB is often used in conjunction with a constraint (in the cfg-field:jDNjPNjjihj}ubj")r}}r}(hX `constraints`h}r}(h]h]h]h]h]uhj}h]r}hX constraintsr}r}}r}(hX constraintshj}ubahj"ubhXD field) forcing the usage of a specific, newer version of a package.r}r}}r}(hXD field) forcing the usage of a specific, newer version of a package.jDNjPNjjihj}ubeubjZ)r}}r}(hXThe command line variant of this field is e.g. ``--allow-newer=bar``. A bare ``--allow-newer`` is equivalent to ``--allow-newer=all``.hjV|jDjwihj]h}r}(h]h]h]h]h]ujPMjjih]r}(hX/The command line variant of this field is e.g. r}r}}r}(hX/The command line variant of this field is e.g. jDNjPNjjihj}ubj)r}}r}(hX``--allow-newer=bar``h}r}(h]h]h]h]h]uhj}h]r}hX--allow-newer=barr}r}}r}(hX--allow-newer=barhj}ubahjubhX . A bare r}r}}r}(hX . A bare jDNjPNjjihj}ubj)r}}r}(hX``--allow-newer``h}r}(h]h]h]h]h]uhj}h]r}hX --allow-newerr}r}}r}(hX --allow-newerhj}ubahjubhX is equivalent to r}r}}r}(hX is equivalent to jDNjPNjjihj}ubj)r}}r}(hX``--allow-newer=all``h}r}(h]h]h]h]h]uhj}h]r}hX--allow-newer=allr}r}}r}(hX--allow-newer=allhj}ubahjubhX.r}}r}(hX.jDNjPNjjihj}ubeubeubeubj )r}}r}(hUhjzjDjwihjnh}r}(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}}r}(hUhjzjDjwihj h}r}(j j Xcabalh]h]h]h]h]j X cfg-fieldr}j j}ujPNjjih]r}(j )r}}r}(hXOallow-older: none, all, list of scoped package names (space or comma separated)hj}jDjwihj h}r}(h]r}jwah]h]h]h]j ujPNjjih]r}(j )r}}r}(hUhj}jDjwihjnh}r}(h]h]h]h]h]Uentries]r}(j! X"allow-older ; cabal project optionjwUNtr}aujPNjjih]ubj# )r}}r}(hjvhj}jDjwihj& h}r}(jjh]h]h]h]h]ujPNjjih]r}hX allow-olderr}r}}r}(hUjDNjPNjjihj}ubaubj, )r}}r}(hj/ hj}jDjwihj0 h}r}(jjh]h]h]h]h]ujPNjjih]r}hX: r}r}}r}(hUjDNjPNjjihj}ubaubj6 )r}}r}(hXBnone, all, list of scoped package names (space or comma separated)hj}jDjwihj9 h}r}(jjh]h]h]h]h]ujPNjjih]r}hXBnone, all, list of scoped package names (space or comma separated)r}r}}r}(hUjDNjPNjjihj}ubaubeubj )r}}r}(hX6--allow-older, --allow-older=[none,all,[scope:][^]pkg]hj}jDjwihj h}r}(h]r}j'ah]h]h]h]j ujPNjjih]r}(j )r}}r}(hUhj}jDjwihjnh}r}(h]h]h]h]h]Uentries]r}(j! X#--allow-older; cabal project optionj'UNtr}aujPNjjih]ubj# )r}}r}(hj&hj}jDjwihj& h}r}(jjh]h]h]h]h]ujPNjjih]r}hX --allow-olderr}r}}r}(hUjDNjPNjjihj}ubaubj, )r}}r}(hU hj}jDjwihj0 h}r}(jjh]h]h]h]h]ujPNjjih]r}hX r}}r~(hUjDNjPNjjihj}ubaubj# )r~}r~(hj xhj}jDjwihj& h}r~(jjh]h]h]h]h]ujPNjjih]r~hX, r~r~}r~(hUjDNjPNjjihj~ubaubj# )r~}r ~(hX --allow-olderhj}jDjwihj& h}r ~(jjh]h]h]h]h]ujPNjjih]r ~hX --allow-olderr ~r ~}r~(hUjDNjPNjjihj~ubaubj, )r~}r~(hX=[nonehj}jDjwihj0 h}r~(jjh]h]h]h]h]ujPNjjih]r~hX=[noner~r~}r~(hUjDNjPNjjihj~ubaubj# )r~}r~(hj xhj}jDjwihj& h}r~(jjh]h]h]h]h]ujPNjjih]r~hX, r~r~}r~(hUjDNjPNjjihj~ubaubj# )r~}r~(hXallhj}jDjwihj& h}r~(jjh]h]h]h]h]ujPNjjih]r ~hXallr!~r"~}r#~(hUjDNjPNjjihj~ubaubj, )r$~}r%~(hU hj}jDjwihj0 h}r&~(jjh]h]h]h]h]ujPNjjih]r'~hX r(~}r)~(hUjDNjPNjjihj$~ubaubj# )r*~}r+~(hj xhj}jDjwihj& h}r,~(jjh]h]h]h]h]ujPNjjih]r-~hX, r.~r/~}r0~(hUjDNjPNjjihj*~ubaubj# )r1~}r2~(hX[scope:][^]pkg]hj}jDjwihj& h}r3~(jjh]h]h]h]h]ujPNjjih]r4~hX[scope:][^]pkg]r5~r6~}r7~(hUjDNjPNjjihj1~ubaubj, )r8~}r9~(hU hj}jDjwihj0 h}r:~(jjh]h]h]h]h]ujPNjjih]r;~hX r<~}r=~(hUjDNjPNjjihj8~ubaubeubjh)r>~}r?~(hUhj}jDjwihjA h}r@~(h]h]h]h]h]ujPNjjih]rA~(j)rB~}rC~(hUhj>~jDjwihjh}rD~(h]h]h]h]h]ujPNjjih]rE~(j)rF~}rG~(hUhjB~jDjwihj.h}rH~(h]h]h]h]h]ujPNjjih]rI~(j )rJ~}rK~(hj+hjF~jDjwihj h}rL~(h]h]h]h]h]ujPKh]rM~hXSincerN~rO~}rP~(hUhjJ~ubaubj)rQ~}rR~(hU Cabal 2.0rS~h}rT~(h]h]h]h]h]uhjF~h]rU~jZ)rV~}rW~(hjS~h}rX~(h]h]h]h]h]uhjQ~h]rY~hX Cabal 2.0rZ~r[~}r\~(hUhjV~ubahj]ubahj-ubeubj)r]~}r^~(hUh}r_~(h]h]h]h]h]uhjB~h]r`~(j )ra~}rb~(hX Default valuehj]~jDjwihj h}rc~(h]h]h]h]h]ujPKh]rd~hX Default valuere~rf~}rg~(hUhja~ubaubj)rh~}ri~(hUh}rj~(h]h]h]h]h]uhj]~h]rk~jZ)rl~}rm~(hXnoneh}rn~(h]h]h]h]h]uhjh~h]ro~j)rp~}rq~(hX``none``rr~hjl~jDjwihjh}rs~(h]h]h]h]h]ujPNjjih]rt~hXnoneru~rv~}rw~(hXnonejDNjPNjjihjp~ubaubahj]ubahj-ubehj.ubeubjZ)rx~}ry~(hXTLike :cfg-field:`allow-newer`, but applied to lower bounds rather than upper bounds.hj>~jDjwihj]h}rz~(h]h]h]h]h]ujPM&jjih]r{~(hXLike r|~r}~}r~~(hXLike jDNjPNjjihjx~ubjM)r~}r~(hX:cfg-field:`allow-newer`hjx~jDjwihjPh}r~(UreftypeX cfg-fieldjRjSX allow-newerr~U refdomainXcabalr~h]h]U refexplicith]h]h]jVhjnNujPM&h]r~j)r~}r~(hj~h}r~(h]h]r~(j]j~Xcabal-cfg-fieldr~eh]h]h]uhj~h]r~hX allow-newerr~r~}r~(hUhj~ubahjubaubhX7, but applied to lower bounds rather than upper bounds.r~r~}r~(hX7, but applied to lower bounds rather than upper bounds.jDNjPNjjihjx~ubeubjZ)r~}r~(hXThe command line variant of this field is ``--allow-older=all``. A bare ``--allow-older`` is equivalent to ``--allow-older=all``.hj>~jDjwihj]h}r~(h]h]h]h]h]ujPM)jjih]r~(hX*The command line variant of this field is r~r~}r~(hX*The command line variant of this field is jDNjPNjjihj~ubj)r~}r~(hX``--allow-older=all``h}r~(h]h]h]h]h]uhj~h]r~hX--allow-older=allr~r~}r~(hX--allow-older=allhj~ubahjubhX . A bare r~r~}r~(hX . A bare jDNjPNjjihj~ubj)r~}r~(hX``--allow-older``h}r~(h]h]h]h]h]uhj~h]r~hX --allow-olderr~r~}r~(hX --allow-olderhj~ubahjubhX is equivalent to r~r~}r~(hX is equivalent to jDNjPNjjihj~ubj)r~}r~(hX``--allow-older=all``h}r~(h]h]h]h]h]uhj~h]r~hX--allow-older=allr~r~}r~(hX--allow-older=allhj~ubahjubhX.r~}r~(hX.jDNjPNjjihj~ubeubeubeubj )r~}r~(hUhjzjDjwihjnh}r~(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r~}r~(hUhjzjDjwihj h}r~(j j Xcabalh]h]h]h]h]j X cfg-fieldr~j j~ujPNjjih]r~(j )r~}r~(hX9index-state: HEAD, unix-timestamp, ISO8601 UTC timestamp.hj~jDjwihj h}r~(h]r~jPah]h]h]h]j ujPNjjih]r~(j )r~}r~(hUhj~jDjwihjnh}r~(h]h]h]h]h]Uentries]r~(j! X"index-state ; cabal project optionjPUNtr~aujPNjjih]ubj# )r~}r~(hjOhj~jDjwihj& h}r~(jjh]h]h]h]h]ujPNjjih]r~hX index-stater~r~}r~(hUjDNjPNjjihj~ubaubj, )r~}r~(hj/ hj~jDjwihj0 h}r~(jjh]h]h]h]h]ujPNjjih]r~hX: r~r~}r~(hUjDNjPNjjihj~ubaubj6 )r~}r~(hX,HEAD, unix-timestamp, ISO8601 UTC timestamp.hj~jDjwihj9 h}r~(jjh]h]h]h]h]ujPNjjih]r~hX,HEAD, unix-timestamp, ISO8601 UTC timestamp.r~r~}r~(hUjDNjPNjjihj~ubaubeubjh)r~}r~(hUhj~jDjwihjA h}r~(h]h]h]h]h]ujPNjjih]r~(j)r~}r~(hUhj~jDjwihjh}r~(h]h]h]h]h]ujPNjjih]r~(j)r~}r~(hUhj~jDjwihj.h}r~(h]h]h]h]h]ujPNjjih]r~(j )r~}r~(hj+hj~jDjwihj h}r~(h]h]h]h]h]ujPKh]r~hXSincer~r~}r~(hUhj~ubaubj)r~}r~(hU Cabal 2.0r~h}r~(h]h]h]h]h]uhj~h]r~jZ)r~}r~(hj~h}r~(h]h]h]h]h]uhj~h]r~hX Cabal 2.0r~r~}r~(hUhj~ubahj]ubahj-ubeubj)r~}r~(hUh}r~(h]h]h]h]h]uhj~h]r~(j )r~}r(hX Default valuehj~jDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhj~ubaubj)r}r(hUh}r(h]h]h]h]h]uhj~h]r jZ)r }r (hXHEADh}r (h]h]h]h]h]uhjh]r j)r}r(hX``HEAD``hj jDjwihjh}r(h]h]h]h]h]ujPNjjih]rhXHEADrr}r(hXHEADjDNjPNjjihjubaubahj]ubahj-ubehj.ubeubjZ)r}r(hXThis allows to change the source package index state the solver uses to compute install-plans. This is particularly useful in combination with freeze-files in order to also freeze the state the package index was in at the time the install-plan was frozen.rhj~jDjwihj]h}r(h]h]h]h]h]ujPM3jjih]rhXThis allows to change the source package index state the solver uses to compute install-plans. This is particularly useful in combination with freeze-files in order to also freeze the state the package index was in at the time the install-plan was frozen.rr}r(hjjDNjPNjjihjubaubj)r}r(hX-- UNIX timestamp format example index-state: @1474739268 -- ISO8601 UTC timestamp format example -- This format is used by 'cabal v2-configure' -- for storing `--index-state` values. index-state: 2016-09-24T17:47:48Zhj~jDjwihjh}r(jjh]h]h]h]h]ujPM:jjih]r hX-- UNIX timestamp format example index-state: @1474739268 -- ISO8601 UTC timestamp format example -- This format is used by 'cabal v2-configure' -- for storing `--index-state` values. index-state: 2016-09-24T17:47:48Zr!r"}r#(hUhjubaubeubeubj )r$}r%(hUhjzjDjwihjnh}r&(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r'}r((hUhjzjDjwihj h}r)(j j Xcabalh]h]h]h]h]j X cfg-fieldr*j j*ujPNjjih]r+(j )r,}r-(hX,reject-unconstrained-dependencies: all, nonehj'jDjwihj h}r.(h]r/jah]h]h]h]j ujPNjjih]r0(j )r1}r2(hUhj,jDjwihjnh}r3(h]h]h]h]h]Uentries]r4(j! X8reject-unconstrained-dependencies ; cabal project optionjUNtr5aujPNjjih]ubj# )r6}r7(hjhj,jDjwihj& h}r8(jjh]h]h]h]h]ujPNjjih]r9hX!reject-unconstrained-dependenciesr:r;}r<(hUjDNjPNjjihj6ubaubj, )r=}r>(hj/ hj,jDjwihj0 h}r?(jjh]h]h]h]h]ujPNjjih]r@hX: rArB}rC(hUjDNjPNjjihj=ubaubj6 )rD}rE(hX all, nonehj,jDjwihj9 h}rF(jjh]h]h]h]h]ujPNjjih]rGhX all, nonerHrI}rJ(hUjDNjPNjjihjDubaubeubj )rK}rL(hX.--reject-unconstrained-dependencies=[all|none]hj'jDjwihj h}rM(h]rNjMah]h]h]h]j ujPNjjih]rO(j )rP}rQ(hUhjKjDjwihjnh}rR(h]h]h]h]h]Uentries]rS(j! X9--reject-unconstrained-dependencies; cabal project optionjMUNtrTaujPNjjih]ubj# )rU}rV(hjLhjKjDjwihj& h}rW(jjh]h]h]h]h]ujPNjjih]rXhX#--reject-unconstrained-dependenciesrYrZ}r[(hUjDNjPNjjihjUubaubj, )r\}r](hX =[all|none]hjKjDjwihj0 h}r^(jjh]h]h]h]h]ujPNjjih]r_hX =[all|none]r`ra}rb(hUjDNjPNjjihj\ubaubeubjh)rc}rd(hUhj'jDjwihjA h}re(h]h]h]h]h]ujPNjjih]rf(j)rg}rh(hUhjcjDjwihjh}ri(h]h]h]h]h]ujPNjjih]rj(j)rk}rl(hUh}rm(h]h]h]h]h]uhjgh]rn(j )ro}rp(hX Default valuehjkjDjwihj h}rq(h]h]h]h]h]ujPKh]rrhX Default valuersrt}ru(hUhjoubaubj)rv}rw(hUh}rx(h]h]h]h]h]uhjkh]ryjZ)rz}r{(hXnoneh}r|(h]h]h]h]h]uhjvh]r}hXnoner~r}r(hXnonejDNjPNjjihjzubahj]ubahj-ubehj.ubj)r}r(hUhjgjDjwihj.h}r(h]h]h]h]h]ujPMHjjih]r(j )r}r(hXsincehjjDjwihj h}r(h]h]h]h]h]ujPKh]rhXSincerr}r(hUhjubaubj)r}r(hX2.6 h}r(h]h]h]h]h]uhjh]rjZ)r}r(hX2.6rhjjDjwihj]h}r(h]h]h]h]h]ujPMHh]rhX2.6rr}r(hjhjubaubahj-ubeubeubjZ)r}r(hXBy default, the dependency solver can include any package that it's aware of in a build plan. If you wish to restrict the build plan to a closed set of packages (e.g., from a freeze file), use this flag.rhjcjDjwihj]h}r(h]h]h]h]h]ujPMJjjih]rhXBy default, the dependency solver can include any package that it’s aware of in a build plan. If you wish to restrict the build plan to a closed set of packages (e.g., from a freeze file), use this flag.rr}r(hjjDNjPNjjihjubaubjZ)r}r(hXWhen set to `all`, all non-local packages that aren't goals must be explicitly constrained. When set to `none`, the solver will consider all packages.hjcjDjwihj]h}r(h]h]h]h]h]ujPMNjjih]r(hX When set to rr}r(hX When set to jDNjPNjjihjubj")r}r(hX`all`h}r(h]h]h]h]h]uhjh]rhXallrr}r(hXallhjubahj"ubhXY, all non-local packages that aren’t goals must be explicitly constrained. When set to rr}r(hXW, all non-local packages that aren't goals must be explicitly constrained. When set to jDNjPNjjihjubj")r}r(hX`none`h}r(h]h]h]h]h]uhjh]rhXnonerr}r(hXnonehjubahj"ubhX(, the solver will consider all packages.rr}r(hX(, the solver will consider all packages.jDNjPNjjihjubeubeubeubeubjsjn)r}r(hUhjsjDjwihjqh}r(h]h]h]h]rj ah]rjiaujPMjjih]r(h)r}r(hX%Advanced global configuration optionsrhjjDjwihhh}r(h]h]h]h]h]ujPMjjih]rhX%Advanced global configuration optionsrr}r(hjjDNjPNjjihjubaubj )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hX8write-ghc-environment-files: always, never, or ghc8.4.4+hjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X2write-ghc-environment-files ; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXwrite-ghc-environment-filesrr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hXalways, never, or ghc8.4.4+hjjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhXalways, never, or ghc8.4.4+rr}r(hUjDNjPNjjihjubaubeubj )r}r(hX$--write-ghc-environment-files=policyhjjDjwihj h}r(h]rjfah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X3--write-ghc-environment-files; cabal project optionjfUNtraujPNjjih]ubj# )r}r(hjehjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--write-ghc-environment-filesrr}r(hUjDNjPNjjihjubaubj, )r}r(hX=policyhjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX=policyrr}r(hUjDNjPNjjihjubaubeubjh)r}r (hUhjjDjwihjA h}r (h]h]h]h]h]ujPNjjih]r (j)r }r (hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r(hUh}r(h]h]h]h]h]uhj h]r(j )r}r(hX Default valuehjjDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r (hXneverh}r!(h]h]h]h]h]uhjh]r"j)r#}r$(hX ``never``hjjDjwihjh}r%(h]h]h]h]h]ujPNjjih]r&hXneverr'r(}r)(hXneverjDNjPNjjihj#ubaubahj]ubahj-ubehj.ubaubjZ)r*}r+(hXWhether a `GHC package environment file `_ should be created after a successful build.hjjDjwihj]h}r,(h]h]h]h]h]ujPMjjih]r-(hX Whether a r.r/}r0(hX Whether a jDNjPNjjihj*ubj!)r1}r2(hXz`GHC package environment file `_h}r3(UnameXGHC package environment filej] XXhttps://downloads.haskell.org/~ghc/master/users-guide/packages.html#package-environmentsr4h]h]h]h]h]uhj*h]r5hXGHC package environment filer6r7}r8(hXGHC package environment filehj1ubahj%ubje)r9}r:(hX[ jKhj*hjdh}r;(Urefurij4h]r<Ughc-package-environment-filer=ah]h]h]h]r>jiauh]ubhX, should be created after a successful build.r?r@}rA(hX, should be created after a successful build.jDNjPNjjihj*ubeubjZ)rB}rC(hX0Since Cabal 3.0, defaults to ``never``. Before that, defaulted to creating them only when compiling with GHC 8.4.4 and older (GHC 8.4.4 `is the first version `_ that supports the ``-package-env -`` option that allows ignoring the package environment files).hjjDjwihj]h}rD(h]h]h]h]h]ujPMjjih]rE(hXSince Cabal 3.0, defaults to rFrG}rH(hXSince Cabal 3.0, defaults to jDNjPNjjihjBubj)rI}rJ(hX ``never``h}rK(h]h]h]h]h]uhjBh]rLhXneverrMrN}rO(hXneverhjIubahjubhXb. Before that, defaulted to creating them only when compiling with GHC 8.4.4 and older (GHC 8.4.4 rPrQ}rR(hXb. Before that, defaulted to creating them only when compiling with GHC 8.4.4 and older (GHC 8.4.4 jDNjPNjjihjBubj!)rS}rT(hXG`is the first version `_h}rU(UnameXis the first versionj] X-https://ghc.haskell.org/trac/ghc/ticket/13753rVh]h]h]h]h]uhjBh]rWhXis the first versionrXrY}rZ(hXis the first versionhjSubahj%ubje)r[}r\(hX0 jKhjBhjdh}r](UrefurijVh]r^Uis-the-first-versionr_ah]h]h]h]r`jiauh]ubhX that supports the rarb}rc(hX that supports the jDNjPNjjihjBubj)rd}re(hX``-package-env -``h}rf(h]h]h]h]h]uhjBh]rghX-package-env -rhri}rj(hX-package-env -hjdubahjubhX< option that allows ignoring the package environment files).rkrl}rm(hX< option that allows ignoring the package environment files).jDNjPNjjihjBubeubeubeubj )rn}ro(hUhjjDjwihjnh}rp(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rq}rr(hUhjjDjwihj h}rs(j j Xcabalh]h]h]h]h]j X cfg-fieldrtj jtujPNjjih]ru(j )rv}rw(hX5http-transport: curl, wget, powershell, or plain-httphjqjDjwihj h}rx(h]ryjcah]h]h]h]j ujPNjjih]rz(j )r{}r|(hUhjvjDjwihjnh}r}(h]h]h]h]h]Uentries]r~(j! X%http-transport ; cabal project optionjcUNtraujPNjjih]ubj# )r}r(hjbhjvjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXhttp-transportrr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjvjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hX%curl, wget, powershell, or plain-httphjvjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhX%curl, wget, powershell, or plain-httprr}r(hUjDNjPNjjihjubaubeubj )r}r(hX--http-transport=transporthjqjDjwihj h}r(h]rjFah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X&--http-transport; cabal project optionjFUNtraujPNjjih]ubj# )r}r(hjEhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--http-transportrr}r(hUjDNjPNjjihjubaubj, )r}r(hX =transporthjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX =transportrr}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjqjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hX Default valuehjjDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r(hUh}r€(h]h]h]h]h]uhjh]rÀjZ)rĀ}rŀ(hXcurlh}rƀ(h]h]h]h]h]uhjh]rǀj)rȀ}rɀ(hX``curl``hjĀjDjwihjh}rʀ(h]h]h]h]h]ujPNjjih]rˀhXcurlr̀r̀}r΀(hXcurljDNjPNjjihjȀubaubahj]ubahj-ubehj.ubaubjZ)rπ}rЀ(hX8Set a transport to be used when making http(s) requests.rрhjjDjwihj]h}rҀ(h]h]h]h]h]ujPMjjih]rӀhX8Set a transport to be used when making http(s) requests.rԀrՀ}rր(hjрjDNjPNjjihjπubaubjZ)r׀}r؀(hXDThe command line variant of this field is ``--http-transport=curl``.hjjDjwihj]h}rـ(h]h]h]h]h]ujPMjjih]rڀ(hX*The command line variant of this field is rۀr܀}r݀(hX*The command line variant of this field is jDNjPNjjihj׀ubj)rހ}r߀(hX``--http-transport=curl``h}r(h]h]h]h]h]uhj׀h]rhX--http-transport=curlrr}r(hX--http-transport=curlhjހubahjubhX.r}r(hX.jDNjPNjjihj׀ubeubeubeubj )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXignore-expiry: booleanhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X$ignore-expiry ; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX ignore-expiryrr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hXbooleanhjjDjwihj9 h}r (jjh]h]h]h]h]ujPNjjih]r hXbooleanr r }r (hUjDNjPNjjihjubaubeubj )r}r(hjbhjjDjwihj h}r(h]rjcah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X%--ignore-expiry; cabal project optionjcUNtraujPNjjih]ubj# )r}r(hjbhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--ignore-expiryrr}r(hUjDNjPNjjihjubaubj, )r}r (hU hjjDjwihj0 h}r!(jjh]h]h]h]h]ujPNjjih]r"hX r#}r$(hUjDNjPNjjihjubaubeubjh)r%}r&(hUhjjDjwihjA h}r'(h]h]h]h]h]ujPNjjih]r((j)r)}r*(hUhj%jDjwihjh}r+(h]h]h]h]h]ujPNjjih]r,j)r-}r.(hUh}r/(h]h]h]h]h]uhj)h]r0(j )r1}r2(hX Default valuehj-jDjwihj h}r3(h]h]h]h]h]ujPKh]r4hX Default valuer5r6}r7(hUhj1ubaubj)r8}r9(hUh}r:(h]h]h]h]h]uhj-h]r;jZ)r<}r=(hXFalseh}r>(h]h]h]h]h]uhj8h]r?hXFalser@rA}rB(hXFalsejDNjPNjjihj<ubahj]ubahj-ubehj.ubaubjZ)rC}rD(hXBIf ``True``, we will ignore expiry dates on metadata from Hackage.hj%jDjwihj]h}rE(h]h]h]h]h]ujPMjjih]rF(hXIf rGrH}rI(hXIf jDNjPNjjihjCubj)rJ}rK(hX``True``h}rL(h]h]h]h]h]uhjCh]rMhXTruerNrO}rP(hXTruehjJubahjubhX7, we will ignore expiry dates on metadata from Hackage.rQrR}rS(hX7, we will ignore expiry dates on metadata from Hackage.jDNjPNjjihjCubeubjZ)rT}rU(hX In general, you should not set this to ``True`` as it will leave you vulnerable to stale cache attacks. However, it may be temporarily useful if the main Hackage server is down, and we need to rely on mirrors which have not been updated for longer than the expiry period on the timestamp.hj%jDjwihj]h}rV(h]h]h]h]h]ujPMjjih]rW(hX'In general, you should not set this to rXrY}rZ(hX'In general, you should not set this to jDNjPNjjihjTubj)r[}r\(hX``True``h}r](h]h]h]h]h]uhjTh]r^hXTruer_r`}ra(hXTruehj[ubahjubhX as it will leave you vulnerable to stale cache attacks. However, it may be temporarily useful if the main Hackage server is down, and we need to rely on mirrors which have not been updated for longer than the expiry period on the timestamp.rbrc}rd(hX as it will leave you vulnerable to stale cache attacks. However, it may be temporarily useful if the main Hackage server is down, and we need to rely on mirrors which have not been updated for longer than the expiry period on the timestamp.jDNjPNjjihjTubeubjZ)re}rf(hX>The command line variant of this field is ``--ignore-expiry``.hj%jDjwihj]h}rg(h]h]h]h]h]ujPMjjih]rh(hX*The command line variant of this field is rirj}rk(hX*The command line variant of this field is jDNjPNjjihjeubj)rl}rm(hX``--ignore-expiry``h}rn(h]h]h]h]h]uhjeh]rohX--ignore-expiryrprq}rr(hX--ignore-expiryhjlubahjubhX.rs}rt(hX.jDNjPNjjihjeubeubeubeubj )ru}rv(hUhjjDjwihjnh}rw(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rx}ry(hUhjjDjwihj h}rz(j j Xcabalh]h]h]h]h]j X cfg-fieldr{j j{ujPNjjih]r|(j )r}}r~(hXremote-repo-cache: directoryhjxjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhj}jDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X(remote-repo-cache ; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhj}jDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXremote-repo-cacherr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hj}jDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hX directoryhj}jDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhX directoryrr}r(hUjDNjPNjjihjubaubeubj )r}r(hX--remote-repo-cache=DIRhjxjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X)--remote-repo-cache; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--remote-repo-cacherr}r(hUjDNjPNjjihjubaubj, )r}r(hX=DIRhjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX=DIRrr}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjxjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hX Default valuehjjDjwihj h}r(h]h]h]h]h]ujPKh]rÁhX Default valuerārŁ}rƁ(hUhjubaubj)rǁ}rȁ(hUh}rɁ(h]h]h]h]h]uhjh]rʁjZ)rˁ}ŕ(hX~/.cabal/packagesh}ŕ(h]h]h]h]h]uhjǁh]r΁j)rρ}rЁ(hX``~/.cabal/packages``hjˁjDjwihjh}rс(h]h]h]h]h]ujPNjjih]rҁhX~/.cabal/packagesrӁrԁ}rՁ(hX~/.cabal/packagesjDNjPNjjihjρubaubahj]ubahj-ubehj.ubaubjZ)rց}rׁ(hXp[STRIKEOUT:The location where packages downloaded from remote repositories will be cached.] Not implemented yet.r؁hjjDjwihj]h}rف(h]h]h]h]h]ujPMjjih]rځhXp[STRIKEOUT:The location where packages downloaded from remote repositories will be cached.] Not implemented yet.rہr܁}r݁(hj؁jDNjPNjjihjցubaubjZ)rށ}r߁(hXEThe command line variant of this flag is ``--remote-repo-cache=DIR``.hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihjށubj)r}r(hX``--remote-repo-cache=DIR``h}r(h]h]h]h]h]uhjށh]rhX--remote-repo-cache=DIRrr}r(hX--remote-repo-cache=DIRhjubahjubhX.r}r(hX.jDNjPNjjihjށubeubeubeubj )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXlogs-dir: directoryhjjDjwihj h}r(h]rjAah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! Xlogs-dir ; cabal project optionjAUNtraujPNjjih]ubj# )r}r(hj@hjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXlogs-dirrr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjjDjwihj0 h}r (jjh]h]h]h]h]ujPNjjih]r hX: r r }r (hUjDNjPNjjihjubaubj6 )r}r(hX directoryhjjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhX directoryrr}r(hUjDNjPNjjihjubaubeubj )r}r(hX--logs-dir=DIRhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X --logs-dir; cabal project optionjUNtraujPNjjih]ubj# )r}r (hjhjjDjwihj& h}r!(jjh]h]h]h]h]ujPNjjih]r"hX --logs-dirr#r$}r%(hUjDNjPNjjihjubaubj, )r&}r'(hX=DIRhjjDjwihj0 h}r((jjh]h]h]h]h]ujPNjjih]r)hX=DIRr*r+}r,(hUjDNjPNjjihj&ubaubeubjh)r-}r.(hUhjjDjwihjA h}r/(h]h]h]h]h]ujPNjjih]r0(j)r1}r2(hUhj-jDjwihjh}r3(h]h]h]h]h]ujPNjjih]r4j)r5}r6(hUh}r7(h]h]h]h]h]uhj1h]r8(j )r9}r:(hX Default valuehj5jDjwihj h}r;(h]h]h]h]h]ujPKh]r<hX Default valuer=r>}r?(hUhj9ubaubj)r@}rA(hUh}rB(h]h]h]h]h]uhj5h]rCjZ)rD}rE(hX ~/.cabal/logsh}rF(h]h]h]h]h]uhj@h]rGj)rH}rI(hX``~/.cabal/logs``hjDjDjwihjh}rJ(h]h]h]h]h]ujPNjjih]rKhX ~/.cabal/logsrLrM}rN(hX ~/.cabal/logsjDNjPNjjihjHubaubahj]ubahj-ubehj.ubaubjZ)rO}rP(hXW[STRIKEOUT:The location where build logs for packages are stored.] Not implemented yet.rQhj-jDjwihj]h}rR(h]h]h]h]h]ujPMjjih]rShXW[STRIKEOUT:The location where build logs for packages are stored.] Not implemented yet.rTrU}rV(hjQjDNjPNjjihjOubaubjZ)rW}rX(hX<The command line variant of this flag is ``--logs-dir=DIR``.hj-jDjwihj]h}rY(h]h]h]h]h]ujPMjjih]rZ(hX)The command line variant of this flag is r[r\}r](hX)The command line variant of this flag is jDNjPNjjihjWubj)r^}r_(hX``--logs-dir=DIR``h}r`(h]h]h]h]h]uhjWh]rahX--logs-dir=DIRrbrc}rd(hX--logs-dir=DIRhj^ubahjubhX.re}rf(hX.jDNjPNjjihjWubeubeubeubj )rg}rh(hUhjjDjwihjnh}ri(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rj}rk(hUhjjDjwihj h}rl(j j Xcabalh]h]h]h]h]j X cfg-fieldrmj jmujPNjjih]rn(j )ro}rp(hX build-summary: template filepathhjjjDjwihj h}rq(h]rrjah]h]h]h]j ujPNjjih]rs(j )rt}ru(hUhjojDjwihjnh}rv(h]h]h]h]h]Uentries]rw(j! X$build-summary ; cabal project optionjUNtrxaujPNjjih]ubj# )ry}rz(hjhjojDjwihj& h}r{(jjh]h]h]h]h]ujPNjjih]r|hX build-summaryr}r~}r(hUjDNjPNjjihjyubaubj, )r}r(hj/ hjojDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hXtemplate filepathhjojDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhXtemplate filepathrr}r(hUjDNjPNjjihjubaubeubj )r}r(hX--build-summary=TEMPLATEhjjjDjwihj h}r(h]rj>ah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X%--build-summary; cabal project optionj>UNtraujPNjjih]ubj# )r}r(hj=hjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--build-summaryrr}r(hUjDNjPNjjihjubaubj, )r}r(hX =TEMPLATEhjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX =TEMPLATErr}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjjjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hX Default valuehjjDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hX~/.cabal/logs/build.logh}r(h]h]h]h]h]uhjh]rj)r}r‚(hX``~/.cabal/logs/build.log``hjjDjwihjh}rÂ(h]h]h]h]h]ujPNjjih]rĂhX~/.cabal/logs/build.logrłrƂ}rǂ(hX~/.cabal/logs/build.logjDNjPNjjihjubaubahj]ubahj-ubehj.ubaubjZ)rȂ}rɂ(hX[STRIKEOUT:The file to save build summaries. Valid variables which can be used in the path are ``$pkgid``, ``$compiler``, ``$os`` and ``$arch``.] Not implemented yet.hjjDjwihj]h}rʂ(h]h]h]h]h]ujPMjjih]r˂(hX_[STRIKEOUT:The file to save build summaries. Valid variables which can be used in the path are r̂r͂}r΂(hX_[STRIKEOUT:The file to save build summaries. Valid variables which can be used in the path are jDNjPNjjihjȂubj)rς}rЂ(hX ``$pkgid``h}rт(h]h]h]h]h]uhjȂh]r҂hX$pkgidrӂrԂ}rՂ(hX$pkgidhjςubahjubhX, rւrׂ}r؂(hX, rقjDNjPNjjihjȂubj)rڂ}rۂ(hX ``$compiler``h}r܂(h]h]h]h]h]uhjȂh]r݂hX $compilerrނr߂}r(hX $compilerhjڂubahjubhX, rr}r(hjقhjȂubj)r}r(hX``$os``h}r(h]h]h]h]h]uhjȂh]rhX$osrr}r(hX$oshjubahjubhX and rr}r(hX and jDNjPNjjihjȂubj)r}r(hX ``$arch``h}r(h]h]h]h]h]uhjȂh]rhX$archrr}r(hX$archhjubahjubhX.] Not implemented yet.rr}r(hX.] Not implemented yet.jDNjPNjjihjȂubeubjZ)r}r(hXFThe command line variant of this flag is ``--build-summary=TEMPLATE``.hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihjubj)r}r(hX``--build-summary=TEMPLATE``h}r(h]h]h]h]h]uhjh]rhX--build-summary=TEMPLATErr}r(hX--build-summary=TEMPLATEhjubahjubhX.r}r(hX.jDNjPNjjihjubeubeubeubj )r}r (hUhjjDjwihjnh}r (h]h]h]h]h]Uentries]ujPNjjih]ubjk)r }r (hUhjjDjwihj h}r (j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXlocal-repo: directoryhj jDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X!local-repo ; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX local-reporr}r (hUjDNjPNjjihjubaubj, )r!}r"(hj/ hjjDjwihj0 h}r#(jjh]h]h]h]h]ujPNjjih]r$hX: r%r&}r'(hUjDNjPNjjihj!ubaubj6 )r(}r)(hX directoryhjjDjwihj9 h}r*(jjh]h]h]h]h]ujPNjjih]r+hX directoryr,r-}r.(hUjDNjPNjjihj(ubaubeubj )r/}r0(hX--local-repo=DIRhj jDjwihj h}r1(h]r2jah]h]h]h]j ujPNjjih]r3(j )r4}r5(hUhj/jDjwihjnh}r6(h]h]h]h]h]Uentries]r7(j! X"--local-repo; cabal project optionjUNtr8aujPNjjih]ubj# )r9}r:(hjhj/jDjwihj& h}r;(jjh]h]h]h]h]ujPNjjih]r<hX --local-repor=r>}r?(hUjDNjPNjjihj9ubaubj, )r@}rA(hX=DIRhj/jDjwihj0 h}rB(jjh]h]h]h]h]ujPNjjih]rChX=DIRrDrE}rF(hUjDNjPNjjihj@ubaubeubjh)rG}rH(hUhj jDjwihjA h}rI(h]h]h]h]h]ujPNjjih]rJ(j)rK}rL(hUhjGjDjwihjh}rM(h]h]h]h]h]ujPNjjih]rNj)rO}rP(hUhjKjDjwihj.h}rQ(h]h]h]h]h]ujPNjjih]rR(j )rS}rT(hj/hjOjDjwihj h}rU(h]h]h]h]h]ujPKh]rVhX DeprecatedrWrX}rY(hUhjSubaubj)rZ}r[(hUh}r\(h]h]h]h]h]uhjOh]r]jZ)r^}r_(hUh}r`(h]h]h]h]h]uhjZh]hj]ubahj-ubeubaubjZ)ra}rb(hXV[STRIKEOUT:The location of a local repository.] Deprecated. See "Legacy repositories."rchjGjDjwihj]h}rd(h]h]h]h]h]ujPMjjih]rehXZ[STRIKEOUT:The location of a local repository.] Deprecated. See “Legacy repositories.”rfrg}rh(hjcjDNjPNjjihjaubaubjZ)ri}rj(hX>The command line variant of this flag is ``--local-repo=DIR``.hjGjDjwihj]h}rk(h]h]h]h]h]ujPMjjih]rl(hX)The command line variant of this flag is rmrn}ro(hX)The command line variant of this flag is jDNjPNjjihjiubj)rp}rq(hX``--local-repo=DIR``h}rr(h]h]h]h]h]uhjih]rshX--local-repo=DIRrtru}rv(hX--local-repo=DIRhjpubahjubhX.rw}rx(hX.jDNjPNjjihjiubeubeubeubj )ry}rz(hUhjjDjwihjnh}r{(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r|}r}(hUhjjDjwihj h}r~(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXworld-file: pathhj|jDjwihj h}r(h]rj=ah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X!world-file ; cabal project optionj=UNtraujPNjjih]ubj# )r}r(hj<hjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX world-filerr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hXpathhjjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhXpathrr}r(hUjDNjPNjjihjubaubeubj )r}r(hX--world-file=FILEhj|jDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X"--world-file; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX --world-filerr}r(hUjDNjPNjjihjubaubj, )r}r(hX=FILEhjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX=FILErr}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhj|jDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r(hUhjjDjwihj.h}rƒ(h]h]h]h]h]ujPNjjih]rÃ(j )ră}rŃ(hj/hjjDjwihj h}rƃ(h]h]h]h]h]ujPKh]rǃhX DeprecatedrȃrɃ}rʃ(hUhjăubaubj)r˃}r̃(hUh}r̓(h]h]h]h]h]uhjh]r΃jZ)rσ}rЃ(hUh}rу(h]h]h]h]h]uhj˃h]hj]ubahj-ubeubaubjZ)r҃}rӃ(hX7[STRIKEOUT:The location of the world file.] Deprecated.rԃhjjDjwihj]h}rՃ(h]h]h]h]h]ujPMjjih]rփhX7[STRIKEOUT:The location of the world file.] Deprecated.r׃r؃}rك(hjԃjDNjPNjjihj҃ubaubjZ)rڃ}rۃ(hX?The command line variant of this flag is ``--world-file=FILE``.hjjDjwihj]h}r܃(h]h]h]h]h]ujPMjjih]r݃(hX)The command line variant of this flag is rރr߃}r(hX)The command line variant of this flag is jDNjPNjjihjڃubj)r}r(hX``--world-file=FILE``h}r(h]h]h]h]h]uhjڃh]rhX--world-file=FILErr}r(hX--world-file=FILEhjubahjubhX.r}r(hX.jDNjPNjjihjڃubeubeubeubjZ)r}r(hXUndocumented fields: ``root-cmd``, ``symlink-bindir``, ``build-log``, ``remote-build-reporting``, ``report-planned-failure``, ``one-shot``, ``offline``.hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hXUndocumented fields: rr}r(hXUndocumented fields: jDNjPNjjihjubj)r}r(hX ``root-cmd``h}r(h]h]h]h]h]uhjh]rhXroot-cmdrr}r(hXroot-cmdhjubahjubhX, rr}r(hX, rjDNjPNjjihjubj)r}r(hX``symlink-bindir``h}r(h]h]h]h]h]uhjh]rhXsymlink-bindirrr}r(hXsymlink-bindirhjubahjubhX, rr}r(hX, hjubj)r}r(hX ``build-log``h}r(h]h]h]h]h]uhjh]r hX build-logr r }r (hX build-loghjubahjubhX, r r}r(hX, rjDNjPNjjihjubj)r}r(hX``remote-build-reporting``h}r(h]h]h]h]h]uhjh]rhXremote-build-reportingrr}r(hXremote-build-reportinghjubahjubhX, rr}r(hX, hjubj)r}r(hX``report-planned-failure``h}r(h]h]h]h]h]uhjh]rhXreport-planned-failurerr }r!(hXreport-planned-failurehjubahjubhX, r"r#}r$(hjhjubj)r%}r&(hX ``one-shot``h}r'(h]h]h]h]h]uhjh]r(hXone-shotr)r*}r+(hXone-shothj%ubahjubhX, r,r-}r.(hjhjubj)r/}r0(hX ``offline``h}r1(h]h]h]h]h]uhjh]r2hXoffliner3r4}r5(hXofflinehj/ubahjubhX.r6}r7(hX.jDNjPNjjihjubeubjZ)r8}r9(hX&Most users generally won't need these.r:hjjDjwihj]h}r;(h]h]h]h]h]ujPMjjih]r<hX(Most users generally won’t need these.r=r>}r?(hj:jDNjPNjjihj8ubaubj )r@}rA(hUhjjDjwihjnh}rB(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rC}rD(hUhjjDjwihj h}rE(j j Xcabalh]h]h]h]h]j X cfg-fieldrFj jFujPNjjih]rG(j )rH}rI(hXsolver: modularhjCjDjwihj h}rJ(h]rKjah]h]h]h]j ujPNjjih]rL(j )rM}rN(hUhjHjDjwihjnh}rO(h]h]h]h]h]Uentries]rP(j! Xsolver ; cabal project optionjUNtrQaujPNjjih]ubj# )rR}rS(hjhjHjDjwihj& h}rT(jjh]h]h]h]h]ujPNjjih]rUhXsolverrVrW}rX(hUjDNjPNjjihjRubaubj, )rY}rZ(hj/ hjHjDjwihj0 h}r[(jjh]h]h]h]h]ujPNjjih]r\hX: r]r^}r_(hUjDNjPNjjihjYubaubj6 )r`}ra(hXmodularhjHjDjwihj9 h}rb(jjh]h]h]h]h]ujPNjjih]rchXmodularrdre}rf(hUjDNjPNjjihj`ubaubeubj )rg}rh(hX--solver=modularhjCjDjwihj h}ri(h]rjjah]h]h]h]j ujPNjjih]rk(j )rl}rm(hUhjgjDjwihjnh}rn(h]h]h]h]h]Uentries]ro(j! X--solver; cabal project optionjUNtrpaujPNjjih]ubj# )rq}rr(hjhjgjDjwihj& h}rs(jjh]h]h]h]h]ujPNjjih]rthX--solverrurv}rw(hUjDNjPNjjihjqubaubj, )rx}ry(hX=modularhjgjDjwihj0 h}rz(jjh]h]h]h]h]ujPNjjih]r{hX=modularr|r}}r~(hUjDNjPNjjihjxubaubeubjh)r}r(hUhjCjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(jZ)r}r(hXThis field is reserved to allow the specification of alternative dependency solvers. At the moment, the only accepted option is ``modular``.hjjDjwihj]h}r(h]h]h]h]h]ujPM jjih]r(hXThis field is reserved to allow the specification of alternative dependency solvers. At the moment, the only accepted option is rr}r(hXThis field is reserved to allow the specification of alternative dependency solvers. At the moment, the only accepted option is jDNjPNjjihjubj)r}r(hX ``modular``h}r(h]h]h]h]h]uhjh]rhXmodularrr}r(hXmodularhjubahjubhX.r}r(hX.jDNjPNjjihjubeubjZ)r}r(hX?The command line variant of this field is ``--solver=modular``.hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX*The command line variant of this field is rr}r(hX*The command line variant of this field is jDNjPNjjihjubj)r}r(hX``--solver=modular``h}r(h]h]h]h]h]uhjh]rhX--solver=modularrr}r(hX--solver=modularhjubahjubhX.r}r(hX.jDNjPNjjihjubeubeubeubj )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXmax-backjumps: nathjjDjwihj h}r(h]rj.ah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X$max-backjumps ; cabal project optionj.UNtraujPNjjih]ubj# )r}r(hj-hjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX max-backjumpsrr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r„(hUjDNjPNjjihjubaubj6 )rÄ}rĄ(hXnathjjDjwihj9 h}rń(jjh]h]h]h]h]ujPNjjih]rƄhXnatrDŽrȄ}rɄ(hUjDNjPNjjihjÄubaubeubj )rʄ}r˄(hX--max-backjumps=NhjjDjwihj h}r̄(h]r̈́j"ah]h]h]h]j ujPNjjih]r΄(j )rτ}rЄ(hUhjʄjDjwihjnh}rф(h]h]h]h]h]Uentries]r҄(j! X%--max-backjumps; cabal project optionj"UNtrӄaujPNjjih]ubj# )rԄ}rՄ(hj!hjʄjDjwihj& h}rք(jjh]h]h]h]h]ujPNjjih]rׄhX--max-backjumpsr؄rل}rڄ(hUjDNjPNjjihjԄubaubj, )rۄ}r܄(hX=NhjʄjDjwihj0 h}r݄(jjh]h]h]h]h]ujPNjjih]rބhX=Nr߄r}r(hUjDNjPNjjihjۄubaubeubjh)r}r(hUhjjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hX Default valuehjjDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hX4000h}r(h]h]h]h]h]uhjh]rhX4000rr}r(hX4000jDNjPNjjihjubahj]ubahj-ubehj.ubaubjZ)r}r(hXMaximum number of backjumps (backtracking multiple steps) allowed while solving. Set -1 to allow unlimited backtracking, and 0 to disable backtracking completely.rhjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]rhXMaximum number of backjumps (backtracking multiple steps) allowed while solving. Set -1 to allow unlimited backtracking, and 0 to disable backtracking completely.rr}r(hjjDNjPNjjihjubaubjZ)r}r (hXCThe command line variant of this field is ``--max-backjumps=4000``.hjjDjwihj]h}r (h]h]h]h]h]ujPMjjih]r (hX*The command line variant of this field is r r }r(hX*The command line variant of this field is jDNjPNjjihjubj)r}r(hX``--max-backjumps=4000``h}r(h]h]h]h]h]uhjh]rhX--max-backjumps=4000rr}r(hX--max-backjumps=4000hjubahjubhX.r}r(hX.jDNjPNjjihjubeubeubeubj )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r }r!(hXreorder-goals: booleanhjjDjwihj h}r"(h]r#j;ah]h]h]h]j ujPNjjih]r$(j )r%}r&(hUhj jDjwihjnh}r'(h]h]h]h]h]Uentries]r((j! X$reorder-goals ; cabal project optionj;UNtr)aujPNjjih]ubj# )r*}r+(hj:hj jDjwihj& h}r,(jjh]h]h]h]h]ujPNjjih]r-hX reorder-goalsr.r/}r0(hUjDNjPNjjihj*ubaubj, )r1}r2(hj/ hj jDjwihj0 h}r3(jjh]h]h]h]h]ujPNjjih]r4hX: r5r6}r7(hUjDNjPNjjihj1ubaubj6 )r8}r9(hXbooleanhj jDjwihj9 h}r:(jjh]h]h]h]h]ujPNjjih]r;hXbooleanr<r=}r>(hUjDNjPNjjihj8ubaubeubj )r?}r@(hjhjjDjwihj h}rA(h]rBjah]h]h]h]j ujPNjjih]rC(j )rD}rE(hUhj?jDjwihjnh}rF(h]h]h]h]h]Uentries]rG(j! X%--reorder-goals; cabal project optionjUNtrHaujPNjjih]ubj# )rI}rJ(hjhj?jDjwihj& h}rK(jjh]h]h]h]h]ujPNjjih]rLhX--reorder-goalsrMrN}rO(hUjDNjPNjjihjIubaubj, )rP}rQ(hU hj?jDjwihj0 h}rR(jjh]h]h]h]h]ujPNjjih]rShX rT}rU(hUjDNjPNjjihjPubaubeubj )rV}rW(hjhjjDjwihj h}rX(h]rYj ah]h]h]h]j ujPNjjih]rZ(j )r[}r\(hUhjVjDjwihjnh}r](h]h]h]h]h]Uentries]r^(j! X(--no-reorder-goals; cabal project optionj UNtr_aujPNjjih]ubj# )r`}ra(hjhjVjDjwihj& h}rb(jjh]h]h]h]h]ujPNjjih]rchX--no-reorder-goalsrdre}rf(hUjDNjPNjjihj`ubaubj, )rg}rh(hU hjVjDjwihj0 h}ri(jjh]h]h]h]h]ujPNjjih]rjhX rk}rl(hUjDNjPNjjihjgubaubeubjh)rm}rn(hUhjjDjwihjA h}ro(h]h]h]h]h]ujPNjjih]rp(j)rq}rr(hUhjmjDjwihjh}rs(h]h]h]h]h]ujPNjjih]rtj)ru}rv(hUh}rw(h]h]h]h]h]uhjqh]rx(j )ry}rz(hX Default valuehjujDjwihj h}r{(h]h]h]h]h]ujPKh]r|hX Default valuer}r~}r(hUhjyubaubj)r}r(hUh}r(h]h]h]h]h]uhjuh]rjZ)r}r(hXFalseh}r(h]h]h]h]h]uhjh]rhXFalserr}r(hXFalsejDNjPNjjihjubahj]ubahj-ubehj.ubaubjZ)r}r(hXJWhen enabled, the solver will reorder goals according to certain heuristics. Slows things down on average, but may make backtracking faster for some packages. It's unlikely to help for small projects, but for big install plans it may help you find a plan when otherwise this is not possible. See :issue:`1780` for more commentary.hjmjDjwihj]h}r(h]h]h]h]h]ujPM$jjih]r(hX*When enabled, the solver will reorder goals according to certain heuristics. Slows things down on average, but may make backtracking faster for some packages. It’s unlikely to help for small projects, but for big install plans it may help you find a plan when otherwise this is not possible. See rr}r(hX(When enabled, the solver will reorder goals according to certain heuristics. Slows things down on average, but may make backtracking faster for some packages. It's unlikely to help for small projects, but for big install plans it may help you find a plan when otherwise this is not possible. See jDNjPNjjihjubj!)r}r(hX#1780h}r(UrefuriX,https://github.com/haskell/cabal/issues/1780h]h]h]h]h]Uinternaluhjh]rhX#1780rr}r(hX1780hjubahj%ubhX for more commentary.rr}r(hX for more commentary.jDNjPNjjihjubeubjZ)r}r(hXCThe command line variant of this field is ``--(no-)reorder-goals``.hjmjDjwihj]h}r(h]h]h]h]h]ujPM*jjih]r(hX*The command line variant of this field is rr}r(hX*The command line variant of this field is jDNjPNjjihjubj)r}r(hX``--(no-)reorder-goals``h}r(h]h]h]h]h]uhjh]rhX--(no-)reorder-goalsrr}r(hX--(no-)reorder-goalshjubahjubhX.r}r(hX.jDNjPNjjihjubeubeubeubj )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXcount-conflicts: booleanhjjDjwihj h}r(h]rjNah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X&count-conflicts ; cabal project optionjNUNtraujPNjjih]ubj# )r}r(hjMhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXcount-conflictsr…rÅ}rą(hUjDNjPNjjihjubaubj, )rŅ}rƅ(hj/ hjjDjwihj0 h}rDž(jjh]h]h]h]h]ujPNjjih]rȅhX: rɅrʅ}r˅(hUjDNjPNjjihjŅubaubj6 )r̅}rͅ(hXbooleanhjjDjwihj9 h}r΅(jjh]h]h]h]h]ujPNjjih]rυhXbooleanrЅrх}r҅(hUjDNjPNjjihj̅ubaubeubj )rӅ}rԅ(hjAhjjDjwihj h}rՅ(h]rօjBah]h]h]h]j ujPNjjih]rׅ(j )r؅}rم(hUhjӅjDjwihjnh}rڅ(h]h]h]h]h]Uentries]rۅ(j! X'--count-conflicts; cabal project optionjBUNtr܅aujPNjjih]ubj# )r݅}rޅ(hjAhjӅjDjwihj& h}r߅(jjh]h]h]h]h]ujPNjjih]rhX--count-conflictsrr}r(hUjDNjPNjjihj݅ubaubj, )r}r(hU hjӅjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubj )r}r(hjDhjjDjwihj h}r(h]rjEah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X*--no-count-conflicts; cabal project optionjEUNtraujPNjjih]ubj# )r}r(hjDhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--no-count-conflictsrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r }r (hUh}r (h]h]h]h]h]uhjh]r (j )r }r(hX Default valuehj jDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhj ubaubj)r}r(hUh}r(h]h]h]h]h]uhj h]rjZ)r}r(hXTrueh}r(h]h]h]h]h]uhjh]rhXTruerr}r(hXTruejDNjPNjjihjubahj]ubahj-ubehj.ubaubjZ)r}r (hXTTry to speed up solving by preferring goals that are involved in a lot of conflicts.r!hjjDjwihj]h}r"(h]h]h]h]h]ujPM3jjih]r#hXTTry to speed up solving by preferring goals that are involved in a lot of conflicts.r$r%}r&(hj!jDNjPNjjihjubaubjZ)r'}r((hXEThe command line variant of this field is ``--(no-)count-conflicts``.hjjDjwihj]h}r)(h]h]h]h]h]ujPM6jjih]r*(hX*The command line variant of this field is r+r,}r-(hX*The command line variant of this field is jDNjPNjjihj'ubj)r.}r/(hX``--(no-)count-conflicts``h}r0(h]h]h]h]h]uhj'h]r1hX--(no-)count-conflictsr2r3}r4(hX--(no-)count-conflictshj.ubahjubhX.r5}r6(hX.jDNjPNjjihj'ubeubeubeubj )r7}r8(hUhjjDjwihjnh}r9(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r:}r;(hUhjjDjwihj h}r<(j j Xcabalh]h]h]h]h]j X cfg-fieldr=j j=ujPNjjih]r>(j )r?}r@(hXminimize-conflict-set: booleanhj:jDjwihj h}rA(h]rBjah]h]h]h]j ujPNjjih]rC(j )rD}rE(hUhj?jDjwihjnh}rF(h]h]h]h]h]Uentries]rG(j! X,minimize-conflict-set ; cabal project optionjUNtrHaujPNjjih]ubj# )rI}rJ(hjhj?jDjwihj& h}rK(jjh]h]h]h]h]ujPNjjih]rLhXminimize-conflict-setrMrN}rO(hUjDNjPNjjihjIubaubj, )rP}rQ(hj/ hj?jDjwihj0 h}rR(jjh]h]h]h]h]ujPNjjih]rShX: rTrU}rV(hUjDNjPNjjihjPubaubj6 )rW}rX(hXbooleanhj?jDjwihj9 h}rY(jjh]h]h]h]h]ujPNjjih]rZhXbooleanr[r\}r](hUjDNjPNjjihjWubaubeubj )r^}r_(hjuhj:jDjwihj h}r`(h]rajvah]h]h]h]j ujPNjjih]rb(j )rc}rd(hUhj^jDjwihjnh}re(h]h]h]h]h]Uentries]rf(j! X---minimize-conflict-set; cabal project optionjvUNtrgaujPNjjih]ubj# )rh}ri(hjuhj^jDjwihj& h}rj(jjh]h]h]h]h]ujPNjjih]rkhX--minimize-conflict-setrlrm}rn(hUjDNjPNjjihjhubaubj, )ro}rp(hU hj^jDjwihj0 h}rq(jjh]h]h]h]h]ujPNjjih]rrhX rs}rt(hUjDNjPNjjihjoubaubeubj )ru}rv(hjhj:jDjwihj h}rw(h]rxjah]h]h]h]j ujPNjjih]ry(j )rz}r{(hUhjujDjwihjnh}r|(h]h]h]h]h]Uentries]r}(j! X0--no-minimize-conflict-set; cabal project optionjUNtr~aujPNjjih]ubj# )r}r(hjhjujDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--no-minimize-conflict-setrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hjujDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhj:jDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hX Default valuehjjDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hXFalseh}r(h]h]h]h]h]uhjh]rhXFalserr}r(hXFalsejDNjPNjjihjubahj]ubahj-ubehj.ubaubjZ)r}r(hXWhen there is no solution, try to improve the solver error message by finding a minimal conflict set. This option may increase run time significantly, so it is off by default.rhjjDjwihj]h}r(h]h]h]h]h]ujPMAjjih]rhXWhen there is no solution, try to improve the solver error message by finding a minimal conflict set. This option may increase run time significantly, so it is off by default.rr}r(hjjDNjPNjjihjubaubjZ)r}r(hXKThe command line variant of this field is ``--(no-)minimize-conflict-set``.hjjDjwihj]h}r(h]h]h]h]h]ujPMEjjih]r(hX*The command line variant of this field is rr}r(hX*The command line variant of this field is jDNjPNjjihjubj)r}r(hX ``--(no-)minimize-conflict-set``h}r(h]h]h]h]h]uhjh]rhX--(no-)minimize-conflict-setrr}r(hX--(no-)minimize-conflict-sethjubahjubhX.r}r(hX.jDNjPNjjihjubeubeubeubj )r†}rÆ(hUhjjDjwihjnh}rĆ(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rņ}rƆ(hUhjjDjwihj h}rdž(j j Xcabalh]h]h]h]h]j X cfg-fieldrȆj jȆujPNjjih]rɆ(j )rʆ}rˆ(hXstrong-flags: booleanhjņjDjwihj h}r̆(h]r͆j,ah]h]h]h]j ujPNjjih]rΆ(j )rφ}rІ(hUhjʆjDjwihjnh}rц(h]h]h]h]h]Uentries]r҆(j! X#strong-flags ; cabal project optionj,UNtrӆaujPNjjih]ubj# )rԆ}rՆ(hj+hjʆjDjwihj& h}rֆ(jjh]h]h]h]h]ujPNjjih]r׆hX strong-flagsr؆rن}rچ(hUjDNjPNjjihjԆubaubj, )rۆ}r܆(hj/ hjʆjDjwihj0 h}r݆(jjh]h]h]h]h]ujPNjjih]rކhX: r߆r}r(hUjDNjPNjjihjۆubaubj6 )r}r(hXbooleanhjʆjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhXbooleanrr}r(hUjDNjPNjjihjubaubeubj )r}r(hj^hjņjDjwihj h}r(h]rj_ah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X$--strong-flags; cabal project optionj_UNtraujPNjjih]ubj# )r}r(hj^hjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--strong-flagsrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubj )r}r(hjhjņjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X'--no-strong-flags; cabal project optionjUNtr aujPNjjih]ubj# )r }r (hjhjjDjwihj& h}r (jjh]h]h]h]h]ujPNjjih]r hX--no-strong-flagsrr}r(hUjDNjPNjjihj ubaubj, )r}r(hU hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjņjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r (hUh}r!(h]h]h]h]h]uhjh]r"(j )r#}r$(hX Default valuehjjDjwihj h}r%(h]h]h]h]h]ujPKh]r&hX Default valuer'r(}r)(hUhj#ubaubj)r*}r+(hUh}r,(h]h]h]h]h]uhjh]r-jZ)r.}r/(hXFalseh}r0(h]h]h]h]h]uhj*h]r1hXFalser2r3}r4(hXFalsejDNjPNjjihj.ubahj]ubahj-ubehj.ubaubjZ)r5}r6(hX8Do not defer flag choices. (TODO: Better documentation.)r7hjjDjwihj]h}r8(h]h]h]h]h]ujPMOjjih]r9hX8Do not defer flag choices. (TODO: Better documentation.)r:r;}r<(hj7jDNjPNjjihj5ubaubjZ)r=}r>(hXBThe command line variant of this field is ``--(no-)strong-flags``.hjjDjwihj]h}r?(h]h]h]h]h]ujPMQjjih]r@(hX*The command line variant of this field is rArB}rC(hX*The command line variant of this field is jDNjPNjjihj=ubj)rD}rE(hX``--(no-)strong-flags``h}rF(h]h]h]h]h]uhj=h]rGhX--(no-)strong-flagsrHrI}rJ(hX--(no-)strong-flagshjDubahjubhX.rK}rL(hX.jDNjPNjjihj=ubeubeubeubj )rM}rN(hUhjjDjwihjnh}rO(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rP}rQ(hUhjjDjwihj h}rR(j j Xcabalh]h]h]h]h]j X cfg-fieldrSj jSujPNjjih]rT(j )rU}rV(hX$allow-boot-library-installs: booleanhjPjDjwihj h}rW(h]rXjah]h]h]h]j ujPNjjih]rY(j )rZ}r[(hUhjUjDjwihjnh}r\(h]h]h]h]h]Uentries]r](j! X2allow-boot-library-installs ; cabal project optionjUNtr^aujPNjjih]ubj# )r_}r`(hjhjUjDjwihj& h}ra(jjh]h]h]h]h]ujPNjjih]rbhXallow-boot-library-installsrcrd}re(hUjDNjPNjjihj_ubaubj, )rf}rg(hj/ hjUjDjwihj0 h}rh(jjh]h]h]h]h]ujPNjjih]rihX: rjrk}rl(hUjDNjPNjjihjfubaubj6 )rm}rn(hXbooleanhjUjDjwihj9 h}ro(jjh]h]h]h]h]ujPNjjih]rphXbooleanrqrr}rs(hUjDNjPNjjihjmubaubeubj )rt}ru(hjhjPjDjwihj h}rv(h]rwjah]h]h]h]j ujPNjjih]rx(j )ry}rz(hUhjtjDjwihjnh}r{(h]h]h]h]h]Uentries]r|(j! X3--allow-boot-library-installs; cabal project optionjUNtr}aujPNjjih]ubj# )r~}r(hjhjtjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--allow-boot-library-installsrr}r(hUjDNjPNjjihj~ubaubj, )r}r(hU hjtjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubj )r}r(hjwhjPjDjwihj h}r(h]rjxah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X6--no-allow-boot-library-installs; cabal project optionjxUNtraujPNjjih]ubj# )r}r(hjwhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX --no-allow-boot-library-installsrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjPjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hX Default valuehjjDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hXFalseh}r(h]h]h]h]h]uhjh]rhXFalserr}r(hXFalserjDNjPNjjihjubahj]ubahj-ubehj.ubaubjZ)r}r‡(hXBy default, the dependency solver doesn't allow ``base``, ``ghc-prim``, ``integer-simple``, ``integer-gmp``, and ``template-haskell`` to be installed or upgraded. This flag removes the restriction.hjjDjwihj]h}rÇ(h]h]h]h]h]ujPMZjjih]rć(hX2By default, the dependency solver doesn’t allow rŇrƇ}rLJ(hX0By default, the dependency solver doesn't allow jDNjPNjjihjubj)rȇ}rɇ(hX``base``h}rʇ(h]h]h]h]h]uhjh]rˇhXbaseṙr͇}r·(hXbasehjȇubahjubhX, rχrЇ}rч(hX, jDNjPNjjihjubj)r҇}rӇ(hX ``ghc-prim``h}rԇ(h]h]h]h]h]uhjh]rՇhXghc-primrևrׇ}r؇(hXghc-primhj҇ubahjubhX, rهrڇ}rۇ(hX, r܇jDNjPNjjihjubj)r݇}rއ(hX``integer-simple``h}r߇(h]h]h]h]h]uhjh]rhXinteger-simplerr}r(hXinteger-simplehj݇ubahjubhX, rr}r(hj܇hjubj)r}r(hX``integer-gmp``h}r(h]h]h]h]h]uhjh]rhX integer-gmprr}r(hX integer-gmphjubahjubhX, and rr}r(hX, and jDNjPNjjihjubj)r}r(hX``template-haskell``h}r(h]h]h]h]h]uhjh]rhXtemplate-haskellrr}r(hXtemplate-haskellhjubahjubhX@ to be installed or upgraded. This flag removes the restriction.rr}r(hX@ to be installed or upgraded. This flag removes the restriction.jDNjPNjjihjubeubjZ)r}r(hXQThe command line variant of this field is ``--(no-)allow-boot-library-installs``.hjjDjwihj]h}r(h]h]h]h]h]ujPM_jjih]r(hX*The command line variant of this field is rr}r(hX*The command line variant of this field is jDNjPNjjihjubj)r}r(hX&``--(no-)allow-boot-library-installs``h}r(h]h]h]h]h]uhjh]rhX"--(no-)allow-boot-library-installsrr}r(hX"--(no-)allow-boot-library-installshjubahjubhX.r }r (hX.jDNjPNjjihjubeubeubeubj )r }r (hUhjjDjwihjnh}r (h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXcabal-lib-version: versionhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X(cabal-lib-version ; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]r hXcabal-lib-versionr!r"}r#(hUjDNjPNjjihjubaubj, )r$}r%(hj/ hjjDjwihj0 h}r&(jjh]h]h]h]h]ujPNjjih]r'hX: r(r)}r*(hUjDNjPNjjihj$ubaubj6 )r+}r,(hXversionhjjDjwihj9 h}r-(jjh]h]h]h]h]ujPNjjih]r.hXversionr/r0}r1(hUjDNjPNjjihj+ubaubeubj )r2}r3(hX--cabal-lib-version=versionhjjDjwihj h}r4(h]r5j ah]h]h]h]j ujPNjjih]r6(j )r7}r8(hUhj2jDjwihjnh}r9(h]h]h]h]h]Uentries]r:(j! X)--cabal-lib-version; cabal project optionj UNtr;aujPNjjih]ubj# )r<}r=(hjhj2jDjwihj& h}r>(jjh]h]h]h]h]ujPNjjih]r?hX--cabal-lib-versionr@rA}rB(hUjDNjPNjjihj<ubaubj, )rC}rD(hX=versionhj2jDjwihj0 h}rE(jjh]h]h]h]h]ujPNjjih]rFhX=versionrGrH}rI(hUjDNjPNjjihjCubaubeubjh)rJ}rK(hUhjjDjwihjA h}rL(h]h]h]h]h]ujPNjjih]rM(jZ)rN}rO(hX(This field selects the version of the Cabal library which should be used to build packages. This option is intended primarily for internal development use (e.g., forcing a package to build with a newer version of Cabal, to test a new version of Cabal.) (TODO: Specify its semantics more clearly.)rPhjJjDjwihj]h}rQ(h]h]h]h]h]ujPMfjjih]rRhX(This field selects the version of the Cabal library which should be used to build packages. This option is intended primarily for internal development use (e.g., forcing a package to build with a newer version of Cabal, to test a new version of Cabal.) (TODO: Specify its semantics more clearly.)rSrT}rU(hjPjDNjPNjjihjNubaubjZ)rV}rW(hXKThe command line variant of this field is ``--cabal-lib-version=1.24.0.1``.hjJjDjwihj]h}rX(h]h]h]h]h]ujPMljjih]rY(hX*The command line variant of this field is rZr[}r\(hX*The command line variant of this field is jDNjPNjjihjVubj)r]}r^(hX ``--cabal-lib-version=1.24.0.1``h}r_(h]h]h]h]h]uhjVh]r`hX--cabal-lib-version=1.24.0.1rarb}rc(hX--cabal-lib-version=1.24.0.1hj]ubahjubhX.rd}re(hX.jDNjPNjjihjVubeubeubeubjdY)rf}rg(hX[-*- rst -*- This file contains commonly used link-references See also "extlinks" in conf.pyhjjDjXdoc/references.incrhri}rjbhjgYh}rk(jjh]h]h]h]h]ujPKjjih]rlhX[-*- rst -*- This file contains commonly used link-references See also "extlinks" in conf.pyrmrn}ro(hUhjfubaubje)rp}rq(hX .. _`Package Versioning Policy`:hjjDjihjdh}rr(h]h]h]h]h]j'Upackage-versioning-policyrsujPMujjih]ubje)rt}ru(hX .. _PVP: http://pvp.haskell.org/hjjDjij}rvjijpshjdh}rw(j] Xhttp://pvp.haskell.org/h]rx(Upvpryjseh]h]h]h]rz(jijieujPMvjjij }r{jsjpsh]ubje)r|}r}(hX(.. _Hackage: http://hackage.haskell.org/hjjDjihjdh}r~(j] Xhttp://hackage.haskell.org/h]rUhackagerah]h]h]h]rjiaujPMxjjih]ubje)r}r(hX$.. _Haskell: http://www.haskell.org/hjjDjihjdh}r(j] Xhttp://www.haskell.org/h]rUhaskellrah]h]h]h]rjiaujPMzjjih]ubje)r}r(hX,.. _Haddock: http://www.haskell.org/haddock/hjjDjihjdh}r(j] Xhttp://www.haskell.org/haddock/h]rUhaddockrah]h]h]h]rjiaujPM|jjih]ubje)r}r(hX&.. _Alex: http://www.haskell.org/alex/hjjDjihjdh}r(j] Xhttp://www.haskell.org/alex/h]rUalexrah]h]h]h]rjiaujPM~jjih]ubje)r}r(hX(.. _Happy: http://www.haskell.org/happy/hjjDjihjdh}r(j] Xhttp://www.haskell.org/happy/h]rUhappyrah]h]h]h]rjiaujPMjjih]ubje)r}r(hX*.. _Hoogle: http://www.haskell.org/hoogle/jKhjjDjihjdh}r(j] Xhttp://www.haskell.org/hoogle/rh]rUhooglerah]h]h]h]rjiaujPMjjih]ubje)r}r(hX9.. _HsColour: http://www.cs.york.ac.uk/fp/darcs/hscolour/jKhjjDjihjdh}r(j] X+http://www.cs.york.ac.uk/fp/darcs/hscolour/rh]rUhscolourrah]h]h]h]rjiaujPMjjih]ubje)r}r(hX-.. _cpphs: http://projects.haskell.org/cpphs/hjjDjihjdh}r(j] X"http://projects.haskell.org/cpphs/h]rUcpphsrah]h]h]h]rjiaujPMjjih]ubje)r}r(hX-.. _ABNF: https://tools.ietf.org/html/rfc5234jKhjjDjihjdh}r(j] jwh]rUabnfrah]h]h]h]rjiaujPMjjih]ubje)r}r(hX<.. _Backpack: https://ghc.haskell.org/trac/ghc/wiki/BackpackhjjDjihjdh}r(j] X.https://ghc.haskell.org/trac/ghc/wiki/Backpackh]rUbackpackrah]h]h]h]rjiaujPMjjih]ubeubeubjDjwihjqh}r(h]h]h]h]rjah]rjiaujPMTjjih]r(h)r}r(hXPackage configuration optionsrhjsjDjwihhh}r(h]h]h]h]h]ujPMTjjih]rˆhXPackage configuration optionsrÈrĈ}rň(hjjDNjPNjjihjubaubjZ)rƈ}rLj(hXqPackage options affect the building of specific packages. There are three ways a package option can be specified:rȈhjsjDjwihj]h}rɈ(h]h]h]h]h]ujPMVjjih]rʈhXqPackage options affect the building of specific packages. There are three ways a package option can be specified:rˈr̈}r͈(hjȈjDNjPNjjihjƈubaubj )rΈ}rψ(hUhjsjDjwihj h}rЈ(j X-h]h]h]h]h]ujPMYjjih]rш(j )r҈}rӈ(hX_They can be specified at the top-level, in which case they apply only to **local package**, or hjΈjDjwihj h}rԈ(h]h]h]h]h]ujPNjjih]rՈjZ)rֈ}r׈(hX^They can be specified at the top-level, in which case they apply only to **local package**, orhj҈jDjwihj]h}r؈(h]h]h]h]h]ujPMYh]rو(hXIThey can be specified at the top-level, in which case they apply only to rڈrۈ}r܈(hXIThey can be specified at the top-level, in which case they apply only to hjֈubj)r݈}rވ(hX**local package**h}r߈(h]h]h]h]h]uhjֈh]rhX local packagerr}r(hX local packagehj݈ubahjubhX, orrr}r(hX, orhjֈubeubaubj )r}r(hXThey can be specified inside a ``package`` stanza, in which case they apply to the build of the package, whether or not it is local or external. hjΈjDjwihj h}r(h]h]h]h]h]ujPNjjih]rjZ)r}r(hXThey can be specified inside a ``package`` stanza, in which case they apply to the build of the package, whether or not it is local or external.hjjDjwihj]h}r(h]h]h]h]h]ujPM\h]r(hXThey can be specified inside a rr}r(hXThey can be specified inside a hjubj)r}r(hX ``package``h}r(h]h]h]h]h]uhjh]rhXpackagerr}r(hXpackagehjubahjubhXf stanza, in which case they apply to the build of the package, whether or not it is local or external.rr}r(hXf stanza, in which case they apply to the build of the package, whether or not it is local or external.hjubeubaubj )r}r(hXThey can be specified inside an ``package *`` stanza, in which case they apply to all packages, local ones from the project and also external dependencies. hjΈjDjwihj h}r(h]h]h]h]h]ujPNjjih]rjZ)r}r(hXThey can be specified inside an ``package *`` stanza, in which case they apply to all packages, local ones from the project and also external dependencies.hjjDjwihj]h}r(h]h]h]h]h]ujPM`h]r(hX They can be specified inside an rr}r(hX They can be specified inside an hjubj)r}r(hX ``package *``h}r (h]h]h]h]h]uhjh]r hX package *r r }r (hX package *hjubahjubhXn stanza, in which case they apply to all packages, local ones from the project and also external dependencies.rr}r(hXn stanza, in which case they apply to all packages, local ones from the project and also external dependencies.hjubeubaubeubjZ)r}r(hXFor example, the following options specify that :cfg-field:`optimization` should be turned off for all local packages, and that ``bytestring`` (possibly an external dependency) should be built with ``-fno-state-hack``::hjsjDjwihj]h}r(h]h]h]h]h]ujPMejjih]r(hX0For example, the following options specify that rr}r(hX0For example, the following options specify that jDNjPNjjihjubjM)r}r(hX:cfg-field:`optimization`hjjDjwihjPh}r(UreftypeX cfg-fieldjRjSX optimizationrU refdomainXcabalrh]h]U refexplicith]h]h]jVhjnNujPMeh]rj)r}r(hjh}r (h]h]r!(j]jXcabal-cfg-fieldr"eh]h]h]uhjh]r#hX optimizationr$r%}r&(hUhjubahjubaubhX7 should be turned off for all local packages, and that r'r(}r)(hX7 should be turned off for all local packages, and that jDNjPNjjihjubj)r*}r+(hX``bytestring``h}r,(h]h]h]h]h]uhjh]r-hX bytestringr.r/}r0(hX bytestringhj*ubahjubhX8 (possibly an external dependency) should be built with r1r2}r3(hX8 (possibly an external dependency) should be built with jDNjPNjjihjubj)r4}r5(hX``-fno-state-hack``h}r6(h]h]h]h]h]uhjh]r7hX-fno-state-hackr8r9}r:(hX-fno-state-hackhj4ubahjubhX:r;}r<(hX:jDNjPNjjihjubeubj)r=}r>(hXHoptimization: False package bytestring ghc-options: -fno-state-hackhjsjDjwihjh}r?(jjh]h]h]h]h]ujPMijjih]r@hXHoptimization: False package bytestring ghc-options: -fno-state-hackrArB}rC(hUhj=ubaubjZ)rD}rE(hX)``ghc-options`` is not specifically described in this documentation, but is one of many fields for configuring programs. They take the form ``progname-options`` and ``progname-location``, and can only be set inside package stanzas. (TODO: They are not supported at top-level, see :issue:`3579`.)hjsjDjwihj]h}rF(h]h]h]h]h]ujPMnjjih]rG(j)rH}rI(hX``ghc-options``h}rJ(h]h]h]h]h]uhjDh]rKhX ghc-optionsrLrM}rN(hX ghc-optionshjHubahjubhX~ is not specifically described in this documentation, but is one of many fields for configuring programs. They take the form rOrP}rQ(hX~ is not specifically described in this documentation, but is one of many fields for configuring programs. They take the form jDNjPNjjihjDubj)rR}rS(hX``progname-options``h}rT(h]h]h]h]h]uhjDh]rUhXprogname-optionsrVrW}rX(hXprogname-optionshjRubahjubhX and rYrZ}r[(hX and jDNjPNjjihjDubj)r\}r](hX``progname-location``h}r^(h]h]h]h]h]uhjDh]r_hXprogname-locationr`ra}rb(hXprogname-locationhj\ubahjubhX_, and can only be set inside package stanzas. (TODO: They are not supported at top-level, see rcrd}re(hX_, and can only be set inside package stanzas. (TODO: They are not supported at top-level, see jDNjPNjjihjDubj!)rf}rg(hX#3579h}rh(UrefuriX,https://github.com/haskell/cabal/issues/3579h]h]h]h]h]UinternaluhjDh]rihX#3579rjrk}rl(hX3579hjfubahj%ubhX.)rmrn}ro(hX.)jDNjPNjjihjDubeubjZ)rp}rq(hXAt the moment, there is no way to specify an option to apply to all external packages or all inplace packages. Additionally, it is only possible to specify these options on the command line for all local packages (there is no per-package command line interface.)rrhjsjDjwihj]h}rs(h]h]h]h]h]ujPMtjjih]rthXAt the moment, there is no way to specify an option to apply to all external packages or all inplace packages. Additionally, it is only possible to specify these options on the command line for all local packages (there is no per-package command line interface.)rurv}rw(hjrjDNjPNjjihjpubaubjZ)rx}ry(hXSome flags were added by more recent versions of the Cabal library. This means that they are NOT supported by packages which use Custom setup scripts that require a version of the Cabal library older than when the feature was added.rzhjsjDjwihj]h}r{(h]h]h]h]h]ujPMyjjih]r|hXSome flags were added by more recent versions of the Cabal library. This means that they are NOT supported by packages which use Custom setup scripts that require a version of the Cabal library older than when the feature was added.r}r~}r(hjzjDNjPNjjihjxubaubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hX7flags: list of +flagname or -flagname (space separated)hjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! Xflags ; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXflagsrr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hX0list of +flagname or -flagname (space separated)hjjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhX0list of +flagname or -flagname (space separated)rr}r(hUjDNjPNjjihjubaubeubj )r}r(hX"--flags="+foo -bar", -ffoo, -f-barhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X--flags; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--flagsrr}r(hUjDNjPNjjihjubaubj, )r}r(hX ="+foo -bar"hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX ="+foo -bar"rr}r(hUjDNjPNjjihjubaubj# )r}r(hj xhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]r‰hX, rÉrĉ}rʼn(hUjDNjPNjjihjubaubj# )rƉ}rlj(hX-ffoohjjDjwihj& h}rȉ(jjh]h]h]h]h]ujPNjjih]rɉhX-ffoorʉrˉ}r̉(hUjDNjPNjjihjƉubaubj, )r͉}rΉ(hU hjjDjwihj0 h}rω(jjh]h]h]h]h]ujPNjjih]rЉhX rщ}r҉(hUjDNjPNjjihj͉ubaubj# )rӉ}rԉ(hj xhjjDjwihj& h}rՉ(jjh]h]h]h]h]ujPNjjih]r։hX, r׉r؉}rى(hUjDNjPNjjihjӉubaubj# )rډ}rۉ(hX-f-barhjjDjwihj& h}r܉(jjh]h]h]h]h]ujPNjjih]r݉hX-f-barrމr߉}r(hUjDNjPNjjihjډubaubj, )r}r(hU hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(jZ)r}r(hXForce all flags specified as ``+flagname`` to be true, and all flags specified as ``-flagname`` to be false. For example, to enable the flag ``foo`` and disable ``bar``, set:hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hXForce all flags specified as rr}r(hXForce all flags specified as jDNjPNjjihjubj)r}r(hX ``+flagname``h}r(h]h]h]h]h]uhjh]rhX +flagnamerr}r(hX +flagnamehjubahjubhX( to be true, and all flags specified as rr}r(hX( to be true, and all flags specified as jDNjPNjjihjubj)r}r(hX ``-flagname``h}r(h]h]h]h]h]uhjh]rhX -flagnamerr}r(hX -flagnamehjubahjubhX. to be false. For example, to enable the flag rr}r(hX. to be false. For example, to enable the flag jDNjPNjjihjubj)r}r(hX``foo``h}r(h]h]h]h]h]uhjh]r hXfoor r }r (hXfoohjubahjubhX and disable r r}r(hX and disable jDNjPNjjihjubj)r}r(hX``bar``h}r(h]h]h]h]h]uhjh]rhXbarrr}r(hXbarhjubahjubhX, set:rr}r(hX, set:jDNjPNjjihjubeubj)r}r(hXflags: +foo -barhjjDjwihjh}r(jjh]h]h]h]h]ujPMjjih]rhXflags: +foo -barrr}r (hUhjubaubjZ)r!}r"(hXlIf there is no leading punctuation, it is assumed that the flag should be enabled; e.g., this is equivalent:r#hjjDjwihj]h}r$(h]h]h]h]h]ujPMjjih]r%hXlIf there is no leading punctuation, it is assumed that the flag should be enabled; e.g., this is equivalent:r&r'}r((hj#jDNjPNjjihj!ubaubj)r)}r*(hXflags: foo -barhjjDjwihjh}r+(jjh]h]h]h]h]ujPMjjih]r,hXflags: foo -barr-r.}r/(hUhj)ubaubjZ)r0}r1(hXFlags are *per-package*, so it doesn't make much sense to specify flags at the top-level, unless you happen to know that *all* of your local packages support the same named flags. If a flag is not supported by a package, it is ignored.hjjDjwihj]h}r2(h]h]h]h]h]ujPMjjih]r3(hX Flags are r4r5}r6(hX Flags are jDNjPNjjihj0ubj)r7}r8(hX *per-package*h}r9(h]h]h]h]h]uhj0h]r:hX per-packager;r<}r=(hX per-packagehj7ubahjubhXd, so it doesn’t make much sense to specify flags at the top-level, unless you happen to know that r>r?}r@(hXb, so it doesn't make much sense to specify flags at the top-level, unless you happen to know that jDNjPNjjihj0ubj)rA}rB(hX*all*h}rC(h]h]h]h]h]uhj0h]rDhXallrErF}rG(hXallhjAubahjubhXm of your local packages support the same named flags. If a flag is not supported by a package, it is ignored.rHrI}rJ(hXm of your local packages support the same named flags. If a flag is not supported by a package, it is ignored.jDNjPNjjihj0ubeubjZ)rK}rL(hXASee also the solver configuration field :cfg-field:`constraints`.hjjDjwihj]h}rM(h]h]h]h]h]ujPMjjih]rN(hX(See also the solver configuration field rOrP}rQ(hX(See also the solver configuration field jDNjPNjjihjKubjM)rR}rS(hX:cfg-field:`constraints`hjKjDjwihjPh}rT(UreftypeX cfg-fieldjRjSX constraintsrUU refdomainXcabalrVh]h]U refexplicith]h]h]jVhjnNujPMh]rWj)rX}rY(hjUh}rZ(h]h]r[(j]jVXcabal-cfg-fieldr\eh]h]h]uhjRh]r]hX constraintsr^r_}r`(hUhjXubahjubaubhX.ra}rb(hX.jDNjPNjjihjKubeubjZ)rc}rd(hXfThe command line variant of this flag is ``--flags``. There is also a shortened form ``-ffoo -f-bar``.hjjDjwihj]h}re(h]h]h]h]h]ujPMjjih]rf(hX)The command line variant of this flag is rgrh}ri(hX)The command line variant of this flag is jDNjPNjjihjcubj)rj}rk(hX ``--flags``h}rl(h]h]h]h]h]uhjch]rmhX--flagsrnro}rp(hX--flagshjjubahjubhX!. There is also a shortened form rqrr}rs(hX!. There is also a shortened form jDNjPNjjihjcubj)rt}ru(hX``-ffoo -f-bar``h}rv(h]h]h]h]h]uhjch]rwhX -ffoo -f-barrxry}rz(hX -ffoo -f-barhjtubahjubhX.r{}r|(hX.jDNjPNjjihjcubeubjZ)r}}r~(hX1A common mistake is to say ``cabal v2-build -fhans``, where ``hans`` is a flag for a transitive dependency that is not in the local package; in this case, the flag will be silently ignored. If ``haskell-tor`` is the package you want this flag to apply to, try ``--constraint="haskell-tor +hans"`` instead.hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hXA common mistake is to say rr}r(hXA common mistake is to say jDNjPNjjihj}ubj)r}r(hX``cabal v2-build -fhans``h}r(h]h]h]h]h]uhj}h]rhXcabal v2-build -fhansrr}r(hXcabal v2-build -fhanshjubahjubhX, where rr}r(hX, where jDNjPNjjihj}ubj)r}r(hX``hans``h}r(h]h]h]h]h]uhj}h]rhXhansrr}r(hXhanshjubahjubhX} is a flag for a transitive dependency that is not in the local package; in this case, the flag will be silently ignored. If rr}r(hX} is a flag for a transitive dependency that is not in the local package; in this case, the flag will be silently ignored. If jDNjPNjjihj}ubj)r}r(hX``haskell-tor``h}r(h]h]h]h]h]uhj}h]rhX haskell-torrr}r(hX haskell-torhjubahjubhX4 is the package you want this flag to apply to, try rr}r(hX4 is the package you want this flag to apply to, try jDNjPNjjihj}ubj)r}r(hX$``--constraint="haskell-tor +hans"``h}r(h]h]h]h]h]uhj}h]rhX --constraint="haskell-tor +hans"rr}r(hX --constraint="haskell-tor +hans"hjubahjubhX instead.rr}r(hX instead.jDNjPNjjihj}ubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXwith-compiler: executablehjjDjwihj h}r(h]rjJah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X$with-compiler ; cabal project optionjJUNtraujPNjjih]ubj# )r}r(hjIhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX with-compilerrŠrÊ}rĊ(hUjDNjPNjjihjubaubj, )rŊ}rƊ(hj/ hjjDjwihj0 h}rNJ(jjh]h]h]h]h]ujPNjjih]rȊhX: rɊrʊ}rˊ(hUjDNjPNjjihjŊubaubj6 )r̊}r͊(hX executablehjjDjwihj9 h}rΊ(jjh]h]h]h]h]ujPNjjih]rϊhX executablerЊrъ}rҊ(hUjDNjPNjjihj̊ubaubeubj )rӊ}rԊ(hX--with-compiler=executablehjjDjwihj h}rՊ(h]r֊jah]h]h]h]j ujPNjjih]r׊(j )r؊}rي(hUhjӊjDjwihjnh}rڊ(h]h]h]h]h]Uentries]rۊ(j! X%--with-compiler; cabal project optionjUNtr܊aujPNjjih]ubj# )r݊}rފ(hjhjӊjDjwihj& h}rߊ(jjh]h]h]h]h]ujPNjjih]rhX--with-compilerrr}r(hUjDNjPNjjihj݊ubaubj, )r}r(hX =executablehjӊjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX =executablerr}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(jZ)r}r(hXSpecify the path to a particular compiler to be used. If not an absolute path, it will be resolved according to the :envvar:`PATH` environment. The type of the compiler (GHC, GHCJS, etc) must be consistent with the setting of the :cfg-field:`compiler` field.hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hXtSpecify the path to a particular compiler to be used. If not an absolute path, it will be resolved according to the rr}r(hXtSpecify the path to a particular compiler to be used. If not an absolute path, it will be resolved according to the jDNjPNjjihjubj )r}r(hUh}r(h]h]h]h]h]Uentriesr]r((UsinglerXPATHrUindex-2rUNtr(jXenvironment variable; PATHjUNtreuhjh]hjnubje)r}r(hUh}r(h]h]h]h]rjah]uhjh]hjdubjM)r}r(hX:envvar:`PATH`rhjjDjwihjPh}r(UreftypeXenvvarjRjSjU refdomainXstdrh]h]U refexplicith]h]h]jVhujPMh]r j)r }r (hjh}r (h]h]r (j]jX std-envvarreh]h]h]uhjh]rhXPATHrr}r(hUhj ubahjubaubhXd environment. The type of the compiler (GHC, GHCJS, etc) must be consistent with the setting of the rr}r(hXd environment. The type of the compiler (GHC, GHCJS, etc) must be consistent with the setting of the jDNjPNjjihjubjM)r}r(hX:cfg-field:`compiler`hjjDjwihjPh}r(UreftypeX cfg-fieldjRjSXcompilerrU refdomainXcabalrh]h]U refexplicith]h]h]jVhjnNujPMh]rj)r}r(hjh}r(h]h]r(j]jXcabal-cfg-fieldr eh]h]h]uhjh]r!hXcompilerr"r#}r$(hUhjubahjubaubhX field.r%r&}r'(hX field.jDNjPNjjihjubeubjZ)r(}r)(hXThe most common use of this option is to specify a different version of your compiler to be used; e.g., if you have ``ghc-7.8`` in your path, you can specify ``with-compiler: ghc-7.8`` to use it.hjjDjwihj]h}r*(h]h]h]h]h]ujPMjjih]r+(hXtThe most common use of this option is to specify a different version of your compiler to be used; e.g., if you have r,r-}r.(hXtThe most common use of this option is to specify a different version of your compiler to be used; e.g., if you have jDNjPNjjihj(ubj)r/}r0(hX ``ghc-7.8``h}r1(h]h]h]h]h]uhj(h]r2hXghc-7.8r3r4}r5(hXghc-7.8hj/ubahjubhX in your path, you can specify r6r7}r8(hX in your path, you can specify jDNjPNjjihj(ubj)r9}r:(hX``with-compiler: ghc-7.8``h}r;(h]h]h]h]h]uhj(h]r<hXwith-compiler: ghc-7.8r=r>}r?(hXwith-compiler: ghc-7.8hj9ubahjubhX to use it.r@rA}rB(hX to use it.jDNjPNjjihj(ubeubjZ)rC}rD(hXUThis flag also sets the default value of :cfg-field:`with-hc-pkg`, using the heuristic that it is named ``ghc-pkg-7.8`` (if your executable name is suffixed with a version number), or is the executable named ``ghc-pkg`` in the same directory as the ``ghc`` directory. If this heuristic does not work, set :cfg-field:`with-hc-pkg` explicitly.hjjDjwihj]h}rE(h]h]h]h]h]ujPMjjih]rF(hX)This flag also sets the default value of rGrH}rI(hX)This flag also sets the default value of jDNjPNjjihjCubjM)rJ}rK(hX:cfg-field:`with-hc-pkg`hjCjDjwihjPh}rL(UreftypeX cfg-fieldjRjSX with-hc-pkgrMU refdomainXcabalrNh]h]U refexplicith]h]h]jVhjnNujPMh]rOj)rP}rQ(hjMh}rR(h]h]rS(j]jNXcabal-cfg-fieldrTeh]h]h]uhjJh]rUhX with-hc-pkgrVrW}rX(hUhjPubahjubaubhX', using the heuristic that it is named rYrZ}r[(hX', using the heuristic that it is named jDNjPNjjihjCubj)r\}r](hX``ghc-pkg-7.8``h}r^(h]h]h]h]h]uhjCh]r_hX ghc-pkg-7.8r`ra}rb(hX ghc-pkg-7.8hj\ubahjubhXY (if your executable name is suffixed with a version number), or is the executable named rcrd}re(hXY (if your executable name is suffixed with a version number), or is the executable named jDNjPNjjihjCubj)rf}rg(hX ``ghc-pkg``h}rh(h]h]h]h]h]uhjCh]rihXghc-pkgrjrk}rl(hXghc-pkghjfubahjubhX in the same directory as the rmrn}ro(hX in the same directory as the jDNjPNjjihjCubj)rp}rq(hX``ghc``h}rr(h]h]h]h]h]uhjCh]rshXghcrtru}rv(hXghchjpubahjubhX1 directory. If this heuristic does not work, set rwrx}ry(hX1 directory. If this heuristic does not work, set jDNjPNjjihjCubjM)rz}r{(hX:cfg-field:`with-hc-pkg`hjCjDjwihjPh}r|(UreftypeX cfg-fieldjRjSX with-hc-pkgr}U refdomainXcabalr~h]h]U refexplicith]h]h]jVhjnNujPMh]rj)r}r(hj}h}r(h]h]r(j]j~Xcabal-cfg-fieldreh]h]h]uhjzh]rhX with-hc-pkgrr}r(hUhjubahjubaubhX explicitly.rr}r(hX explicitly.jDNjPNjjihjCubeubjZ)r}r(hXFor inplace packages, ``cabal v2-build`` maintains a separate build directory for each version of GHC, so you can maintain multiple build trees for different versions of GHC without clobbering each other.hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hXFor inplace packages, rr}r(hXFor inplace packages, jDNjPNjjihjubj)r}r(hX``cabal v2-build``h}r(h]h]h]h]h]uhjh]rhXcabal v2-buildrr}r(hXcabal v2-buildhjubahjubhX maintains a separate build directory for each version of GHC, so you can maintain multiple build trees for different versions of GHC without clobbering each other.rr}r(hX maintains a separate build directory for each version of GHC, so you can maintain multiple build trees for different versions of GHC without clobbering each other.jDNjPNjjihjubeubjZ)r}r(hXAt the moment, it's not possible to set :cfg-field:`with-compiler` on a per-package basis, but eventually we plan on relaxing this restriction. If this is something you need, give us a shout.hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX*At the moment, it’s not possible to set rr}r(hX(At the moment, it's not possible to set jDNjPNjjihjubjM)r}r(hX:cfg-field:`with-compiler`hjjDjwihjPh}r(UreftypeX cfg-fieldjRjSX with-compilerrU refdomainXcabalrh]h]U refexplicith]h]h]jVhjnNujPMh]rj)r}r(hjh}r(h]h]r(j]jXcabal-cfg-fieldreh]h]h]uhjh]rhX with-compilerrr}r(hUhjubahjubaubhX} on a per-package basis, but eventually we plan on relaxing this restriction. If this is something you need, give us a shout.rr}r(hX} on a per-package basis, but eventually we plan on relaxing this restriction. If this is something you need, give us a shout.jDNjPNjjihjubeubjZ)r}r(hXsThe command line variant of this flag is ``--with-compiler=ghc-7.8``; there is also a short version ``-w ghc-7.8``.hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihjubj)r}r(hX``--with-compiler=ghc-7.8``h}r(h]h]h]h]h]uhjh]rhX--with-compiler=ghc-7.8rr‹}rË(hX--with-compiler=ghc-7.8hjubahjubhX ; there is also a short version rċrŋ}rƋ(hX ; there is also a short version jDNjPNjjihjubj)rNj}rȋ(hX``-w ghc-7.8``h}rɋ(h]h]h]h]h]uhjh]rʋhX -w ghc-7.8rˋr̋}r͋(hX -w ghc-7.8hjNjubahjubhX.r΋}rϋ(hX.jDNjPNjjihjubeubeubeubj )rЋ}rы(hUhjsjDjwihjnh}rҋ(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rӋ}rԋ(hUhjsjDjwihj h}rՋ(j j Xcabalh]h]h]h]h]j X cfg-fieldr֋j j֋ujPNjjih]r׋(j )r؋}rً(hXwith-hc-pkg: executablehjӋjDjwihj h}rڋ(h]rۋj!ah]h]h]h]j ujPNjjih]r܋(j )r݋}rދ(hUhj؋jDjwihjnh}rߋ(h]h]h]h]h]Uentries]r(j! X"with-hc-pkg ; cabal project optionj!UNtraujPNjjih]ubj# )r}r(hj hj؋jDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX with-hc-pkgrr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hj؋jDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hX executablehj؋jDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhX executablerr}r(hUjDNjPNjjihjubaubeubj )r}r(hX--with-hc-pkg=executablehjӋjDjwihj h}r(h]rj)ah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X#--with-hc-pkg; cabal project optionj)UNtraujPNjjih]ubj# )r}r(hj(hjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX --with-hc-pkgrr}r(hUjDNjPNjjihjubaubj, )r}r (hX =executablehjjDjwihj0 h}r (jjh]h]h]h]h]ujPNjjih]r hX =executabler r }r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjӋjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(jZ)r}r(hXQSpecify the path to the package tool, e.g., ``ghc-pkg``. This package tool must be compatible with the compiler specified by :cfg-field:`with-compiler` (generally speaking, it should be precisely the tool that was distributed with the compiler). If this option is omitted, the default value is determined from :cfg-field:`with-compiler`.hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX,Specify the path to the package tool, e.g., rr}r(hX,Specify the path to the package tool, e.g., jDNjPNjjihjubj)r}r(hX ``ghc-pkg``h}r(h]h]h]h]h]uhjh]rhXghc-pkgrr}r (hXghc-pkghjubahjubhXF. This package tool must be compatible with the compiler specified by r!r"}r#(hXF. This package tool must be compatible with the compiler specified by jDNjPNjjihjubjM)r$}r%(hX:cfg-field:`with-compiler`hjjDjwihjPh}r&(UreftypeX cfg-fieldjRjSX with-compilerr'U refdomainXcabalr(h]h]U refexplicith]h]h]jVhjnNujPMh]r)j)r*}r+(hj'h}r,(h]h]r-(j]j(Xcabal-cfg-fieldr.eh]h]h]uhj$h]r/hX with-compilerr0r1}r2(hUhj*ubahjubaubhX (generally speaking, it should be precisely the tool that was distributed with the compiler). If this option is omitted, the default value is determined from r3r4}r5(hX (generally speaking, it should be precisely the tool that was distributed with the compiler). If this option is omitted, the default value is determined from jDNjPNjjihjubjM)r6}r7(hX:cfg-field:`with-compiler`hjjDjwihjPh}r8(UreftypeX cfg-fieldjRjSX with-compilerr9U refdomainXcabalr:h]h]U refexplicith]h]h]jVhjnNujPMh]r;j)r<}r=(hj9h}r>(h]h]r?(j]j:Xcabal-cfg-fieldr@eh]h]h]uhj6h]rAhX with-compilerrBrC}rD(hUhj<ubahjubaubhX.rE}rF(hX.jDNjPNjjihjubeubjZ)rG}rH(hXGThe command line variant of this flag is ``--with-hc-pkg=ghc-pkg-7.8``.hjjDjwihj]h}rI(h]h]h]h]h]ujPMjjih]rJ(hX)The command line variant of this flag is rKrL}rM(hX)The command line variant of this flag is jDNjPNjjihjGubj)rN}rO(hX``--with-hc-pkg=ghc-pkg-7.8``h}rP(h]h]h]h]h]uhjGh]rQhX--with-hc-pkg=ghc-pkg-7.8rRrS}rT(hX--with-hc-pkg=ghc-pkg-7.8hjNubahjubhX.rU}rV(hX.jDNjPNjjihjGubeubeubeubj )rW}rX(hUhjsjDjwihjnh}rY(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rZ}r[(hUhjsjDjwihj h}r\(j j Xcabalh]h]h]h]h]j X cfg-fieldr]j j]ujPNjjih]r^(j )r_}r`(hXoptimization: nathjZjDjwihj h}ra(h]rbjah]h]h]h]j ujPNjjih]rc(j )rd}re(hUhj_jDjwihjnh}rf(h]h]h]h]h]Uentries]rg(j! X#optimization ; cabal project optionjUNtrhaujPNjjih]ubj# )ri}rj(hjhj_jDjwihj& h}rk(jjh]h]h]h]h]ujPNjjih]rlhX optimizationrmrn}ro(hUjDNjPNjjihjiubaubj, )rp}rq(hj/ hj_jDjwihj0 h}rr(jjh]h]h]h]h]ujPNjjih]rshX: rtru}rv(hUjDNjPNjjihjpubaubj6 )rw}rx(hXnathj_jDjwihj9 h}ry(jjh]h]h]h]h]ujPNjjih]rzhXnatr{r|}r}(hUjDNjPNjjihjwubaubeubj )r~}r(hjhjZjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhj~jDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X+--enable-optimization; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhj~jDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--enable-optimizationrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hj~jDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubj )r}r(hjhjZjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X,--disable-optimization; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--disable-optimizationrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjZjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hX Default valuehjjDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rŒjZ)rÌ}rČ(hX1h}rŌ(h]h]h]h]h]uhjh]rƌj)rnj}rȌ(hX``1``hjÌjDjwihjh}rɌ(h]h]h]h]h]ujPNjjih]rʌhX1rˌ}ř(hX1jDNjPNjjihjnjubaubahj]ubahj-ubehj.ubaubjZ)r͌}rΌ(hXyBuild with optimization. This is appropriate for production use, taking more time to build faster libraries and programs.rόhjjDjwihj]h}rЌ(h]h]h]h]h]ujPMjjih]rьhXyBuild with optimization. This is appropriate for production use, taking more time to build faster libraries and programs.rҌrӌ}rԌ(hjόjDNjPNjjihj͌ubaubjZ)rՌ}r֌(hXThe optional *nat* value is the optimisation level. Some compilers support multiple optimisation levels. The range is 0 to 2. Level 0 disables optimization, level 1 is the default. Level 2 is higher optimisation if the compiler supports it. Level 2 is likely to lead to longer compile times and bigger generated code. If you are not planning to run code, turning off optimization will lead to better build times and less code to be rebuilt when a module changes.hjjDjwihj]h}r׌(h]h]h]h]h]ujPMjjih]r،(hX The optional rٌrڌ}rی(hX The optional jDNjPNjjihjՌubj)r܌}r݌(hX*nat*h}rތ(h]h]h]h]h]uhjՌh]rߌhXnatrr}r(hXnathj܌ubahjubhX value is the optimisation level. Some compilers support multiple optimisation levels. The range is 0 to 2. Level 0 disables optimization, level 1 is the default. Level 2 is higher optimisation if the compiler supports it. Level 2 is likely to lead to longer compile times and bigger generated code. If you are not planning to run code, turning off optimization will lead to better build times and less code to be rebuilt when a module changes.rr}r(hX value is the optimisation level. Some compilers support multiple optimisation levels. The range is 0 to 2. Level 0 disables optimization, level 1 is the default. Level 2 is higher optimisation if the compiler supports it. Level 2 is likely to lead to longer compile times and bigger generated code. If you are not planning to run code, turning off optimization will lead to better build times and less code to be rebuilt when a module changes.jDNjPNjjihjՌubeubjZ)r}r(hXGWhen optimizations are enabled, Cabal passes ``-O2`` to the C compiler.hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX-When optimizations are enabled, Cabal passes rr}r(hX-When optimizations are enabled, Cabal passes jDNjPNjjihjubj)r}r(hX``-O2``h}r(h]h]h]h]h]uhjh]rhX-O2rr}r(hX-O2hjubahjubhX to the C compiler.rr}r(hX to the C compiler.jDNjPNjjihjubeubjZ)r}r(hXJWe also accept ``True`` (equivalent to 1) and ``False`` (equivalent to 0).hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hXWe also accept rr}r(hXWe also accept jDNjPNjjihjubj)r}r(hX``True``h}r(h]h]h]h]h]uhjh]rhXTruerr}r(hXTruehjubahjubhX (equivalent to 1) and rr}r(hX (equivalent to 1) and jDNjPNjjihjubj)r}r (hX ``False``h}r (h]h]h]h]h]uhjh]r hXFalser r }r(hXFalsehjubahjubhX (equivalent to 0).rr}r(hX (equivalent to 0).jDNjPNjjihjubeubjZ)r}r(hX Note that as of GHC 8.0, GHC does not recompile when optimization levels change (see :ghc-ticket:`10923`), so if you change the optimization level for a local package you may need to blow away your old build products in order to rebuild with the new optimization level.hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hXUNote that as of GHC 8.0, GHC does not recompile when optimization levels change (see rr}r(hXUNote that as of GHC 8.0, GHC does not recompile when optimization levels change (see jDNjPNjjihjubj!)r}r(hX GHC #10923h}r(UrefuriX,http://ghc.haskell.org/trac/ghc/ticket/10923h]h]h]h]h]Uinternaluhjh]rhX GHC #10923rr}r(hX10923hjubahj%ubhX), so if you change the optimization level for a local package you may need to blow away your old build products in order to rebuild with the new optimization level.r r!}r"(hX), so if you change the optimization level for a local package you may need to blow away your old build products in order to rebuild with the new optimization level.jDNjPNjjihjubeubjZ)r#}r$(hXThe command line variant of this flag is ``-O2`` (with ``-O1`` equivalent to ``-O``). There are also long-form variants ``--enable-optimization`` and ``--disable-optimization``.hjjDjwihj]h}r%(h]h]h]h]h]ujPMjjih]r&(hX)The command line variant of this flag is r'r(}r)(hX)The command line variant of this flag is jDNjPNjjihj#ubj)r*}r+(hX``-O2``h}r,(h]h]h]h]h]uhj#h]r-hX-O2r.r/}r0(hX-O2hj*ubahjubhX (with r1r2}r3(hX (with jDNjPNjjihj#ubj)r4}r5(hX``-O1``h}r6(h]h]h]h]h]uhj#h]r7hX-O1r8r9}r:(hX-O1hj4ubahjubhX equivalent to r;r<}r=(hX equivalent to jDNjPNjjihj#ubj)r>}r?(hX``-O``h}r@(h]h]h]h]h]uhj#h]rAhX-OrBrC}rD(hX-Ohj>ubahjubhX%). There are also long-form variants rErF}rG(hX%). There are also long-form variants jDNjPNjjihj#ubj)rH}rI(hX``--enable-optimization``h}rJ(h]h]h]h]h]uhj#h]rKhX--enable-optimizationrLrM}rN(hX--enable-optimizationhjHubahjubhX and rOrP}rQ(hX and jDNjPNjjihj#ubj)rR}rS(hX``--disable-optimization``h}rT(h]h]h]h]h]uhj#h]rUhX--disable-optimizationrVrW}rX(hX--disable-optimizationhjRubahjubhX.rY}rZ(hX.jDNjPNjjihj#ubeubeubeubj )r[}r\(hUhjsjDjwihjnh}r](h]h]h]h]h]Uentries]ujPNjjih]ubjk)r^}r_(hUhjsjDjwihj h}r`(j j Xcabalh]h]h]h]h]j X cfg-fieldraj jaujPNjjih]rb(j )rc}rd(hX)configure-options: args (space separated)hj^jDjwihj h}re(h]rfjah]h]h]h]j ujPNjjih]rg(j )rh}ri(hUhjcjDjwihjnh}rj(h]h]h]h]h]Uentries]rk(j! X(configure-options ; cabal project optionjUNtrlaujPNjjih]ubj# )rm}rn(hjhjcjDjwihj& h}ro(jjh]h]h]h]h]ujPNjjih]rphXconfigure-optionsrqrr}rs(hUjDNjPNjjihjmubaubj, )rt}ru(hj/ hjcjDjwihj0 h}rv(jjh]h]h]h]h]ujPNjjih]rwhX: rxry}rz(hUjDNjPNjjihjtubaubj6 )r{}r|(hXargs (space separated)hjcjDjwihj9 h}r}(jjh]h]h]h]h]ujPNjjih]r~hXargs (space separated)rr}r(hUjDNjPNjjihj{ubaubeubj )r}r(hX--configure-option=arghj^jDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X(--configure-option; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--configure-optionrr}r(hUjDNjPNjjihjubaubj, )r}r(hX=arghjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX=argrr}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhj^jDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(jZ)r}r(hXA list of extra arguments to pass to the external ``./configure`` script, if one is used. This is only useful for packages which have the ``Configure`` build type. See also the section on `system-dependent parameters `__.hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX2A list of extra arguments to pass to the external rr}r(hX2A list of extra arguments to pass to the external jDNjPNjjihjubj)r}r(hX``./configure``h}r(h]h]h]h]h]uhjh]rhX ./configurerr}r(hX ./configurehjubahjubhXI script, if one is used. This is only useful for packages which have the rr}r(hXI script, if one is used. This is only useful for packages which have the jDNjPNjjihjubj)r}r(hX ``Configure``h}r(h]h]h]h]h]uhjh]rhX Configurerr}r(hX ConfigurehjubahjubhX% build type. See also the section on rr}r(hX% build type. See also the section on jDNjPNjjihjubj!)r}r(hXV`system-dependent parameters `__h}r(UnameXsystem-dependent parametersj] X4developing-packages.html#system-dependent-parametersh]h]h]h]h]uhjh]rhXsystem-dependent parametersrr}r(hXsystem-dependent parametershjubahj%ubhX.r}r(hX.jDNjPNjjihjubeubjZ)r}rÍ(hXThe command line variant of this flag is ``--configure-option=arg``, which can be specified multiple times to pass multiple options.hjjDjwihj]h}rč(h]h]h]h]h]ujPMjjih]rō(hX)The command line variant of this flag is rƍrǍ}rȍ(hX)The command line variant of this flag is jDNjPNjjihjubj)rɍ}rʍ(hX``--configure-option=arg``h}rˍ(h]h]h]h]h]uhjh]r̍hX--configure-option=argr͍r΍}rύ(hX--configure-option=arghjɍubahjubhXA, which can be specified multiple times to pass multiple options.rЍrэ}rҍ(hXA, which can be specified multiple times to pass multiple options.jDNjPNjjihjubeubeubeubj )rӍ}rԍ(hUhjsjDjwihjnh}rՍ(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r֍}r׍(hUhjsjDjwihj h}r؍(j j Xcabalh]h]h]h]h]j X cfg-fieldrٍj jٍujPNjjih]rڍ(j )rۍ}r܍(hX4compiler: ghc, ghcjs, jhc, lhc, uhc or haskell-suitehj֍jDjwihj h}rݍ(h]rލjah]h]h]h]j ujPNjjih]rߍ(j )r}r(hUhjۍjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! Xcompiler ; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjۍjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXcompilerrr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjۍjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hX*ghc, ghcjs, jhc, lhc, uhc or haskell-suitehjۍjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhX*ghc, ghcjs, jhc, lhc, uhc or haskell-suiterr}r(hUjDNjPNjjihjubaubeubj )r}r(hX--compiler=compilerhj֍jDjwihj h}r(h]rjTah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X --compiler; cabal project optionjTUNtraujPNjjih]ubj# )r}r(hjShjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX --compilerrr }r (hUjDNjPNjjihjubaubj, )r }r (hX =compilerhjjDjwihj0 h}r (jjh]h]h]h]h]ujPNjjih]rhX =compilerrr}r(hUjDNjPNjjihj ubaubeubjh)r}r(hUhj֍jDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hX Default valuehjjDjwihj h}r (h]h]h]h]h]ujPKh]r!hX Default valuer"r#}r$(hUhjubaubj)r%}r&(hUh}r'(h]h]h]h]h]uhjh]r(jZ)r)}r*(hXghch}r+(h]h]h]h]h]uhj%h]r,j)r-}r.(hX``ghc``hj)jDjwihjh}r/(h]h]h]h]h]ujPNjjih]r0hXghcr1r2}r3(hXghcjDNjPNjjihj-ubaubahj]ubahj-ubehj.ubaubjZ)r4}r5(hXSpecify which compiler toolchain to be used. This is independent of ``with-compiler``, because the choice of toolchain affects Cabal's build logic.hjjDjwihj]h}r6(h]h]h]h]h]ujPMjjih]r7(hXDSpecify which compiler toolchain to be used. This is independent of r8r9}r:(hXDSpecify which compiler toolchain to be used. This is independent of jDNjPNjjihj4ubj)r;}r<(hX``with-compiler``h}r=(h]h]h]h]h]uhj4h]r>hX with-compilerr?r@}rA(hX with-compilerhj;ubahjubhX@, because the choice of toolchain affects Cabal’s build logic.rBrC}rD(hX>, because the choice of toolchain affects Cabal's build logic.jDNjPNjjihj4ubeubjZ)rE}rF(hX<The command line variant of this flag is ``--compiler=ghc``.hjjDjwihj]h}rG(h]h]h]h]h]ujPMjjih]rH(hX)The command line variant of this flag is rIrJ}rK(hX)The command line variant of this flag is jDNjPNjjihjEubj)rL}rM(hX``--compiler=ghc``h}rN(h]h]h]h]h]uhjEh]rOhX--compiler=ghcrPrQ}rR(hX--compiler=ghchjLubahjubhX.rS}rT(hX.jDNjPNjjihjEubeubeubeubj )rU}rV(hUhjsjDjwihjnh}rW(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rX}rY(hUhjsjDjwihj h}rZ(j j Xcabalh]h]h]h]h]j X cfg-fieldr[j j[ujPNjjih]r\(j )r]}r^(hXtests: booleanhjXjDjwihj h}r_(h]r`jah]h]h]h]j ujPNjjih]ra(j )rb}rc(hUhj]jDjwihjnh}rd(h]h]h]h]h]Uentries]re(j! Xtests ; cabal project optionjUNtrfaujPNjjih]ubj# )rg}rh(hjhj]jDjwihj& h}ri(jjh]h]h]h]h]ujPNjjih]rjhXtestsrkrl}rm(hUjDNjPNjjihjgubaubj, )rn}ro(hj/ hj]jDjwihj0 h}rp(jjh]h]h]h]h]ujPNjjih]rqhX: rrrs}rt(hUjDNjPNjjihjnubaubj6 )ru}rv(hXbooleanhj]jDjwihj9 h}rw(jjh]h]h]h]h]ujPNjjih]rxhXbooleanryrz}r{(hUjDNjPNjjihjuubaubeubj )r|}r}(hjlhjXjDjwihj h}r~(h]rjmah]h]h]h]j ujPNjjih]r(j )r}r(hUhj|jDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X$--enable-tests; cabal project optionjmUNtraujPNjjih]ubj# )r}r(hjlhj|jDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--enable-testsrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hj|jDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubj )r}r(hj:hjXjDjwihj h}r(h]rj;ah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X%--disable-tests; cabal project optionj;UNtraujPNjjih]ubj# )r}r(hj:hjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--disable-testsrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjXjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hX Default valuehjjDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}rŽ(hXFalseh}rÎ(h]h]h]h]h]uhjh]rĎj)rŎ}rƎ(hX ``False``hjjDjwihjh}rǎ(h]h]h]h]h]ujPNjjih]rȎhXFalserɎrʎ}rˎ(hXFalsejDNjPNjjihjŎubaubahj]ubahj-ubehj.ubaubjZ)r̎}r͎(hXForce test suites to be enabled. For most users this should not be needed, as we always attempt to solve for test suite dependencies, even when this value is ``False``; furthermore, test suites are automatically enabled if they are requested as a built target.hjjDjwihj]h}rΎ(h]h]h]h]h]ujPMjjih]rώ(hXForce test suites to be enabled. For most users this should not be needed, as we always attempt to solve for test suite dependencies, even when this value is rЎrю}rҎ(hXForce test suites to be enabled. For most users this should not be needed, as we always attempt to solve for test suite dependencies, even when this value is jDNjPNjjihj̎ubj)rӎ}rԎ(hX ``False``h}rՎ(h]h]h]h]h]uhj̎h]r֎hXFalser׎r؎}rَ(hXFalsehjӎubahjubhX]; furthermore, test suites are automatically enabled if they are requested as a built target.rڎrێ}r܎(hX]; furthermore, test suites are automatically enabled if they are requested as a built target.jDNjPNjjihj̎ubeubjZ)rݎ}rގ(hXTThe command line variant of this flag is ``--enable-tests`` and ``--disable-tests``.hjjDjwihj]h}rߎ(h]h]h]h]h]ujPMjjih]r(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihjݎubj)r}r(hX``--enable-tests``h}r(h]h]h]h]h]uhjݎh]rhX--enable-testsrr}r(hX--enable-testshjubahjubhX and rr}r(hX and jDNjPNjjihjݎubj)r}r(hX``--disable-tests``h}r(h]h]h]h]h]uhjݎh]rhX--disable-testsrr}r(hX--disable-testshjubahjubhX.r}r(hX.jDNjPNjjihjݎubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXbenchmarks: booleanhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X!benchmarks ; cabal project optionjUNtraujPNjjih]ubj# )r }r (hjhjjDjwihj& h}r (jjh]h]h]h]h]ujPNjjih]r hX benchmarksr r}r(hUjDNjPNjjihj ubaubj, )r}r(hj/ hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hXbooleanhjjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhXbooleanrr}r(hUjDNjPNjjihjubaubeubj )r}r(hj8hjjDjwihj h}r (h]r!j9ah]h]h]h]j ujPNjjih]r"(j )r#}r$(hUhjjDjwihjnh}r%(h]h]h]h]h]Uentries]r&(j! X)--enable-benchmarks; cabal project optionj9UNtr'aujPNjjih]ubj# )r(}r)(hj8hjjDjwihj& h}r*(jjh]h]h]h]h]ujPNjjih]r+hX--enable-benchmarksr,r-}r.(hUjDNjPNjjihj(ubaubj, )r/}r0(hU hjjDjwihj0 h}r1(jjh]h]h]h]h]ujPNjjih]r2hX r3}r4(hUjDNjPNjjihj/ubaubeubj )r5}r6(hj6hjjDjwihj h}r7(h]r8j7ah]h]h]h]j ujPNjjih]r9(j )r:}r;(hUhj5jDjwihjnh}r<(h]h]h]h]h]Uentries]r=(j! X*--disable-benchmarks; cabal project optionj7UNtr>aujPNjjih]ubj# )r?}r@(hj6hj5jDjwihj& h}rA(jjh]h]h]h]h]ujPNjjih]rBhX--disable-benchmarksrCrD}rE(hUjDNjPNjjihj?ubaubj, )rF}rG(hU hj5jDjwihj0 h}rH(jjh]h]h]h]h]ujPNjjih]rIhX rJ}rK(hUjDNjPNjjihjFubaubeubjh)rL}rM(hUhjjDjwihjA h}rN(h]h]h]h]h]ujPNjjih]rO(j)rP}rQ(hUhjLjDjwihjh}rR(h]h]h]h]h]ujPNjjih]rSj)rT}rU(hUh}rV(h]h]h]h]h]uhjPh]rW(j )rX}rY(hX Default valuehjTjDjwihj h}rZ(h]h]h]h]h]ujPKh]r[hX Default valuer\r]}r^(hUhjXubaubj)r_}r`(hUh}ra(h]h]h]h]h]uhjTh]rbjZ)rc}rd(hXFalseh}re(h]h]h]h]h]uhj_h]rfj)rg}rh(hX ``False``hjcjDjwihjh}ri(h]h]h]h]h]ujPNjjih]rjhXFalserkrl}rm(hXFalsejDNjPNjjihjgubaubahj]ubahj-ubehj.ubaubjZ)rn}ro(hXForce benchmarks to be enabled. For most users this should not be needed, as we always attempt to solve for benchmark dependencies, even when this value is ``False``; furthermore, benchmarks are automatically enabled if they are requested as a built target.hjLjDjwihj]h}rp(h]h]h]h]h]ujPMjjih]rq(hXForce benchmarks to be enabled. For most users this should not be needed, as we always attempt to solve for benchmark dependencies, even when this value is rrrs}rt(hXForce benchmarks to be enabled. For most users this should not be needed, as we always attempt to solve for benchmark dependencies, even when this value is jDNjPNjjihjnubj)ru}rv(hX ``False``h}rw(h]h]h]h]h]uhjnh]rxhXFalseryrz}r{(hXFalsehjuubahjubhX\; furthermore, benchmarks are automatically enabled if they are requested as a built target.r|r}}r~(hX\; furthermore, benchmarks are automatically enabled if they are requested as a built target.jDNjPNjjihjnubeubjZ)r}r(hX^The command line variant of this flag is ``--enable-benchmarks`` and ``--disable-benchmarks``.hjLjDjwihj]h}r(h]h]h]h]h]ujPM#jjih]r(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihjubj)r}r(hX``--enable-benchmarks``h}r(h]h]h]h]h]uhjh]rhX--enable-benchmarksrr}r(hX--enable-benchmarkshjubahjubhX and rr}r(hX and jDNjPNjjihjubj)r}r(hX``--disable-benchmarks``h}r(h]h]h]h]h]uhjh]rhX--disable-benchmarksrr}r(hX--disable-benchmarkshjubahjubhX.r}r(hX.jDNjPNjjihjubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hX3extra-prog-path: paths (newline or comma separated)hjjDjwihj h}r(h]rj{ah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X&extra-prog-path ; cabal project optionj{UNtraujPNjjih]ubj# )r}r(hjzhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXextra-prog-pathrr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hX"paths (newline or comma separated)hjjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhX"paths (newline or comma separated)rr}r(hUjDNjPNjjihjubaubeubj )r}r(hX--extra-prog-path=PATHhjjDjwihj h}r(h]rÏjzah]h]h]h]j ujPNjjih]rď(j )rŏ}rƏ(hUhjjDjwihjnh}rǏ(h]h]h]h]h]Uentries]rȏ(j! X'--extra-prog-path; cabal project optionjzUNtrɏaujPNjjih]ubj# )rʏ}rˏ(hjyhjjDjwihj& h}ȑ(jjh]h]h]h]h]ujPNjjih]r͏hX--extra-prog-pathrΏrϏ}rЏ(hUjDNjPNjjihjʏubaubj, )rя}rҏ(hX=PATHhjjDjwihj0 h}rӏ(jjh]h]h]h]h]ujPNjjih]rԏhX=PATHrՏr֏}r׏(hUjDNjPNjjihjяubaubeubjh)r؏}rُ(hUhjjDjwihjA h}rڏ(h]h]h]h]h]ujPNjjih]rۏ(j)r܏}rݏ(hUhj؏jDjwihjh}rޏ(h]h]h]h]h]ujPNjjih]rߏj)r}r(hUhj܏jDjwihj.h}r(h]h]h]h]h]ujPNjjih]r(j )r}r(hj+hjjDjwihj h}r(h]h]h]h]h]ujPKh]rhXSincerr}r(hUhjubaubj)r}r(hU Cabal 1.18rh}r(h]h]h]h]h]uhjh]rjZ)r}r(hjh}r(h]h]h]h]h]uhjh]rhX Cabal 1.18rr}r(hUhjubahj]ubahj-ubeubaubjZ)r}r(hXA list of directories to search for extra required programs. Most users should not need this, as programs like ``happy`` and ``alex`` will automatically be installed and added to the path. This can be useful if a ``Custom`` setup script relies on an exotic extra program.hj؏jDjwihj]h}r(h]h]h]h]h]ujPM+jjih]r(hXoA list of directories to search for extra required programs. Most users should not need this, as programs like rr}r(hXoA list of directories to search for extra required programs. Most users should not need this, as programs like jDNjPNjjihjubj)r}r(hX ``happy``h}r(h]h]h]h]h]uhjh]rhXhappyrr}r(hXhappyhjubahjubhX and rr}r(hX and jDNjPNjjihjubj)r}r (hX``alex``h}r (h]h]h]h]h]uhjh]r hXalexr r }r(hXalexhjubahjubhXP will automatically be installed and added to the path. This can be useful if a rr}r(hXP will automatically be installed and added to the path. This can be useful if a jDNjPNjjihjubj)r}r(hX ``Custom``h}r(h]h]h]h]h]uhjh]rhXCustomrr}r(hXCustomhjubahjubhX0 setup script relies on an exotic extra program.rr}r(hX0 setup script relies on an exotic extra program.jDNjPNjjihjubeubjZ)r}r(hXkThe command line variant of this flag is ``--extra-prog-path=PATH``, which can be specified multiple times.hj؏jDjwihj]h}r(h]h]h]h]h]ujPM1jjih]r(hX)The command line variant of this flag is r r!}r"(hX)The command line variant of this flag is jDNjPNjjihjubj)r#}r$(hX``--extra-prog-path=PATH``h}r%(h]h]h]h]h]uhjh]r&hX--extra-prog-path=PATHr'r(}r)(hX--extra-prog-path=PATHhj#ubahjubhX(, which can be specified multiple times.r*r+}r,(hX(, which can be specified multiple times.jDNjPNjjihjubeubeubeubj )r-}r.(hUhjsjDjwihjnh}r/(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r0}r1(hUhjsjDjwihj h}r2(j j Xcabalh]h]h]h]h]j X cfg-fieldr3j j3ujPNjjih]r4(j )r5}r6(hXrun-tests: booleanhj0jDjwihj h}r7(h]r8jah]h]h]h]j ujPNjjih]r9(j )r:}r;(hUhj5jDjwihjnh}r<(h]h]h]h]h]Uentries]r=(j! X run-tests ; cabal project optionjUNtr>aujPNjjih]ubj# )r?}r@(hjhj5jDjwihj& h}rA(jjh]h]h]h]h]ujPNjjih]rBhX run-testsrCrD}rE(hUjDNjPNjjihj?ubaubj, )rF}rG(hj/ hj5jDjwihj0 h}rH(jjh]h]h]h]h]ujPNjjih]rIhX: rJrK}rL(hUjDNjPNjjihjFubaubj6 )rM}rN(hXbooleanhj5jDjwihj9 h}rO(jjh]h]h]h]h]ujPNjjih]rPhXbooleanrQrR}rS(hUjDNjPNjjihjMubaubeubj )rT}rU(hjhj0jDjwihj h}rV(h]rWjah]h]h]h]j ujPNjjih]rX(j )rY}rZ(hUhjTjDjwihjnh}r[(h]h]h]h]h]Uentries]r\(j! X!--run-tests; cabal project optionjUNtr]aujPNjjih]ubj# )r^}r_(hjhjTjDjwihj& h}r`(jjh]h]h]h]h]ujPNjjih]rahX --run-testsrbrc}rd(hUjDNjPNjjihj^ubaubj, )re}rf(hU hjTjDjwihj0 h}rg(jjh]h]h]h]h]ujPNjjih]rhhX ri}rj(hUjDNjPNjjihjeubaubeubjh)rk}rl(hUhj0jDjwihjA h}rm(h]h]h]h]h]ujPNjjih]rn(j)ro}rp(hUhjkjDjwihjh}rq(h]h]h]h]h]ujPNjjih]rrj)rs}rt(hUh}ru(h]h]h]h]h]uhjoh]rv(j )rw}rx(hX Default valuehjsjDjwihj h}ry(h]h]h]h]h]ujPKh]rzhX Default valuer{r|}r}(hUhjwubaubj)r~}r(hUh}r(h]h]h]h]h]uhjsh]rjZ)r}r(hXFalseh}r(h]h]h]h]h]uhj~h]rj)r}r(hX ``False``hjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rhXFalserr}r(hXFalsejDNjPNjjihjubaubahj]ubahj-ubehj.ubaubjZ)r}r(hXRun the package test suite upon installation. This is useful for saying "When this package is installed, check that the test suite passes, terminating the rest of the build if it is broken."rhjkjDjwihj]h}r(h]h]h]h]h]ujPM:jjih]rhXRun the package test suite upon installation. This is useful for saying “When this package is installed, check that the test suite passes, terminating the rest of the build if it is broken.”rr}r(hjjDNjPNjjihjubaubj*)r}r(hXOne deficiency: the :cfg-field:`run-tests` setting of a package is NOT recorded as part of the hash, so if you install something without :cfg-field:`run-tests` and then turn on ``run-tests``, we won't subsequently test the package. If this is causing you problems, give us a shout.hjkjDjwihj*h}r(h]h]h]h]h]ujPNjjih]rjZ)r}r(hXOne deficiency: the :cfg-field:`run-tests` setting of a package is NOT recorded as part of the hash, so if you install something without :cfg-field:`run-tests` and then turn on ``run-tests``, we won't subsequently test the package. If this is causing you problems, give us a shout.hjjDjwihj]h}r(h]h]h]h]h]ujPM@h]r(hXOne deficiency: the rr}r(hXOne deficiency: the hjubjM)r}r(hX:cfg-field:`run-tests`hjjDjwihjPh}r(UreftypeX cfg-fieldjRjSX run-testsrU refdomainXcabalrh]h]U refexplicith]h]h]jVhjnNujPM@h]rj)r}r(hjh}r(h]h]r(j]jXcabal-cfg-fieldreh]h]h]uhjh]rhX run-testsrr}r(hUhjubahjubaubhX_ setting of a package is NOT recorded as part of the hash, so if you install something without rr}r(hX_ setting of a package is NOT recorded as part of the hash, so if you install something without hjubjM)r}r(hX:cfg-field:`run-tests`hjjDjwihjPh}r(UreftypeX cfg-fieldjRjSX run-testsrU refdomainXcabalrh]h]U refexplicith]h]h]jVhjnNujPM@h]rj)r}r(hjh}r(h]h]r(j]jXcabal-cfg-fieldreh]h]h]uhjh]rhX run-testsrr}r(hUhjubahjubaubhX and then turn on rr}rÐ(hX and then turn on hjubj)rĐ}rŐ(hX ``run-tests``h}rƐ(h]h]h]h]h]uhjh]rǐhX run-testsrȐrɐ}rʐ(hX run-testshjĐubahjubhX], we won’t subsequently test the package. If this is causing you problems, give us a shout.rːr̐}r͐(hX[, we won't subsequently test the package. If this is causing you problems, give us a shout.hjubeubaubjZ)rΐ}rϐ(hX9The command line variant of this flag is ``--run-tests``.hjkjDjwihj]h}rА(h]h]h]h]h]ujPMFjjih]rѐ(hX)The command line variant of this flag is rҐrӐ}rԐ(hX)The command line variant of this flag is jDNjPNjjihjΐubj)rՐ}r֐(hX``--run-tests``h}rא(h]h]h]h]h]uhjΐh]rؐhX --run-testsrِrڐ}rې(hX --run-testshjՐubahjubhX.rܐ}rݐ(hX.jDNjPNjjihjΐubeubeubeubj )rސ}rߐ(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXdebug-info: integerhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X!debug-info ; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX debug-inforr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hXintegerhjjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhXintegerrr}r(hUjDNjPNjjihjubaubeubj )r}r(hX--enable-debug-info=hjjDjwihj h}r(h]rj0ah]h]h]h]j ujPNjjih]r (j )r }r (hUhjjDjwihjnh}r (h]h]h]h]h]Uentries]r (j! X)--enable-debug-info; cabal project optionj0UNtraujPNjjih]ubj# )r}r(hj/hjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--enable-debug-inforr}r(hUjDNjPNjjihjubaubj, )r}r(hX=⟨n⟩hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX=⟨n⟩rr}r(hUjDNjPNjjihjubaubeubj )r}r(hjihjjDjwihj h}r(h]r jjah]h]h]h]j ujPNjjih]r!(j )r"}r#(hUhjjDjwihjnh}r$(h]h]h]h]h]Uentries]r%(j! X*--disable-debug-info; cabal project optionjjUNtr&aujPNjjih]ubj# )r'}r((hjihjjDjwihj& h}r)(jjh]h]h]h]h]ujPNjjih]r*hX--disable-debug-infor+r,}r-(hUjDNjPNjjihj'ubaubj, )r.}r/(hU hjjDjwihj0 h}r0(jjh]h]h]h]h]ujPNjjih]r1hX r2}r3(hUjDNjPNjjihj.ubaubeubjh)r4}r5(hUhjjDjwihjA h}r6(h]h]h]h]h]ujPNjjih]r7(j)r8}r9(hUhj4jDjwihjh}r:(h]h]h]h]h]ujPNjjih]r;(j)r<}r=(hUhj8jDjwihj.h}r>(h]h]h]h]h]ujPNjjih]r?(j )r@}rA(hj+hj<jDjwihj h}rB(h]h]h]h]h]ujPKh]rChXSincerDrE}rF(hUhj@ubaubj)rG}rH(hU Cabal 1.22rIh}rJ(h]h]h]h]h]uhj<h]rKjZ)rL}rM(hjIh}rN(h]h]h]h]h]uhjGh]rOhX Cabal 1.22rPrQ}rR(hUhjLubahj]ubahj-ubeubj)rS}rT(hUh}rU(h]h]h]h]h]uhj8h]rV(j )rW}rX(hX Default valuehjSjDjwihj h}rY(h]h]h]h]h]ujPKh]rZhX Default valuer[r\}r](hUhjWubaubj)r^}r_(hUh}r`(h]h]h]h]h]uhjSh]rajZ)rb}rc(hXFalseh}rd(h]h]h]h]h]uhj^h]rehXFalserfrg}rh(hXFalsejDNjPNjjihjbubahj]ubahj-ubehj.ubeubjZ)ri}rj(hXIf the compiler (e.g., GHC 7.10 and later) supports outputing OS native debug info (e.g., DWARF), setting ``debug-info: True`` will instruct it to do so. See the GHC wiki page on :ghc-wiki:`DWARF` for more information about this feature.hj4jDjwihj]h}rk(h]h]h]h]h]ujPMSjjih]rl(hXjIf the compiler (e.g., GHC 7.10 and later) supports outputing OS native debug info (e.g., DWARF), setting rmrn}ro(hXjIf the compiler (e.g., GHC 7.10 and later) supports outputing OS native debug info (e.g., DWARF), setting jDNjPNjjihjiubj)rp}rq(hX``debug-info: True``h}rr(h]h]h]h]h]uhjih]rshXdebug-info: Truertru}rv(hXdebug-info: TruehjpubahjubhX5 will instruct it to do so. See the GHC wiki page on rwrx}ry(hX5 will instruct it to do so. See the GHC wiki page on jDNjPNjjihjiubj!)rz}r{(hXDWARFr|h}r}(UrefuriX*http://ghc.haskell.org/trac/ghc/wiki/DWARFh]h]h]h]h]Uinternaluhjih]r~hXDWARFrr}r(hj|hjzubahj%ubhX) for more information about this feature.rr}r(hX) for more information about this feature.jDNjPNjjihjiubeubjZ)r}r(hXT(This field also accepts numeric syntax, but until GHC 8.2 this didn't do anything.)rhj4jDjwihj]h}r(h]h]h]h]h]ujPMXjjih]rhXV(This field also accepts numeric syntax, but until GHC 8.2 this didn’t do anything.)rr}r(hjjDNjPNjjihjubaubjZ)r}r(hX^The command line variant of this flag is ``--enable-debug-info`` and ``--disable-debug-info``.hj4jDjwihj]h}r(h]h]h]h]h]ujPM[jjih]r(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihjubj)r}r(hX``--enable-debug-info``h}r(h]h]h]h]h]uhjh]rhX--enable-debug-inforr}r(hX--enable-debug-infohjubahjubhX and rr}r(hX and jDNjPNjjihjubj)r}r(hX``--disable-debug-info``h}r(h]h]h]h]h]uhjh]rhX--disable-debug-inforr}r(hX--disable-debug-infohjubahjubhX.r}r(hX.jDNjPNjjihjubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXsplit-sections: booleanhjjDjwihj h}r(h]rjeah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X%split-sections ; cabal project optionjeUNtraujPNjjih]ubj# )r}r(hjdhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXsplit-sectionsrr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjjDjwihj0 h}r‘(jjh]h]h]h]h]ujPNjjih]rÑhX: rđrő}rƑ(hUjDNjPNjjihjubaubj6 )rǑ}rȑ(hXbooleanhjjDjwihj9 h}rɑ(jjh]h]h]h]h]ujPNjjih]rʑhXbooleanrˑȓ}r͑(hUjDNjPNjjihjǑubaubeubj )rΑ}rϑ(hjhjjDjwihj h}rБ(h]rёjah]h]h]h]j ujPNjjih]rґ(j )rӑ}rԑ(hUhjΑjDjwihjnh}rՑ(h]h]h]h]h]Uentries]r֑(j! X---enable-split-sections; cabal project optionjUNtrבaujPNjjih]ubj# )rؑ}rّ(hjhjΑjDjwihj& h}rڑ(jjh]h]h]h]h]ujPNjjih]rۑhX--enable-split-sectionsrܑrݑ}rޑ(hUjDNjPNjjihjؑubaubj, )rߑ}r(hU hjΑjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjߑubaubeubj )r}r(hjhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X.--disable-split-sections; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--disable-split-sectionsrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihj.h}r(h]h]h]h]h]ujPNjjih]r(j )r}r (hj+hjjDjwihj h}r (h]h]h]h]h]ujPKh]r hXSincer r }r(hUhjubaubj)r}r(hU Cabal 2.2rh}r(h]h]h]h]h]uhjh]rjZ)r}r(hjh}r(h]h]h]h]h]uhjh]rhX Cabal 2.2rr}r(hUhjubahj]ubahj-ubeubj)r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r (hX Default valuehjjDjwihj h}r!(h]h]h]h]h]ujPKh]r"hX Default valuer#r$}r%(hUhjubaubj)r&}r'(hUh}r((h]h]h]h]h]uhjh]r)jZ)r*}r+(hXFalseh}r,(h]h]h]h]h]uhj&h]r-hXFalser.r/}r0(hXFalsejDNjPNjjihj*ubahj]ubahj-ubehj.ubeubjZ)r1}r2(hX3Use the GHC ``-split-sections`` feature when building the library. This reduces the final size of the executables that use the library by allowing them to link with only the bits that they use rather than the entire library. The downside is that building the library takes longer and uses a bit more memory.hjjDjwihj]h}r3(h]h]h]h]h]ujPMfjjih]r4(hX Use the GHC r5r6}r7(hX Use the GHC jDNjPNjjihj1ubj)r8}r9(hX``-split-sections``h}r:(h]h]h]h]h]uhj1h]r;hX-split-sectionsr<r=}r>(hX-split-sectionshj8ubahjubhX feature when building the library. This reduces the final size of the executables that use the library by allowing them to link with only the bits that they use rather than the entire library. The downside is that building the library takes longer and uses a bit more memory.r?r@}rA(hX feature when building the library. This reduces the final size of the executables that use the library by allowing them to link with only the bits that they use rather than the entire library. The downside is that building the library takes longer and uses a bit more memory.jDNjPNjjihj1ubeubjZ)rB}rC(hX/This feature is supported by GHC 8.0 and later.rDhjjDjwihj]h}rE(h]h]h]h]h]ujPMljjih]rFhX/This feature is supported by GHC 8.0 and later.rGrH}rI(hjDjDNjPNjjihjBubaubjZ)rJ}rK(hXfThe command line variant of this flag is ``--enable-split-sections`` and ``--disable-split-sections``.hjjDjwihj]h}rL(h]h]h]h]h]ujPMnjjih]rM(hX)The command line variant of this flag is rNrO}rP(hX)The command line variant of this flag is jDNjPNjjihjJubj)rQ}rR(hX``--enable-split-sections``h}rS(h]h]h]h]h]uhjJh]rThX--enable-split-sectionsrUrV}rW(hX--enable-split-sectionshjQubahjubhX and rXrY}rZ(hX and jDNjPNjjihjJubj)r[}r\(hX``--disable-split-sections``h}r](h]h]h]h]h]uhjJh]r^hX--disable-split-sectionsr_r`}ra(hX--disable-split-sectionshj[ubahjubhX.rb}rc(hX.jDNjPNjjihjJubeubeubeubj )rd}re(hUhjsjDjwihjnh}rf(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rg}rh(hUhjsjDjwihj h}ri(j j Xcabalh]h]h]h]h]j X cfg-fieldrjj jjujPNjjih]rk(j )rl}rm(hXsplit-objs: booleanhjgjDjwihj h}rn(h]rojah]h]h]h]j ujPNjjih]rp(j )rq}rr(hUhjljDjwihjnh}rs(h]h]h]h]h]Uentries]rt(j! X!split-objs ; cabal project optionjUNtruaujPNjjih]ubj# )rv}rw(hjhjljDjwihj& h}rx(jjh]h]h]h]h]ujPNjjih]ryhX split-objsrzr{}r|(hUjDNjPNjjihjvubaubj, )r}}r~(hj/ hjljDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihj}ubaubj6 )r}r(hXbooleanhjljDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhXbooleanrr}r(hUjDNjPNjjihjubaubeubj )r}r(hjhjgjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X)--enable-split-objs; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--enable-split-objsrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubj )r}r(hjhjgjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X*--disable-split-objs; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--disable-split-objsrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjgjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r’(hUh}rÒ(h]h]h]h]h]uhjh]rĒ(j )rŒ}rƒ(hX Default valuehjjDjwihj h}rǒ(h]h]h]h]h]ujPKh]rȒhX Default valuerɒrʒ}r˒(hUhjŒubaubj)r̒}r͒(hUh}rΒ(h]h]h]h]h]uhjh]rϒjZ)rВ}rђ(hXFalseh}rҒ(h]h]h]h]h]uhj̒h]rӒhXFalserԒrՒ}r֒(hXFalsejDNjPNjjihjВubahj]ubahj-ubehj.ubaubjZ)rג}rؒ(hX6Use the GHC ``-split-objs`` feature when building the library. This reduces the final size of the executables that use the library by allowing them to link with only the bits that they use rather than the entire library. The downside is that building the library takes longer and uses considerably more memory.hjjDjwihj]h}rْ(h]h]h]h]h]ujPMxjjih]rڒ(hX Use the GHC rےrܒ}rݒ(hX Use the GHC jDNjPNjjihjגubj)rޒ}rߒ(hX``-split-objs``h}r(h]h]h]h]h]uhjגh]rhX -split-objsrr}r(hX -split-objshjޒubahjubhX feature when building the library. This reduces the final size of the executables that use the library by allowing them to link with only the bits that they use rather than the entire library. The downside is that building the library takes longer and uses considerably more memory.rr}r(hX feature when building the library. This reduces the final size of the executables that use the library by allowing them to link with only the bits that they use rather than the entire library. The downside is that building the library takes longer and uses considerably more memory.jDNjPNjjihjגubeubjZ)r}r(hXcIt is generally recommend that you use ``split-sections`` instead of ``split-objs`` where possible.hjjDjwihj]h}r(h]h]h]h]h]ujPM~jjih]r(hX'It is generally recommend that you use rr}r(hX'It is generally recommend that you use jDNjPNjjihjubj)r}r(hX``split-sections``h}r(h]h]h]h]h]uhjh]rhXsplit-sectionsrr}r(hXsplit-sectionshjubahjubhX instead of rr}r(hX instead of jDNjPNjjihjubj)r}r(hX``split-objs``h}r(h]h]h]h]h]uhjh]rhX split-objsrr}r(hX split-objshjubahjubhX where possible.rr}r(hX where possible.jDNjPNjjihjubeubjZ)r}r(hX^The command line variant of this flag is ``--enable-split-objs`` and ``--disable-split-objs``.hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX)The command line variant of this flag is rr}r (hX)The command line variant of this flag is jDNjPNjjihjubj)r }r (hX``--enable-split-objs``h}r (h]h]h]h]h]uhjh]r hX--enable-split-objsrr}r(hX--enable-split-objshj ubahjubhX and rr}r(hX and jDNjPNjjihjubj)r}r(hX``--disable-split-objs``h}r(h]h]h]h]h]uhjh]rhX--disable-split-objsrr}r(hX--disable-split-objshjubahjubhX.r}r(hX.jDNjPNjjihjubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r }r!(hUhjsjDjwihj h}r"(j j Xcabalh]h]h]h]h]j X cfg-fieldr#j j#ujPNjjih]r$(j )r%}r&(hXexecutable-stripping: booleanhj jDjwihj h}r'(h]r(jah]h]h]h]j ujPNjjih]r)(j )r*}r+(hUhj%jDjwihjnh}r,(h]h]h]h]h]Uentries]r-(j! X+executable-stripping ; cabal project optionjUNtr.aujPNjjih]ubj# )r/}r0(hjhj%jDjwihj& h}r1(jjh]h]h]h]h]ujPNjjih]r2hXexecutable-strippingr3r4}r5(hUjDNjPNjjihj/ubaubj, )r6}r7(hj/ hj%jDjwihj0 h}r8(jjh]h]h]h]h]ujPNjjih]r9hX: r:r;}r<(hUjDNjPNjjihj6ubaubj6 )r=}r>(hXbooleanhj%jDjwihj9 h}r?(jjh]h]h]h]h]ujPNjjih]r@hXbooleanrArB}rC(hUjDNjPNjjihj=ubaubeubj )rD}rE(hjhj jDjwihj h}rF(h]rGjah]h]h]h]j ujPNjjih]rH(j )rI}rJ(hUhjDjDjwihjnh}rK(h]h]h]h]h]Uentries]rL(j! X3--enable-executable-stripping; cabal project optionjUNtrMaujPNjjih]ubj# )rN}rO(hjhjDjDjwihj& h}rP(jjh]h]h]h]h]ujPNjjih]rQhX--enable-executable-strippingrRrS}rT(hUjDNjPNjjihjNubaubj, )rU}rV(hU hjDjDjwihj0 h}rW(jjh]h]h]h]h]ujPNjjih]rXhX rY}rZ(hUjDNjPNjjihjUubaubeubj )r[}r\(hjShj jDjwihj h}r](h]r^jTah]h]h]h]j ujPNjjih]r_(j )r`}ra(hUhj[jDjwihjnh}rb(h]h]h]h]h]Uentries]rc(j! X4--disable-executable-stripping; cabal project optionjTUNtrdaujPNjjih]ubj# )re}rf(hjShj[jDjwihj& h}rg(jjh]h]h]h]h]ujPNjjih]rhhX--disable-executable-strippingrirj}rk(hUjDNjPNjjihjeubaubj, )rl}rm(hU hj[jDjwihj0 h}rn(jjh]h]h]h]h]ujPNjjih]rohX rp}rq(hUjDNjPNjjihjlubaubeubjh)rr}rs(hUhj jDjwihjA h}rt(h]h]h]h]h]ujPNjjih]ru(j)rv}rw(hUhjrjDjwihjh}rx(h]h]h]h]h]ujPNjjih]ryj)rz}r{(hUh}r|(h]h]h]h]h]uhjvh]r}(j )r~}r(hX Default valuehjzjDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhj~ubaubj)r}r(hUh}r(h]h]h]h]h]uhjzh]rjZ)r}r(hXTrueh}r(h]h]h]h]h]uhjh]rhXTruerr}r(hXTruejDNjPNjjihjubahj]ubahj-ubehj.ubaubjZ)r}r(hXWhen installing binary executable programs, run the ``strip`` program on the binary. This can considerably reduce the size of the executable binary file. It does this by removing debugging information and symbols.hjrjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX4When installing binary executable programs, run the rr}r(hX4When installing binary executable programs, run the jDNjPNjjihjubj)r}r(hX ``strip``h}r(h]h]h]h]h]uhjh]rhXstriprr}r(hXstriphjubahjubhX program on the binary. This can considerably reduce the size of the executable binary file. It does this by removing debugging information and symbols.rr}r(hX program on the binary. This can considerably reduce the size of the executable binary file. It does this by removing debugging information and symbols.jDNjPNjjihjubeubjZ)r}r(hXmNot all Haskell implementations generate native binaries. For such implementations this option has no effect.rhjrjDjwihj]h}r(h]h]h]h]h]ujPMjjih]rhXmNot all Haskell implementations generate native binaries. For such implementations this option has no effect.rr}r(hjjDNjPNjjihjubaubjZ)r}r(hXIf ``debug-info`` is set explicitly then ``executable-stripping`` is set to ``False`` as otherwise all the debug symbols will be stripped.hjrjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hXIf rr}r(hXIf jDNjPNjjihjubj)r}r(hX``debug-info``h}r(h]h]h]h]h]uhjh]rhX debug-inforr}r(hX debug-infohjubahjubhX is set explicitly then rr}r(hX is set explicitly then jDNjPNjjihjubj)r}r(hX``executable-stripping``h}r(h]h]h]h]h]uhjh]rhXexecutable-strippingrr}r(hXexecutable-strippinghjubahjubhX is set to rr“}rÓ(hX is set to jDNjPNjjihjubj)rē}rœ(hX ``False``h}rƓ(h]h]h]h]h]uhjh]rǓhXFalserȓrɓ}rʓ(hXFalsehjēubahjubhX5 as otherwise all the debug symbols will be stripped.r˓r̓}r͓(hX5 as otherwise all the debug symbols will be stripped.jDNjPNjjihjubeubjZ)rΓ}rϓ(hXrThe command line variant of this flag is ``--enable-executable-stripping`` and ``--disable-executable-stripping``.hjrjDjwihj]h}rГ(h]h]h]h]h]ujPMjjih]rѓ(hX)The command line variant of this flag is rғrӓ}rԓ(hX)The command line variant of this flag is jDNjPNjjihjΓubj)rՓ}r֓(hX!``--enable-executable-stripping``h}rד(h]h]h]h]h]uhjΓh]rؓhX--enable-executable-strippingrٓrړ}rۓ(hX--enable-executable-strippinghjՓubahjubhX and rܓrݓ}rޓ(hX and jDNjPNjjihjΓubj)rߓ}r(hX"``--disable-executable-stripping``h}r(h]h]h]h]h]uhjΓh]rhX--disable-executable-strippingrr}r(hX--disable-executable-strippinghjߓubahjubhX.r}r(hX.jDNjPNjjihjΓubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXlibrary-stripping: booleanhjjDjwihj h}r(h]rj0ah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X(library-stripping ; cabal project optionj0UNtraujPNjjih]ubj# )r}r(hj/hjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXlibrary-strippingrr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r (hXbooleanhjjDjwihj9 h}r (jjh]h]h]h]h]ujPNjjih]r hXbooleanr r }r(hUjDNjPNjjihjubaubeubj )r}r(hjZhjjDjwihj h}r(h]rj[ah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X0--enable-library-stripping; cabal project optionj[UNtraujPNjjih]ubj# )r}r(hjZhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--enable-library-strippingrr}r(hUjDNjPNjjihjubaubj, )r }r!(hU hjjDjwihj0 h}r"(jjh]h]h]h]h]ujPNjjih]r#hX r$}r%(hUjDNjPNjjihj ubaubeubj )r&}r'(hjhjjDjwihj h}r((h]r)jah]h]h]h]j ujPNjjih]r*(j )r+}r,(hUhj&jDjwihjnh}r-(h]h]h]h]h]Uentries]r.(j! X1--disable-library-stripping; cabal project optionjUNtr/aujPNjjih]ubj# )r0}r1(hjhj&jDjwihj& h}r2(jjh]h]h]h]h]ujPNjjih]r3hX--disable-library-strippingr4r5}r6(hUjDNjPNjjihj0ubaubj, )r7}r8(hU hj&jDjwihj0 h}r9(jjh]h]h]h]h]ujPNjjih]r:hX r;}r<(hUjDNjPNjjihj7ubaubeubjh)r=}r>(hUhjjDjwihjA h}r?(h]h]h]h]h]ujPNjjih]r@(j)rA}rB(hUhj=jDjwihjh}rC(h]h]h]h]h]ujPNjjih]rDj)rE}rF(hUhjAjDjwihj.h}rG(h]h]h]h]h]ujPNjjih]rH(j )rI}rJ(hj+hjEjDjwihj h}rK(h]h]h]h]h]ujPKh]rLhXSincerMrN}rO(hUhjIubaubj)rP}rQ(hU Cabal 1.20rRh}rS(h]h]h]h]h]uhjEh]rTjZ)rU}rV(hjRh}rW(h]h]h]h]h]uhjPh]rXhX Cabal 1.20rYrZ}r[(hUhjUubahj]ubahj-ubeubaubjZ)r\}r](hXWhen installing binary libraries, run the ``strip`` program on the binary, saving space on the file system. See also ``executable-stripping``.hj=jDjwihj]h}r^(h]h]h]h]h]ujPMjjih]r_(hX*When installing binary libraries, run the r`ra}rb(hX*When installing binary libraries, run the jDNjPNjjihj\ubj)rc}rd(hX ``strip``h}re(h]h]h]h]h]uhj\h]rfhXstriprgrh}ri(hXstriphjcubahjubhXB program on the binary, saving space on the file system. See also rjrk}rl(hXB program on the binary, saving space on the file system. See also jDNjPNjjihj\ubj)rm}rn(hX``executable-stripping``h}ro(h]h]h]h]h]uhj\h]rphXexecutable-strippingrqrr}rs(hXexecutable-strippinghjmubahjubhX.rt}ru(hX.jDNjPNjjihj\ubeubjZ)rv}rw(hXIf ``debug-info`` is set explicitly then ``library-stripping`` is set to ``False`` as otherwise all the debug symbols will be stripped.hj=jDjwihj]h}rx(h]h]h]h]h]ujPMjjih]ry(hXIf rzr{}r|(hXIf jDNjPNjjihjvubj)r}}r~(hX``debug-info``h}r(h]h]h]h]h]uhjvh]rhX debug-inforr}r(hX debug-infohj}ubahjubhX is set explicitly then rr}r(hX is set explicitly then jDNjPNjjihjvubj)r}r(hX``library-stripping``h}r(h]h]h]h]h]uhjvh]rhXlibrary-strippingrr}r(hXlibrary-strippinghjubahjubhX is set to rr}r(hX is set to jDNjPNjjihjvubj)r}r(hX ``False``h}r(h]h]h]h]h]uhjvh]rhXFalserr}r(hXFalsehjubahjubhX5 as otherwise all the debug symbols will be stripped.rr}r(hX5 as otherwise all the debug symbols will be stripped.jDNjPNjjihjvubeubjZ)r}r(hXlThe command line variant of this flag is ``--enable-library-stripping`` and ``--disable-library-stripping``.hj=jDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihjubj)r}r(hX``--enable-library-stripping``h}r(h]h]h]h]h]uhjh]rhX--enable-library-strippingrr}r(hX--enable-library-strippinghjubahjubhX and rr}r(hX and jDNjPNjjihjubj)r}r(hX``--disable-library-stripping``h}r(h]h]h]h]h]uhjh]rhX--disable-library-strippingrr}r(hX--disable-library-strippinghjubahjubhX.r}r(hX.jDNjPNjjihjubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXprogram-prefix: prefixhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r”}rÔ(hUhjjDjwihjnh}rĔ(h]h]h]h]h]Uentries]rŔ(j! X%program-prefix ; cabal project optionjUNtrƔaujPNjjih]ubj# )rǔ}rȔ(hjhjjDjwihj& h}rɔ(jjh]h]h]h]h]ujPNjjih]rʔhXprogram-prefixr˔r̔}r͔(hUjDNjPNjjihjǔubaubj, )rΔ}rϔ(hj/ hjjDjwihj0 h}rД(jjh]h]h]h]h]ujPNjjih]rєhX: rҔrӔ}rԔ(hUjDNjPNjjihjΔubaubj6 )rՔ}r֔(hXprefixhjjDjwihj9 h}rה(jjh]h]h]h]h]ujPNjjih]rؔhXprefixrٔrڔ}r۔(hUjDNjPNjjihjՔubaubeubj )rܔ}rݔ(hX--program-prefix=prefixhjjDjwihj h}rޔ(h]rߔjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjܔjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X&--program-prefix; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjܔjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--program-prefixrr}r(hUjDNjPNjjihjubaubj, )r}r(hX=prefixhjܔjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX=prefixrr}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(jZ)r}r(hX[STRIKEOUT:Prepend *prefix* to installed program names.] (Currently implemented in a silly and not useful way. If you need this to work give us a shout.)hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX[STRIKEOUT:Prepend rr}r(hX[STRIKEOUT:Prepend jDNjPNjjihjubj)r}r(hX*prefix*h}r(h]h]h]h]h]uhjh]rhXprefixrr}r(hXprefixhjubahjubhX~ to installed program names.] (Currently implemented in a silly and not useful way. If you need this to work give us a shout.)rr}r(hX~ to installed program names.] (Currently implemented in a silly and not useful way. If you need this to work give us a shout.)jDNjPNjjihjubeubjZ)r }r (hX*prefix* may contain the following path variables: ``$pkgid``, ``$pkg``, ``$version``, ``$compiler``, ``$os``, ``$arch``, ``$abi``, ``$abitag``hjjDjwihj]h}r (h]h]h]h]h]ujPMjjih]r (j)r }r(hX*prefix*h}r(h]h]h]h]h]uhj h]rhXprefixrr}r(hXprefixhj ubahjubhX+ may contain the following path variables: rr}r(hX+ may contain the following path variables: jDNjPNjjihj ubj)r}r(hX ``$pkgid``h}r(h]h]h]h]h]uhj h]rhX$pkgidrr}r(hX$pkgidhjubahjubhX, rr}r (hX, r!jDNjPNjjihj ubj)r"}r#(hX``$pkg``h}r$(h]h]h]h]h]uhj h]r%hX$pkgr&r'}r((hX$pkghj"ubahjubhX, r)r*}r+(hX, r,jDNjPNjjihj ubj)r-}r.(hX ``$version``h}r/(h]h]h]h]h]uhj h]r0hX$versionr1r2}r3(hX$versionhj-ubahjubhX, r4r5}r6(hX, hj ubj)r7}r8(hX ``$compiler``h}r9(h]h]h]h]h]uhj h]r:hX $compilerr;r<}r=(hX $compilerhj7ubahjubhX, r>r?}r@(hX, hj ubj)rA}rB(hX``$os``h}rC(h]h]h]h]h]uhj h]rDhX$osrErF}rG(hX$oshjAubahjubhX, rHrI}rJ(hX, hj ubj)rK}rL(hX ``$arch``h}rM(h]h]h]h]h]uhj h]rNhX$archrOrP}rQ(hX$archhjKubahjubhX, rRrS}rT(hj,hj ubj)rU}rV(hX``$abi``h}rW(h]h]h]h]h]uhj h]rXhX$abirYrZ}r[(hX$abihjUubahjubhX, r\r]}r^(hj!hj ubj)r_}r`(hX ``$abitag``h}ra(h]h]h]h]h]uhj h]rbhX$abitagrcrd}re(hX$abitaghj_ubahjubeubjZ)rf}rg(hXCThe command line variant of this flag is ``--program-prefix=foo-``.hjjDjwihj]h}rh(h]h]h]h]h]ujPMjjih]ri(hX)The command line variant of this flag is rjrk}rl(hX)The command line variant of this flag is jDNjPNjjihjfubj)rm}rn(hX``--program-prefix=foo-``h}ro(h]h]h]h]h]uhjfh]rphX--program-prefix=foo-rqrr}rs(hX--program-prefix=foo-hjmubahjubhX.rt}ru(hX.jDNjPNjjihjfubeubeubeubj )rv}rw(hUhjsjDjwihjnh}rx(h]h]h]h]h]Uentries]ujPNjjih]ubjk)ry}rz(hUhjsjDjwihj h}r{(j j Xcabalh]h]h]h]h]j X cfg-fieldr|j j|ujPNjjih]r}(j )r~}r(hXprogram-suffix: suffixhjyjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhj~jDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X%program-suffix ; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhj~jDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXprogram-suffixrr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hj~jDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hXsuffixhj~jDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhXsuffixrr}r(hUjDNjPNjjihjubaubeubj )r}r(hX--program-suffix=suffixhjyjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X&--program-suffix; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--program-suffixrr}r(hUjDNjPNjjihjubaubj, )r}r(hX=suffixhjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX=suffixrr}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjyjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(jZ)r}r(hX[STRIKEOUT:Append *suffix* to installed program names.] (Currently implemented in a silly and not useful way. If you need this to work give us a shout.)hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX[STRIKEOUT:Append rr}r(hX[STRIKEOUT:Append jDNjPNjjihjubj)r}r(hX*suffix*h}r•(h]h]h]h]h]uhjh]rÕhXsuffixrĕrŕ}rƕ(hXsuffixhjubahjubhX~ to installed program names.] (Currently implemented in a silly and not useful way. If you need this to work give us a shout.)rǕrȕ}rɕ(hX~ to installed program names.] (Currently implemented in a silly and not useful way. If you need this to work give us a shout.)jDNjPNjjihjubeubjZ)rʕ}r˕(hXThe most obvious use for this is to append the program's version number to make it possible to install several versions of a program at once: ``program-suffix: $version``.hjjDjwihj]h}r̕(h]h]h]h]h]ujPMjjih]r͕(hXThe most obvious use for this is to append the program’s version number to make it possible to install several versions of a program at once: rΕrϕ}rЕ(hXThe most obvious use for this is to append the program's version number to make it possible to install several versions of a program at once: jDNjPNjjihjʕubj)rѕ}rҕ(hX``program-suffix: $version``h}rӕ(h]h]h]h]h]uhjʕh]rԕhXprogram-suffix: $versionrՕr֕}rו(hXprogram-suffix: $versionhjѕubahjubhX.rؕ}rٕ(hX.jDNjPNjjihjʕubeubjZ)rڕ}rە(hX*suffix* may contain the following path variables: ``$pkgid``, ``$pkg``, ``$version``, ``$compiler``, ``$os``, ``$arch``, ``$abi``, ``$abitag``hjjDjwihj]h}rܕ(h]h]h]h]h]ujPMjjih]rݕ(j)rޕ}rߕ(hX*suffix*h}r(h]h]h]h]h]uhjڕh]rhXsuffixrr}r(hXsuffixhjޕubahjubhX+ may contain the following path variables: rr}r(hX+ may contain the following path variables: jDNjPNjjihjڕubj)r}r(hX ``$pkgid``h}r(h]h]h]h]h]uhjڕh]rhX$pkgidrr}r(hX$pkgidhjubahjubhX, rr}r(hX, rjDNjPNjjihjڕubj)r}r(hX``$pkg``h}r(h]h]h]h]h]uhjڕh]rhX$pkgrr}r(hX$pkghjubahjubhX, rr}r(hX, rjDNjPNjjihjڕubj)r}r(hX ``$version``h}r(h]h]h]h]h]uhjڕh]rhX$versionrr}r(hX$versionhjubahjubhX, rr}r(hX, hjڕubj)r}r (hX ``$compiler``h}r (h]h]h]h]h]uhjڕh]r hX $compilerr r }r(hX $compilerhjubahjubhX, rr}r(hX, hjڕubj)r}r(hX``$os``h}r(h]h]h]h]h]uhjڕh]rhX$osrr}r(hX$oshjubahjubhX, rr}r(hX, hjڕubj)r}r(hX ``$arch``h}r(h]h]h]h]h]uhjڕh]rhX$archr r!}r"(hX$archhjubahjubhX, r#r$}r%(hjhjڕubj)r&}r'(hX``$abi``h}r((h]h]h]h]h]uhjڕh]r)hX$abir*r+}r,(hX$abihj&ubahjubhX, r-r.}r/(hjhjڕubj)r0}r1(hX ``$abitag``h}r2(h]h]h]h]h]uhjڕh]r3hX$abitagr4r5}r6(hX$abitaghj0ubahjubeubjZ)r7}r8(hXIThe command line variant of this flag is ``--program-suffix='$version'``.hjjDjwihj]h}r9(h]h]h]h]h]ujPMjjih]r:(hX)The command line variant of this flag is r;r<}r=(hX)The command line variant of this flag is jDNjPNjjihj7ubj)r>}r?(hX``--program-suffix='$version'``h}r@(h]h]h]h]h]uhj7h]rAhX--program-suffix='$version'rBrC}rD(hX--program-suffix='$version'hj>ubahjubhX.rE}rF(hX.jDNjPNjjihj7ubeubeubeubj )rG}rH(hUhjsjDjwihjnh}rI(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rJ}rK(hUhjsjDjwihj h}rL(j j Xcabalh]h]h]h]h]j X cfg-fieldrMj jMujPNjjih]rN(j )rO}rP(hXshared: booleanhjJjDjwihj h}rQ(h]rRjah]h]h]h]j ujPNjjih]rS(j )rT}rU(hUhjOjDjwihjnh}rV(h]h]h]h]h]Uentries]rW(j! Xshared ; cabal project optionjUNtrXaujPNjjih]ubj# )rY}rZ(hjhjOjDjwihj& h}r[(jjh]h]h]h]h]ujPNjjih]r\hXsharedr]r^}r_(hUjDNjPNjjihjYubaubj, )r`}ra(hj/ hjOjDjwihj0 h}rb(jjh]h]h]h]h]ujPNjjih]rchX: rdre}rf(hUjDNjPNjjihj`ubaubj6 )rg}rh(hXbooleanhjOjDjwihj9 h}ri(jjh]h]h]h]h]ujPNjjih]rjhXbooleanrkrl}rm(hUjDNjPNjjihjgubaubeubj )rn}ro(hjhjJjDjwihj h}rp(h]rqjah]h]h]h]j ujPNjjih]rr(j )rs}rt(hUhjnjDjwihjnh}ru(h]h]h]h]h]Uentries]rv(j! X%--enable-shared; cabal project optionjUNtrwaujPNjjih]ubj# )rx}ry(hjhjnjDjwihj& h}rz(jjh]h]h]h]h]ujPNjjih]r{hX--enable-sharedr|r}}r~(hUjDNjPNjjihjxubaubj, )r}r(hU hjnjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubj )r}r(hjhjJjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X&--disable-shared; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--disable-sharedrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjJjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hX Default valuehjjDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hXFalseh}r(h]h]h]h]h]uhjh]rhXFalserr}r(hXFalsejDNjPNjjihjubahj]ubahj-ubehj.ubaubjZ)r}r(hXBuild shared library. This implies a separate compiler run to generate position independent code as required on most platforms.rhjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]rhXBuild shared library. This implies a separate compiler run to generate position independent code as required on most platforms.rr}r(hjjDNjPNjjihjubaubjZ)r–}rÖ(hXVThe command line variant of this flag is ``--enable-shared`` and ``--disable-shared``.hjjDjwihj]h}rĖ(h]h]h]h]h]ujPMjjih]rŖ(hX)The command line variant of this flag is rƖrǖ}rȖ(hX)The command line variant of this flag is jDNjPNjjihj–ubj)rɖ}rʖ(hX``--enable-shared``h}r˖(h]h]h]h]h]uhj–h]r̖hX--enable-sharedr͖rΖ}rϖ(hX--enable-sharedhjɖubahjubhX and rЖrі}rҖ(hX and jDNjPNjjihj–ubj)rӖ}rԖ(hX``--disable-shared``h}rՖ(h]h]h]h]h]uhj–h]r֖hX--disable-sharedrזrؖ}rٖ(hX--disable-sharedhjӖubahjubhX.rږ}rۖ(hX.jDNjPNjjihj–ubeubeubeubj )rܖ}rݖ(hUhjsjDjwihjnh}rޖ(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rߖ}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXexecutable-dynamic: booleanhjߖjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X)executable-dynamic ; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXexecutable-dynamicrr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hXbooleanhjjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhXbooleanrr}r(hUjDNjPNjjihjubaubeubj )r}r(hjhjߖjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r (hUhjjDjwihjnh}r (h]h]h]h]h]Uentries]r (j! X1--enable-executable-dynamic; cabal project optionjUNtr aujPNjjih]ubj# )r }r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--enable-executable-dynamicrr}r(hUjDNjPNjjihj ubaubj, )r}r(hU hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubj )r}r(hjqhjߖjDjwihj h}r(h]rjrah]h]h]h]j ujPNjjih]r(j )r}r (hUhjjDjwihjnh}r!(h]h]h]h]h]Uentries]r"(j! X2--disable-executable-dynamic; cabal project optionjrUNtr#aujPNjjih]ubj# )r$}r%(hjqhjjDjwihj& h}r&(jjh]h]h]h]h]ujPNjjih]r'hX--disable-executable-dynamicr(r)}r*(hUjDNjPNjjihj$ubaubj, )r+}r,(hU hjjDjwihj0 h}r-(jjh]h]h]h]h]ujPNjjih]r.hX r/}r0(hUjDNjPNjjihj+ubaubeubjh)r1}r2(hUhjߖjDjwihjA h}r3(h]h]h]h]h]ujPNjjih]r4(j)r5}r6(hUhj1jDjwihjh}r7(h]h]h]h]h]ujPNjjih]r8j)r9}r:(hUh}r;(h]h]h]h]h]uhj5h]r<(j )r=}r>(hX Default valuehj9jDjwihj h}r?(h]h]h]h]h]ujPKh]r@hX Default valuerArB}rC(hUhj=ubaubj)rD}rE(hUh}rF(h]h]h]h]h]uhj9h]rGjZ)rH}rI(hXFalseh}rJ(h]h]h]h]h]uhjDh]rKhXFalserLrM}rN(hXFalsejDNjPNjjihjHubahj]ubahj-ubehj.ubaubjZ)rO}rP(hXLink executables dynamically. The executable's library dependencies should be built as shared objects. This implies ``shared: True`` unless ``shared: False`` is explicitly specified.hj1jDjwihj]h}rQ(h]h]h]h]h]ujPMjjih]rR(hXvLink executables dynamically. The executable’s library dependencies should be built as shared objects. This implies rSrT}rU(hXtLink executables dynamically. The executable's library dependencies should be built as shared objects. This implies jDNjPNjjihjOubj)rV}rW(hX``shared: True``h}rX(h]h]h]h]h]uhjOh]rYhX shared: TruerZr[}r\(hX shared: TruehjVubahjubhX unless r]r^}r_(hX unless jDNjPNjjihjOubj)r`}ra(hX``shared: False``h}rb(h]h]h]h]h]uhjOh]rchX shared: Falserdre}rf(hX shared: Falsehj`ubahjubhX is explicitly specified.rgrh}ri(hX is explicitly specified.jDNjPNjjihjOubeubjZ)rj}rk(hXnThe command line variant of this flag is ``--enable-executable-dynamic`` and ``--disable-executable-dynamic``.hj1jDjwihj]h}rl(h]h]h]h]h]ujPMjjih]rm(hX)The command line variant of this flag is rnro}rp(hX)The command line variant of this flag is jDNjPNjjihjjubj)rq}rr(hX``--enable-executable-dynamic``h}rs(h]h]h]h]h]uhjjh]rthX--enable-executable-dynamicrurv}rw(hX--enable-executable-dynamichjqubahjubhX and rxry}rz(hX and jDNjPNjjihjjubj)r{}r|(hX ``--disable-executable-dynamic``h}r}(h]h]h]h]h]uhjjh]r~hX--disable-executable-dynamicrr}r(hX--disable-executable-dynamichj{ubahjubhX.r}r(hX.jDNjPNjjihjjubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXlibrary-for-ghci: booleanhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X'library-for-ghci ; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXlibrary-for-ghcirr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hXbooleanhjjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhXbooleanrr}r(hUjDNjPNjjihjubaubeubj )r}r(hj1hjjDjwihj h}r(h]rj2ah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X/--enable-library-for-ghci; cabal project optionj2UNtraujPNjjih]ubj# )r}r(hj1hjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--enable-library-for-ghcirr}r(hUjDNjPNjjihjubaubj, )r}r(hU hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubj )r—}r×(hjChjjDjwihj h}rė(h]rŗjDah]h]h]h]j ujPNjjih]rƗ(j )rǗ}rȗ(hUhj—jDjwihjnh}rɗ(h]h]h]h]h]Uentries]rʗ(j! X0--disable-library-for-ghci; cabal project optionjDUNtr˗aujPNjjih]ubj# )r̗}r͗(hjChj—jDjwihj& h}rΗ(jjh]h]h]h]h]ujPNjjih]rϗhX--disable-library-for-ghcirЗrї}rҗ(hUjDNjPNjjihj̗ubaubj, )rӗ}rԗ(hU hj—jDjwihj0 h}r՗(jjh]h]h]h]h]ujPNjjih]r֗hX rח}rؗ(hUjDNjPNjjihjӗubaubeubjh)rٗ}rڗ(hUhjjDjwihjA h}rۗ(h]h]h]h]h]ujPNjjih]rܗ(j)rݗ}rޗ(hUhjٗjDjwihjh}rߗ(h]h]h]h]h]ujPNjjih]rj)r}r(hUh}r(h]h]h]h]h]uhjݗh]r(j )r}r(hX Default valuehjjDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hXTrueh}r(h]h]h]h]h]uhjh]rhXTruerr}r(hXTruejDNjPNjjihjubahj]ubahj-ubehj.ubaubjZ)r}r(hX`Build libraries suitable for use with GHCi. This involves an extra linking step after the build.rhjٗjDjwihj]h}r(h]h]h]h]h]ujPMjjih]rhX`Build libraries suitable for use with GHCi. This involves an extra linking step after the build.rr}r(hjjDNjPNjjihjubaubjZ)r}r(hXNot all platforms support GHCi and indeed on some platforms, trying to build GHCi libs fails. In such cases, consider setting ``library-for-ghci: False``.hjٗjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX~Not all platforms support GHCi and indeed on some platforms, trying to build GHCi libs fails. In such cases, consider setting rr}r(hX~Not all platforms support GHCi and indeed on some platforms, trying to build GHCi libs fails. In such cases, consider setting jDNjPNjjihjubj)r}r(hX``library-for-ghci: False``h}r(h]h]h]h]h]uhjh]r hXlibrary-for-ghci: Falser r }r (hXlibrary-for-ghci: FalsehjubahjubhX.r }r(hX.jDNjPNjjihjubeubjZ)r}r(hXjThe command line variant of this flag is ``--enable-library-for-ghci`` and ``--disable-library-for-ghci``.hjٗjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihjubj)r}r(hX``--enable-library-for-ghci``h}r(h]h]h]h]h]uhjh]rhX--enable-library-for-ghcirr}r(hX--enable-library-for-ghcihjubahjubhX and rr}r(hX and jDNjPNjjihjubj)r }r!(hX``--disable-library-for-ghci``h}r"(h]h]h]h]h]uhjh]r#hX--disable-library-for-ghcir$r%}r&(hX--disable-library-for-ghcihj ubahjubhX.r'}r((hX.jDNjPNjjihjubeubeubeubj )r)}r*(hUhjsjDjwihjnh}r+(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r,}r-(hUhjsjDjwihj h}r.(j j Xcabalh]h]h]h]h]j X cfg-fieldr/j j/ujPNjjih]r0(j )r1}r2(hX relocatable:hj,jDjwihj h}r3(h]r4jyah]h]h]h]j ujPNjjih]r5(j )r6}r7(hUhj1jDjwihjnh}r8(h]h]h]h]h]Uentries]r9(j! X"relocatable ; cabal project optionjyUNtr:aujPNjjih]ubj# )r;}r<(hjxhj1jDjwihj& h}r=(jjh]h]h]h]h]ujPNjjih]r>hX relocatabler?r@}rA(hUjDNjPNjjihj;ubaubj, )rB}rC(hj/ hj1jDjwihj0 h}rD(jjh]h]h]h]h]ujPNjjih]rEhX: rFrG}rH(hUjDNjPNjjihjBubaubj6 )rI}rJ(hUhj1jDjwihj9 h}rK(jjh]h]h]h]h]ujPNjjih]ubeubj )rL}rM(hjhj,jDjwihj h}rN(h]rOjah]h]h]h]j ujPNjjih]rP(j )rQ}rR(hUhjLjDjwihjnh}rS(h]h]h]h]h]Uentries]rT(j! X#--relocatable; cabal project optionjUNtrUaujPNjjih]ubj# )rV}rW(hjhjLjDjwihj& h}rX(jjh]h]h]h]h]ujPNjjih]rYhX --relocatablerZr[}r\(hUjDNjPNjjihjVubaubj, )r]}r^(hU hjLjDjwihj0 h}r_(jjh]h]h]h]h]ujPNjjih]r`hX ra}rb(hUjDNjPNjjihj]ubaubeubjh)rc}rd(hUhj,jDjwihjA h}re(h]h]h]h]h]ujPNjjih]rf(j)rg}rh(hUhjcjDjwihjh}ri(h]h]h]h]h]ujPNjjih]rj(j)rk}rl(hUhjgjDjwihj.h}rm(h]h]h]h]h]ujPNjjih]rn(j )ro}rp(hj+hjkjDjwihj h}rq(h]h]h]h]h]ujPKh]rrhXSincersrt}ru(hUhjoubaubj)rv}rw(hU Cabal 1.22rxh}ry(h]h]h]h]h]uhjkh]rzjZ)r{}r|(hjxh}r}(h]h]h]h]h]uhjvh]r~hX Cabal 1.22rr}r(hUhj{ubahj]ubahj-ubeubj)r}r(hUh}r(h]h]h]h]h]uhjgh]r(j )r}r(hX Default valuehjjDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hXFalseh}r(h]h]h]h]h]uhjh]rhXFalserr}r(hXFalsejDNjPNjjihjubahj]ubahj-ubehj.ubeubjZ)r}r(hXy[STRIKEOUT:Build a package which is relocatable.] (TODO: It is not clear what this actually does, or if it works at all.)rhjcjDjwihj]h}r(h]h]h]h]h]ujPMjjih]rhXy[STRIKEOUT:Build a package which is relocatable.] (TODO: It is not clear what this actually does, or if it works at all.)rr}r(hjjDNjPNjjihjubaubjZ)r}r(hX;The command line variant of this flag is ``--relocatable``.hjcjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihjubj)r}r(hX``--relocatable``h}r(h]h]h]h]h]uhjh]rhX --relocatablerr}r(hX --relocatablehjubahjubhX.r}r(hX.jDNjPNjjihjubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXstatic: booleanhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! Xstatic ; cabal project optionjUNtraujPNjjih]ubj# )r˜}rØ(hjhjjDjwihj& h}rĘ(jjh]h]h]h]h]ujPNjjih]rŘhXstaticrƘrǘ}rȘ(hUjDNjPNjjihj˜ubaubj, )rɘ}rʘ(hj/ hjjDjwihj0 h}r˘(jjh]h]h]h]h]ujPNjjih]r̘hX: r͘rΘ}rϘ(hUjDNjPNjjihjɘubaubj6 )rИ}rј(hXbooleanhjjDjwihj9 h}rҘ(jjh]h]h]h]h]ujPNjjih]rӘhXbooleanrԘr՘}r֘(hUjDNjPNjjihjИubaubeubj )rט}rؘ(hj\hjjDjwihj h}r٘(h]rژj]ah]h]h]h]j ujPNjjih]rۘ(j )rܘ}rݘ(hUhjטjDjwihjnh}rޘ(h]h]h]h]h]Uentries]rߘ(j! X%--enable-static; cabal project optionj]UNtraujPNjjih]ubj# )r}r(hj\hjטjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--enable-staticrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hjטjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubj )r}r(hjhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X&--disable-static; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--disable-staticrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r }r (hUhjjDjwihjh}r (h]h]h]h]h]ujPNjjih]r j)r }r(hUh}r(h]h]h]h]h]uhj h]r(j )r}r(hX Default valuehj jDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r(hUh}r(h]h]h]h]h]uhj h]rjZ)r}r(hXFalseh}r(h]h]h]h]h]uhjh]rhXFalser r!}r"(hXFalsejDNjPNjjihjubahj]ubahj-ubehj.ubaubjZ)r#}r$(hXRoll this and all dependent libraries into a combined ``.a`` archive. This uses GHCs ``-staticlib`` flag, which is available for iOS and with GHC 8.4 and later for other platforms as well.hjjDjwihj]h}r%(h]h]h]h]h]ujPMjjih]r&(hX6Roll this and all dependent libraries into a combined r'r(}r)(hX6Roll this and all dependent libraries into a combined jDNjPNjjihj#ubj)r*}r+(hX``.a``h}r,(h]h]h]h]h]uhj#h]r-hX.ar.r/}r0(hX.ahj*ubahjubhX archive. This uses GHCs r1r2}r3(hX archive. This uses GHCs jDNjPNjjihj#ubj)r4}r5(hX``-staticlib``h}r6(h]h]h]h]h]uhj#h]r7hX -staticlibr8r9}r:(hX -staticlibhj4ubahjubhXY flag, which is available for iOS and with GHC 8.4 and later for other platforms as well.r;r<}r=(hXY flag, which is available for iOS and with GHC 8.4 and later for other platforms as well.jDNjPNjjihj#ubeubeubeubj )r>}r?(hUhjsjDjwihjnh}r@(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rA}rB(hUhjsjDjwihj h}rC(j j Xcabalh]h]h]h]h]j X cfg-fieldrDj jDujPNjjih]rE(j )rF}rG(hXexecutable-static: booleanhjAjDjwihj h}rH(h]rIj2ah]h]h]h]j ujPNjjih]rJ(j )rK}rL(hUhjFjDjwihjnh}rM(h]h]h]h]h]Uentries]rN(j! X(executable-static ; cabal project optionj2UNtrOaujPNjjih]ubj# )rP}rQ(hj1hjFjDjwihj& h}rR(jjh]h]h]h]h]ujPNjjih]rShXexecutable-staticrTrU}rV(hUjDNjPNjjihjPubaubj, )rW}rX(hj/ hjFjDjwihj0 h}rY(jjh]h]h]h]h]ujPNjjih]rZhX: r[r\}r](hUjDNjPNjjihjWubaubj6 )r^}r_(hXbooleanhjFjDjwihj9 h}r`(jjh]h]h]h]h]ujPNjjih]rahXbooleanrbrc}rd(hUjDNjPNjjihj^ubaubeubj )re}rf(hjhjAjDjwihj h}rg(h]rhjah]h]h]h]j ujPNjjih]ri(j )rj}rk(hUhjejDjwihjnh}rl(h]h]h]h]h]Uentries]rm(j! X0--enable-executable-static; cabal project optionjUNtrnaujPNjjih]ubj# )ro}rp(hjhjejDjwihj& h}rq(jjh]h]h]h]h]ujPNjjih]rrhX--enable-executable-staticrsrt}ru(hUjDNjPNjjihjoubaubj, )rv}rw(hU hjejDjwihj0 h}rx(jjh]h]h]h]h]ujPNjjih]ryhX rz}r{(hUjDNjPNjjihjvubaubeubj )r|}r}(hjhjAjDjwihj h}r~(h]rj ah]h]h]h]j ujPNjjih]r(j )r}r(hUhj|jDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X1--disable-executable-static; cabal project optionj UNtraujPNjjih]ubj# )r}r(hjhj|jDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--disable-executable-staticrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hj|jDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjAjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hX Default valuehjjDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hXFalseh}r(h]h]h]h]h]uhjh]rhXFalserr}r(hXFalsejDNjPNjjihjubahj]ubahj-ubehj.ubaubjZ)r}r(hXBuild fully static executables. This link all dependent libraries into executables statically, including libc. This passes ``-static`` and ``-optl=-static`` to GHC.hjjDjwihj]h}r(h]h]h]h]h]ujPM!jjih]r(hX{Build fully static executables. This link all dependent libraries into executables statically, including libc. This passes rr}r(hX{Build fully static executables. This link all dependent libraries into executables statically, including libc. This passes jDNjPNjjihjubj)r}r(hX ``-static``h}r(h]h]h]h]h]uhjh]rhX-staticrr}r(hX-statichjubahjubhX and rr}r(hX and jDNjPNjjihjubj)r™}rÙ(hX``-optl=-static``h}rę(h]h]h]h]h]uhjh]rřhX -optl=-staticrƙrǙ}rș(hX -optl=-statichj™ubahjubhX to GHC.rərʙ}r˙(hX to GHC.jDNjPNjjihjubeubeubeubj )r̙}r͙(hUhjsjDjwihjnh}rΙ(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rϙ}rЙ(hUhjsjDjwihj h}rљ(j j Xcabalh]h]h]h]h]j X cfg-fieldrҙj jҙujPNjjih]rә(j )rԙ}rՙ(hXAextra-include-dirs: directories (comma or newline separated list)hjϙjDjwihj h}r֙(h]rיjah]h]h]h]j ujPNjjih]rؙ(j )rٙ}rڙ(hUhjԙjDjwihjnh}rۙ(h]h]h]h]h]Uentries]rܙ(j! X)extra-include-dirs ; cabal project optionjUNtrݙaujPNjjih]ubj# )rޙ}rߙ(hjhjԙjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXextra-include-dirsrr}r(hUjDNjPNjjihjޙubaubj, )r}r(hj/ hjԙjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hX-directories (comma or newline separated list)hjԙjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhX-directories (comma or newline separated list)rr}r(hUjDNjPNjjihjubaubeubj )r}r(hX--extra-include-dirs=DIRhjϙjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X*--extra-include-dirs; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--extra-include-dirsrr}r(hUjDNjPNjjihjubaubj, )r}r(hX=DIRhjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX=DIRrr }r (hUjDNjPNjjihjubaubeubjh)r }r (hUhjϙjDjwihjA h}r (h]h]h]h]h]ujPNjjih]r(jZ)r}r(hXsAn extra directory to search for C header files. You can use this flag multiple times to get a list of directories.rhj jDjwihj]h}r(h]h]h]h]h]ujPM-jjih]rhXsAn extra directory to search for C header files. You can use this flag multiple times to get a list of directories.rr}r(hjjDNjPNjjihjubaubjZ)r}r(hXYYou might need to use this flag if you have standard system header files in a non-standard location that is not mentioned in the package's ``.cabal`` file. Using this option has the same affect as appending the directory *dir* to the :pkg-field:`include-dirs` field in each library and executable in the package's ``.cabal`` file. The advantage of course is that you do not have to modify the package at all. These extra directories will be used while building the package and for libraries it is also saved in the package registration information and used when compiling modules that use the library.hj jDjwihj]h}r(h]h]h]h]h]ujPM0jjih]r(hXYou might need to use this flag if you have standard system header files in a non-standard location that is not mentioned in the package’s rr}r(hXYou might need to use this flag if you have standard system header files in a non-standard location that is not mentioned in the package's jDNjPNjjihjubj)r}r(hX ``.cabal``h}r (h]h]h]h]h]uhjh]r!hX.cabalr"r#}r$(hX.cabalhjubahjubhXH file. Using this option has the same affect as appending the directory r%r&}r'(hXH file. Using this option has the same affect as appending the directory jDNjPNjjihjubj)r(}r)(hX*dir*h}r*(h]h]h]h]h]uhjh]r+hXdirr,r-}r.(hXdirhj(ubahjubhX to the r/r0}r1(hX to the jDNjPNjjihjubjM)r2}r3(hX:pkg-field:`include-dirs`hjjDjwihjPh}r4(UreftypeX pkg-fieldjRjSX include-dirsr5U refdomainXcabalr6h]h]U refexplicith]h]h]jVhjlNujPM0h]r7j)r8}r9(hj5h}r:(h]h]r;(j]j6Xcabal-pkg-fieldr<eh]h]h]uhj2h]r=hX include-dirsr>r?}r@(hUhj8ubahjubaubhX9 field in each library and executable in the package’s rArB}rC(hX7 field in each library and executable in the package's jDNjPNjjihjubj)rD}rE(hX ``.cabal``h}rF(h]h]h]h]h]uhjh]rGhX.cabalrHrI}rJ(hX.cabalhjDubahjubhX file. The advantage of course is that you do not have to modify the package at all. These extra directories will be used while building the package and for libraries it is also saved in the package registration information and used when compiling modules that use the library.rKrL}rM(hX file. The advantage of course is that you do not have to modify the package at all. These extra directories will be used while building the package and for libraries it is also saved in the package registration information and used when compiling modules that use the library.jDNjPNjjihjubeubjZ)rN}rO(hXmThe command line variant of this flag is ``--extra-include-dirs=DIR``, which can be specified multiple times.hj jDjwihj]h}rP(h]h]h]h]h]ujPM:jjih]rQ(hX)The command line variant of this flag is rRrS}rT(hX)The command line variant of this flag is jDNjPNjjihjNubj)rU}rV(hX``--extra-include-dirs=DIR``h}rW(h]h]h]h]h]uhjNh]rXhX--extra-include-dirs=DIRrYrZ}r[(hX--extra-include-dirs=DIRhjUubahjubhX(, which can be specified multiple times.r\r]}r^(hX(, which can be specified multiple times.jDNjPNjjihjNubeubeubeubj )r_}r`(hUhjsjDjwihjnh}ra(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rb}rc(hUhjsjDjwihj h}rd(j j Xcabalh]h]h]h]h]j X cfg-fieldrej jeujPNjjih]rf(j )rg}rh(hX=extra-lib-dirs: directories (comma or newline separated list)hjbjDjwihj h}ri(h]rjj}ah]h]h]h]j ujPNjjih]rk(j )rl}rm(hUhjgjDjwihjnh}rn(h]h]h]h]h]Uentries]ro(j! X%extra-lib-dirs ; cabal project optionj}UNtrpaujPNjjih]ubj# )rq}rr(hj|hjgjDjwihj& h}rs(jjh]h]h]h]h]ujPNjjih]rthXextra-lib-dirsrurv}rw(hUjDNjPNjjihjqubaubj, )rx}ry(hj/ hjgjDjwihj0 h}rz(jjh]h]h]h]h]ujPNjjih]r{hX: r|r}}r~(hUjDNjPNjjihjxubaubj6 )r}r(hX-directories (comma or newline separated list)hjgjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhX-directories (comma or newline separated list)rr}r(hUjDNjPNjjihjubaubeubj )r}r(hX--extra-lib-dirs=DIRhjbjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X&--extra-lib-dirs; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--extra-lib-dirsrr}r(hUjDNjPNjjihjubaubj, )r}r(hX=DIRhjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX=DIRrr}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjbjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(jZ)r}r(hX8An extra directory to search for system libraries files.rhjjDjwihj]h}r(h]h]h]h]h]ujPMAjjih]rhX8An extra directory to search for system libraries files.rr}r(hjjDNjPNjjihjubaubjZ)r}r(hXiThe command line variant of this flag is ``--extra-lib-dirs=DIR``, which can be specified multiple times.hjjDjwihj]h}r(h]h]h]h]h]ujPMCjjih]r(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihjubj)r}r(hX``--extra-lib-dirs=DIR``h}r(h]h]h]h]h]uhjh]rhX--extra-lib-dirs=DIRrr}r(hX--extra-lib-dirs=DIRhjubahjubhX(, which can be specified multiple times.rr}r(hX(, which can be specified multiple times.jDNjPNjjihjubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]rš(j )rÚ}rĚ(hXCextra-framework-dirs: directories (comma or newline separated list)hjjDjwihj h}rŚ(h]rƚjah]h]h]h]j ujPNjjih]rǚ(j )rȚ}rɚ(hUhjÚjDjwihjnh}rʚ(h]h]h]h]h]Uentries]r˚(j! X+extra-framework-dirs ; cabal project optionjUNtr̚aujPNjjih]ubj# )r͚}rΚ(hjhjÚjDjwihj& h}rϚ(jjh]h]h]h]h]ujPNjjih]rКhXextra-framework-dirsrњrҚ}rӚ(hUjDNjPNjjihj͚ubaubj, )rԚ}r՚(hj/ hjÚjDjwihj0 h}r֚(jjh]h]h]h]h]ujPNjjih]rךhX: rؚrٚ}rښ(hUjDNjPNjjihjԚubaubj6 )rۚ}rܚ(hX-directories (comma or newline separated list)hjÚjDjwihj9 h}rݚ(jjh]h]h]h]h]ujPNjjih]rޚhX-directories (comma or newline separated list)rߚr}r(hUjDNjPNjjihjۚubaubeubj )r}r(hX--extra-framework-dirs=DIRhjjDjwihj h}r(h]rjoah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X,--extra-framework-dirs; cabal project optionjoUNtraujPNjjih]ubj# )r}r(hjnhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--extra-framework-dirsrr}r(hUjDNjPNjjihjubaubj, )r}r(hX=DIRhjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX=DIRrr}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(jZ)r}r(hX8An extra directory to search for frameworks (OS X only).rhjjDjwihj]h}r(h]h]h]h]h]ujPMJjjih]rhX8An extra directory to search for frameworks (OS X only).rr}r(hjjDNjPNjjihjubaubjZ)r}r(hXXYou might need to use this flag if you have standard system libraries in a non-standard location that is not mentioned in the package's ``.cabal`` file. Using this option has the same affect as appending the directory *dir* to the :cfg-field:`extra-lib-dirs` field in each library and executable in the package's ``.cabal`` file. The advantage of course is that you do not have to modify the package at all. These extra directories will be used while building the package and for libraries it is also saved in the package registration information and used when compiling modules that use the library.hjjDjwihj]h}r(h]h]h]h]h]ujPMLjjih]r (hXYou might need to use this flag if you have standard system libraries in a non-standard location that is not mentioned in the package’s r r }r (hXYou might need to use this flag if you have standard system libraries in a non-standard location that is not mentioned in the package's jDNjPNjjihjubj)r }r(hX ``.cabal``h}r(h]h]h]h]h]uhjh]rhX.cabalrr}r(hX.cabalhj ubahjubhXH file. Using this option has the same affect as appending the directory rr}r(hXH file. Using this option has the same affect as appending the directory jDNjPNjjihjubj)r}r(hX*dir*h}r(h]h]h]h]h]uhjh]rhXdirrr}r(hXdirhjubahjubhX to the rr}r (hX to the jDNjPNjjihjubjM)r!}r"(hX:cfg-field:`extra-lib-dirs`hjjDjwihjPh}r#(UreftypeX cfg-fieldjRjSXextra-lib-dirsr$U refdomainXcabalr%h]h]U refexplicith]h]h]jVhjnNujPMLh]r&j)r'}r((hj$h}r)(h]h]r*(j]j%Xcabal-cfg-fieldr+eh]h]h]uhj!h]r,hXextra-lib-dirsr-r.}r/(hUhj'ubahjubaubhX9 field in each library and executable in the package’s r0r1}r2(hX7 field in each library and executable in the package's jDNjPNjjihjubj)r3}r4(hX ``.cabal``h}r5(h]h]h]h]h]uhjh]r6hX.cabalr7r8}r9(hX.cabalhj3ubahjubhX file. The advantage of course is that you do not have to modify the package at all. These extra directories will be used while building the package and for libraries it is also saved in the package registration information and used when compiling modules that use the library.r:r;}r<(hX file. The advantage of course is that you do not have to modify the package at all. These extra directories will be used while building the package and for libraries it is also saved in the package registration information and used when compiling modules that use the library.jDNjPNjjihjubeubjZ)r=}r>(hXoThe command line variant of this flag is ``--extra-framework-dirs=DIR``, which can be specified multiple times.hjjDjwihj]h}r?(h]h]h]h]h]ujPMVjjih]r@(hX)The command line variant of this flag is rArB}rC(hX)The command line variant of this flag is jDNjPNjjihj=ubj)rD}rE(hX``--extra-framework-dirs=DIR``h}rF(h]h]h]h]h]uhj=h]rGhX--extra-framework-dirs=DIRrHrI}rJ(hX--extra-framework-dirs=DIRhjDubahjubhX(, which can be specified multiple times.rKrL}rM(hX(, which can be specified multiple times.jDNjPNjjihj=ubeubeubeubj )rN}rO(hUhjsjDjwihjnh}rP(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rQ}rR(hUhjsjDjwihj h}rS(j j Xcabalh]h]h]h]h]j X cfg-fieldrTj jTujPNjjih]rU(j )rV}rW(hXprofiling: booleanhjQjDjwihj h}rX(h]rYjaah]h]h]h]j ujPNjjih]rZ(j )r[}r\(hUhjVjDjwihjnh}r](h]h]h]h]h]Uentries]r^(j! X profiling ; cabal project optionjaUNtr_aujPNjjih]ubj# )r`}ra(hj`hjVjDjwihj& h}rb(jjh]h]h]h]h]ujPNjjih]rchX profilingrdre}rf(hUjDNjPNjjihj`ubaubj, )rg}rh(hj/ hjVjDjwihj0 h}ri(jjh]h]h]h]h]ujPNjjih]rjhX: rkrl}rm(hUjDNjPNjjihjgubaubj6 )rn}ro(hXbooleanhjVjDjwihj9 h}rp(jjh]h]h]h]h]ujPNjjih]rqhXbooleanrrrs}rt(hUjDNjPNjjihjnubaubeubj )ru}rv(hjhjQjDjwihj h}rw(h]rxjah]h]h]h]j ujPNjjih]ry(j )rz}r{(hUhjujDjwihjnh}r|(h]h]h]h]h]Uentries]r}(j! X(--enable-profiling; cabal project optionjUNtr~aujPNjjih]ubj# )r}r(hjhjujDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--enable-profilingrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hjujDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubj )r}r(hjhjQjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X)--disable-profiling; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--disable-profilingrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjQjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihj.h}r(h]h]h]h]h]ujPNjjih]r(j )r}r(hj+hjjDjwihj h}r(h]h]h]h]h]ujPKh]rhXSincerr}r(hUhjubaubj)r}r(hU Cabal 1.22rh}r(h]h]h]h]h]uhjh]rjZ)r}r(hjh}r(h]h]h]h]h]uhjh]rhX Cabal 1.22rr}r(hUhjubahj]ubahj-ubeubj)r›}rÛ(hUh}rě(h]h]h]h]h]uhjh]rś(j )rƛ}rǛ(hX Default valuehj›jDjwihj h}rț(h]h]h]h]h]ujPKh]rɛhX Default valuerʛr˛}r̛(hUhjƛubaubj)r͛}rΛ(hUh}rϛ(h]h]h]h]h]uhj›h]rЛjZ)rћ}rқ(hXFalseh}rӛ(h]h]h]h]h]uhj͛h]rԛhXFalser՛r֛}rכ(hXFalsejDNjPNjjihjћubahj]ubahj-ubehj.ubeubjZ)r؛}rٛ(hX?Build libraries and executables with profiling enabled (for compilers that support profiling as a separate mode). It is only necessary to specify :cfg-field:`profiling` for the specific package you want to profile; ``cabal v2-build`` will ensure that all of its transitive dependencies are built with profiling enabled.hjjDjwihj]h}rڛ(h]h]h]h]h]ujPMejjih]rۛ(hXBuild libraries and executables with profiling enabled (for compilers that support profiling as a separate mode). It is only necessary to specify rܛrݛ}rޛ(hXBuild libraries and executables with profiling enabled (for compilers that support profiling as a separate mode). It is only necessary to specify jDNjPNjjihj؛ubjM)rߛ}r(hX:cfg-field:`profiling`hj؛jDjwihjPh}r(UreftypeX cfg-fieldjRjSX profilingrU refdomainXcabalrh]h]U refexplicith]h]h]jVhjnNujPMeh]rj)r}r(hjh}r(h]h]r(j]jXcabal-cfg-fieldreh]h]h]uhjߛh]rhX profilingrr}r(hUhjubahjubaubhX/ for the specific package you want to profile; rr}r(hX/ for the specific package you want to profile; jDNjPNjjihj؛ubj)r}r(hX``cabal v2-build``h}r(h]h]h]h]h]uhj؛h]rhXcabal v2-buildrr}r(hXcabal v2-buildhjubahjubhXV will ensure that all of its transitive dependencies are built with profiling enabled.rr}r(hXV will ensure that all of its transitive dependencies are built with profiling enabled.jDNjPNjjihj؛ubeubjZ)r}r(hXTo enable profiling for only libraries or executables, see :cfg-field:`library-profiling` and :cfg-field:`executable-profiling`.hjjDjwihj]h}r(h]h]h]h]h]ujPMkjjih]r(hX;To enable profiling for only libraries or executables, see rr}r(hX;To enable profiling for only libraries or executables, see jDNjPNjjihjubjM)r}r(hX:cfg-field:`library-profiling`hjjDjwihjPh}r(UreftypeX cfg-fieldjRjSXlibrary-profilingrU refdomainXcabalrh]h]U refexplicith]h]h]jVhjnNujPMkh]rj)r}r (hjh}r (h]h]r (j]jXcabal-cfg-fieldr eh]h]h]uhjh]r hXlibrary-profilingrr}r(hUhjubahjubaubhX and rr}r(hX and jDNjPNjjihjubjM)r}r(hX!:cfg-field:`executable-profiling`hjjDjwihjPh}r(UreftypeX cfg-fieldjRjSXexecutable-profilingrU refdomainXcabalrh]h]U refexplicith]h]h]jVhjnNujPMkh]rj)r}r(hjh}r(h]h]r(j]jXcabal-cfg-fieldreh]h]h]uhjh]rhXexecutable-profilingr r!}r"(hUhjubahjubaubhX.r#}r$(hX.jDNjPNjjihjubeubjZ)r%}r&(hXFor useful profiling, it can be important to control precisely what cost centers are allocated; see :cfg-field:`profiling-detail`.hjjDjwihj]h}r'(h]h]h]h]h]ujPMnjjih]r((hXdFor useful profiling, it can be important to control precisely what cost centers are allocated; see r)r*}r+(hXdFor useful profiling, it can be important to control precisely what cost centers are allocated; see jDNjPNjjihj%ubjM)r,}r-(hX:cfg-field:`profiling-detail`hj%jDjwihjPh}r.(UreftypeX cfg-fieldjRjSXprofiling-detailr/U refdomainXcabalr0h]h]U refexplicith]h]h]jVhjnNujPMnh]r1j)r2}r3(hj/h}r4(h]h]r5(j]j0Xcabal-cfg-fieldr6eh]h]h]uhj,h]r7hXprofiling-detailr8r9}r:(hUhj2ubahjubaubhX.r;}r<(hX.jDNjPNjjihj%ubeubjZ)r=}r>(hX\The command line variant of this flag is ``--enable-profiling`` and ``--disable-profiling``.hjjDjwihj]h}r?(h]h]h]h]h]ujPMqjjih]r@(hX)The command line variant of this flag is rArB}rC(hX)The command line variant of this flag is jDNjPNjjihj=ubj)rD}rE(hX``--enable-profiling``h}rF(h]h]h]h]h]uhj=h]rGhX--enable-profilingrHrI}rJ(hX--enable-profilinghjDubahjubhX and rKrL}rM(hX and jDNjPNjjihj=ubj)rN}rO(hX``--disable-profiling``h}rP(h]h]h]h]h]uhj=h]rQhX--disable-profilingrRrS}rT(hX--disable-profilinghjNubahjubhX.rU}rV(hX.jDNjPNjjihj=ubeubeubeubj )rW}rX(hUhjsjDjwihjnh}rY(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rZ}r[(hUhjsjDjwihj h}r\(j j Xcabalh]h]h]h]h]j X cfg-fieldr]j j]ujPNjjih]r^(j )r_}r`(hXprofiling-detail: levelhjZjDjwihj h}ra(h]rbjah]h]h]h]j ujPNjjih]rc(j )rd}re(hUhj_jDjwihjnh}rf(h]h]h]h]h]Uentries]rg(j! X'profiling-detail ; cabal project optionjUNtrhaujPNjjih]ubj# )ri}rj(hjhj_jDjwihj& h}rk(jjh]h]h]h]h]ujPNjjih]rlhXprofiling-detailrmrn}ro(hUjDNjPNjjihjiubaubj, )rp}rq(hj/ hj_jDjwihj0 h}rr(jjh]h]h]h]h]ujPNjjih]rshX: rtru}rv(hUjDNjPNjjihjpubaubj6 )rw}rx(hXlevelhj_jDjwihj9 h}ry(jjh]h]h]h]h]ujPNjjih]rzhXlevelr{r|}r}(hUjDNjPNjjihjwubaubeubj )r~}r(hX--profiling-detail=levelhjZjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhj~jDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X(--profiling-detail; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhj~jDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--profiling-detailrr}r(hUjDNjPNjjihjubaubj, )r}r(hX=levelhj~jDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX=levelrr}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjZjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r(hUhjjDjwihj.h}r(h]h]h]h]h]ujPNjjih]r(j )r}r(hj+hjjDjwihj h}r(h]h]h]h]h]ujPKh]rhXSincerr}r(hUhjubaubj)r}r(hU Cabal 1.24rh}r(h]h]h]h]h]uhjh]rjZ)r}r(hjh}r(h]h]h]h]h]uhjh]rhX Cabal 1.24rr}r(hUhjubahj]ubahj-ubeubaubjZ)r}r(hXGSome compilers that support profiling, notably GHC, can allocate costs to different parts of the program and there are different levels of granularity or detail with which this can be done. In particular for GHC this concept is called "cost centers", and GHC can automatically add cost centers, and can do so in different ways.rhjjDjwihj]h}r(h]h]h]h]h]ujPMyjjih]rhXKSome compilers that support profiling, notably GHC, can allocate costs to different parts of the program and there are different levels of granularity or detail with which this can be done. In particular for GHC this concept is called “cost centers”, and GHC can automatically add cost centers, and can do so in different ways.rr}r(hjjDNjPNjjihjubaubjZ)r}r(hXqThis flag covers both libraries and executables, but can be overridden by the ``library-profiling-detail`` field.hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hXNThis flag covers both libraries and executables, but can be overridden by the rrœ}rÜ(hXNThis flag covers both libraries and executables, but can be overridden by the jDNjPNjjihjubj)rĜ}rŜ(hX``library-profiling-detail``h}rƜ(h]h]h]h]h]uhjh]rǜhXlibrary-profiling-detailrȜrɜ}rʜ(hXlibrary-profiling-detailhjĜubahjubhX field.r˜r̜}r͜(hX field.jDNjPNjjihjubeubjZ)rΜ}rϜ(hXmCurrently this setting is ignored for compilers other than GHC. The levels that cabal currently supports are:rМhjjDjwihj]h}rќ(h]h]h]h]h]ujPMjjih]rҜhXmCurrently this setting is ignored for compilers other than GHC. The levels that cabal currently supports are:rӜrԜ}r՜(hjМjDNjPNjjihjΜubaubj)r֜}rל(hUhjjDjwihjh}r؜(h]h]h]h]h]ujPNjjih]rٜ(j)rڜ}rۜ(hXjdefault For GHC this uses ``exported-functions`` for libraries and ``toplevel-functions`` for executables.hj֜jDjwihjh}rܜ(h]h]h]h]h]ujPMh]rݜ(j)rޜ}rߜ(hXdefaultrhjڜjDjwihjh}r(h]h]h]h]h]ujPMh]rhXdefaultrr}r(hjhjޜubaubj)r}r(hUh}r(h]h]h]h]h]uhjڜh]rjZ)r}r(hXbFor GHC this uses ``exported-functions`` for libraries and ``toplevel-functions`` for executables.hjjDjwihj]h}r(h]h]h]h]h]ujPMh]r(hXFor GHC this uses rr}r(hXFor GHC this uses hjubj)r}r(hX``exported-functions``h}r(h]h]h]h]h]uhjh]rhXexported-functionsrr}r(hXexported-functionshjubahjubhX for libraries and rr}r(hX for libraries and hjubj)r}r(hX``toplevel-functions``h}r(h]h]h]h]h]uhjh]rhXtoplevel-functionsrr}r(hXtoplevel-functionshjubahjubhX for executables.rr}r(hX for executables.hjubeubahj/ubeubj)r}r(hXAnone No costs will be assigned to any code within this component.hj֜jDjwihjh}r(h]h]h]h]h]ujPMjjih]r(j)r }r (hXnoner hjjDjwihjh}r (h]h]h]h]h]ujPMh]r hXnonerr}r(hj hj ubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hX<No costs will be assigned to any code within this component.rhjjDjwihj]h}r(h]h]h]h]h]ujPMh]rhX<No costs will be assigned to any code within this component.rr}r(hjhjubaubahj/ubeubj)r}r(hXexported-functions Costs will be assigned at the granularity of all top level functions exported from each module. In GHC, this is for non-inline functions. Corresponds to ``-fprof-auto-exported``.hj֜jDjwihjh}r(h]h]h]h]h]ujPMjjih]r (j)r!}r"(hXexported-functionsr#hjjDjwihjh}r$(h]h]h]h]h]ujPMh]r%hXexported-functionsr&r'}r((hj#hj!ubaubj)r)}r*(hUh}r+(h]h]h]h]h]uhjh]r,jZ)r-}r.(hXCosts will be assigned at the granularity of all top level functions exported from each module. In GHC, this is for non-inline functions. Corresponds to ``-fprof-auto-exported``.hj)jDjwihj]h}r/(h]h]h]h]h]ujPMh]r0(hXCosts will be assigned at the granularity of all top level functions exported from each module. In GHC, this is for non-inline functions. Corresponds to r1r2}r3(hXCosts will be assigned at the granularity of all top level functions exported from each module. In GHC, this is for non-inline functions. Corresponds to hj-ubj)r4}r5(hX``-fprof-auto-exported``h}r6(h]h]h]h]h]uhj-h]r7hX-fprof-auto-exportedr8r9}r:(hX-fprof-auto-exportedhj4ubahjubhX.r;}r<(hX.hj-ubeubahj/ubeubj)r=}r>(hXtoplevel-functions Costs will be assigned at the granularity of all top level functions in each module, whether they are exported from the module or not. In GHC specifically, this is for non-inline functions. Corresponds to ``-fprof-auto-top``.hj֜jDjwihjh}r?(h]h]h]h]h]ujPMjjih]r@(j)rA}rB(hXtoplevel-functionsrChj=jDjwihjh}rD(h]h]h]h]h]ujPMh]rEhXtoplevel-functionsrFrG}rH(hjChjAubaubj)rI}rJ(hUh}rK(h]h]h]h]h]uhj=h]rLjZ)rM}rN(hXCosts will be assigned at the granularity of all top level functions in each module, whether they are exported from the module or not. In GHC specifically, this is for non-inline functions. Corresponds to ``-fprof-auto-top``.hjIjDjwihj]h}rO(h]h]h]h]h]ujPMh]rP(hXCosts will be assigned at the granularity of all top level functions in each module, whether they are exported from the module or not. In GHC specifically, this is for non-inline functions. Corresponds to rQrR}rS(hXCosts will be assigned at the granularity of all top level functions in each module, whether they are exported from the module or not. In GHC specifically, this is for non-inline functions. Corresponds to hjMubj)rT}rU(hX``-fprof-auto-top``h}rV(h]h]h]h]h]uhjMh]rWhX-fprof-auto-toprXrY}rZ(hX-fprof-auto-tophjTubahjubhX.r[}r\(hX.hjMubeubahj/ubeubj)r]}r^(hXall-functions Costs will be assigned at the granularity of all functions in each module, whether top level or local. In GHC specifically, this is for non-inline toplevel or where-bound functions or values. Corresponds to ``-fprof-auto``. hj֜jDjwihjh}r_(h]h]h]h]h]ujPMjjih]r`(j)ra}rb(hX all-functionsrchj]jDjwihjh}rd(h]h]h]h]h]ujPMh]rehX all-functionsrfrg}rh(hjchjaubaubj)ri}rj(hUh}rk(h]h]h]h]h]uhj]h]rljZ)rm}rn(hXCosts will be assigned at the granularity of all functions in each module, whether top level or local. In GHC specifically, this is for non-inline toplevel or where-bound functions or values. Corresponds to ``-fprof-auto``.hjijDjwihj]h}ro(h]h]h]h]h]ujPMh]rp(hXCosts will be assigned at the granularity of all functions in each module, whether top level or local. In GHC specifically, this is for non-inline toplevel or where-bound functions or values. Corresponds to rqrr}rs(hXCosts will be assigned at the granularity of all functions in each module, whether top level or local. In GHC specifically, this is for non-inline toplevel or where-bound functions or values. Corresponds to hjmubj)rt}ru(hX``-fprof-auto``h}rv(h]h]h]h]h]uhjmh]rwhX -fprof-autorxry}rz(hX -fprof-autohjtubahjubhX.r{}r|(hX.hjmubeubahj/ubeubeubjZ)r}}r~(hXEThe command line variant of this flag is ``--profiling-detail=none``.hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihj}ubj)r}r(hX``--profiling-detail=none``h}r(h]h]h]h]h]uhj}h]rhX--profiling-detail=nonerr}r(hX--profiling-detail=nonehjubahjubhX.r}r(hX.jDNjPNjjihj}ubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXlibrary-profiling-detail: levelhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X/library-profiling-detail ; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXlibrary-profiling-detailrr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hXlevelhjjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhXlevelrr}r(hUjDNjPNjjihjubaubeubj )r}r(hX --library-profiling-detail=levelhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X0--library-profiling-detail; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--library-profiling-detailrrÝ}rĝ(hUjDNjPNjjihjubaubj, )rŝ}rƝ(hX=levelhjjDjwihj0 h}rǝ(jjh]h]h]h]h]ujPNjjih]rȝhX=levelrɝrʝ}r˝(hUjDNjPNjjihjŝubaubeubjh)r̝}r͝(hUhjjDjwihjA h}rΝ(h]h]h]h]h]ujPNjjih]rϝ(j)rН}rѝ(hUhj̝jDjwihjh}rҝ(h]h]h]h]h]ujPNjjih]rӝj)rԝ}r՝(hUhjНjDjwihj.h}r֝(h]h]h]h]h]ujPNjjih]rם(j )r؝}rٝ(hj+hjԝjDjwihj h}rڝ(h]h]h]h]h]ujPKh]r۝hXSincerܝrݝ}rޝ(hUhj؝ubaubj)rߝ}r(hU Cabal 1.24rh}r(h]h]h]h]h]uhjԝh]rjZ)r}r(hjh}r(h]h]h]h]h]uhjߝh]rhX Cabal 1.24rr}r(hUhjubahj]ubahj-ubeubaubjZ)r}r(hXALike :cfg-field:`profiling-detail`, but applied only to librarieshj̝jDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hXLike rr}r(hXLike jDNjPNjjihjubjM)r}r(hX:cfg-field:`profiling-detail`hjjDjwihjPh}r(UreftypeX cfg-fieldjRjSXprofiling-detailrU refdomainXcabalrh]h]U refexplicith]h]h]jVhjnNujPMh]rj)r}r(hjh}r(h]h]r(j]jXcabal-cfg-fieldreh]h]h]uhjh]rhXprofiling-detailrr}r(hUhjubahjubaubhX, but applied only to librariesrr}r(hX, but applied only to librariesjDNjPNjjihjubeubjZ)r}r(hXMThe command line variant of this flag is ``--library-profiling-detail=none``.hj̝jDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX)The command line variant of this flag is rr }r (hX)The command line variant of this flag is jDNjPNjjihjubj)r }r (hX#``--library-profiling-detail=none``h}r (h]h]h]h]h]uhjh]rhX--library-profiling-detail=nonerr}r(hX--library-profiling-detail=nonehj ubahjubhX.r}r(hX.jDNjPNjjihjubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXlibrary-vanilla: booleanhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r (j )r!}r"(hUhjjDjwihjnh}r#(h]h]h]h]h]Uentries]r$(j! X&library-vanilla ; cabal project optionjUNtr%aujPNjjih]ubj# )r&}r'(hjhjjDjwihj& h}r((jjh]h]h]h]h]ujPNjjih]r)hXlibrary-vanillar*r+}r,(hUjDNjPNjjihj&ubaubj, )r-}r.(hj/ hjjDjwihj0 h}r/(jjh]h]h]h]h]ujPNjjih]r0hX: r1r2}r3(hUjDNjPNjjihj-ubaubj6 )r4}r5(hXbooleanhjjDjwihj9 h}r6(jjh]h]h]h]h]ujPNjjih]r7hXbooleanr8r9}r:(hUjDNjPNjjihj4ubaubeubj )r;}r<(hjhjjDjwihj h}r=(h]r>jah]h]h]h]j ujPNjjih]r?(j )r@}rA(hUhj;jDjwihjnh}rB(h]h]h]h]h]Uentries]rC(j! X.--enable-library-vanilla; cabal project optionjUNtrDaujPNjjih]ubj# )rE}rF(hjhj;jDjwihj& h}rG(jjh]h]h]h]h]ujPNjjih]rHhX--enable-library-vanillarIrJ}rK(hUjDNjPNjjihjEubaubj, )rL}rM(hU hj;jDjwihj0 h}rN(jjh]h]h]h]h]ujPNjjih]rOhX rP}rQ(hUjDNjPNjjihjLubaubeubj )rR}rS(hjhjjDjwihj h}rT(h]rUjah]h]h]h]j ujPNjjih]rV(j )rW}rX(hUhjRjDjwihjnh}rY(h]h]h]h]h]Uentries]rZ(j! X/--disable-library-vanilla; cabal project optionjUNtr[aujPNjjih]ubj# )r\}r](hjhjRjDjwihj& h}r^(jjh]h]h]h]h]ujPNjjih]r_hX--disable-library-vanillar`ra}rb(hUjDNjPNjjihj\ubaubj, )rc}rd(hU hjRjDjwihj0 h}re(jjh]h]h]h]h]ujPNjjih]rfhX rg}rh(hUjDNjPNjjihjcubaubeubjh)ri}rj(hUhjjDjwihjA h}rk(h]h]h]h]h]ujPNjjih]rl(j)rm}rn(hUhjijDjwihjh}ro(h]h]h]h]h]ujPNjjih]rpj)rq}rr(hUh}rs(h]h]h]h]h]uhjmh]rt(j )ru}rv(hX Default valuehjqjDjwihj h}rw(h]h]h]h]h]ujPKh]rxhX Default valueryrz}r{(hUhjuubaubj)r|}r}(hUh}r~(h]h]h]h]h]uhjqh]rjZ)r}r(hXTrueh}r(h]h]h]h]h]uhj|h]rhXTruerr}r(hXTruejDNjPNjjihjubahj]ubahj-ubehj.ubaubjZ)r}r(hXBuild ordinary libraries (as opposed to profiling libraries). Mostly, you can set this to False to avoid building ordinary libraries when you are profiling.rhjijDjwihj]h}r(h]h]h]h]h]ujPMjjih]rhXBuild ordinary libraries (as opposed to profiling libraries). Mostly, you can set this to False to avoid building ordinary libraries when you are profiling.rr}r(hjjDNjPNjjihjubaubjZ)r}r(hXhThe command line variant of this flag is ``--enable-library-vanilla`` and ``--disable-library-vanilla``.hjijDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihjubj)r}r(hX``--enable-library-vanilla``h}r(h]h]h]h]h]uhjh]rhX--enable-library-vanillarr}r(hX--enable-library-vanillahjubahjubhX and rr}r(hX and jDNjPNjjihjubj)r}r(hX``--disable-library-vanilla``h}r(h]h]h]h]h]uhjh]rhX--disable-library-vanillarr}r(hX--disable-library-vanillahjubahjubhX.r}r(hX.jDNjPNjjihjubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXlibrary-profiling: booleanhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X(library-profiling ; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXlibrary-profilingrr}r(hUjDNjPNjjihjubaubj, )rž}rÞ(hj/ hjjDjwihj0 h}rĞ(jjh]h]h]h]h]ujPNjjih]rŞhX: rƞrǞ}rȞ(hUjDNjPNjjihjžubaubj6 )rɞ}rʞ(hXbooleanhjjDjwihj9 h}r˞(jjh]h]h]h]h]ujPNjjih]r̞hXbooleanr͞rΞ}rϞ(hUjDNjPNjjihjɞubaubeubj )rО}rў(hjhjjDjwihj h}rҞ(h]rӞjah]h]h]h]j ujPNjjih]rԞ(j )r՞}r֞(hUhjОjDjwihjnh}rמ(h]h]h]h]h]Uentries]r؞(j! X0--enable-library-profiling; cabal project optionjUNtrٞaujPNjjih]ubj# )rڞ}r۞(hjhjОjDjwihj& h}rܞ(jjh]h]h]h]h]ujPNjjih]rݞhX--enable-library-profilingrޞrߞ}r(hUjDNjPNjjihjڞubaubj, )r}r(hU hjОjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubj )r}r(hjxhjjDjwihj h}r(h]rjyah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X1--disable-library-profiling; cabal project optionjyUNtraujPNjjih]ubj# )r}r(hjxhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--disable-library-profilingrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihj.h}r(h]h]h]h]h]ujPNjjih]r (j )r }r (hj+hjjDjwihj h}r (h]h]h]h]h]ujPKh]r hXSincerr}r(hUhj ubaubj)r}r(hU Cabal 1.22rh}r(h]h]h]h]h]uhjh]rjZ)r}r(hjh}r(h]h]h]h]h]uhjh]rhX Cabal 1.22rr}r(hUhjubahj]ubahj-ubeubj)r}r(hUh}r(h]h]h]h]h]uhjh]r (j )r!}r"(hX Default valuehjjDjwihj h}r#(h]h]h]h]h]ujPKh]r$hX Default valuer%r&}r'(hUhj!ubaubj)r(}r)(hUh}r*(h]h]h]h]h]uhjh]r+jZ)r,}r-(hXFalseh}r.(h]h]h]h]h]uhj(h]r/hXFalser0r1}r2(hXFalsejDNjPNjjihj,ubahj]ubahj-ubehj.ubeubjZ)r3}r4(hXaBuild libraries with profiling enabled. You probably want to use :cfg-field:`profiling` instead.hjjDjwihj]h}r5(h]h]h]h]h]ujPMjjih]r6(hXBBuild libraries with profiling enabled. You probably want to use r7r8}r9(hXBBuild libraries with profiling enabled. You probably want to use jDNjPNjjihj3ubjM)r:}r;(hX:cfg-field:`profiling`hj3jDjwihjPh}r<(UreftypeX cfg-fieldjRjSX profilingr=U refdomainXcabalr>h]h]U refexplicith]h]h]jVhjnNujPMh]r?j)r@}rA(hj=h}rB(h]h]rC(j]j>Xcabal-cfg-fieldrDeh]h]h]uhj:h]rEhX profilingrFrG}rH(hUhj@ubahjubaubhX instead.rIrJ}rK(hX instead.jDNjPNjjihj3ubeubjZ)rL}rM(hXlThe command line variant of this flag is ``--enable-library-profiling`` and ``--disable-library-profiling``.hjjDjwihj]h}rN(h]h]h]h]h]ujPMjjih]rO(hX)The command line variant of this flag is rPrQ}rR(hX)The command line variant of this flag is jDNjPNjjihjLubj)rS}rT(hX``--enable-library-profiling``h}rU(h]h]h]h]h]uhjLh]rVhX--enable-library-profilingrWrX}rY(hX--enable-library-profilinghjSubahjubhX and rZr[}r\(hX and jDNjPNjjihjLubj)r]}r^(hX``--disable-library-profiling``h}r_(h]h]h]h]h]uhjLh]r`hX--disable-library-profilingrarb}rc(hX--disable-library-profilinghj]ubahjubhX.rd}re(hX.jDNjPNjjihjLubeubeubeubj )rf}rg(hUhjsjDjwihjnh}rh(h]h]h]h]h]Uentries]ujPNjjih]ubjk)ri}rj(hUhjsjDjwihj h}rk(j j Xcabalh]h]h]h]h]j X cfg-fieldrlj jlujPNjjih]rm(j )rn}ro(hXexecutable-profiling: booleanhjijDjwihj h}rp(h]rqj#ah]h]h]h]j ujPNjjih]rr(j )rs}rt(hUhjnjDjwihjnh}ru(h]h]h]h]h]Uentries]rv(j! X+executable-profiling ; cabal project optionj#UNtrwaujPNjjih]ubj# )rx}ry(hj"hjnjDjwihj& h}rz(jjh]h]h]h]h]ujPNjjih]r{hXexecutable-profilingr|r}}r~(hUjDNjPNjjihjxubaubj, )r}r(hj/ hjnjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hXbooleanhjnjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhXbooleanrr}r(hUjDNjPNjjihjubaubeubj )r}r(hjhjijDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X3--enable-executable-profiling; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--enable-executable-profilingrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubj )r}r(hjZhjijDjwihj h}r(h]rj[ah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X4--disable-executable-profiling; cabal project optionj[UNtraujPNjjih]ubj# )r}r(hjZhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--disable-executable-profilingrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjijDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rŸ(j)rß}rğ(hUhjjDjwihj.h}rş(h]h]h]h]h]ujPNjjih]rƟ(j )rǟ}rȟ(hj+hjßjDjwihj h}rɟ(h]h]h]h]h]ujPKh]rʟhXSincer˟r̟}r͟(hUhjǟubaubj)rΟ}rϟ(hU Cabal 1.22rПh}rџ(h]h]h]h]h]uhjßh]rҟjZ)rӟ}rԟ(hjПh}r՟(h]h]h]h]h]uhjΟh]r֟hX Cabal 1.22rןr؟}rٟ(hUhjӟubahj]ubahj-ubeubj)rڟ}r۟(hUh}rܟ(h]h]h]h]h]uhjh]rݟ(j )rޟ}rߟ(hX Default valuehjڟjDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjޟubaubj)r}r(hUh}r(h]h]h]h]h]uhjڟh]rjZ)r}r(hXFalseh}r(h]h]h]h]h]uhjh]rhXFalserr}r(hXFalsejDNjPNjjihjubahj]ubahj-ubehj.ubeubjZ)r}r(hXbBuild executables with profiling enabled. You probably want to use :cfg-field:`profiling` instead.hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hXCBuild executables with profiling enabled. You probably want to use rr}r(hXCBuild executables with profiling enabled. You probably want to use jDNjPNjjihjubjM)r}r(hX:cfg-field:`profiling`hjjDjwihjPh}r(UreftypeX cfg-fieldjRjSX profilingrU refdomainXcabalrh]h]U refexplicith]h]h]jVhjnNujPMh]rj)r}r(hjh}r(h]h]r(j]jXcabal-cfg-fieldreh]h]h]uhjh]rhX profilingrr}r(hUhjubahjubaubhX instead.rr}r(hX instead.jDNjPNjjihjubeubjZ)r }r (hXrThe command line variant of this flag is ``--enable-executable-profiling`` and ``--disable-executable-profiling``.hjjDjwihj]h}r (h]h]h]h]h]ujPMjjih]r (hX)The command line variant of this flag is r r}r(hX)The command line variant of this flag is jDNjPNjjihj ubj)r}r(hX!``--enable-executable-profiling``h}r(h]h]h]h]h]uhj h]rhX--enable-executable-profilingrr}r(hX--enable-executable-profilinghjubahjubhX and rr}r(hX and jDNjPNjjihj ubj)r}r(hX"``--disable-executable-profiling``h}r(h]h]h]h]h]uhj h]rhX--disable-executable-profilingrr}r (hX--disable-executable-profilinghjubahjubhX.r!}r"(hX.jDNjPNjjihj ubeubeubeubj )r#}r$(hUhjsjDjwihjnh}r%(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r&}r'(hUhjsjDjwihj h}r((j j Xcabalh]h]h]h]h]j X cfg-fieldr)j j)ujPNjjih]r*(j )r+}r,(hXcoverage: booleanhj&jDjwihj h}r-(h]r.jah]h]h]h]j ujPNjjih]r/(j )r0}r1(hUhj+jDjwihjnh}r2(h]h]h]h]h]Uentries]r3(j! Xcoverage ; cabal project optionjUNtr4aujPNjjih]ubj# )r5}r6(hjhj+jDjwihj& h}r7(jjh]h]h]h]h]ujPNjjih]r8hXcoverager9r:}r;(hUjDNjPNjjihj5ubaubj, )r<}r=(hj/ hj+jDjwihj0 h}r>(jjh]h]h]h]h]ujPNjjih]r?hX: r@rA}rB(hUjDNjPNjjihj<ubaubj6 )rC}rD(hXbooleanhj+jDjwihj9 h}rE(jjh]h]h]h]h]ujPNjjih]rFhXbooleanrGrH}rI(hUjDNjPNjjihjCubaubeubj )rJ}rK(hjhj&jDjwihj h}rL(h]rMjah]h]h]h]j ujPNjjih]rN(j )rO}rP(hUhjJjDjwihjnh}rQ(h]h]h]h]h]Uentries]rR(j! X'--enable-coverage; cabal project optionjUNtrSaujPNjjih]ubj# )rT}rU(hjhjJjDjwihj& h}rV(jjh]h]h]h]h]ujPNjjih]rWhX--enable-coveragerXrY}rZ(hUjDNjPNjjihjTubaubj, )r[}r\(hU hjJjDjwihj0 h}r](jjh]h]h]h]h]ujPNjjih]r^hX r_}r`(hUjDNjPNjjihj[ubaubeubj )ra}rb(hjhj&jDjwihj h}rc(h]rdjah]h]h]h]j ujPNjjih]re(j )rf}rg(hUhjajDjwihjnh}rh(h]h]h]h]h]Uentries]ri(j! X(--disable-coverage; cabal project optionjUNtrjaujPNjjih]ubj# )rk}rl(hjhjajDjwihj& h}rm(jjh]h]h]h]h]ujPNjjih]rnhX--disable-coveragerorp}rq(hUjDNjPNjjihjkubaubj, )rr}rs(hU hjajDjwihj0 h}rt(jjh]h]h]h]h]ujPNjjih]ruhX rv}rw(hUjDNjPNjjihjrubaubeubjh)rx}ry(hUhj&jDjwihjA h}rz(h]h]h]h]h]ujPNjjih]r{(j)r|}r}(hUhjxjDjwihjh}r~(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhj|jDjwihj.h}r(h]h]h]h]h]ujPNjjih]r(j )r}r(hj+hjjDjwihj h}r(h]h]h]h]h]ujPKh]rhXSincerr}r(hUhjubaubj)r}r(hU Cabal 1.22rh}r(h]h]h]h]h]uhjh]rjZ)r}r(hjh}r(h]h]h]h]h]uhjh]rhX Cabal 1.22rr}r(hUhjubahj]ubahj-ubeubj)r}r(hUh}r(h]h]h]h]h]uhj|h]r(j )r}r(hX Default valuehjjDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hXFalseh}r(h]h]h]h]h]uhjh]rhXFalserr}r(hXFalsejDNjPNjjihjubahj]ubahj-ubehj.ubeubjZ)r}r(hXBuild libraries and executables (including test suites) with Haskell Program Coverage enabled. Running the test suites will automatically generate coverage reports with HPC.rhjxjDjwihj]h}r(h]h]h]h]h]ujPMjjih]rhXBuild libraries and executables (including test suites) with Haskell Program Coverage enabled. Running the test suites will automatically generate coverage reports with HPC.rr}r(hjjDNjPNjjihjubaubjZ)r}r(hXZThe command line variant of this flag is ``--enable-coverage`` and ``--disable-coverage``.hjxjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihjubj)r}r(hX``--enable-coverage``h}r(h]h]h]h]h]uhjh]rhX--enable-coveragerr}r (hX--enable-coveragehjubahjubhX and ràrĠ}rŠ(hX and jDNjPNjjihjubj)rƠ}rǠ(hX``--disable-coverage``h}rȠ(h]h]h]h]h]uhjh]rɠhX--disable-coveragerʠrˠ}r̠(hX--disable-coveragehjƠubahjubhX.r͠}rΠ(hX.jDNjPNjjihjubeubeubeubj )rϠ}rР(hUhjsjDjwihjnh}rѠ(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rҠ}rӠ(hUhjsjDjwihj h}rԠ(j j Xcabalh]h]h]h]h]j X cfg-fieldrՠj jՠujPNjjih]r֠(j )rנ}rؠ(hXlibrary-coverage: booleanhjҠjDjwihj h}r٠(h]rڠjXah]h]h]h]j ujPNjjih]r۠(j )rܠ}rݠ(hUhjנjDjwihjnh}rޠ(h]h]h]h]h]Uentries]rߠ(j! X'library-coverage ; cabal project optionjXUNtraujPNjjih]ubj# )r}r(hjWhjנjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXlibrary-coveragerr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjנjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hXbooleanhjנjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhXbooleanrr}r(hUjDNjPNjjihjubaubeubj )r}r(hjhjҠjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X/--enable-library-coverage; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--enable-library-coveragerr}r(hUjDNjPNjjihjubaubj, )r}r(hU hjjDjwihj0 h}r (jjh]h]h]h]h]ujPNjjih]r hX r }r (hUjDNjPNjjihjubaubeubj )r }r(hjhjҠjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhj jDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X0--disable-library-coverage; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhj jDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--disable-library-coveragerr}r(hUjDNjPNjjihjubaubj, )r}r(hU hj jDjwihj0 h}r (jjh]h]h]h]h]ujPNjjih]r!hX r"}r#(hUjDNjPNjjihjubaubeubjh)r$}r%(hUhjҠjDjwihjA h}r&(h]h]h]h]h]ujPNjjih]r'(j)r(}r)(hUhj$jDjwihjh}r*(h]h]h]h]h]ujPNjjih]r+(j)r,}r-(hUhj(jDjwihj.h}r.(h]h]h]h]h]ujPNjjih]r/(j )r0}r1(hj/hj,jDjwihj h}r2(h]h]h]h]h]ujPKh]r3hX Deprecatedr4r5}r6(hUhj0ubaubj)r7}r8(hUh}r9(h]h]h]h]h]uhj,h]r:jZ)r;}r<(hUh}r=(h]h]h]h]h]uhj7h]hj]ubahj-ubeubj)r>}r?(hUhj(jDjwihj.h}r@(h]h]h]h]h]ujPNjjih]rA(j )rB}rC(hj+hj>jDjwihj h}rD(h]h]h]h]h]ujPKh]rEhXSincerFrG}rH(hUhjBubaubj)rI}rJ(hU Cabal 1.22rKh}rL(h]h]h]h]h]uhj>h]rMjZ)rN}rO(hjKh}rP(h]h]h]h]h]uhjIh]rQhX Cabal 1.22rRrS}rT(hUhjNubahj]ubahj-ubeubj)rU}rV(hUh}rW(h]h]h]h]h]uhj(h]rX(j )rY}rZ(hX Default valuehjUjDjwihj h}r[(h]h]h]h]h]ujPKh]r\hX Default valuer]r^}r_(hUhjYubaubj)r`}ra(hUh}rb(h]h]h]h]h]uhjUh]rcjZ)rd}re(hXFalseh}rf(h]h]h]h]h]uhj`h]rghXFalserhri}rj(hXFalsejDNjPNjjihjdubahj]ubahj-ubehj.ubeubjZ)rk}rl(hX&Deprecated, use :cfg-field:`coverage`.hj$jDjwihj]h}rm(h]h]h]h]h]ujPMjjih]rn(hXDeprecated, use rorp}rq(hXDeprecated, use jDNjPNjjihjkubjM)rr}rs(hX:cfg-field:`coverage`hjkjDjwihjPh}rt(UreftypeX cfg-fieldjRjSXcoverageruU refdomainXcabalrvh]h]U refexplicith]h]h]jVhjnNujPMh]rwj)rx}ry(hjuh}rz(h]h]r{(j]jvXcabal-cfg-fieldr|eh]h]h]uhjrh]r}hXcoverager~r}r(hUhjxubahjubaubhX.r}r(hX.jDNjPNjjihjkubeubjZ)r}r(hXjThe command line variant of this flag is ``--enable-library-coverage`` and ``--disable-library-coverage``.hj$jDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihjubj)r}r(hX``--enable-library-coverage``h}r(h]h]h]h]h]uhjh]rhX--enable-library-coveragerr}r(hX--enable-library-coveragehjubahjubhX and rr}r(hX and jDNjPNjjihjubj)r}r(hX``--disable-library-coverage``h}r(h]h]h]h]h]uhjh]rhX--disable-library-coveragerr}r(hX--disable-library-coveragehjubahjubhX.r}r(hX.jDNjPNjjihjubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXdocumentation: booleanhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X$documentation ; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX documentationrr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hXbooleanhjjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhXbooleanrr¡}rá(hUjDNjPNjjihjubaubeubj )rġ}rš(hjhjjDjwihj h}rơ(h]rǡjah]h]h]h]j ujPNjjih]rȡ(j )rɡ}rʡ(hUhjġjDjwihjnh}rˡ(h]h]h]h]h]Uentries]r̡(j! X,--enable-documentation; cabal project optionjUNtr͡aujPNjjih]ubj# )rΡ}rϡ(hjhjġjDjwihj& h}rС(jjh]h]h]h]h]ujPNjjih]rѡhX--enable-documentationrҡrӡ}rԡ(hUjDNjPNjjihjΡubaubj, )rա}r֡(hU hjġjDjwihj0 h}rס(jjh]h]h]h]h]ujPNjjih]rءhX r١}rڡ(hUjDNjPNjjihjաubaubeubj )rۡ}rܡ(hj/hjjDjwihj h}rݡ(h]rޡj0ah]h]h]h]j ujPNjjih]rߡ(j )r}r(hUhjۡjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X---disable-documentation; cabal project optionj0UNtraujPNjjih]ubj# )r}r(hj/hjۡjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--disable-documentationrr}r(hUjDNjPNjjihjubaubj, )r}r(hU hjۡjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX r}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hX Default valuehjjDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r }r (hXFalseh}r (h]h]h]h]h]uhjh]r hXFalser r}r(hXFalsejDNjPNjjihj ubahj]ubahj-ubehj.ubaubjZ)r}r(hX)Enables building of Haddock documentationrhjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]rhX)Enables building of Haddock documentationrr}r(hjjDNjPNjjihjubaubjZ)r}r(hXdThe command line variant of this flag is ``--enable-documentation`` and ``--disable-documentation``.hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihjubj)r}r (hX``--enable-documentation``h}r!(h]h]h]h]h]uhjh]r"hX--enable-documentationr#r$}r%(hX--enable-documentationhjubahjubhX and r&r'}r((hX and jDNjPNjjihjubj)r)}r*(hX``--disable-documentation``h}r+(h]h]h]h]h]uhjh]r,hX--disable-documentationr-r.}r/(hX--disable-documentationhj)ubahjubhX.r0}r1(hX.jDNjPNjjihjubeubjZ)r2}r3(hX`documentation: true` does not imply :cfg-field:`haddock-benchmarks`, :cfg-field:`haddock-executables`, :cfg-field:`haddock-internal` or :cfg-field:`haddock-tests`. These need to be enabled separately if desired.hjjDjwihj]h}r4(h]h]h]h]h]ujPMjjih]r5(j")r6}r7(hX`documentation: true`h}r8(h]h]h]h]h]uhj2h]r9hXdocumentation: truer:r;}r<(hXdocumentation: truehj6ubahj"ubhX does not imply r=r>}r?(hX does not imply jDNjPNjjihj2ubjM)r@}rA(hX:cfg-field:`haddock-benchmarks`hj2jDjwihjPh}rB(UreftypeX cfg-fieldjRjSXhaddock-benchmarksrCU refdomainXcabalrDh]h]U refexplicith]h]h]jVhjnNujPMh]rEj)rF}rG(hjCh}rH(h]h]rI(j]jDXcabal-cfg-fieldrJeh]h]h]uhj@h]rKhXhaddock-benchmarksrLrM}rN(hUhjFubahjubaubhX, rOrP}rQ(hX, jDNjPNjjihj2ubjM)rR}rS(hX :cfg-field:`haddock-executables`hj2jDjwihjPh}rT(UreftypeX cfg-fieldjRjSXhaddock-executablesrUU refdomainXcabalrVh]h]U refexplicith]h]h]jVhjnNujPMh]rWj)rX}rY(hjUh}rZ(h]h]r[(j]jVXcabal-cfg-fieldr\eh]h]h]uhjRh]r]hXhaddock-executablesr^r_}r`(hUhjXubahjubaubhX, rarb}rc(hX, jDNjPNjjihj2ubjM)rd}re(hX:cfg-field:`haddock-internal`hj2jDjwihjPh}rf(UreftypeX cfg-fieldjRjSXhaddock-internalrgU refdomainXcabalrhh]h]U refexplicith]h]h]jVhjnNujPMh]rij)rj}rk(hjgh}rl(h]h]rm(j]jhXcabal-cfg-fieldrneh]h]h]uhjdh]rohXhaddock-internalrprq}rr(hUhjjubahjubaubhX or rsrt}ru(hX or jDNjPNjjihj2ubjM)rv}rw(hX:cfg-field:`haddock-tests`hj2jDjwihjPh}rx(UreftypeX cfg-fieldjRjSX haddock-testsryU refdomainXcabalrzh]h]U refexplicith]h]h]jVhjnNujPMh]r{j)r|}r}(hjyh}r~(h]h]r(j]jzXcabal-cfg-fieldreh]h]h]uhjvh]rhX haddock-testsrr}r(hUhj|ubahjubaubhX1. These need to be enabled separately if desired.rr}r(hX1. These need to be enabled separately if desired.jDNjPNjjihj2ubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXdoc-index-file: templated pathhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X%doc-index-file ; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXdoc-index-filerr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hXtemplated pathhjjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhXtemplated pathrr}r(hUjDNjPNjjihjubaubeubj )r}r(hX--doc-index-file=TEMPLATEhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X&--doc-index-file; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX--doc-index-filerr}r(hUjDNjPNjjihjubaubj, )r}r(hX =TEMPLATEhjjDjwihj0 h}r¢(jjh]h]h]h]h]ujPNjjih]râhX =TEMPLATErĢrŢ}rƢ(hUjDNjPNjjihjubaubeubjh)rǢ}rȢ(hUhjjDjwihjA h}rɢ(h]h]h]h]h]ujPNjjih]rʢ(jZ)rˢ}r̢(hXA central index of Haddock API documentation (template cannot use ``$pkgid``), which should be updated as documentation is built.hjǢjDjwihj]h}r͢(h]h]h]h]h]ujPMjjih]r΢(hXBA central index of Haddock API documentation (template cannot use rϢrТ}rѢ(hXBA central index of Haddock API documentation (template cannot use jDNjPNjjihjˢubj)rҢ}rӢ(hX ``$pkgid``h}rԢ(h]h]h]h]h]uhjˢh]rբhX$pkgidr֢rע}rآ(hX$pkgidhjҢubahjubhX5), which should be updated as documentation is built.r٢rڢ}rۢ(hX5), which should be updated as documentation is built.jDNjPNjjihjˢubeubjZ)rܢ}rݢ(hXFThe command line variant of this flag is ``--doc-index-file=TEMPLATE``hjǢjDjwihj]h}rޢ(h]h]h]h]h]ujPM jjih]rߢ(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihjܢubj)r}r(hX``--doc-index-file=TEMPLATE``h}r(h]h]h]h]h]uhjܢh]rhX--doc-index-file=TEMPLATErr}r(hX--doc-index-file=TEMPLATEhjubahjubeubeubeubjZ)r}r(hXThe following commands are equivalent to ones that would be passed when running ``setup haddock``. (TODO: Where does the documentation get put.)hjsjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hXPThe following commands are equivalent to ones that would be passed when running rr}r(hXPThe following commands are equivalent to ones that would be passed when running jDNjPNjjihjubj)r}r(hX``setup haddock``h}r(h]h]h]h]h]uhjh]rhX setup haddockrr}r(hX setup haddockhjubahjubhX/. (TODO: Where does the documentation get put.)rr}r(hX/. (TODO: Where does the documentation get put.)jDNjPNjjihjubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXhaddock-hoogle: booleanhjjDjwihj h}r(h]rj%ah]h]h]h]j ujPNjjih]r(j )r}r (hUhjjDjwihjnh}r (h]h]h]h]h]Uentries]r (j! X%haddock-hoogle ; cabal project optionj%UNtr aujPNjjih]ubj# )r }r(hj$hjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXhaddock-hooglerr}r(hUjDNjPNjjihj ubaubj, )r}r(hj/ hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hXbooleanhjjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhXbooleanrr }r!(hUjDNjPNjjihjubaubeubjh)r"}r#(hUhjjDjwihjA h}r$(h]h]h]h]h]ujPNjjih]r%(j)r&}r'(hUhj"jDjwihjh}r((h]h]h]h]h]ujPNjjih]r)j)r*}r+(hUh}r,(h]h]h]h]h]uhj&h]r-(j )r.}r/(hX Default valuehj*jDjwihj h}r0(h]h]h]h]h]ujPKh]r1hX Default valuer2r3}r4(hUhj.ubaubj)r5}r6(hUh}r7(h]h]h]h]h]uhj*h]r8jZ)r9}r:(hXFalseh}r;(h]h]h]h]h]uhj5h]r<hXFalser=r>}r?(hXFalsejDNjPNjjihj9ubahj]ubahj-ubehj.ubaubjZ)r@}rA(hXGenerate a text file which can be converted by Hoogle_ into a database for searching. This is equivalent to running ``haddock`` with the ``--hoogle`` flag.hj"jDjwihj]h}rB(h]h]h]h]h]ujPMjjih]rC(hX/Generate a text file which can be converted by rDrE}rF(hX/Generate a text file which can be converted by jDNjPNjjihj@ubj!)rG}rH(hXHoogle_j$Khj@hj%h}rI(UnameXHooglerJj] jh]h]h]h]h]uh]rKhXHooglerLrM}rN(hjJhjGubaubhX> into a database for searching. This is equivalent to running rOrP}rQ(hX> into a database for searching. This is equivalent to running jDNjPNjjihj@ubj)rR}rS(hX ``haddock``h}rT(h]h]h]h]h]uhj@h]rUhXhaddockrVrW}rX(hXhaddockhjRubahjubhX with the rYrZ}r[(hX with the jDNjPNjjihj@ubj)r\}r](hX ``--hoogle``h}r^(h]h]h]h]h]uhj@h]r_hX--hoogler`ra}rb(hX--hooglehj\ubahjubhX flag.rcrd}re(hX flag.jDNjPNjjihj@ubeubjZ)rf}rg(hXTThe command line variant of this flag is ``--hoogle`` (for the ``haddock`` command).hj"jDjwihj]h}rh(h]h]h]h]h]ujPMjjih]ri(hX)The command line variant of this flag is rjrk}rl(hX)The command line variant of this flag is jDNjPNjjihjfubj)rm}rn(hX ``--hoogle``h}ro(h]h]h]h]h]uhjfh]rphX--hooglerqrr}rs(hX--hooglehjmubahjubhX (for the rtru}rv(hX (for the jDNjPNjjihjfubj)rw}rx(hX ``haddock``h}ry(h]h]h]h]h]uhjfh]rzhXhaddockr{r|}r}(hXhaddockhjwubahjubhX command).r~r}r(hX command).jDNjPNjjihjfubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXhaddock-html: booleanhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X#haddock-html ; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX haddock-htmlrr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hXbooleanhjjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhXbooleanrr}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hX Default valuehjjDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hXTrueh}r(h]h]h]h]h]uhjh]r£hXTruerãrģ}rţ(hXTruejDNjPNjjihjubahj]ubahj-ubehj.ubaubjZ)rƣ}rǣ(hXBuild HTML documentation.rȣhjjDjwihj]h}rɣ(h]h]h]h]h]ujPM"jjih]rʣhXBuild HTML documentation.rˣṛ}rͣ(hjȣjDNjPNjjihjƣubaubjZ)rΣ}rϣ(hXRThe command line variant of this flag is ``--html`` (for the ``haddock`` command).hjjDjwihj]h}rУ(h]h]h]h]h]ujPM$jjih]rѣ(hX)The command line variant of this flag is rңrӣ}rԣ(hX)The command line variant of this flag is jDNjPNjjihjΣubj)rգ}r֣(hX ``--html``h}rף(h]h]h]h]h]uhjΣh]rأhX--htmlr٣rڣ}rۣ(hX--htmlhjգubahjubhX (for the rܣrݣ}rޣ(hX (for the jDNjPNjjihjΣubj)rߣ}r(hX ``haddock``h}r(h]h]h]h]h]uhjΣh]rhXhaddockrr}r(hXhaddockhjߣubahjubhX command).rr}r(hX command).jDNjPNjjihjΣubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hX%haddock-html-location: templated pathhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X,haddock-html-location ; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXhaddock-html-locationrr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r }r (hXtemplated pathhjjDjwihj9 h}r (jjh]h]h]h]h]ujPNjjih]r hXtemplated pathr r}r(hUjDNjPNjjihj ubaubeubjh)r}r(hUhjjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(jZ)r}r(hX:Specify a template for the location of HTML documentation for prerequisite packages. The substitutions are applied to the template to obtain a location for each package, which will be used by hyperlinks in the generated documentation. For example, the following command generates links pointing at [Hackage] pages:rhjjDjwihj]h}r(h]h]h]h]h]ujPM*jjih]rhX:Specify a template for the location of HTML documentation for prerequisite packages. The substitutions are applied to the template to obtain a location for each package, which will be used by hyperlinks in the generated documentation. For example, the following command generates links pointing at [Hackage] pages:rr}r(hjjDNjPNjjihjubaubj)r}r(hXQhtml-location: 'http://hackage.haskell.org/packages/archive/$pkg/latest/doc/html'hjjDjwihjh}r(jjh]h]h]h]h]ujPM2jjih]rhXQhtml-location: 'http://hackage.haskell.org/packages/archive/$pkg/latest/doc/html'r r!}r"(hUhjubaubjZ)r#}r$(hXHere the argument is quoted to prevent substitution by the shell. If this option is omitted, the location for each package is obtained using the package tool (e.g. ``ghc-pkg``).hjjDjwihj]h}r%(h]h]h]h]h]ujPM4jjih]r&(hXHere the argument is quoted to prevent substitution by the shell. If this option is omitted, the location for each package is obtained using the package tool (e.g. r'r(}r)(hXHere the argument is quoted to prevent substitution by the shell. If this option is omitted, the location for each package is obtained using the package tool (e.g. jDNjPNjjihj#ubj)r*}r+(hX ``ghc-pkg``h}r,(h]h]h]h]h]uhj#h]r-hXghc-pkgr.r/}r0(hXghc-pkghj*ubahjubhX).r1r2}r3(hX).jDNjPNjjihj#ubeubjZ)r4}r5(hX^The command line variant of this flag is ``--html-location`` (for the ``haddock`` subcommand).hjjDjwihj]h}r6(h]h]h]h]h]ujPM8jjih]r7(hX)The command line variant of this flag is r8r9}r:(hX)The command line variant of this flag is jDNjPNjjihj4ubj)r;}r<(hX``--html-location``h}r=(h]h]h]h]h]uhj4h]r>hX--html-locationr?r@}rA(hX--html-locationhj;ubahjubhX (for the rBrC}rD(hX (for the jDNjPNjjihj4ubj)rE}rF(hX ``haddock``h}rG(h]h]h]h]h]uhj4h]rHhXhaddockrIrJ}rK(hXhaddockhjEubahjubhX subcommand).rLrM}rN(hX subcommand).jDNjPNjjihj4ubeubeubeubj )rO}rP(hUhjsjDjwihjnh}rQ(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rR}rS(hUhjsjDjwihj h}rT(j j Xcabalh]h]h]h]h]j X cfg-fieldrUj jUujPNjjih]rV(j )rW}rX(hXhaddock-executables: booleanhjRjDjwihj h}rY(h]rZj ah]h]h]h]j ujPNjjih]r[(j )r\}r](hUhjWjDjwihjnh}r^(h]h]h]h]h]Uentries]r_(j! X*haddock-executables ; cabal project optionj UNtr`aujPNjjih]ubj# )ra}rb(hjhjWjDjwihj& h}rc(jjh]h]h]h]h]ujPNjjih]rdhXhaddock-executablesrerf}rg(hUjDNjPNjjihjaubaubj, )rh}ri(hj/ hjWjDjwihj0 h}rj(jjh]h]h]h]h]ujPNjjih]rkhX: rlrm}rn(hUjDNjPNjjihjhubaubj6 )ro}rp(hXbooleanhjWjDjwihj9 h}rq(jjh]h]h]h]h]ujPNjjih]rrhXbooleanrsrt}ru(hUjDNjPNjjihjoubaubeubjh)rv}rw(hUhjRjDjwihjA h}rx(h]h]h]h]h]ujPNjjih]ry(j)rz}r{(hUhjvjDjwihjh}r|(h]h]h]h]h]ujPNjjih]r}j)r~}r(hUh}r(h]h]h]h]h]uhjzh]r(j )r}r(hX Default valuehj~jDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r(hUh}r(h]h]h]h]h]uhj~h]rjZ)r}r(hXFalseh}r(h]h]h]h]h]uhjh]rhXFalserr}r(hXFalsejDNjPNjjihjubahj]ubahj-ubehj.ubaubjZ)r}r(hX'Run haddock on all executable programs.rhjvjDjwihj]h}r(h]h]h]h]h]ujPM@jjih]rhX'Run haddock on all executable programs.rr}r(hjjDNjPNjjihjubaubjZ)r}r(hX\The command line variant of this flag is ``--executables`` (for the ``haddock`` subcommand).hjvjDjwihj]h}r(h]h]h]h]h]ujPMBjjih]r(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihjubj)r}r(hX``--executables``h}r(h]h]h]h]h]uhjh]rhX --executablesrr}r(hX --executableshjubahjubhX (for the rr}r(hX (for the jDNjPNjjihjubj)r}r(hX ``haddock``h}r(h]h]h]h]h]uhjh]rhXhaddockrr}r(hXhaddockhjubahjubhX subcommand).rr}r(hX subcommand).jDNjPNjjihjubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXhaddock-tests: booleanhjjDjwihj h}r(h]r¤jah]h]h]h]j ujPNjjih]rä(j )rĤ}rŤ(hUhjjDjwihjnh}rƤ(h]h]h]h]h]Uentries]rǤ(j! X$haddock-tests ; cabal project optionjUNtrȤaujPNjjih]ubj# )rɤ}rʤ(hj~hjjDjwihj& h}rˤ(jjh]h]h]h]h]ujPNjjih]r̤hX haddock-testsrͤrΤ}rϤ(hUjDNjPNjjihjɤubaubj, )rФ}rѤ(hj/ hjjDjwihj0 h}rҤ(jjh]h]h]h]h]ujPNjjih]rӤhX: rԤrդ}r֤(hUjDNjPNjjihjФubaubj6 )rפ}rؤ(hXbooleanhjjDjwihj9 h}r٤(jjh]h]h]h]h]ujPNjjih]rڤhXbooleanrۤrܤ}rݤ(hUjDNjPNjjihjפubaubeubjh)rޤ}rߤ(hUhjjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjޤjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hX Default valuehjjDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hXFalseh}r(h]h]h]h]h]uhjh]rhXFalserr}r(hXFalsejDNjPNjjihjubahj]ubahj-ubehj.ubaubjZ)r}r(hXRun haddock on all test suites.rhjޤjDjwihj]h}r(h]h]h]h]h]ujPMJjjih]rhXRun haddock on all test suites.rr}r(hjjDNjPNjjihjubaubjZ)r}r(hXVThe command line variant of this flag is ``--tests`` (for the ``haddock`` subcommand).hjޤjDjwihj]h}r(h]h]h]h]h]ujPMLjjih]r(hX)The command line variant of this flag is rr }r (hX)The command line variant of this flag is jDNjPNjjihjubj)r }r (hX ``--tests``h}r (h]h]h]h]h]uhjh]rhX--testsrr}r(hX--testshj ubahjubhX (for the rr}r(hX (for the jDNjPNjjihjubj)r}r(hX ``haddock``h}r(h]h]h]h]h]uhjh]rhXhaddockrr}r(hXhaddockhjubahjubhX subcommand).rr}r(hX subcommand).jDNjPNjjihjubeubeubeubj )r}r (hUhjsjDjwihjnh}r!(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r"}r#(hUhjsjDjwihj h}r$(j j Xcabalh]h]h]h]h]j X cfg-fieldr%j j%ujPNjjih]r&(j )r'}r((hXhaddock-benchmarks: booleanhj"jDjwihj h}r)(h]r*jCah]h]h]h]j ujPNjjih]r+(j )r,}r-(hUhj'jDjwihjnh}r.(h]h]h]h]h]Uentries]r/(j! X)haddock-benchmarks ; cabal project optionjCUNtr0aujPNjjih]ubj# )r1}r2(hjBhj'jDjwihj& h}r3(jjh]h]h]h]h]ujPNjjih]r4hXhaddock-benchmarksr5r6}r7(hUjDNjPNjjihj1ubaubj, )r8}r9(hj/ hj'jDjwihj0 h}r:(jjh]h]h]h]h]ujPNjjih]r;hX: r<r=}r>(hUjDNjPNjjihj8ubaubj6 )r?}r@(hXbooleanhj'jDjwihj9 h}rA(jjh]h]h]h]h]ujPNjjih]rBhXbooleanrCrD}rE(hUjDNjPNjjihj?ubaubeubjh)rF}rG(hUhj"jDjwihjA h}rH(h]h]h]h]h]ujPNjjih]rI(j)rJ}rK(hUhjFjDjwihjh}rL(h]h]h]h]h]ujPNjjih]rMj)rN}rO(hUh}rP(h]h]h]h]h]uhjJh]rQ(j )rR}rS(hX Default valuehjNjDjwihj h}rT(h]h]h]h]h]ujPKh]rUhX Default valuerVrW}rX(hUhjRubaubj)rY}rZ(hUh}r[(h]h]h]h]h]uhjNh]r\jZ)r]}r^(hXFalseh}r_(h]h]h]h]h]uhjYh]r`hXFalserarb}rc(hXFalsejDNjPNjjihj]ubahj]ubahj-ubehj.ubaubjZ)rd}re(hXRun haddock on all benchmarks.rfhjFjDjwihj]h}rg(h]h]h]h]h]ujPMTjjih]rhhXRun haddock on all benchmarks.rirj}rk(hjfjDNjPNjjihjdubaubjZ)rl}rm(hX[The command line variant of this flag is ``--benchmarks`` (for the ``haddock`` subcommand).hjFjDjwihj]h}rn(h]h]h]h]h]ujPMVjjih]ro(hX)The command line variant of this flag is rprq}rr(hX)The command line variant of this flag is jDNjPNjjihjlubj)rs}rt(hX``--benchmarks``h}ru(h]h]h]h]h]uhjlh]rvhX --benchmarksrwrx}ry(hX --benchmarkshjsubahjubhX (for the rzr{}r|(hX (for the jDNjPNjjihjlubj)r}}r~(hX ``haddock``h}r(h]h]h]h]h]uhjlh]rhXhaddockrr}r(hXhaddockhj}ubahjubhX subcommand).rr}r(hX subcommand).jDNjPNjjihjlubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXhaddock-all: booleanhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X"haddock-all ; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhX haddock-allrr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hXbooleanhjjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhXbooleanrr}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hX Default valuehjjDjwihj h}r(h]h]h]h]h]ujPKh]rhX Default valuerr}r(hUhjubaubj)r}r¥(hUh}rå(h]h]h]h]h]uhjh]rĥjZ)rť}rƥ(hXFalseh}rǥ(h]h]h]h]h]uhjh]rȥhXFalserɥrʥ}r˥(hXFalsejDNjPNjjihjťubahj]ubahj-ubehj.ubaubjZ)r̥}rͥ(hXRun haddock on all components.rΥhjjDjwihj]h}rϥ(h]h]h]h]h]ujPM^jjih]rХhXRun haddock on all components.rѥrҥ}rӥ(hjΥjDNjPNjjihj̥ubaubjZ)rԥ}rե(hXTThe command line variant of this flag is ``--all`` (for the ``haddock`` subcommand).hjjDjwihj]h}r֥(h]h]h]h]h]ujPM`jjih]rץ(hX)The command line variant of this flag is rإr٥}rڥ(hX)The command line variant of this flag is jDNjPNjjihjԥubj)rۥ}rܥ(hX ``--all``h}rݥ(h]h]h]h]h]uhjԥh]rޥhX--allrߥr}r(hX--allhjۥubahjubhX (for the rr}r(hX (for the jDNjPNjjihjԥubj)r}r(hX ``haddock``h}r(h]h]h]h]h]uhjԥh]rhXhaddockrr}r(hXhaddockhjubahjubhX subcommand).rr}r(hX subcommand).jDNjPNjjihjԥubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hXhaddock-internal: booleanhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X'haddock-internal ; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXhaddock-internalrr}r(hUjDNjPNjjihjubaubj, )r}r (hj/ hjjDjwihj0 h}r (jjh]h]h]h]h]ujPNjjih]r hX: r r }r(hUjDNjPNjjihjubaubj6 )r}r(hXbooleanhjjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhXbooleanrr}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hUhjjDjwihjh}r(h]h]h]h]h]ujPNjjih]rj)r}r(hUh}r (h]h]h]h]h]uhjh]r!(j )r"}r#(hX Default valuehjjDjwihj h}r$(h]h]h]h]h]ujPKh]r%hX Default valuer&r'}r((hUhj"ubaubj)r)}r*(hUh}r+(h]h]h]h]h]uhjh]r,jZ)r-}r.(hXFalseh}r/(h]h]h]h]h]uhj)h]r0hXFalser1r2}r3(hXFalsejDNjPNjjihj-ubahj]ubahj-ubehj.ubaubjZ)r4}r5(hXIBuild haddock documentation which includes unexposed modules and symbols.r6hjjDjwihj]h}r7(h]h]h]h]h]ujPMhjjih]r8hXIBuild haddock documentation which includes unexposed modules and symbols.r9r:}r;(hj6jDNjPNjjihj4ubaubjZ)r<}r=(hXYThe command line variant of this flag is ``--internal`` (for the ``haddock`` subcommand).hjjDjwihj]h}r>(h]h]h]h]h]ujPMkjjih]r?(hX)The command line variant of this flag is r@rA}rB(hX)The command line variant of this flag is jDNjPNjjihj<ubj)rC}rD(hX``--internal``h}rE(h]h]h]h]h]uhj<h]rFhX --internalrGrH}rI(hX --internalhjCubahjubhX (for the rJrK}rL(hX (for the jDNjPNjjihj<ubj)rM}rN(hX ``haddock``h}rO(h]h]h]h]h]uhj<h]rPhXhaddockrQrR}rS(hXhaddockhjMubahjubhX subcommand).rTrU}rV(hX subcommand).jDNjPNjjihj<ubeubeubeubj )rW}rX(hUhjsjDjwihjnh}rY(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rZ}r[(hUhjsjDjwihj h}r\(j j Xcabalh]h]h]h]h]j X cfg-fieldr]j j]ujPNjjih]r^(j )r_}r`(hXhaddock-css: pathhjZjDjwihj h}ra(h]rbjah]h]h]h]j ujPNjjih]rc(j )rd}re(hUhj_jDjwihjnh}rf(h]h]h]h]h]Uentries]rg(j! X"haddock-css ; cabal project optionjUNtrhaujPNjjih]ubj# )ri}rj(hjhj_jDjwihj& h}rk(jjh]h]h]h]h]ujPNjjih]rlhX haddock-cssrmrn}ro(hUjDNjPNjjihjiubaubj, )rp}rq(hj/ hj_jDjwihj0 h}rr(jjh]h]h]h]h]ujPNjjih]rshX: rtru}rv(hUjDNjPNjjihjpubaubj6 )rw}rx(hXpathhj_jDjwihj9 h}ry(jjh]h]h]h]h]ujPNjjih]rzhXpathr{r|}r}(hUjDNjPNjjihjwubaubeubjh)r~}r(hUhjZjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(jZ)r}r(hXeThe CSS file that should be used to style the generated documentation (overriding haddock's default.)rhj~jDjwihj]h}r(h]h]h]h]h]ujPMqjjih]rhXgThe CSS file that should be used to style the generated documentation (overriding haddock’s default.)rr}r(hjjDNjPNjjihjubaubjZ)r}r(hXTThe command line variant of this flag is ``--css`` (for the ``haddock`` subcommand).hj~jDjwihj]h}r(h]h]h]h]h]ujPMtjjih]r(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihjubj)r}r(hX ``--css``h}r(h]h]h]h]h]uhjh]rhX--cssrr}r(hX--csshjubahjubhX (for the rr}r(hX (for the jDNjPNjjihjubj)r}r(hX ``haddock``h}r(h]h]h]h]h]uhjh]rhXhaddockrr}r(hXhaddockhjubahjubhX subcommand).rr}r(hX subcommand).jDNjPNjjihjubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r(hX!haddock-hyperlink-source: booleanhjjDjwihj h}r(h]rjah]h]h]h]j ujPNjjih]r(j )r}r(hUhjjDjwihjnh}r(h]h]h]h]h]Uentries]r(j! X/haddock-hyperlink-source ; cabal project optionjUNtraujPNjjih]ubj# )r}r(hjhjjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXhaddock-hyperlink-sourcerr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: r¦ræ}rĦ(hUjDNjPNjjihjubaubj6 )rŦ}rƦ(hXbooleanhjjDjwihj9 h}rǦ(jjh]h]h]h]h]ujPNjjih]rȦhXbooleanrɦrʦ}r˦(hUjDNjPNjjihjŦubaubeubjh)r̦}rͦ(hUhjjDjwihjA h}rΦ(h]h]h]h]h]ujPNjjih]rϦ(j)rЦ}rѦ(hUhj̦jDjwihjh}rҦ(h]h]h]h]h]ujPNjjih]rӦj)rԦ}rզ(hUh}r֦(h]h]h]h]h]uhjЦh]rצ(j )rئ}r٦(hX Default valuehjԦjDjwihj h}rڦ(h]h]h]h]h]ujPKh]rۦhX Default valuerܦrݦ}rަ(hUhjئubaubj)rߦ}r(hUh}r(h]h]h]h]h]uhjԦh]rjZ)r}r(hXFalseh}r(h]h]h]h]h]uhjߦh]rhXFalserr}r(hXFalsejDNjPNjjihjubahj]ubahj-ubehj.ubaubjZ)r}r(hX_Generated hyperlinked source code using `HsColour`_, and have Haddock documentation link to it.hj̦jDjwihj]h}r(h]h]h]h]h]ujPM|jjih]r(hX(Generated hyperlinked source code using rr}r(hX(Generated hyperlinked source code using jDNjPNjjihjubj!)r}r(hX `HsColour`_j$Khjhj%h}r(UnameXHsColourrj] jh]h]h]h]h]uh]rhXHsColourrr}r(hjhjubaubhX,, and have Haddock documentation link to it.rr}r(hX,, and have Haddock documentation link to it.jDNjPNjjihjubeubjZ)r}r(hXaThe command line variant of this flag is ``--hyperlink-source`` (for the ``haddock`` subcommand).hj̦jDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihjubj)r}r(hX``--hyperlink-source``h}r(h]h]h]h]h]uhjh]rhX--hyperlink-sourcerr}r (hX--hyperlink-sourcehjubahjubhX (for the r r }r (hX (for the jDNjPNjjihjubj)r }r(hX ``haddock``h}r(h]h]h]h]h]uhjh]rhXhaddockrr}r(hXhaddockhj ubahjubhX subcommand).rr}r(hX subcommand).jDNjPNjjihjubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r(j j Xcabalh]h]h]h]h]j X cfg-fieldrj jujPNjjih]r(j )r}r (hXhaddock-hscolour-css: pathhjjDjwihj h}r!(h]r"jpah]h]h]h]j ujPNjjih]r#(j )r$}r%(hUhjjDjwihjnh}r&(h]h]h]h]h]Uentries]r'(j! X+haddock-hscolour-css ; cabal project optionjpUNtr(aujPNjjih]ubj# )r)}r*(hjohjjDjwihj& h}r+(jjh]h]h]h]h]ujPNjjih]r,hXhaddock-hscolour-cssr-r.}r/(hUjDNjPNjjihj)ubaubj, )r0}r1(hj/ hjjDjwihj0 h}r2(jjh]h]h]h]h]ujPNjjih]r3hX: r4r5}r6(hUjDNjPNjjihj0ubaubj6 )r7}r8(hXpathhjjDjwihj9 h}r9(jjh]h]h]h]h]ujPNjjih]r:hXpathr;r<}r=(hUjDNjPNjjihj7ubaubeubjh)r>}r?(hUhjjDjwihjA h}r@(h]h]h]h]h]ujPNjjih]rA(jZ)rB}rC(hXcThe CSS file that should be used to style the generated hyperlinked source code (from `HsColour`_).hj>jDjwihj]h}rD(h]h]h]h]h]ujPMjjih]rE(hXVThe CSS file that should be used to style the generated hyperlinked source code (from rFrG}rH(hXVThe CSS file that should be used to style the generated hyperlinked source code (from jDNjPNjjihjBubj!)rI}rJ(hX `HsColour`_j$KhjBhj%h}rK(UnameXHsColourrLj] jh]h]h]h]h]uh]rMhXHsColourrNrO}rP(hjLhjIubaubhX).rQrR}rS(hX).jDNjPNjjihjBubeubjZ)rT}rU(hX]The command line variant of this flag is ``--hscolour-css`` (for the ``haddock`` subcommand).hj>jDjwihj]h}rV(h]h]h]h]h]ujPMjjih]rW(hX)The command line variant of this flag is rXrY}rZ(hX)The command line variant of this flag is jDNjPNjjihjTubj)r[}r\(hX``--hscolour-css``h}r](h]h]h]h]h]uhjTh]r^hX--hscolour-cssr_r`}ra(hX--hscolour-csshj[ubahjubhX (for the rbrc}rd(hX (for the jDNjPNjjihjTubj)re}rf(hX ``haddock``h}rg(h]h]h]h]h]uhjTh]rhhXhaddockrirj}rk(hXhaddockhjeubahjubhX subcommand).rlrm}rn(hX subcommand).jDNjPNjjihjTubeubeubeubj )ro}rp(hUhjsjDjwihjnh}rq(h]h]h]h]h]Uentries]ujPNjjih]ubjk)rr}rs(hUhjsjDjwihj h}rt(j j Xcabalh]h]h]h]h]j X cfg-fieldruj juujPNjjih]rv(j )rw}rx(hXhaddock-contents-location: URLhjrjDjwihj h}ry(h]rzjgah]h]h]h]j ujPNjjih]r{(j )r|}r}(hUhjwjDjwihjnh}r~(h]h]h]h]h]Uentries]r(j! X0haddock-contents-location ; cabal project optionjgUNtraujPNjjih]ubj# )r}r(hjfhjwjDjwihj& h}r(jjh]h]h]h]h]ujPNjjih]rhXhaddock-contents-locationrr}r(hUjDNjPNjjihjubaubj, )r}r(hj/ hjwjDjwihj0 h}r(jjh]h]h]h]h]ujPNjjih]rhX: rr}r(hUjDNjPNjjihjubaubj6 )r}r(hXURLhjwjDjwihj9 h}r(jjh]h]h]h]h]ujPNjjih]rhXURLrr}r(hUjDNjPNjjihjubaubeubjh)r}r(hUhjrjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(jZ)r}r(hX@A baked-in URL to be used as the location for the contents page.rhjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]rhX@A baked-in URL to be used as the location for the contents page.rr}r(hjjDNjPNjjihjubaubjZ)r}r(hXbThe command line variant of this flag is ``--contents-location`` (for the ``haddock`` subcommand).hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihjubj)r}r(hX``--contents-location``h}r(h]h]h]h]h]uhjh]rhX--contents-locationrr}r(hX--contents-locationhjubahjubhX (for the rr}r(hX (for the jDNjPNjjihjubj)r}r(hX ``haddock``h}r(h]h]h]h]h]uhjh]rhXhaddockrr}r(hXhaddockhjubahjubhX subcommand).rr}r(hX subcommand).jDNjPNjjihjubeubeubeubj )r}r(hUhjsjDjwihjnh}r(h]h]h]h]h]Uentries]ujPNjjih]ubjk)r}r(hUhjsjDjwihj h}r§(j j Xcabalh]h]h]h]h]j X cfg-fieldrçj jçujPNjjih]rħ(j )rŧ}rƧ(hX haddock-keep-temp-files: booleanhjjDjwihj h}rǧ(h]rȧjZah]h]h]h]j ujPNjjih]rɧ(j )rʧ}r˧(hUhjŧjDjwihjnh}ŗ(h]h]h]h]h]Uentries]rͧ(j! X.haddock-keep-temp-files ; cabal project optionjZUNtrΧaujPNjjih]ubj# )rϧ}rЧ(hjYhjŧjDjwihj& h}rѧ(jjh]h]h]h]h]ujPNjjih]rҧhXhaddock-keep-temp-filesrӧrԧ}rէ(hUjDNjPNjjihjϧubaubj, )r֧}rק(hj/ hjŧjDjwihj0 h}rا(jjh]h]h]h]h]ujPNjjih]r٧hX: rڧrۧ}rܧ(hUjDNjPNjjihj֧ubaubj6 )rݧ}rާ(hXbooleanhjŧjDjwihj9 h}rߧ(jjh]h]h]h]h]ujPNjjih]rhXbooleanrr}r(hUjDNjPNjjihjݧubaubeubjh)r}r(hUhjjDjwihjA h}r(h]h]h]h]h]ujPNjjih]r(jZ)r}r(hXKeep temporary files.rhjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]rhXKeep temporary files.rr}r(hjjDNjPNjjihjubaubjZ)r}r(hX`The command line variant of this flag is ``--keep-temp-files`` (for the ``haddock`` subcommand).hjjDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX)The command line variant of this flag is rr}r(hX)The command line variant of this flag is jDNjPNjjihjubj)r}r(hX``--keep-temp-files``h}r(h]h]h]h]h]uhjh]rhX--keep-temp-filesrr}r(hX--keep-temp-fileshjubahjubhX (for the rr}r(hX (for the jDNjPNjjihjubj)r}r(hX ``haddock``h}r(h]h]h]h]h]uhjh]rhXhaddockrr}r(hXhaddockhjubahjubhX subcommand).rr }r (hX subcommand).jDNjPNjjihjubeubeubeubeubjDjwihjKh}r (h]UlevelKh]h]Usourcejwih]h]UlineMHUtypeUSEVEREr ujPMIjjih]r (jZ)r}r(hXTitle level inconsistent:h}r(h]h]h]h]h]uhjsh]rhXTitle level inconsistent:rr}r(hUhjubahj]ubj)r}r(hX'Object code options ^^^^^^^^^^^^^^^^^^^hjsjDjwihjh}r(jjh]h]h]h]h]uh]rhX'Object code options ^^^^^^^^^^^^^^^^^^^rr}r(hUhjubaubeubj)r}r(hUhjsjDjwihjKh}r(h]UlevelKh]h]Usourcejwih]h]UlineMUtypej ujPMjjih]r(jZ)r }r!(hXTitle level inconsistent:h}r"(h]h]h]h]h]uhjh]r#hXTitle level inconsistent:r$r%}r&(hUhj ubahj]ubj)r'}r((hX%Executable options ^^^^^^^^^^^^^^^^^^hjjDjwihjh}r)(jjh]h]h]h]h]uh]r*hX%Executable options ^^^^^^^^^^^^^^^^^^r+r,}r-(hUhj'ubaubeubj)r.}r/(hUhjsjDjwihjKh}r0(h]UlevelKh]h]Usourcejwih]h]UlineMUtypej ujPMjjih]r1(jZ)r2}r3(hXTitle level inconsistent:h}r4(h]h]h]h]h]uhj.h]r5hXTitle level inconsistent:r6r7}r8(hUhj2ubahj]ubj)r9}r:(hX/Dynamic linking options ^^^^^^^^^^^^^^^^^^^^^^^hj.jDjwihjh}r;(jjh]h]h]h]h]uh]r<hX/Dynamic linking options ^^^^^^^^^^^^^^^^^^^^^^^r=r>}r?(hUhj9ubaubeubj)r@}rA(hUhjsjDjwihjKh}rB(h]UlevelKh]h]Usourcejwih]h]UlineM Utypej ujPM jjih]rC(jZ)rD}rE(hXTitle level inconsistent:h}rF(h]h]h]h]h]uhj@h]rGhXTitle level inconsistent:rHrI}rJ(hUhjDubahj]ubj)rK}rL(hX-Static linking options ^^^^^^^^^^^^^^^^^^^^^^hj@jDjwihjh}rM(jjh]h]h]h]h]uh]rNhX-Static linking options ^^^^^^^^^^^^^^^^^^^^^^rOrP}rQ(hUhjKubaubeubj)rR}rS(hUhjsjDjwihjKh}rT(h]UlevelKh]h]Usourcejwih]h]UlineM&Utypej ujPM'jjih]rU(jZ)rV}rW(hXTitle level inconsistent:h}rX(h]h]h]h]h]uhjRh]rYhXTitle level inconsistent:rZr[}r\(hUhjVubahj]ubj)r]}r^(hXEForeign function interface options ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^hjRjDjwihjh}r_(jjh]h]h]h]h]uh]r`hXEForeign function interface options ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^rarb}rc(hUhj]ubaubeubj)rd}re(hUhjsjDjwihjKh}rf(h]UlevelKh]h]Usourcejwih]h]UlineMZUtypej ujPM[jjih]rg(jZ)rh}ri(hXTitle level inconsistent:h}rj(h]h]h]h]h]uhjdh]rkhXTitle level inconsistent:rlrm}rn(hUhjhubahj]ubj)ro}rp(hX#Profiling options ^^^^^^^^^^^^^^^^^hjdjDjwihjh}rq(jjh]h]h]h]h]uh]rrhX#Profiling options ^^^^^^^^^^^^^^^^^rsrt}ru(hUhjoubaubeubj)rv}rw(hUhjsjDjwihjKh}rx(h]UlevelKh]h]Usourcejwih]h]UlineMUtypej ujPMjjih]ry(jZ)rz}r{(hXTitle level inconsistent:h}r|(h]h]h]h]h]uhjvh]r}hXTitle level inconsistent:r~r}r(hUhjzubahj]ubj)r}r(hX!Coverage options ^^^^^^^^^^^^^^^^hjvjDjwihjh}r(jjh]h]h]h]h]uh]rhX!Coverage options ^^^^^^^^^^^^^^^^rr}r(hUhjubaubeubj)r}r(hUhjsjDjwihjKh}r(h]UlevelKh]h]Usourcejwih]h]UlineMUtypej ujPMjjih]r(jZ)r}r(hXTitle level inconsistent:h}r(h]h]h]h]h]uhjh]rhXTitle level inconsistent:rr}r(hUhjubahj]ubj)r}r(hXHaddock options ^^^^^^^^^^^^^^^hjjDjwihjh}r(jjh]h]h]h]h]uh]rhXHaddock options ^^^^^^^^^^^^^^^rr}r(hUhjubaubeubj)r}r(hUhjjDjwihjKh}r(h]UlevelKh]h]Usourcejwih]h]UlineMUtypej ujPMjjih]r(jZ)r}r(hXTitle level inconsistent:h}r(h]h]h]h]h]uhjh]rhXTitle level inconsistent:rr}r(hUhjubahj]ubj)r}r(hX/Advanced solver options ^^^^^^^^^^^^^^^^^^^^^^^hjjDjwihjh}r(jjh]h]h]h]h]uh]rhX/Advanced solver options ^^^^^^^^^^^^^^^^^^^^^^^rr}r(hUhjubaubeubejKNjKNjKKjK}r(jijsjiU(how-can-i-profile-my-library-applicationrjiU quickstartrjij_jPjQjijjijnjijsjij*jijjijnjijjijqjijrljij jijjijmjijjijFojijjijjij=jijljijjijkjijjijcojijjijjijnjiU how-it-worksrjijyjij+wjijpjiUdeveloping-multiple-packagesrjijjijqjijjjijpjijjij#njijOjiUwhere-are-my-build-productsrjijjijijijjiUcachingrjiUcookbookruh]r(j%L)r}r(hUhjijDjwihj(Lh}r(UlangXconsoleUlinenothresholdI9223372036854775807 h]h]h]h]h]ujPKjjih]ubjn)r}r(hUhjijDjwihjqh}r(h]h]h]h]rjah]rjiaujPKjjih]r(h)r}r(hhhjjDjwihhh}r(h]h]h]h]h]ujPKjjih]rhX Quickstartr¨rè}rĨ(hhjDNjPNjjihjubaubjZ)rŨ}rƨ(hX@Suppose that you are in a directory containing a single Cabal package which you wish to build (if you haven't set up a package yet check out `developing packages `__ for instructions). You can configure and build it using Nix-style local builds with this command (configuring is not necessary):hjjDjwihj]h}rǨ(h]h]h]h]h]ujPKjjih]rȨ(hXSuppose that you are in a directory containing a single Cabal package which you wish to build (if you haven’t set up a package yet check out rɨrʨ}r˨(hXSuppose that you are in a directory containing a single Cabal package which you wish to build (if you haven't set up a package yet check out jDNjPNjjihjŨubj!)r̨}rͨ(hX2`developing packages `__h}rΨ(UnameXdeveloping packagesj] Xdeveloping-packages.htmlh]h]h]h]h]uhjŨh]rϨhXdeveloping packagesrШrѨ}rҨ(hXdeveloping packageshj̨ubahj%ubhX for instructions). You can configure and build it using Nix-style local builds with this command (configuring is not necessary):rӨrԨ}rը(hX for instructions). You can configure and build it using Nix-style local builds with this command (configuring is not necessary):jDNjPNjjihjŨubeubj)r֨}rר(hX$ cabal v2-buildhjjDjwihjh}rب(jjh]h]h]h]h]ujPKjjih]r٨hX$ cabal v2-buildrڨrۨ}rܨ(hUhj֨ubaubjZ)rݨ}rި(hX9To open a GHCi shell with this package, use this command:rߨhjjDjwihj]h}r(h]h]h]h]h]ujPKjjih]rhX9To open a GHCi shell with this package, use this command:rr}r(hjߨjDNjPNjjihjݨubaubj)r}r(hX$ cabal v2-replhjjDjwihjh}r(jjh]h]h]h]h]ujPKjjih]rhX$ cabal v2-replrr}r(hUhjubaubjZ)r}r(hX?To run an executable defined in this package, use this command:rhjjDjwihj]h}r(h]h]h]h]h]ujPKjjih]rhX?To run an executable defined in this package, use this command:rr}r(hjjDNjPNjjihjubaubj)r}r(hX2$ cabal v2-run [executable args]hjjDjwihjh}r(jjh]h]h]h]h]ujPKjjih]rhX2$ cabal v2-run [executable args]rr}r(hUhjubaubjn)r}r(hUhjjDjwihjqh}r(h]h]h]h]rjah]rjiaujPKjjih]r(h)r}r(hXDeveloping multiple packagesrhjjDjwihhh}r(h]h]h]h]h]ujPKjjih]rhXDeveloping multiple packagesrr}r(hjjDNjPNjjihjubaubjZ)r }r (hXMany Cabal projects involve multiple packages which need to be built together. To build multiple Cabal packages, you need to first create a ``cabal.project`` file which declares where all the local package directories live. For example, in the Cabal repository, there is a root directory with a folder per package, e.g., the folders ``Cabal`` and ``cabal-install``. The ``cabal.project`` file specifies each folder as part of the project:hjjDjwihj]h}r (h]h]h]h]h]ujPKjjih]r (hXMany Cabal projects involve multiple packages which need to be built together. To build multiple Cabal packages, you need to first create a r r}r(hXMany Cabal projects involve multiple packages which need to be built together. To build multiple Cabal packages, you need to first create a jDNjPNjjihj ubj)r}r(hX``cabal.project``h}r(h]h]h]h]h]uhj h]rhX cabal.projectrr}r(hX cabal.projecthjubahjubhX file which declares where all the local package directories live. For example, in the Cabal repository, there is a root directory with a folder per package, e.g., the folders rr}r(hX file which declares where all the local package directories live. For example, in the Cabal repository, there is a root directory with a folder per package, e.g., the folders jDNjPNjjihj ubj)r}r(hX ``Cabal``h}r(h]h]h]h]h]uhj h]rhXCabalrr}r (hXCabalhjubahjubhX and r!r"}r#(hX and jDNjPNjjihj ubj)r$}r%(hX``cabal-install``h}r&(h]h]h]h]h]uhj h]r'hX cabal-installr(r)}r*(hX cabal-installhj$ubahjubhX. The r+r,}r-(hX. The jDNjPNjjihj ubj)r.}r/(hX``cabal.project``h}r0(h]h]h]h]h]uhj h]r1hX cabal.projectr2r3}r4(hX cabal.projecthj.ubahjubhX3 file specifies each folder as part of the project:r5r6}r7(hX3 file specifies each folder as part of the project:jDNjPNjjihj ubeubj)r8}r9(hX)packages: Cabal/ cabal-install/hjjDjwihjh}r:(jjXcabaljjh]h]h]j}h]h]ujPK'jjih]r;hX)packages: Cabal/ cabal-install/r<r=}r>(hUhj8ubaubjZ)r?}r@(hXThe expectation is that a ``cabal.project`` is checked into your source control, to be used by all developers of a project. If you need to make local changes, they can be placed in ``cabal.project.local`` (which should not be checked in.)hjjDjwihj]h}rA(h]h]h]h]h]ujPK,jjih]rB(hXThe expectation is that a rCrD}rE(hXThe expectation is that a jDNjPNjjihj?ubj)rF}rG(hX``cabal.project``h}rH(h]h]h]h]h]uhj?h]rIhX cabal.projectrJrK}rL(hX cabal.projecthjFubahjubhX is checked into your source control, to be used by all developers of a project. If you need to make local changes, they can be placed in rMrN}rO(hX is checked into your source control, to be used by all developers of a project. If you need to make local changes, they can be placed in jDNjPNjjihj?ubj)rP}rQ(hX``cabal.project.local``h}rR(h]h]h]h]h]uhj?h]rShXcabal.project.localrTrU}rV(hXcabal.project.localhjPubahjubhX" (which should not be checked in.)rWrX}rY(hX" (which should not be checked in.)jDNjPNjjihj?ubeubjZ)rZ}r[(hXThen, to build every component of every package, from the top-level directory, run the command: (using cabal-install-2.0 or greater.)r\hjjDjwihj]h}r](h]h]h]h]h]ujPK1jjih]r^hXThen, to build every component of every package, from the top-level directory, run the command: (using cabal-install-2.0 or greater.)r_r`}ra(hj\jDNjPNjjihjZubaubj)rb}rc(hX$ cabal v2-buildhjjDjwihjh}rd(jjh]h]h]h]h]ujPK6jjih]rehX$ cabal v2-buildrfrg}rh(hUhjbubaubjZ)ri}rj(hXkTo build a specific package, you can either run ``v2-build`` from the directory of the package in question:hjjDjwihj]h}rk(h]h]h]h]h]ujPK8jjih]rl(hX0To build a specific package, you can either run rmrn}ro(hX0To build a specific package, you can either run jDNjPNjjihjiubj)rp}rq(hX ``v2-build``h}rr(h]h]h]h]h]uhjih]rshXv2-buildrtru}rv(hXv2-buildhjpubahjubhX/ from the directory of the package in question:rwrx}ry(hX/ from the directory of the package in question:jDNjPNjjihjiubeubj)rz}r{(hX#$ cd cabal-install $ cabal v2-buildhjjDjwihjh}r|(jjh]h]h]h]h]ujPK=jjih]r}hX#$ cd cabal-install $ cabal v2-buildr~r}r(hUhjzubaubjZ)r}r(hX}or you can pass the name of the package as an argument to ``cabal v2-build`` (this works in any subdirectory of the project):hjjDjwihj]h}r(h]h]h]h]h]ujPK@jjih]r(hX:or you can pass the name of the package as an argument to rr}r(hX:or you can pass the name of the package as an argument to jDNjPNjjihjubj)r}r(hX``cabal v2-build``h}r(h]h]h]h]h]uhjh]rhXcabal v2-buildrr}r(hXcabal v2-buildhjubahjubhX1 (this works in any subdirectory of the project):rr}r(hX1 (this works in any subdirectory of the project):jDNjPNjjihjubeubj)r}r(hX$ cabal v2-build cabal-installhjjDjwihjh}r(jjh]h]h]h]h]ujPKEjjih]rhX$ cabal v2-build cabal-installrr}r(hUhjubaubjZ)r}r(hXYou can also specify a specific component of the package to build. For example, to build a test suite named ``package-tests``, use the command:hjjDjwihj]h}r(h]h]h]h]h]ujPKGjjih]r(hXlYou can also specify a specific component of the package to build. For example, to build a test suite named rr}r(hXlYou can also specify a specific component of the package to build. For example, to build a test suite named jDNjPNjjihjubj)r}r(hX``package-tests``h}r(h]h]h]h]h]uhjh]rhX package-testsrr}r(hX package-testshjubahjubhX, use the command:rr}r(hX, use the command:jDNjPNjjihjubeubj)r}r(hX$ cabal v2-build package-testshjjDjwihjh}r(jjh]h]h]h]h]ujPKLjjih]rhX$ cabal v2-build package-testsrr}r(hUhjubaubjZ)r}r(hXTargets can be qualified with package names. So to request ``package-tests`` *from* the ``Cabal`` package, use ``Cabal:package-tests``.hjjDjwihj]h}r(h]h]h]h]h]ujPKNjjih]r(hX;Targets can be qualified with package names. So to request rr}r(hX;Targets can be qualified with package names. So to request jDNjPNjjihjubj)r}r(hX``package-tests``h}r(h]h]h]h]h]uhjh]rhX package-testsrr}r(hX package-testshjubahjubhX r}r(hX jDNjPNjjihjubj)r}r©(hX*from*h}ré(h]h]h]h]h]uhjh]rĩhXfromrũrƩ}rǩ(hXfromhjubahjubhX the rȩrɩ}rʩ(hX the jDNjPNjjihjubj)r˩}r̩(hX ``Cabal``h}rͩ(h]h]h]h]h]uhjh]rΩhXCabalrϩrЩ}rѩ(hXCabalhj˩ubahjubhX package, use rҩrө}rԩ(hX package, use jDNjPNjjihjubj)rթ}r֩(hX``Cabal:package-tests``h}rש(h]h]h]h]h]uhjh]rةhXCabal:package-testsr٩rک}r۩(hXCabal:package-testshjթubahjubhX.rܩ}rݩ(hX.jDNjPNjjihjubeubjZ)rީ}rߩ(hXUnlike sandboxes, there is no need to setup a sandbox or ``add-source`` projects; just check in ``cabal.project`` to your repository and ``v2-build`` will just work.hjjDjwihj]h}r(h]h]h]h]h]ujPKRjjih]r(hX9Unlike sandboxes, there is no need to setup a sandbox or rr}r(hX9Unlike sandboxes, there is no need to setup a sandbox or jDNjPNjjihjީubj)r}r(hX``add-source``h}r(h]h]h]h]h]uhjީh]rhX add-sourcerr}r(hX add-sourcehjubahjubhX projects; just check in rr}r(hX projects; just check in jDNjPNjjihjީubj)r}r(hX``cabal.project``h}r(h]h]h]h]h]uhjީh]rhX cabal.projectrr}r(hX cabal.projecthjubahjubhX to your repository and rr}r(hX to your repository and jDNjPNjjihjީubj)r}r(hX ``v2-build``h}r(h]h]h]h]h]uhjީh]rhXv2-buildrr}r(hXv2-buildhjubahjubhX will just work.rr}r(hX will just work.jDNjPNjjihjީubeubeubeubjn)r}r(hUhjijDjwihjqh}r(h]h]h]h]rjah]rjiaujPKWjjih]r(h)r }r (hXCookbookr hjjDjwihhh}r (h]h]h]h]h]ujPKWjjih]r hXCookbookrr}r(hj jDNjPNjjihj ubaubjn)r}r(hUhjjDjwihjqh}r(h]h]h]h]rjah]rjiaujPKZjjih]r(h)r}r(hX)How can I profile my library/application?rhjjDjwihhh}r(h]h]h]h]h]ujPKZjjih]rhX)How can I profile my library/application?rr}r(hjjDNjPNjjihjubaubjZ)r}r (hXHCreate or edit your ``cabal.project.local``, adding the following line::hjjDjwihj]h}r!(h]h]h]h]h]ujPK\jjih]r"(hXCreate or edit your r#r$}r%(hXCreate or edit your jDNjPNjjihjubj)r&}r'(hX``cabal.project.local``h}r((h]h]h]h]h]uhjh]r)hXcabal.project.localr*r+}r,(hXcabal.project.localhj&ubahjubhX, adding the following line:r-r.}r/(hX, adding the following line:jDNjPNjjihjubeubj)r0}r1(hXprofiling: TruehjjDjwihjh}r2(jjh]h]h]h]h]ujPK_jjih]r3hXprofiling: Truer4r5}r6(hUhj0ubaubjZ)r7}r8(hXNow, ``cabal v2-build`` will automatically build all libraries and executables with profiling. You can fine-tune the profiling settings for each package using :cfg-field:`profiling-detail`::hjjDjwihj]h}r9(h]h]h]h]h]ujPKajjih]r:(hXNow, r;r<}r=(hXNow, jDNjPNjjihj7ubj)r>}r?(hX``cabal v2-build``h}r@(h]h]h]h]h]uhj7h]rAhXcabal v2-buildrBrC}rD(hXcabal v2-buildhj>ubahjubhX will automatically build all libraries and executables with profiling. You can fine-tune the profiling settings for each package using rErF}rG(hX will automatically build all libraries and executables with profiling. You can fine-tune the profiling settings for each package using jDNjPNjjihj7ubjM)rH}rI(hX:cfg-field:`profiling-detail`hj7jDjwihjPh}rJ(UreftypeX cfg-fieldjRjSXprofiling-detailrKU refdomainXcabalrLh]h]U refexplicith]h]h]jVhjnNujPKah]rMj)rN}rO(hjKh}rP(h]h]rQ(j]jLXcabal-cfg-fieldrReh]h]h]uhjHh]rShXprofiling-detailrTrU}rV(hUhjNubahjubaubhX:rW}rX(hX:jDNjPNjjihj7ubeubj)rY}rZ(hX2package p profiling-detail: toplevel-functionshjjDjwihjh}r[(jjh]h]h]h]h]ujPKejjih]r\hX2package p profiling-detail: toplevel-functionsr]r^}r_(hUhjYubaubjZ)r`}ra(hXdAlternately, you can call ``cabal v2-build --enable-profiling`` to temporarily build with profiling.hjjDjwihj]h}rb(h]h]h]h]h]ujPKhjjih]rc(hXAlternately, you can call rdre}rf(hXAlternately, you can call jDNjPNjjihj`ubj)rg}rh(hX%``cabal v2-build --enable-profiling``h}ri(h]h]h]h]h]uhj`h]rjhX!cabal v2-build --enable-profilingrkrl}rm(hX!cabal v2-build --enable-profilinghjgubahjubhX% to temporarily build with profiling.rnro}rp(hX% to temporarily build with profiling.jDNjPNjjihj`ubeubeubeubjijjjsehUjeRNjfR}rqjjR}rr(Xhscolour]rs(jjIeXabnf]rtjwaXhoogle]rujGaujqV]rvjsV]rwjuV]rxjo]ryjjijxVNjyV]rz(j)r{}r|(hUh}r}(h]UlevelKh]h]Usourcejwih]h]UlineMUtypejKuh]r~jZ)r}r(hUh}r(h]h]h]h]h]uhj{h]rhX-Hyperlink target "index-0" is not referenced.rr}r(hUhjubahj]ubahjKubj)r}r(hUh}r(h]UlevelKh]h]Usourcejwih]h]UtypejKuh]rjZ)r}r(hUh}r(h]h]h]h]h]uhjh]rhX-Hyperlink target "index-1" is not referenced.rr}r(hUhjubahj]ubahjKubj)r}r(hUh}r(h]UlevelKh]h]Usourcejwih]h]UlineMsUtypejKuh]rjZ)r}r(hUh}r(h]h]h]h]h]uhjh]rhX<Hyperlink target "cmdoption-project-file" is not referenced.rr}r(hUhjubahj]ubahjKubj)r}r(hUh}r(h]UlevelKh]h]Usourcejwih]h]UlineMUtypejKuh]rjZ)r}r(hUh}r(h]h]h]h]h]uhjh]rhX-Hyperlink target "index-2" is not referenced.rr}r(hUhjubahj]ubahjKubj)r}r(hUh}r(h]UlevelKh]h]Usourcejih]h]UlineMuUtypejKuh]rjZ)r}r(hUh}r(h]h]h]h]h]uhjh]rhX?Hyperlink target "package-versioning-policy" is not referenced.rr}r(hUhjubahj]ubahjKubj)r}r(hUh}r(h]UlevelKh]h]Usourcejih]h]UlineMvUtypejKuh]rjZ)r}r(hUh}r(h]h]h]h]h]uhjh]rhX)Hyperlink target "pvp" is not referenced.rr}r(hUhjubahj]ubahjKubj)r}r(hUh}r(h]UlevelKh]h]Usourcejih]h]UlineMxUtypejKuh]rjZ)r}rª(hUh}rê(h]h]h]h]h]uhjh]rĪhX-Hyperlink target "hackage" is not referenced.rŪrƪ}rǪ(hUhjubahj]ubahjKubj)rȪ}rɪ(hUh}rʪ(h]UlevelKh]h]Usourcejih]h]UlineMzUtypejKuh]r˪jZ)r̪}rͪ(hUh}rΪ(h]h]h]h]h]uhjȪh]rϪhX-Hyperlink target "haskell" is not referenced.rЪrѪ}rҪ(hUhj̪ubahj]ubahjKubj)rӪ}rԪ(hUh}rժ(h]UlevelKh]h]Usourcejih]h]UlineM|UtypejKuh]r֪jZ)rת}rت(hUh}r٪(h]h]h]h]h]uhjӪh]rڪhX-Hyperlink target "haddock" is not referenced.r۪rܪ}rݪ(hUhjתubahj]ubahjKubj)rު}rߪ(hUh}r(h]UlevelKh]h]Usourcejih]h]UlineM~UtypejKuh]rjZ)r}r(hUh}r(h]h]h]h]h]uhjުh]rhX*Hyperlink target "alex" is not referenced.rr}r(hUhjubahj]ubahjKubj)r}r(hUh}r(h]UlevelKh]h]Usourcejih]h]UlineMUtypejKuh]rjZ)r}r(hUh}r(h]h]h]h]h]uhjh]rhX+Hyperlink target "happy" is not referenced.rr}r(hUhjubahj]ubahjKubj)r}r(hUh}r(h]UlevelKh]h]Usourcejih]h]UlineMUtypejKuh]rjZ)r}r(hUh}r(h]h]h]h]h]uhjh]rhX+Hyperlink target "cpphs" is not referenced.rr}r(hUhjubahj]ubahjKubj)r}r(hUh}r(h]UlevelKh]h]Usourcejih]h]UlineMUtypejKuh]rjZ)r}r(hUh}r(h]h]h]h]h]uhjh]rhX.Hyperlink target "backpack" is not referenced.rr}r (hUhjubahj]ubahjKubejVNjVKjV]r j}r jZ]r jZ(jZor }r(jZKjZNjZjZjZjZNjZNjZjjZjZj ZNj!ZKj"Zj#Zj$ZNj%ZKj&ZNhNj'Zj(Zj)ZNj*Zj+Zj,Zj-ZKj.ZNj/ZKj0ZNj1Zj2Zj3ZKj4ZNj5ZNj6Zj7Zj8ZNj9ZNj:ZNj;ZjZj?Zj@ZNjAZjBZjCZNjDZUjEZjFZKjGZjHZjIZjwijJZNjKZNjLZjMZjNZjOZjPZjQZj,ZjRZjSZjTZjUZNjVZ]jWZjXZKjYZNubjZZKj[Z}r(jj_j"jʄjjj7j5jjejj%jjgj2jjj|jMjKj?jzjjjjcj*jzjcjvjLjxjjjjjjjjjXjנj=jjjjvjvj!j؋jnjwjjDjzjjj jFjj0jjjΑjjajjzjJjjljlj_j[jjjvj^jjjjj=j9jejjjjjsjjjjۍjjnjj~jjljajVjyjtjrljnljjjjjjyj1jjӊjj}j+wj'wjjjjzjj&jjIyjjtj#jnj jVjjzjjjijG)r}r(hjzihjijDjwij}hjKh}r(jC\j|ih]rjiah]h]h]rjOah]ujPMj }rjijish]r(h)r}r(hjihjjDjwihhh}r(h]h]h]h]h]ujPMh]rhXTodorr}r(hUhjubaubjZ)r}r(hjzihjjDjwihj]h}r (h]h]h]h]h]ujPMh]r!hX:Document JSON schema (including version history of schema)r"r#}r$(hjzihjubaubeubjsjsjjjjġjjj9jjpjpj)jj#njnjjn)r%}r&(hUhjijDjwihjqh}r'(h]h]h]h]r(jah]r)jiaujPKjjih]r*(h)r+}r,(hXWhere are my build products?r-hj%jDjwihhh}r.(h]h]h]h]h]ujPKjjih]r/hXWhere are my build products?r0r1}r2(hj-jDNjPNjjihj+ubaubjZ)r3}r4(hXrA major deficiency in the current implementation of v2-build is that there is no programmatic way to access the location of build products. The location of the build products is intended to be an internal implementation detail of v2-build, but we also understand that many unimplemented features can only be reasonably worked around by accessing build products directly.r5hj%jDjwihj]h}r6(h]h]h]h]h]ujPKjjih]r7hXrA major deficiency in the current implementation of v2-build is that there is no programmatic way to access the location of build products. The location of the build products is intended to be an internal implementation detail of v2-build, but we also understand that many unimplemented features can only be reasonably worked around by accessing build products directly.r8r9}r:(hj5jDNjPNjjihj3ubaubjZ)r;}r<(hX`The location where build products can be found varies depending on the version of cabal-install:r=hj%jDjwihj]h}r>(h]h]h]h]h]ujPKjjih]r?hX`The location where build products can be found varies depending on the version of cabal-install:r@rA}rB(hj=jDNjPNjjihj;ubaubj )rC}rD(hUhj%jDjwihj h}rE(j X-h]h]h]h]h]ujPKjjih]rF(j )rG}rH(hXIn cabal-install-1.24, the dist directory for a package ``p-0.1`` is stored in ``dist-newstyle/build/p-0.1``. For example, if you built an executable or test suite named ``pexe``, it would be located at ``dist-newstyle/build/p-0.1/build/pexe/pexe``. hjCjDjwihj h}rI(h]h]h]h]h]ujPNjjih]rJjZ)rK}rL(hXIn cabal-install-1.24, the dist directory for a package ``p-0.1`` is stored in ``dist-newstyle/build/p-0.1``. For example, if you built an executable or test suite named ``pexe``, it would be located at ``dist-newstyle/build/p-0.1/build/pexe/pexe``.hjGjDjwihj]h}rM(h]h]h]h]h]ujPKh]rN(hX8In cabal-install-1.24, the dist directory for a package rOrP}rQ(hX8In cabal-install-1.24, the dist directory for a package hjKubj)rR}rS(hX ``p-0.1``h}rT(h]h]h]h]h]uhjKh]rUhXp-0.1rVrW}rX(hXp-0.1hjRubahjubhX is stored in rYrZ}r[(hX is stored in hjKubj)r\}r](hX``dist-newstyle/build/p-0.1``h}r^(h]h]h]h]h]uhjKh]r_hXdist-newstyle/build/p-0.1r`ra}rb(hXdist-newstyle/build/p-0.1hj\ubahjubhX>. For example, if you built an executable or test suite named rcrd}re(hX>. For example, if you built an executable or test suite named hjKubj)rf}rg(hX``pexe``h}rh(h]h]h]h]h]uhjKh]rihXpexerjrk}rl(hXpexehjfubahjubhX, it would be located at rmrn}ro(hX, it would be located at hjKubj)rp}rq(hX-``dist-newstyle/build/p-0.1/build/pexe/pexe``h}rr(h]h]h]h]h]uhjKh]rshX)dist-newstyle/build/p-0.1/build/pexe/pexertru}rv(hX)dist-newstyle/build/p-0.1/build/pexe/pexehjpubahjubhX.rw}rx(hX.hjKubeubaubj )ry}rz(hX4In cabal-install-2.0, the dist directory for a package ``p-0.1`` defining a library built with GHC 8.0.1 on 64-bit Linux is ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1``. When per-component builds are enabled (any non-Custom package), a subcomponent like an executable or test suite named ``pexe`` will be stored at ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/c/pexe``; thus, the full path of the executable is ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/c/pexe/build/pexe/pexe`` (you can see why we want this to be an implementation detail!) hjCjDjwihj h}r{(h]h]h]h]h]ujPNjjih]r|jZ)r}}r~(hX3In cabal-install-2.0, the dist directory for a package ``p-0.1`` defining a library built with GHC 8.0.1 on 64-bit Linux is ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1``. When per-component builds are enabled (any non-Custom package), a subcomponent like an executable or test suite named ``pexe`` will be stored at ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/c/pexe``; thus, the full path of the executable is ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/c/pexe/build/pexe/pexe`` (you can see why we want this to be an implementation detail!)hjyjDjwihj]h}r(h]h]h]h]h]ujPKh]r(hX7In cabal-install-2.0, the dist directory for a package rr}r(hX7In cabal-install-2.0, the dist directory for a package hj}ubj)r}r(hX ``p-0.1``h}r(h]h]h]h]h]uhj}h]rhXp-0.1rr}r(hXp-0.1hjubahjubhX< defining a library built with GHC 8.0.1 on 64-bit Linux is rr}r(hX< defining a library built with GHC 8.0.1 on 64-bit Linux is hj}ubj)r}r(hX4``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1``h}r(h]h]h]h]h]uhj}h]rhX0dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1rr}r(hX0dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1hjubahjubhXx. When per-component builds are enabled (any non-Custom package), a subcomponent like an executable or test suite named rr}r(hXx. When per-component builds are enabled (any non-Custom package), a subcomponent like an executable or test suite named hj}ubj)r}r(hX``pexe``h}r(h]h]h]h]h]uhj}h]rhXpexerr}r(hXpexehjubahjubhX will be stored at rr}r(hX will be stored at hj}ubj)r}r(hX;``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/c/pexe``h}r(h]h]h]h]h]uhj}h]rhX7dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/c/pexerr}r(hX7dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/c/pexehjubahjubhX+; thus, the full path of the executable is rr}r(hX+; thus, the full path of the executable is hj}ubj)r}r(hXK``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/c/pexe/build/pexe/pexe``h}r(h]h]h]h]h]uhj}h]rhXGdist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/c/pexe/build/pexe/pexerr}r(hXGdist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/c/pexe/build/pexe/pexehjubahjubhX? (you can see why we want this to be an implementation detail!)rr}r(hX? (you can see why we want this to be an implementation detail!)hj}ubeubaubj )r}r(hX6In cabal-install-2.2 and above, the ``/c/`` part of the above path is replaced with one of ``/l/``, ``/x/``, ``/f/``, ``/t/``, or ``/b/``, depending on the type of component (sublibrary, executable, foreign library, test suite, or benchmark respectively). So the full path to an executable named ``pexe`` compiled with GHC 8.0.1 on a 64-bit Linux is now ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/x/pexe/build/pexe/pexe``; for a benchmark named ``pbench`` it now is ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/b/pbench/build/pbench/pbench``; hjCjDNhj h}r(h]h]h]h]h]ujPNjjih]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hX.In cabal-install-2.2 and above, the ``/c/`` part of the above path is replaced with one of ``/l/``, ``/x/``, ``/f/``, ``/t/``, or ``/b/``, depending on the type of component (sublibrary, executable, foreign library, test suite, or benchmark respectively). So the full path to an executable named ``pexe`` compiled with GHC 8.0.1 on a 64-bit Linux is now ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/x/pexe/build/pexe/pexe``; for a benchmark named ``pbench`` it now is ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/b/pbench/build/pbench/pbench``; hjjDjwihjh}r(h]h]h]h]h]ujPKh]r(j)r«}rë(hXBIn cabal-install-2.2 and above, the ``/c/`` part of the above pathhjjDjwihjh}rī(h]h]h]h]h]ujPKh]rū(hX$In cabal-install-2.2 and above, the rƫrǫ}rȫ(hX$In cabal-install-2.2 and above, the hj«ubj)rɫ}rʫ(hX``/c/``h}r˫(h]h]h]h]h]uhj«h]r̫hX/c/rͫrΫ}rϫ(hX/c/hjɫubahjubhX part of the above pathrЫrѫ}rҫ(hX part of the above pathhj«ubeubj)rӫ}rԫ(hUh}rի(h]h]h]h]h]uhjh]r֫jZ)r׫}rث(hXis replaced with one of ``/l/``, ``/x/``, ``/f/``, ``/t/``, or ``/b/``, depending on the type of component (sublibrary, executable, foreign library, test suite, or benchmark respectively). So the full path to an executable named ``pexe`` compiled with GHC 8.0.1 on a 64-bit Linux is now ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/x/pexe/build/pexe/pexe``; for a benchmark named ``pbench`` it now is ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/b/pbench/build/pbench/pbench``;hjӫjDjwihj]h}r٫(h]h]h]h]h]ujPKh]rګ(hXis replaced with one of r۫rܫ}rݫ(hXis replaced with one of hj׫ubj)rޫ}r߫(hX``/l/``h}r(h]h]h]h]h]uhj׫h]rhX/l/rr}r(hX/l/hjޫubahjubhX, rr}r(hX, rhj׫ubj)r}r(hX``/x/``h}r(h]h]h]h]h]uhj׫h]rhX/x/rr}r(hX/x/hjubahjubhX, rr}r(hX, hj׫ubj)r}r(hX``/f/``h}r(h]h]h]h]h]uhj׫h]rhX/f/rr}r(hX/f/hjubahjubhX, rr}r(hjhj׫ubj)r}r(hX``/t/``h}r(h]h]h]h]h]uhj׫h]rhX/t/rr}r(hX/t/hjubahjubhX, or rr}r(hX, or hj׫ubj)r}r(hX``/b/``h}r (h]h]h]h]h]uhj׫h]r hX/b/r r }r (hX/b/hjubahjubhX, depending on the type of component (sublibrary, executable, foreign library, test suite, or benchmark respectively). So the full path to an executable named rr}r(hX, depending on the type of component (sublibrary, executable, foreign library, test suite, or benchmark respectively). So the full path to an executable named hj׫ubj)r}r(hX``pexe``h}r(h]h]h]h]h]uhj׫h]rhXpexerr}r(hXpexehjubahjubhX2 compiled with GHC 8.0.1 on a 64-bit Linux is now rr}r(hX2 compiled with GHC 8.0.1 on a 64-bit Linux is now hj׫ubj)r}r(hXK``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/x/pexe/build/pexe/pexe``h}r(h]h]h]h]h]uhj׫h]rhXGdist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/x/pexe/build/pexe/pexerr }r!(hXGdist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/x/pexe/build/pexe/pexehjubahjubhX; for a benchmark named r"r#}r$(hX; for a benchmark named hj׫ubj)r%}r&(hX ``pbench``h}r'(h]h]h]h]h]uhj׫h]r(hXpbenchr)r*}r+(hXpbenchhj%ubahjubhX it now is r,r-}r.(hX it now is hj׫ubj)r/}r0(hXQ``dist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/b/pbench/build/pbench/pbench``h}r1(h]h]h]h]h]uhj׫h]r2hXMdist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/b/pbench/build/pbench/pbenchr3r4}r5(hXMdist-newstyle/build/x86_64-linux/ghc-8.0.1/p-0.1/b/pbench/build/pbench/pbenchhj/ubahjubhX;r6}r7(hX;hj׫ubeubahj/ubeubahjubaubeubjZ)r8}r9(hX6The paths are a bit longer in 2.0 and above but the benefit is that you can transparently have multiple builds with different versions of GHC. We plan to add the ability to create aliases for certain build configurations, and more convenient paths to access particularly useful build products like executables.r:hj%jDjwihj]h}r;(h]h]h]h]h]ujPKjjih]r<hX6The paths are a bit longer in 2.0 and above but the benefit is that you can transparently have multiple builds with different versions of GHC. We plan to add the ability to create aliases for certain build configurations, and more convenient paths to access particularly useful build products like executables.r=r>}r?(hj:jDNjPNjjihj8ubaubeubjTj[jjjjhyjsjtjj_j0jjj|jjTjjwj}jgjjОjjjnjnjAjjjujcoj_ojPj~jjjjjjtjjLjjvjQjzjjj]jטjwj}jnjnjijijjUjj5jjjjj jWjjj%jjZjŧjyjjjܔjjojjjkjkj j2jjjjjmjmjjjxjj j|jqjjjjjjj.jjjjjjjj{jDj—j4jujjjjjj,jj_jmj|j;j jjJjjjpjpjj~jjK{jpjj[jjj;jojj[jjjRjOjwjgjwj jjjjjjjyjBjӅjjjjjjjj~jjԙjjjLj{jjj2jFj;jjjOjjÚjjujfjjEjjjjjjjjjjcjj{jjTjjjjjjCj'jNjjj+jjjjjjqxjjjjjjj'j}jjjqjpj0jۡjj]jj?j>jj_jjj?jjjjtjjjjj,jʆjrjjFojBojjHjnjnjjijjijjjj/uj^}r@hjh}rA(h]h]h]Usourcejwih]h]uj^]rBj^}rC(js]rDjpaji]rEjiajv]rFjvauubjDjwihjqh}rG(h]h]h]h]rHjah]rIjiaujPKljjih]rJ(h)rK}rL(hX How it worksrMhjijDjwihhh}rN(h]h]h]h]h]ujPKljjih]rOhX How it worksrPrQ}rR(hjMjDNjPNjjihjKubaubjij%jieubjDjwihjqh}rS(h]h]h]h]rTjah]rUjiaujPKjjih]rV(h)rW}rX(hXCachingrYhjijDjwihhh}rZ(h]h]h]h]h]ujPKjjih]r[hXCachingr\r]}r^(hjYjDNjPNjjihjWubaubjZ)r_}r`(hXNix-style local builds sport a robust caching system which help reduce the time it takes to execute a rebuild cycle. While the details of how ``cabal-install`` does caching are an implementation detail and may change in the future, knowing what gets cached is helpful for understanding the performance characteristics of invocations to ``v2-build``. The cached intermediate results are stored in ``dist-newstyle/cache``; this folder can be safely deleted to clear the cache.hjijDjwihj]h}ra(h]h]h]h]h]ujPKjjih]rb(hXNix-style local builds sport a robust caching system which help reduce the time it takes to execute a rebuild cycle. While the details of how rcrd}re(hXNix-style local builds sport a robust caching system which help reduce the time it takes to execute a rebuild cycle. While the details of how jDNjPNjjihj_ubj)rf}rg(hX``cabal-install``h}rh(h]h]h]h]h]uhj_h]rihX cabal-installrjrk}rl(hX cabal-installhjfubahjubhX does caching are an implementation detail and may change in the future, knowing what gets cached is helpful for understanding the performance characteristics of invocations to rmrn}ro(hX does caching are an implementation detail and may change in the future, knowing what gets cached is helpful for understanding the performance characteristics of invocations to jDNjPNjjihj_ubj)rp}rq(hX ``v2-build``h}rr(h]h]h]h]h]uhj_h]rshXv2-buildrtru}rv(hXv2-buildhjpubahjubhX0. The cached intermediate results are stored in rwrx}ry(hX0. The cached intermediate results are stored in jDNjPNjjihj_ubj)rz}r{(hX``dist-newstyle/cache``h}r|(h]h]h]h]h]uhj_h]r}hXdist-newstyle/cacher~r}r(hXdist-newstyle/cachehjzubahjubhX7; this folder can be safely deleted to clear the cache.rr}r(hX7; this folder can be safely deleted to clear the cache.jDNjPNjjihj_ubeubjZ)r}r(hXwThe following intermediate results are cached in the following files in this folder (the most important two are first):rhjijDjwihj]h}r(h]h]h]h]h]ujPKjjih]rhXwThe following intermediate results are cached in the following files in this folder (the most important two are first):rr}r(hjjDNjPNjjihjubaubjijZ)r}r(hXnNote that every package also has a local cache managed by the Cabal build system, e.g., in ``$distdir/cache``.hjijDjwihj]h}r(h]h]h]h]h]ujPMjjih]r(hX[Note that every package also has a local cache managed by the Cabal build system, e.g., in rr}r(hX[Note that every package also has a local cache managed by the Cabal build system, e.g., in jDNjPNjjihjubj)r}r(hX``$distdir/cache``h}r(h]h]h]h]h]uhjh]rhX$distdir/cacherr}r(hX$distdir/cachehjubahjubhX.r}r(hX.jDNjPNjjihjubeubjZ)r}r(hXThere is another useful file in ``dist-newstyle/cache``, ``plan.json``, which is a JSON serialization of the computed install plan and is intended for integrating with external tooling.hjijDjwihj]h}r(h]h]h]h]h]ujPM jjih]r(hX There is another useful file in rr}r(hX There is another useful file in jDNjPNjjihjubj)r}r(hX``dist-newstyle/cache``h}r(h]h]h]h]h]uhjh]rhXdist-newstyle/cacherr}r(hXdist-newstyle/cachehjubahjubhX, rr}r(hX, jDNjPNjjihjubj)r}r(hX ``plan.json``h}r(h]h]h]h]h]uhjh]rhX plan.jsonrr}r(hX plan.jsonhjubahjubhXs, which is a JSON serialization of the computed install plan and is intended for integrating with external tooling.rr}r(hXs, which is a JSON serialization of the computed install plan and is intended for integrating with external tooling.jDNjPNjjihjubeubeubjDjwihjh}r(h]h]h]h]h]ujPNjjih]r(j)r}r(hXz``solver-plan`` (binary) The result of calling the dependency solver, assuming that the Hackage index, local ``cabal.project`` file, and local ``cabal`` files are unmodified. (Notably, we do NOT have to dependency solve again if new build products are stored in the global store; the invocation of the dependency solver is independent of what is already available in the store.)hjijDjwihjh}r(h]h]h]h]h]ujPKh]r(j)r}r(hX``solver-plan`` (binary)rhjjDjwihjh}r(h]h]h]h]h]ujPKh]r(j)r¬}rì(hX``solver-plan``h}rĬ(h]h]h]h]h]uhjh]rŬhX solver-planrƬrǬ}rȬ(hX solver-planhj¬ubahjubhX (binary)rɬrʬ}rˬ(hX (binary)hjubeubj)r̬}rͬ(hUh}rά(h]h]h]h]h]uhjh]rϬjZ)rЬ}rѬ(hXaThe result of calling the dependency solver, assuming that the Hackage index, local ``cabal.project`` file, and local ``cabal`` files are unmodified. (Notably, we do NOT have to dependency solve again if new build products are stored in the global store; the invocation of the dependency solver is independent of what is already available in the store.)hj̬jDjwihj]h}rҬ(h]h]h]h]h]ujPKh]rӬ(hXTThe result of calling the dependency solver, assuming that the Hackage index, local rԬrլ}r֬(hXTThe result of calling the dependency solver, assuming that the Hackage index, local hjЬubj)r׬}rج(hX``cabal.project``h}r٬(h]h]h]h]h]uhjЬh]rڬhX cabal.projectr۬rܬ}rݬ(hX cabal.projecthj׬ubahjubhX file, and local rެr߬}r(hX file, and local hjЬubj)r}r(hX ``cabal``h}r(h]h]h]h]h]uhjЬh]rhXcabalrr}r(hXcabalhjubahjubhX files are unmodified. (Notably, we do NOT have to dependency solve again if new build products are stored in the global store; the invocation of the dependency solver is independent of what is already available in the store.)rr}r(hX files are unmodified. (Notably, we do NOT have to dependency solve again if new build products are stored in the global store; the invocation of the dependency solver is independent of what is already available in the store.)hjЬubeubahj/ubeubj)r}r(hX``source-hashes`` (binary) The hashes of all local source files. When all local source files of a local package are unchanged, ``cabal v2-build`` will skip invoking ``setup build`` entirely (saving us from a possibly expensive call to ``ghc --make``). The full list of source files participating in compilation are determined using ``setup sdist --list-sources`` (thus, if you do not list all your source files in a Cabal file, you may fail to recompile when you edit them.)hjijDjwihjh}r(h]h]h]h]h]ujPKjjih]r(j)r}r(hX``source-hashes`` (binary)rhjjDjwihjh}r(h]h]h]h]h]ujPKh]r(j)r}r(hX``source-hashes``h}r(h]h]h]h]h]uhjh]rhX source-hashesrr}r(hX source-hasheshjubahjubhX (binary)rr}r(hX (binary)hjubeubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hXThe hashes of all local source files. When all local source files of a local package are unchanged, ``cabal v2-build`` will skip invoking ``setup build`` entirely (saving us from a possibly expensive call to ``ghc --make``). The full list of source files participating in compilation are determined using ``setup sdist --list-sources`` (thus, if you do not list all your source files in a Cabal file, you may fail to recompile when you edit them.)hjjDjwihj]h}r(h]h]h]h]h]ujPKh]r(hXdThe hashes of all local source files. When all local source files of a local package are unchanged, rr}r(hXdThe hashes of all local source files. When all local source files of a local package are unchanged, hjubj)r }r (hX``cabal v2-build``h}r (h]h]h]h]h]uhjh]r hXcabal v2-buildr r}r(hXcabal v2-buildhj ubahjubhX will skip invoking rr}r(hX will skip invoking hjubj)r}r(hX``setup build``h}r(h]h]h]h]h]uhjh]rhX setup buildrr}r(hX setup buildhjubahjubhX7 entirely (saving us from a possibly expensive call to rr}r(hX7 entirely (saving us from a possibly expensive call to hjubj)r}r(hX``ghc --make``h}r(h]h]h]h]h]uhjh]r hX ghc --maker!r"}r#(hX ghc --makehjubahjubhXS). The full list of source files participating in compilation are determined using r$r%}r&(hXS). The full list of source files participating in compilation are determined using hjubj)r'}r((hX``setup sdist --list-sources``h}r)(h]h]h]h]h]uhjh]r*hXsetup sdist --list-sourcesr+r,}r-(hXsetup sdist --list-sourceshj'ubahjubhXp (thus, if you do not list all your source files in a Cabal file, you may fail to recompile when you edit them.)r.r/}r0(hXp (thus, if you do not list all your source files in a Cabal file, you may fail to recompile when you edit them.)hjubeubahj/ubeubj)r1}r2(hX``config`` (same format as ``cabal.project``) The full project configuration, merged from ``cabal.project`` (and friends) as well as the command line arguments.hjijDjwihjh}r3(h]h]h]h]h]ujPKjjih]r4(j)r5}r6(hX-``config`` (same format as ``cabal.project``)r7hj1jDjwihjh}r8(h]h]h]h]h]ujPKh]r9(j)r:}r;(hX ``config``h}r<(h]h]h]h]h]uhj5h]r=hXconfigr>r?}r@(hXconfighj:ubahjubhX (same format as rArB}rC(hX (same format as hj5ubj)rD}rE(hX``cabal.project``h}rF(h]h]h]h]h]uhj5h]rGhX cabal.projectrHrI}rJ(hX cabal.projecthjDubahjubhX)rK}rL(hX)hj5ubeubj)rM}rN(hUh}rO(h]h]h]h]h]uhj1h]rPjZ)rQ}rR(hXrThe full project configuration, merged from ``cabal.project`` (and friends) as well as the command line arguments.hjMjDjwihj]h}rS(h]h]h]h]h]ujPKh]rT(hX,The full project configuration, merged from rUrV}rW(hX,The full project configuration, merged from hjQubj)rX}rY(hX``cabal.project``h}rZ(h]h]h]h]h]uhjQh]r[hX cabal.projectr\r]}r^(hX cabal.projecthjXubahjubhX5 (and friends) as well as the command line arguments.r_r`}ra(hX5 (and friends) as well as the command line arguments.hjQubeubahj/ubeubj)rb}rc(hXX``compiler`` (binary) The configuration of the compiler being used to build the project.hjijDjwihjh}rd(h]h]h]h]h]ujPKjjih]re(j)rf}rg(hX``compiler`` (binary)rhhjbjDjwihjh}ri(h]h]h]h]h]ujPKh]rj(j)rk}rl(hX ``compiler``h}rm(h]h]h]h]h]uhjfh]rnhXcompilerrorp}rq(hXcompilerhjkubahjubhX (binary)rrrs}rt(hX (binary)hjfubeubj)ru}rv(hUh}rw(h]h]h]h]h]uhjbh]rxjZ)ry}rz(hXBThe configuration of the compiler being used to build the project.r{hjujDjwihj]h}r|(h]h]h]h]h]ujPKh]r}hXBThe configuration of the compiler being used to build the project.r~r}r(hj{hjyubaubahj/ubeubj)r}r(hX``improved-plan`` (binary) Like ``solver-plan``, but with all non-inplace packages improved into pre-existing copies from the store.hjijDjwihjh}r(h]h]h]h]h]ujPKjjih]r(j)r}r(hX``improved-plan`` (binary)rhjjDjwihjh}r(h]h]h]h]h]ujPKh]r(j)r}r(hX``improved-plan``h}r(h]h]h]h]h]uhjh]rhX improved-planrr}r(hX improved-planhjubahjubhX (binary)rr}r(hX (binary)hjubeubj)r}r(hUh}r(h]h]h]h]h]uhjh]rjZ)r}r(hXiLike ``solver-plan``, but with all non-inplace packages improved into pre-existing copies from the store.hjjDjwihj]h}r(h]h]h]h]h]ujPKh]r(hXLike rr}r(hXLike hjubj)r}r(hX``solver-plan``h}r(h]h]h]h]h]uhjh]rhX solver-planrr}r(hX solver-planhjubahjubhXU, but with all non-inplace packages improved into pre-existing copies from the store.rr}r(hXU, but with all non-inplace packages improved into pre-existing copies from the store.hjubeubahj/ubeubjieubjDjwihjh}r(h]h]h]h]h]ujPMjjih]r(j)r}r(hX``plan.json`` (JSON)rhjijDjwihjh}r(h]h]h]h]h]ujPMh]r(j)r}r(hX ``plan.json``h}r(h]h]h]h]h]uhjh]rhX plan.jsonrr}r(hX plan.jsonhjubahjubhX (JSON)rr}r(hX (JSON)hjubeubjieubh]r(jZ)r}r(hXAA JSON serialization of the computed install plan intended for integrating ``cabal`` with external tooling. The `cabal-plan `__ package provides a library for parsing ``plan.json`` files into a Haskell data structure as well as an example tool showing possible applications.hjijDjwihj]h}r(h]h]h]h]h]ujPKh]r(hXKA JSON serialization of the computed install plan intended for integrating rr}r(hXKA JSON serialization of the computed install plan intended for integrating hjubj)r­}rí(hX ``cabal``h}rĭ(h]h]h]h]h]uhjh]rŭhXcabalrƭrǭ}rȭ(hXcabalhj­ubahjubhX with external tooling. The rɭrʭ}r˭(hX with external tooling. The hjubj!)r̭}rͭ(hX>`cabal-plan `__h}rέ(UnameX cabal-planj] X-http://hackage.haskell.org/package/cabal-planh]h]h]h]h]uhjh]rϭhX cabal-planrЭrѭ}rҭ(hX cabal-planhj̭ubahj%ubhX( package provides a library for parsing rӭrԭ}rխ(hX( package provides a library for parsing hjubj)r֭}r׭(hX ``plan.json``h}rح(h]h]h]h]h]uhjh]r٭hX plan.jsonrڭrۭ}rܭ(hX plan.jsonhj֭ubahjubhX^ files into a Haskell data structure as well as an example tool showing possible applications.rݭrޭ}r߭(hX^ files into a Haskell data structure as well as an example tool showing possible applications.hjubeubjijehj/ubh]hjdubu}r(j%hjDjwijFjG)r}r(hjvjDjwihjKh}r(U targetrefjvh]h]h]rjOah]ujPM h]r(h)r}r(hjwhjjDjwihhh}r(h]h]h]h]h]ujPM h]rhXTodorr}r(hUhjubaubjZ)r}r(hjvhjjDjwihj]h}r(h]h]h]h]h]ujPM h]r(hX#convert globbing grammar to proper rr}r(hjwhjubj!)r}r(hjwhjjDNhj%h}r(UnamejwUrefurijwh]h]h]h]h]ujPNh]rhXABNFrr}r(hjwhjubaubhX syntaxrr}r(hjwhjubeubeubjcM jdjvueUsrcdirrX-/home/refold/code/haskell/cabal-3.0/Cabal/docrj4Zcsphinx.config Config r)r}r(U latex_logorUimages/Cabal-dark.pngrjnU3.0.0.0rUextlinksr}r(U ghc-ticketrU)http://ghc.haskell.org/trac/ghc/ticket/%sr UGHC #r Uissuer U*https://github.com/haskell/cabal/issues/%sr U#Ughc-wikir U'http://ghc.haskell.org/trac/ghc/wiki/%srUU hackage-pkgrU%http://hackage.haskell.org/package/%srUuUlatex_show_pagerefsrUhtmlhelp_basenamerUCabalUsersGuiderU html_themerUsphinx_rtd_themerU master_docrjnU html_titlerUCabal 3.0.0.0 User's GuiderU source_suffixrccollections OrderedDict r]r]r(U.rstrNeaRrUtexinfo_documentsr]r (Uindexr!jXCabal Users GuideX Cabal TeamjUThe Haskell Cabal.U Compilerstr"aU copyrightr#X2003-2017, Cabal Teamr$Usource_encodingr%jBZUexclude_patternsr&]r'(U.buildr(U *.gen.rstr)eUprimary_domainr*jeU man_pagesr+]r,(jejeUThe Haskell CabalUThe Cabal TeamKtr-aUvaluesr.}r/(jjNNUapplehelp_indexer_pathr0U/usr/bin/hiutilr1U applehelpr2NUapplehelp_stopwordsr3jZj2NUhtml_show_sphinxr4Uhtmlr5NUhtml_link_suffixr6Nj5NUhtml_compact_listsr7j5NUhtml_extra_pathr8]r9j5NUmathjax_displayr:]r;(U\[r<U\]r=ej5NU rst_epilogr>Nj8ZNUhtml_additional_pagesr?}r@j5NUepub_uidrAUunknownrBj8ZNU html_contextrC}rD(jjUsource_url_prefixU7https://github.com/haskell/cabal/tree/master/Cabal/doc/Udisplay_githubUgithub_versionUmaster/U github_userUhaskellrEU github_hostU github.comU conf_py_pathU Cabal/doc/U github_repojeuj5NU epub_versionrFG@UepubrGNUapplehelp_min_term_lengthrHNj2Nj#j$j5NUepub_contributorrIjBjGNUadd_function_parenthesesrJj8ZNU html_sidebarsrK}rLj5Nj*jej8ZNU epub_guiderM)j8ZNU html_stylerNNj5NUsinglehtml_sidebarsrOjLj5NUmodindex_common_prefixrP]rQj5NUepub_exclude_filesrR]rSj8ZNUfigure_language_filenamerTX{root}.{language}{ext}rUj8ZNUlatex_documentsrV]rW(j!Uusers_guide.texXGHC Users Guide DocumentationXGHC TeamUmanualrXtrYaNNU epub_tocduprZj8ZNUlinkcheck_ignorer[]r\NNUhighlight_languager]jej8ZNUtexinfo_appendicesr^]r_NNUhtml_scaled_image_linkr`j5NUapplehelp_index_anchorsraj2NUapplehelp_iconrbNj2NU epub_tocscopercUdefaultrdj8ZNUhtml_domain_indicesrej5NUepub_use_indexrfjGNUhtml_file_suffixrgNj5NU rst_prologrhNj8ZNUtexinfo_domain_indicesriNNU needs_sphinxrjNNNUhtml_css_filesrk]rlj5NUhtml_last_updated_fmtrmNj5NUepub_show_urlsrnjcjGNU html_logorojj5NUreleaserpjj8ZNUneeds_extensionsrq}rrNNUlinkcheck_workersrsKNNUlatex_appendicesrt]ruNNjjNNU tls_verifyrvj8ZNUtemplate_bridgerwNj5NXgettext_locationrxXgettextryNUtext_secnumber_suffixrzU. r{j8ZNU smartquotesr|j8ZNjj NNU epub_titler}jjGNj&j'j8ZNUtrim_doctest_flagsr~j8ZNU epub_authorrjBjGNjnjj8ZNUsmartquotes_actionrUqDerj8ZNj+j,NNU epub_languagerjZjGNjjnj8ZNU numfig_formatr}r(jeXTable %sjqX Section %sUfigurerXFig. %sU code-blockrX Listing %suj8ZNUhtml_short_titlerUCabal 3.0.0.0 User's Guiderj5NU today_fmtrNj8ZNUapplehelp_titlerX Cabal Helpj2NUhtml_copy_sourcerj5NUhtml_sourcelink_suffixrU.txtrj5NUepub_css_filesr]rjGNUtexinfo_elementsr}rNNUtodo_link_onlyrj5NUhtml_math_rendererrNj8ZNUhtml_theme_pathr]rUe/home/refold/code/haskell/cabal-3.0/Cabal/.python-sphinx-virtualenv/local/lib/python2.7/site-packagesraj5NUcpp_index_common_prefixr]rj8ZNUhtml_experimental_html5_writerrNj5NUhtml_output_encodingrUutf-8rj5NXgettext_compactrjyNXgettext_auto_buildrXenvrNjNj8ZNUapplehelp_bundle_versionrU1j2NU keep_warningsrj8ZNUnitpick_ignorer]rNNUcpp_paren_attributesr]rj8ZNU html_faviconrNj5NU epub_coverr)j8ZNUqthelp_namespacerNj5NUtodo_emit_warningsrj5Njjj8ZNUpygments_stylerNj5NUmathjax_configrNj5NjNNU man_show_urlsrNNU locale_dirsr]rUlocalesraj8ZNjjj5NUsource_parsersr}rj8ZNUapplehelp_localerjZj2NUlatex_domain_indicesrNNU text_newlinesrUunixrj8ZNUhtml_show_sourcelinkrj5NUlinkcheck_anchorsrNNUapplehelp_codesign_pathrU/usr/bin/codesignrj2NUepub_publisherrjBjGNUepub_pre_filesr]rj8ZNU html_js_filesr]rj5NUhtml_show_copyrightrj5NUtexinfo_no_detailmenurNNU xml_prettyrj8ZNUapplehelp_kb_urlrNj2NUtodayr®Uj8ZNUhtml_theme_optionsrî}rĮj5NUtemplates_pathrŮ]rƮU _templatesrǮaj5NUmath_number_allrȮj8ZNU manpages_urlrɮNj8ZNUlatex_additional_filesrʮ]rˮNNU applehelp_disable_external_toolsr̮NNUlatex_docclassrͮ}NNUapplehelp_bundle_namerήXCabalrϮj2NUmathjax_inlinerЮ]rѮ(U\(rҮU\)rӮej5NUnumfigrԮj8ZNUhtml_search_languagerծNj5NUapplehelp_codesign_flagsr֮]j2NUlatex_elementsr׮}rخ(U utf8extrarٮUUpreamblerڮU \usepackage{fontspec} \usepackage{makeidx} \setsansfont{DejaVu Sans} \setromanfont{DejaVu Serif} \setmonofont{DejaVu Sans Mono} UinputencrۮUuNNUhtml_secnumber_suffixrܮU. rݮj5NUhtml_search_scorerrޮUNNUprojectr߮jϮj8ZNU epub_basenamerjϮNNUepub_post_filesr]rj8ZNUhtml_use_opensearchrUj5NUlatex_toplevel_sectioningrNNNUsuppress_warningsr]rj8ZNUdevhelp_basenamerjϮNNXgettext_additional_targetsr]rjNU epub_themerjGjGNUhtml_add_permalinksrX¶j5NU html_baseurlrUj5NUadd_module_namesrj8ZNUlatex_use_xindyrNNUlinkcheck_anchors_ignorer]rU^!raNNUlinkcheck_timeoutrNNNUcpp_id_attributesr]rj8ZNj7Zj8ZNUsmartquotes_excludesr}r(U languagesr]rUjaraUbuildersr]r(UmanrUtextreuj8ZNUnitpickyrNNU qthelp_themerUnonavrj5NUapplehelp_bundle_idrNj2NU latex_enginerUpdflatexrNNjjj5Njjj8ZNU default_rolerNj8ZNUauthorrjBj8ZNj%jBZj8ZNUqthelp_theme_optionsr}rj5NUlatex_use_latex_multicolumnrNNU mathjax_pathr U[https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMMLr j5NUtext_sectioncharsr U*=-~"+`r j8ZNUlinkcheck_retriesr KNNUlatex_show_urlsrUnorNNUqthelp_basenamerjϮNNUapplehelp_kb_productrX Cabal-3.0.0.0j2NU tls_cacertsrNj8ZNUhtml_split_indexrj5NUtext_add_secnumbersrj8ZNUepub_descriptionrjBjGNX gettext_uuidrjyNU epub_schemerjBjGNUhighlight_optionsr}rj8ZNUhtml_static_pathr]rUimagesraj5NUepub_identifierrjBjGNUepub_writing_moderU horizontalrjGNUnumfig_secnum_depthr Kj8ZNUepub_max_image_widthr!Kj8ZNUtodo_include_todosr"j5NUapplehelp_remote_urlr#Nj2NUepub_copyrightr$j$jGNUmathjax_optionsr%}r&j5NUepub_theme_optionsr'}r(jGNUapplehelp_codesign_identityr)Nj2NUhtml_use_indexr*j5NUtexinfo_show_urlsr+jYNNUapplehelp_dev_regionr,Uen-usr-j2NUmath_eqref_formatr.Nj8ZNU math_numfigr/j8ZNUepub_fix_imagesr0j8ZNU show_authorsr1j8ZNU epub_tocdepthr2Kj8ZNUhtml_search_optionsr3}r4j5NujCjDjjjŮjƮjVjWjjjj]jejjjjjjj"j׮jخU overridesr5}r6jkjlj߮jϮjojjjU extensionsr7]r8(Usphinx.ext.extlinksr9j>ejpjubUmetadatar:ccollections defaultdict r;c__builtin__ dict r<Rr=(h}r>h}r?h}r@h}rAh}rBh}rCj}rDj }rEj}rFj }rGj*}rHj4}rIuUtoc_num_entriesrJ}rK(hKhK hKhKhKhK!jKj KjK j K;j*Kj4Kujcsphinx.util FilenameUniqDict rL)rMh]RrNbUfiles_to_rebuildrO}rP(Xbugs-and-stabilityrQh]rRhaRrSXfile-format-changelogrTh]rUhaRrVhh]rWhaRrXXnix-local-build-overviewrYh]rZhaRr[h9h]r\jaRr]Xconfig-and-installr^h]r_haRr`Xnix-integrationrah]rbhaRrchch]rdhaRrehph]rfj4aRrgXintrorhh]rihaRrjXconcepts-and-developmentrkh]rlhaRrmuU found_docsrnh]ro(hhhhhhjj jj j*j4eRrpU longtitlesrq}rr(hhhhhhhhhhhhjjj j jjj j!j*j+j4j5uU dependenciesrsj;hRrt(hh]ruXreferences.incrvaRrwhh]rxXreferences.incryaRrzhh]r{Xreferences.incr|aRr}jh]r~Xreferences.incraRrj h]rXreferences.incraRrj*h]rXreferences.incraRruUincludedrj;hRr(hh]rNaRrhh]rNaRrhh]rNaRrjh]rNaRrj h]rNaRrj*h]rNaRruUtoctree_includesr}r(h]rhcaj]rh9ah]r(jhj^jkjQjYjajTeh]rhaj4]rhpauU temp_datar}rUtocsr}r(hj )r}r(hUh}r(h]h]h]h]h]uh]rj )r}r(hUh}r(h]h]h]h]h]uhjh]r(csphinx.addnodes compact_paragraph r)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornameUUrefurihh]h]h]h]h]hhUinternaluhjh]rhX0Reporting Bugs and Stability of Cabal Interfacesrr}r(hhhjubahj%ubahUcompact_paragraphrubj )r}r(hUh}r(h]h]h]h]h]uhjh]rcsphinx.addnodes toctree r)r}r(hUhjjDXD/home/refold/code/haskell/cabal-3.0/Cabal/doc/bugs-and-stability.rsthUtoctreerh}r(UnumberedKUparenthU titlesonlyUmaxdepthJUglobh]h]h]h]h]Uentries]rNhcraUhiddenUcaptionNU includefiles]rhcaU includehiddenujPKh]ubahj ubehj ubahj ubhj )r}r¯(hUh}rï(h]h]h]h]h]uh]rįj )rů}rƯ(hUh}rǯ(h]h]h]h]h]uhjh]rȯ(j)rɯ}rʯ(hUh}r˯(h]h]h]h]h]uhjůh]r̯j!)rͯ}rί(hUh}rϯ(U anchornameUUrefurihh]h]h]h]h]hhUinternaluhjɯh]rЯhX0Package Description Format Specification Historyrѯrү}rӯ(hhhjͯubahj%ubahjubj )rԯ}rկ(hUh}r֯(h]h]h]h]h]uhjůh]rׯ(j )rد}rٯ(hUh}rگ(h]h]h]h]h]uhjԯh]rۯj)rܯ}rݯ(hUh}rޯ(h]h]h]h]h]uhjدh]r߯j!)r}r(hUh}r(U anchornamehUrefurihh]h]h]h]h]h]r(KKeUinternaluhjܯh]rj)r}r(hjfhjjDNhjh}r(h]h]h]h]h]ujPNh]rhXcabal-version: 3.0rr}r(hjfhjubaubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjԯh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurihh]h]h]h]h]h]r(KKeUinternaluhjh]rj)r}r(hj:chjjDNhjh}r(h]h]h]h]h]ujPNh]rhXcabal-version: 2.4rr}r(hjDchjubaubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjԯh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r (hUh}r (U anchornamehUrefurihh]h]h]h]h]h]r (KKeUinternaluhjh]r j)r }r(hjchjjDNhjh}r(h]h]h]h]h]ujPNh]rhXcabal-version: 2.2rr}r(hjchj ubaubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjԯh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurihh]h]h]h]h]h]r(KKeUinternaluhjh]r j)r!}r"(hj`hjjDNhjh}r#(h]h]h]h]h]ujPNh]r$hXcabal-version: 2.0r%r&}r'(hj`hj!ubaubahj%ubahjubahj ubj )r(}r)(hUh}r*(h]h]h]h]h]uhjԯh]r+j)r,}r-(hUh}r.(h]h]h]h]h]uhj(h]r/j!)r0}r1(hUh}r2(U anchornamehUrefurihh]h]h]h]h]h]r3(KKeUinternaluhj,h]r4j)r5}r6(hj#ehj0jDNhjh}r7(h]h]h]h]h]ujPNh]r8hXcabal-version: 1.24r9r:}r;(hj-ehj5ubaubahj%ubahjubahj ubj )r<}r=(hUh}r>(h]h]h]h]h]uhjԯh]r?j)r@}rA(hUh}rB(h]h]h]h]h]uhj<h]rCj!)rD}rE(hUh}rF(U anchornamehUrefurihh]h]h]h]h]h]rG(KKeUinternaluhj@h]rHj)rI}rJ(hjEfhjDjDNhjh}rK(h]h]h]h]h]ujPNh]rLhXcabal-version: 1.22rMrN}rO(hjOfhjIubaubahj%ubahjubahj ubj )rP}rQ(hUh}rR(h]h]h]h]h]uhjԯh]rSj)rT}rU(hUh}rV(h]h]h]h]h]uhjPh]rWj!)rX}rY(hUh}rZ(U anchornamehUrefurihh]h]h]h]h]h]r[(KKeUinternaluhjTh]r\j)r]}r^(hjehjXjDNhjh}r_(h]h]h]h]h]ujPNh]r`hXcabal-version: 1.20rarb}rc(hjehj]ubaubahj%ubahjubahj ubj )rd}re(hUh}rf(h]h]h]h]h]uhjԯh]rgj)rh}ri(hUh}rj(h]h]h]h]h]uhjdh]rkj!)rl}rm(hUh}rn(U anchornamehUrefurihh]h]h]h]h]h]ro(KKeUinternaluhjhh]rpj)rq}rr(hjbhjljDNhjh}rs(h]h]h]h]h]ujPNh]rthXcabal-version: 1.18rurv}rw(hjbhjqubaubahj%ubahjubahj ubj )rx}ry(hUh}rz(h]h]h]h]h]uhjԯh]r{j)r|}r}(hUh}r~(h]h]h]h]h]uhjxh]rj!)r}r(hUh}r(U anchornamehUrefurihh]h]h]h]h]h]r(KK eUinternaluhj|h]rj)r}r(hjjihjjDNhjh}r(h]h]h]h]h]ujPNh]rhXcabal-version: 1.16rr}r(hjtihjubaubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjԯh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurihh]h]h]h]h]h]r(KK eUinternaluhjh]rj)r}r(hjbhjjDNhjh}r(h]h]h]h]h]ujPNh]rhXcabal-version: 1.12rr}r(hj%bhjubaubahj%ubahjubahj ubehj ubehj ubahj ubhj )r}r(hUh}r(h]h]h]h]h]uh]r(j )r}r(hUh}r(h]h]h]h]h]uhjh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornameUUrefurihh]h]h]h]h]hhUinternaluhjh]rhX Quickstartrr}r(hhhjubahj%ubahjubj )r}r(hUh}r(h]h]h]h]h]uhjh]rj )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornameh-Urefurihh]h]h]h]h]h]r°(KKKeUinternaluhjh]rðhXDeveloping multiple packagesrİrŰ}rư(hjhjubahj%ubahjubahj ubahj ubehj ubj )rǰ}rȰ(hUh}rɰ(h]h]h]h]h]uhjh]rʰ(j)r˰}r̰(hUh}rͰ(h]h]h]h]h]uhjǰh]rΰj!)rϰ}rа(hUh}rѰ(U anchornameh&Urefurihh]h]h]h]h]h]rҰ(KKeUinternaluhj˰h]rӰhXCookbookr԰rհ}rְ(hj hjϰubahj%ubahjubj )rװ}rذ(hUh}rٰ(h]h]h]h]h]uhjǰh]rڰj )r۰}rܰ(hUh}rݰ(h]h]h]h]h]uhjװh]rްj)r߰}r(hUh}r(h]h]h]h]h]uhj۰h]rj!)r}r(hUh}r(U anchornameh*Urefurihh]h]h]h]h]h]r(KKKeUinternaluhj߰h]rhX)How can I profile my library/application?rr}r(hjhjubahj%ubahjubahj ubahj ubehj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornameh4Urefurihh]h]h]h]h]h]r(KKeUinternaluhjh]rhX How it worksrr}r(hjMhjubahj%ubahjubj )r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r (U anchornameh%Urefurihh]h]h]h]h]h]r (KKKeUinternaluhjh]r hXLocal versus external packagesr r }r(hjihjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornameh Urefurihh]h]h]h]h]h]r(KKKeUinternaluhjh]rhXWhere are my build products?rr}r(hj-hjubahj%ubahjubahj ubj )r}r (hUh}r!(h]h]h]h]h]uhjh]r"j)r#}r$(hUh}r%(h]h]h]h]h]uhjh]r&j!)r'}r((hUh}r)(U anchornameh1Urefurihh]h]h]h]h]h]r*(KKKeUinternaluhj#h]r+hXCachingr,r-}r.(hjYhj'ubahj%ubahjubahj ubehj ubehj ubj )r/}r0(hUh}r1(h]h]h]h]h]uhjh]r2(j)r3}r4(hUh}r5(h]h]h]h]h]uhj/h]r6j!)r7}r8(hUh}r9(U anchornameh3Urefurihh]h]h]h]h]h]r:(KKeUinternaluhj3h]r;hXCommandsr<r=}r>(hjjhj7ubahj%ubahjubj )r?}r@(hUh}rA(h]h]h]h]h]uhj/h]rB(j )rC}rD(hUh}rE(h]h]h]h]h]uhj?h]rFj)rG}rH(hUh}rI(h]h]h]h]h]uhjCh]rJj!)rK}rL(hUh}rM(U anchornameh/Urefurihh]h]h]h]h]h]rN(KKKeUinternaluhjGh]rOhXcabal v2-configurerPrQ}rR(hj khjKubahj%ubahjubahj ubj )rS}rT(hUh}rU(h]h]h]h]h]uhj?h]rVj)rW}rX(hUh}rY(h]h]h]h]h]uhjSh]rZj!)r[}r\(hUh}r](U anchornamehUrefurihh]h]h]h]h]h]r^(KKKeUinternaluhjWh]r_hXcabal v2-updater`ra}rb(hjwlhj[ubahj%ubahjubahj ubj )rc}rd(hUh}re(h]h]h]h]h]uhj?h]rfj)rg}rh(hUh}ri(h]h]h]h]h]uhjch]rjj!)rk}rl(hUh}rm(U anchornameh!Urefurihh]h]h]h]h]h]rn(KKKeUinternaluhjgh]rohXcabal v2-buildrprq}rr(hjqhjkubahj%ubahjubahj ubj )rs}rt(hUh}ru(h]h]h]h]h]uhj?h]rvj)rw}rx(hUh}ry(h]h]h]h]h]uhjsh]rzj!)r{}r|(hUh}r}(U anchornameh$Urefurihh]h]h]h]h]h]r~(KKKeUinternaluhjwh]rhX cabal v2-replrr}r(hjlhj{ubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhj?h]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornameh#Urefurihh]h]h]h]h]h]r(KKKeUinternaluhjh]rhX cabal v2-runrr}r(hjmhjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhj?h]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornameh5Urefurihh]h]h]h]h]h]r(KKKeUinternaluhjh]rhXcabal v2-freezerr}r(hj(nhjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhj?h]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornameh)Urefurihh]h]h]h]h]h]r(KKKeUinternaluhjh]rhXcabal v2-benchrr}r(hjnhjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhj?h]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornameh"Urefurihh]h]h]h]h]h]r(KKKeUinternaluhjh]rhX cabal v2-testrr}r±(hjnhjubahj%ubahjubahj ubj )rñ}rı(hUh}rű(h]h]h]h]h]uhj?h]rƱj)rDZ}rȱ(hUh}rɱ(h]h]h]h]h]uhjñh]rʱj!)r˱}ṟ(hUh}rͱ(U anchornamehUrefurihh]h]h]h]h]h]rα(KKK eUinternaluhjDZh]rϱhXcabal v2-haddockrбrѱ}rұ(hjnhj˱ubahj%ubahjubahj ubj )rӱ}rԱ(hUh}rձ(h]h]h]h]h]uhj?h]rֱj)rױ}rر(hUh}rٱ(h]h]h]h]h]uhjӱh]rڱj!)r۱}rܱ(hUh}rݱ(U anchornameh+Urefurihh]h]h]h]h]h]rޱ(KKK eUinternaluhjױh]r߱hX cabal v2-execrr}r(hjKohj۱ubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhj?h]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurihh]h]h]h]h]h]r(KKK eUinternaluhjh]rhXcabal v2-installrr}r(hjhohjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhj?h]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornameh2Urefurihh]h]h]h]h]h]r(KKK eUinternaluhjh]rhXcabal v2-cleanrr}r(hjphjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhj?h]rj)r}r(hUh}r (h]h]h]h]h]uhjh]r j!)r }r (hUh}r (U anchornameh(Urefurihh]h]h]h]h]h]r(KKK eUinternaluhjh]rhXcabal v2-sdistrr}r(hjqhj ubahj%ubahjubahj ubehj ubehj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornameh6Urefurihh]h]h]h]h]h]r(KKeUinternaluhjh]rhX%Configuring builds with cabal.projectr r!}r"(hjshjubahj%ubahjubj )r#}r$(hUh}r%(h]h]h]h]h]uhjh]r&(j )r'}r((hUh}r)(h]h]h]h]h]uhj#h]r*(j)r+}r,(hUh}r-(h]h]h]h]h]uhj'h]r.j!)r/}r0(hUh}r1(U anchornameh.Urefurihh]h]h]h]h]h]r2(KKKeUinternaluhj+h]r3hXSpecifying the local packagesr4r5}r6(hjthj/ubahj%ubahjubj )r7}r8(hUh}r9(h]h]h]h]h]uhj'h]r:j )r;}r<(hUh}r=(h]h]h]h]h]uhj7h]r>j)r?}r@(hUh}rA(h]h]h]h]h]uhj;h]rBj!)rC}rD(hUh}rE(U anchornameh,Urefurihh]h]h]h]h]h]rF(KKKKeUinternaluhj?h]rGhX9Specifying Packages from Remote Version Control LocationsrHrI}rJ(hj0whjCubahj%ubahjubahj ubahj ubehj ubj )rK}rL(hUh}rM(h]h]h]h]h]uhj#h]rNj)rO}rP(hUh}rQ(h]h]h]h]h]uhjKh]rRj!)rS}rT(hUh}rU(U anchornamehUrefurihh]h]h]h]h]h]rV(KKKeUinternaluhjOh]rWhXGlobal configuration optionsrXrY}rZ(hjwhjSubahj%ubahjubahj ubj )r[}r\(hUh}r](h]h]h]h]h]uhj#h]r^j)r_}r`(hUh}ra(h]h]h]h]h]uhj[h]rbj!)rc}rd(hUh}re(U anchornameh'Urefurihh]h]h]h]h]h]rf(KKKeUinternaluhj_h]rghXSolver configuration optionsrhri}rj(hjzhjcubahj%ubahjubahj ubj )rk}rl(hUh}rm(h]h]h]h]h]uhj#h]rnj)ro}rp(hUh}rq(h]h]h]h]h]uhjkh]rrj!)rs}rt(hUh}ru(U anchornamehUrefurihh]h]h]h]h]h]rv(KKKeUinternaluhjoh]rwhXPackage configuration optionsrxry}rz(hjhjsubahj%ubahjubahj ubj )r{}r|(hUh}r}(h]h]h]h]h]uhj#h]r~j)r}r(hUh}r(h]h]h]h]h]uhj{h]rj!)r}r(hUh}r(U anchornameh0Urefurihh]h]h]h]h]h]r(KKKeUinternaluhjh]rhX%Advanced global configuration optionsrr}r(hjhjubahj%ubahjubahj ubehj ubehj ubehj ubhj )r}r(hUh}r(h]h]h]h]h]uh]rj )r}r(hUh}r(h]h]h]h]h]uhjh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornameUUrefurihh]h]h]h]h]hhUinternaluhjh]rhXNix-style Local Buildsrr}r(hhhjubahj%ubahjubj )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUhjjDXJ/home/refold/code/haskell/cabal-3.0/Cabal/doc/nix-local-build-overview.rstrhjh}r(UnumberedKUparenthU titlesonlyUmaxdepthJUglobh]h]h]h]h]Uentries]rNhraUhiddenUcaptionNU includefiles]rhaU includehiddenujPK*h]ubahj ubehj ubahj ubhj )r}r(hUh}r(h]h]h]h]h]uh]rj )r}r(hUh}r(h]h]h]h]h]uhjh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornameUUrefurihh]h]h]h]h]Uinternaluhjh]rhXWelcome to the Cabal User Guiderr}r(hhhjubahj%ubahjubj )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUhjjDX7/home/refold/code/haskell/cabal-3.0/Cabal/doc/index.rsthjh}r²(UnumberedMUparenthU titlesonlyUmaxdepthKUglobh]h]h]h]h]Uentries]rò(NjhrIJNj^rŲNjkrƲNjQrDzNjYrȲNjarɲNjTrʲeUhiddenUcaptionNU includefiles]r˲(jhj^jkjQjYjajTeU includehiddenujPKh]ubahj ubehj ubahj ubhj )r̲}rͲ(hUh}rβ(h]h]h]h]h]uh]rϲ(j )rв}rѲ(hUh}rҲ(h]h]h]h]h]uhj̲h]rӲ(j)rԲ}rղ(hUh}rֲ(h]h]h]h]h]uhjвh]rײj!)rز}rٲ(hUh}rڲ(U anchornameUUrefurihh]h]h]h]h]hhUinternaluhjԲh]r۲hX Configurationrܲrݲ}r޲(hjhjزubahj%ubahjubj )r߲}r(hUh}r(h]h]h]h]h]uhjвh]r(j )r}r(hUh}r(h]h]h]h]h]uhj߲h]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornameh?Urefurihh]h]h]h]h]h]r(KKKeUinternaluhjh]rhXOverviewrr}r(hXOverviewrhjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhj߲h]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehCUrefurihh]h]h]h]h]h]r(KKKeUinternaluhjh]rhXRepository specificationrr}r(hXRepository specificationrhjubahj%ubahjubj )r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r }r (hUh}r (h]h]h]h]h]uhjh]r j)r }r(hUh}r(h]h]h]h]h]uhj h]rj!)r}r(hUh}r(U anchornamehSUrefurihh]h]h]h]h]h]r(KKKKeUinternaluhj h]rhXUsing secure repositoriesrr}r(hXUsing secure repositoriesrhjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r (h]h]h]h]h]uhjh]r!j!)r"}r#(hUh}r$(U anchornamehTUrefurihh]h]h]h]h]h]r%(KKKKeUinternaluhjh]r&hXLegacy repositoriesr'r(}r)(hXLegacy repositoriesr*hj"ubahj%ubahjubahj ubj )r+}r,(hUh}r-(h]h]h]h]h]uhjh]r.j)r/}r0(hUh}r1(h]h]h]h]h]uhj+h]r2j!)r3}r4(hUh}r5(U anchornamehDUrefurihh]h]h]h]h]h]r6(KKKKeUinternaluhj/h]r7hXSecure local repositoriesr8r9}r:(hXSecure local repositoriesr;hj3ubahj%ubahjubahj ubehj ubehj ubehj ubehj ubj )r<}r=(hUh}r>(h]h]h]h]h]uhj̲h]r?(j)r@}rA(hUh}rB(h]h]h]h]h]uhj<h]rCj!)rD}rE(hUh}rF(U anchornamehPUrefurihh]h]h]h]h]h]rG(KKeUinternaluhj@h]rHhX Building and installing packagesrIrJ}rK(hX Building and installing packagesrLhjDubahj%ubahjubj )rM}rN(hUh}rO(h]h]h]h]h]uhj<h]rP(j )rQ}rR(hUh}rS(h]h]h]h]h]uhjMh]rTj)rU}rV(hUh}rW(h]h]h]h]h]uhjQh]rXj!)rY}rZ(hUh}r[(U anchornamehIUrefurihh]h]h]h]h]h]r\(KKKeUinternaluhjUh]r]hX(Building and installing a system packager^r_}r`(hX(Building and installing a system packagerahjYubahj%ubahjubahj ubj )rb}rc(hUh}rd(h]h]h]h]h]uhjMh]rej)rf}rg(hUh}rh(h]h]h]h]h]uhjbh]rij!)rj}rk(hUh}rl(U anchornamehGUrefurihh]h]h]h]h]h]rm(KKKeUinternaluhjfh]rnhX&Building and installing a user packagerorp}rq(hX&Building and installing a user packagerrhjjubahj%ubahjubahj ubj )rs}rt(hUh}ru(h]h]h]h]h]uhjMh]rvj)rw}rx(hUh}ry(h]h]h]h]h]uhjsh]rzj!)r{}r|(hUh}r}(U anchornamehLUrefurihh]h]h]h]h]h]r~(KKKeUinternaluhjwh]rhX Installing packages from Hackagerr}r(hX Installing packages from Hackagerhj{ubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjMh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehKUrefurihh]h]h]h]h]h]r(KKKeUinternaluhjh]rhXDeveloping with sandboxesrr}r(hXDeveloping with sandboxesrhjubahj%ubahjubj )r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehVUrefurihh]h]h]h]h]h]r(KKKKeUinternaluhjh]rhXSandboxes: basic usagerr}r(hXSandboxes: basic usagerhjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehXUrefurihh]h]h]h]h]h]r(KKKKeUinternaluhjh]rhXSandboxes: advanced usagerr}r(hXSandboxes: advanced usagerhjubahj%ubahjubahj ubehj ubehj ubj )r}r(hUh}r(h]h]h]h]h]uhjMh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]r³j!)ró}rij(hUh}rų(U anchornamehQUrefurihh]h]h]h]h]h]rƳ(KKKeUinternaluhjh]rdzhXCreating a binary packagerȳrɳ}rʳ(hXCreating a binary packager˳hjóubahj%ubahjubahj ubj )r̳}rͳ(hUh}rγ(h]h]h]h]h]uhjMh]rϳ(j)rг}rѳ(hUh}rҳ(h]h]h]h]h]uhj̳h]rӳj!)rԳ}rճ(hUh}rֳ(U anchornamehEUrefurihh]h]h]h]h]h]r׳(KKKeUinternaluhjгh]rسhXsetup configurerٳrڳ}r۳(hXsetup configurerܳhjԳubahj%ubahjubj )rݳ}r޳(hUh}r߳(h]h]h]h]h]uhj̳h]r(j )r}r(hUh}r(h]h]h]h]h]uhjݳh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehHUrefurihh]h]h]h]h]h]r(KKKKeUinternaluhjh]rhXPrograms used for buildingrr}r(hXPrograms used for buildingrhjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjݳh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornameh=Urefurihh]h]h]h]h]h]r(KKKKeUinternaluhjh]rhXInstallation pathsrr}r(hXInstallation pathsrhjubahj%ubahjubj )r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hUh}r (h]h]h]h]h]uhjh]r j)r }r (hUh}r (h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehOUrefurihh]h]h]h]h]h]r(KKKKKeUinternaluhj h]rhX)Path variables in the simple build systemrr}r(hX)Path variables in the simple build systemrhjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r }r!(hUh}r"(U anchornamehWUrefurihh]h]h]h]h]h]r#(KKKKKeUinternaluhjh]r$hX Paths in the simple build systemr%r&}r'(hX Paths in the simple build systemr(hj ubahj%ubahjubahj ubj )r)}r*(hUh}r+(h]h]h]h]h]uhjh]r,j)r-}r.(hUh}r/(h]h]h]h]h]uhj)h]r0j!)r1}r2(hUh}r3(U anchornameh@Urefurihh]h]h]h]h]h]r4(KKKKKeUinternaluhj-h]r5hXPrefix-independencer6r7}r8(hXPrefix-independencer9hj1ubahj%ubahjubahj ubehj ubehj ubj )r:}r;(hUh}r<(h]h]h]h]h]uhjݳh]r=j)r>}r?(hUh}r@(h]h]h]h]h]uhj:h]rAj!)rB}rC(hUh}rD(U anchornameh>Urefurihh]h]h]h]h]h]rE(KKKKeUinternaluhj>h]rFhXControlling Flag AssignmentsrGrH}rI(hXControlling Flag AssignmentsrJhjBubahj%ubahjubahj ubj )rK}rL(hUh}rM(h]h]h]h]h]uhjݳh]rNj)rO}rP(hUh}rQ(h]h]h]h]h]uhjKh]rRj!)rS}rT(hUh}rU(U anchornamehUUrefurihh]h]h]h]h]h]rV(KKKKeUinternaluhjOh]rWhXBuilding Test SuitesrXrY}rZ(hXBuilding Test Suitesr[hjSubahj%ubahjubahj ubj )r\}r](hUh}r^(h]h]h]h]h]uhjݳh]r_j)r`}ra(hUh}rb(h]h]h]h]h]uhj\h]rcj!)rd}re(hUh}rf(U anchornameh(h]h]h]h]h]uhj8h]r?j!)r@}rA(hUh}rB(U anchornameUUrefurij h]h]h]h]h]hjUinternaluhj<h]rChXNix IntegrationrDrE}rF(hjhj@ubahj%ubahjubj )rG}rH(hUh}rI(h]h]h]h]h]uhj8h]rJ(j )rK}rL(hUh}rM(h]h]h]h]h]uhjGh]rNj)rO}rP(hUh}rQ(h]h]h]h]h]uhjKh]rRj!)rS}rT(hUh}rU(U anchornamehbUrefurij h]h]h]h]h]h]rV(KKeUinternaluhjOh]rWhXEnabling Nix IntegrationrXrY}rZ(hXEnabling Nix IntegrationhjSubahj%ubahjubahj ubj )r[}r\(hUh}r](h]h]h]h]h]uhjGh]r^j)r_}r`(hUh}ra(h]h]h]h]h]uhj[h]rbj!)rc}rd(hUh}re(U anchornameh`Urefurij h]h]h]h]h]h]rf(KKeUinternaluhj_h]rghXCreating Nix Expressionsrhri}rj(hXCreating Nix Expressionshjcubahj%ubahjubahj ubj )rk}rl(hUh}rm(h]h]h]h]h]uhjGh]rnj)ro}rp(hUh}rq(h]h]h]h]h]uhjkh]rrj!)rs}rt(hUh}ru(U anchornamehaUrefurij h]h]h]h]h]h]rv(KKeUinternaluhjoh]rwhXNix Expression Evaluationrxry}rz(hXNix Expression Evaluationhjsubahj%ubahjubahj ubj )r{}r|(hUh}r}(h]h]h]h]h]uhjGh]r~j)r}r(hUh}r(h]h]h]h]h]uhj{h]rj!)r}r(hUh}r(U anchornameh_Urefurij h]h]h]h]h]h]r(KKeUinternaluhjh]rhXFurther Readingrr}r(hXFurther Readinghjubahj%ubahjubahj ubehj ubehj ubahj ubjj )r}r(hUh}r(h]h]h]h]h]uh]r(j )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornameUUrefurijh]h]h]h]h]hjUinternaluhjh]rhXReporting bugs and deficienciesrr}r(hjhjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehgUrefurijh]h]h]h]h]h]r(KKeUinternaluhjh]rhXStability of Cabal interfacesrr}r(hXStability of Cabal interfaceshjubahj%ubahjubj )r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehjUrefurijh]h]h]h]h]h]r(KKKeUinternaluhjh]rhXCabal file formatrr}r(hXCabal file formathjubahj%ubahjubahj ubj )rµ}rõ(hUh}rĵ(h]h]h]h]h]uhjh]rŵ(j)rƵ}rǵ(hUh}rȵ(h]h]h]h]h]uhjµh]rɵj!)rʵ}r˵(hUh}r̵(U anchornamehmUrefurijh]h]h]h]h]h]r͵(KKKeUinternaluhjƵh]rεhXCommand-line interfacerϵrе}rѵ(hXCommand-line interfacehjʵubahj%ubahjubj )rҵ}rӵ(hUh}rԵ(h]h]h]h]h]uhjµh]rյ(j )rֵ}r׵(hUh}rص(h]h]h]h]h]uhjҵh]rٵj)rڵ}r۵(hUh}rܵ(h]h]h]h]h]uhjֵh]rݵj!)r޵}rߵ(hUh}r(U anchornamehfUrefurijh]h]h]h]h]h]r(KKKKeUinternaluhjڵh]rhX#Very Stable Command-line interfacesrr}r(hX#Very Stable Command-line interfaceshj޵ubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjҵh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehnUrefurijh]h]h]h]h]h]r(KKKKeUinternaluhjh]rhXStable Command-line interfacesrr}r(hXStable Command-line interfaceshjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjҵh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehkUrefurijh]h]h]h]h]h]r(KKKKeUinternaluhjh]rhXUnstable command-linerr}r(hXUnstable command-linehjubahj%ubahjubahj ubehj ubehj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]r (j)r }r (hUh}r (h]h]h]h]h]uhjh]r j!)r}r(hUh}r(U anchornamehoUrefurijh]h]h]h]h]h]r(KKKeUinternaluhj h]rhXFunctions and Typesrr}r(hXFunctions and Typeshjubahj%ubahjubj )r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r (h]h]h]h]h]uhjh]r!j!)r"}r#(hUh}r$(U anchornamehlUrefurijh]h]h]h]h]h]r%(KKKKeUinternaluhjh]r&hXVery Stable APIr'r(}r)(hXVery Stable APIhj"ubahj%ubahjubahj ubj )r*}r+(hUh}r,(h]h]h]h]h]uhjh]r-j)r.}r/(hUh}r0(h]h]h]h]h]uhj*h]r1j!)r2}r3(hUh}r4(U anchornamehhUrefurijh]h]h]h]h]h]r5(KKKKeUinternaluhj.h]r6hXSemi-stable APIr7r8}r9(hXSemi-stable APIhj2ubahj%ubahjubahj ubj )r:}r;(hUh}r<(h]h]h]h]h]uhjh]r=j)r>}r?(hUh}r@(h]h]h]h]h]uhj:h]rAj!)rB}rC(hUh}rD(U anchornameheUrefurijh]h]h]h]h]h]rE(KKKKeUinternaluhj>h]rFhX Unstable APIrGrH}rI(hX Unstable APIhjBubahj%ubahjubahj ubehj ubehj ubj )rJ}rK(hUh}rL(h]h]h]h]h]uhjh]rMj)rN}rO(hUh}rP(h]h]h]h]h]uhjJh]rQj!)rR}rS(hUh}rT(U anchornamehiUrefurijh]h]h]h]h]h]rU(KKKeUinternaluhjNh]rVhXHackagerWrX}rY(hXHackagehjRubahj%ubahjubahj ubehj ubehj ubehj ubj j )rZ}r[(hUh}r\(h]h]h]h]h]uh]r](j )r^}r_(hUh}r`(h]h]h]h]h]uhjZh]ra(j)rb}rc(hUh}rd(h]h]h]h]h]uhj^h]rej!)rf}rg(hUh}rh(U anchornameUUrefurij h]h]h]h]h]hj$Uinternaluhjbh]rihX Quickstartrjrk}rl(hj)hjfubahj%ubahjubj )rm}rn(hUh}ro(h]h]h]h]h]uhj^h]rp(j )rq}rr(hUh}rs(h]h]h]h]h]uhjmh]rtj)ru}rv(hUh}rw(h]h]h]h]h]uhjqh]rxj!)ry}rz(hUh}r{(U anchornamehUrefurij h]h]h]h]h]h]r|(KKKeUinternaluhjuh]r}hXUsing “cabal init”r~r}r(hjLhjyubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjmh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKeUinternaluhjh]rhXEditing the .cabal filerr}r(hjMhjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjmh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKeUinternaluhjh]rhXModules included in the packagerr}r(hjMhjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjmh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKeUinternaluhjh]rhX$Modules imported from other packagesrr}r(hj^Nhjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjmh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKeUinternaluhjh]rhXBuilding the packagerr}r(hjOhjubahj%ubahjubahj ubj )r}r¶(hUh}rö(h]h]h]h]h]uhjmh]rĶj)rŶ}rƶ(hUh}rǶ(h]h]h]h]h]uhjh]rȶj!)rɶ}rʶ(hUh}r˶(U anchornamehUrefurij h]h]h]h]h]h]r̶(KKKeUinternaluhjŶh]rͶhX Next stepsrζr϶}rж(hjOhjɶubahj%ubahjubahj ubehj ubehj ubj )rѶ}rҶ(hUh}rӶ(h]h]h]h]h]uhjZh]rԶ(j)rն}rֶ(hUh}r׶(h]h]h]h]h]uhjѶh]rضj!)rٶ}rڶ(hUh}r۶(U anchornamehUrefurij h]h]h]h]h]h]rܶ(KKeUinternaluhjնh]rݶhXPackage conceptsr޶r߶}r(hjPhjٶubahj%ubahjubj )r}r(hUh}r(h]h]h]h]h]uhjѶh]r(j )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKeUinternaluhjh]rhXThe point of packagesrr}r(hj0Phjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehxUrefurij h]h]h]h]h]h]r(KKKeUinternaluhjh]rhXPackage names and versionsrr}r(hjfPhjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r }r (hUh}r (h]h]h]h]h]uhjh]r j!)r }r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKeUinternaluhj h]rhX(Kinds of package: Cabal vs GHC vs systemrr}r(hjPhj ubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r (KKKeUinternaluhjh]r!hXUnit of distributionr"r#}r$(hjyQhjubahj%ubahjubahj ubj )r%}r&(hUh}r'(h]h]h]h]h]uhjh]r(j)r)}r*(hUh}r+(h]h]h]h]h]uhj%h]r,j!)r-}r.(hUh}r/(U anchornamehUrefurij h]h]h]h]h]h]r0(KKKeUinternaluhj)h]r1hX6Explicit dependencies and automatic package managementr2r3}r4(hjQhj-ubahj%ubahjubahj ubj )r5}r6(hUh}r7(h]h]h]h]h]uhjh]r8j)r9}r:(hUh}r;(h]h]h]h]h]uhj5h]r<j!)r=}r>(hUh}r?(U anchornamehUrefurij h]h]h]h]h]h]r@(KKKeUinternaluhj9h]rAhX PortabilityrBrC}rD(hj&Rhj=ubahj%ubahjubahj ubehj ubehj ubj )rE}rF(hUh}rG(h]h]h]h]h]uhjZh]rH(j)rI}rJ(hUh}rK(h]h]h]h]h]uhjEh]rLj!)rM}rN(hUh}rO(U anchornamehUrefurij h]h]h]h]h]h]rP(KKeUinternaluhjIh]rQhXDeveloping packagesrRrS}rT(hj^hjMubahj%ubahjubj )rU}rV(hUh}rW(h]h]h]h]h]uhjEh]rX(j )rY}rZ(hUh}r[(h]h]h]h]h]uhjUh]r\(j)r]}r^(hUh}r_(h]h]h]h]h]uhjYh]r`j!)ra}rb(hUh}rc(U anchornameh{Urefurij h]h]h]h]h]h]rd(KKKeUinternaluhj]h]rehXCreating a packagerfrg}rh(hjhjaubahj%ubahjubj )ri}rj(hUh}rk(h]h]h]h]h]uhjYh]rl(j )rm}rn(hUh}ro(h]h]h]h]h]uhjih]rpj)rq}rr(hUh}rs(h]h]h]h]h]uhjmh]rtj!)ru}rv(hUh}rw(U anchornamehUrefurij h]h]h]h]h]h]rx(KKKKeUinternaluhjqh]ryhX.Example: A package containing a simple libraryrzr{}r|(hjhjuubahj%ubahjubahj ubj )r}}r~(hUh}r(h]h]h]h]h]uhjih]rj)r}r(hUh}r(h]h]h]h]h]uhj}h]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKKeUinternaluhjh]rhX1Example: A package containing executable programsrr}r(hj hjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjih]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKKeUinternaluhjh]rhX?Example: A package containing a library and executable programsrr}r(hj+ hjubahj%ubahjubahj ubehj ubehj ubj )r}r(hUh}r(h]h]h]h]h]uhjUh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKeUinternaluhjh]rhXPackage descriptionsrr}r(hj hjubahj%ubahjubj )r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKKeUinternaluhjh]rhXModules and preprocessorsrr}r(hjr hjubahj%ubahjubahj ubj )r}r·(hUh}r÷(h]h]h]h]h]uhjh]rķj)rŷ}rƷ(hUh}rǷ(h]h]h]h]h]uhjh]rȷj!)rɷ}rʷ(hUh}r˷(U anchornamehUrefurij h]h]h]h]h]h]r̷(KKKKeUinternaluhjŷh]rͷhXPackage propertiesrηrϷ}rз(hj hjɷubahj%ubahjubahj ubj )rѷ}rҷ(hUh}rӷ(h]h]h]h]h]uhjh]rԷj)rշ}rַ(hUh}r׷(h]h]h]h]h]uhjѷh]rطj!)rٷ}rڷ(hUh}r۷(U anchornameh~Urefurij h]h]h]h]h]h]rܷ(KKKKeUinternaluhjշh]rݷhXLibraryr޷r߷}r(hj}hjٷubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehuUrefurij h]h]h]h]h]h]r(KKKKeUinternaluhjh]rhXOpening an interpreter sessionrr}r(hjKhjubahj%ubahjubj )r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKKKeUinternaluhjh]rhXFreezing dependency versionsrr}r(hjhjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r }r (hUh}r (h]h]h]h]h]uhjh]r j!)r }r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKKKeUinternaluhj h]rhX$Generating dependency version boundsrr}r(hjhj ubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r (KKKKKeUinternaluhjh]r!hX*Listing outdated dependency version boundsr"r#}r$(hj=hjubahj%ubahjubahj ubehj ubehj ubj )r%}r&(hUh}r'(h]h]h]h]h]uhjh]r((j)r)}r*(hUh}r+(h]h]h]h]h]uhj%h]r,j!)r-}r.(hUh}r/(U anchornameh}Urefurij h]h]h]h]h]h]r0(KKKKeUinternaluhj)h]r1hX Executablesr2r3}r4(hj!hj-ubahj%ubahjubj )r5}r6(hUh}r7(h]h]h]h]h]uhj%h]r8j )r9}r:(hUh}r;(h]h]h]h]h]uhj5h]r<j)r=}r>(hUh}r?(h]h]h]h]h]uhj9h]r@j!)rA}rB(hUh}rC(U anchornamehUrefurij h]h]h]h]h]h]rD(KKKKKeUinternaluhj=h]rEhXRunning executablesrFrG}rH(hj"hjAubahj%ubahjubahj ubahj ubehj ubj )rI}rJ(hUh}rK(h]h]h]h]h]uhjh]rL(j)rM}rN(hUh}rO(h]h]h]h]h]uhjIh]rPj!)rQ}rR(hUh}rS(U anchornamehUrefurij h]h]h]h]h]h]rT(KKKKeUinternaluhjMh]rUhX Test suitesrVrW}rX(hj#hjQubahj%ubahjubj )rY}rZ(hUh}r[(h]h]h]h]h]uhjIh]r\(j )r]}r^(hUh}r_(h]h]h]h]h]uhjYh]r`j)ra}rb(hUh}rc(h]h]h]h]h]uhj]h]rdj!)re}rf(hUh}rg(U anchornamehsUrefurij h]h]h]h]h]h]rh(KKKKKeUinternaluhjah]ri(hXExample: Package using rjrk}rl(hj]%hjeubj)rm}rn(hj`%hjejDNhjh}ro(h]h]h]h]h]ujPNh]rphXexitcode-stdio-1.0rqrr}rs(hjf%hjmubaubhX interfacertru}rv(hjj%hjeubehj%ubahjubahj ubj )rw}rx(hUh}ry(h]h]h]h]h]uhjYh]rzj)r{}r|(hUh}r}(h]h]h]h]h]uhjwh]r~j!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKKKeUinternaluhj{h]r(hXExample: Package using rr}r(hj%hjubj)r}r(hj%hjjDNhjh}r(h]h]h]h]h]ujPNh]rhX detailed-0.9rr}r(hj%hjubaubhX interfacerr}r(hj%hjubehj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjYh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKKKeUinternaluhjh]rhXRunning test suitesrr}r(hj&hjubahj%ubahjubahj ubehj ubehj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKKeUinternaluhjh]rhX Benchmarksrr}r(hjIhjubahj%ubahjubj )r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehzUrefurij h]h]h]h]h]h]r(KKKKKeUinternaluhjh]r(hXExample: Package using r¸rø}rĸ(hj~Khjubj)rŸ}rƸ(hjKhjjDNhjh}rǸ(h]h]h]h]h]ujPNh]rȸhXexitcode-stdio-1.0rɸrʸ}r˸(hjKhjŸubaubhX interfacer̸r͸}rθ(hjKhjubehj%ubahjubahj ubj )rϸ}rи(hUh}rѸ(h]h]h]h]h]uhjh]rҸj)rӸ}rԸ(hUh}rո(h]h]h]h]h]uhjϸh]rָj!)r׸}rظ(hUh}rٸ(U anchornamehUrefurij h]h]h]h]h]h]rڸ(KKKKKeUinternaluhjӸh]r۸hXRunning benchmarksrܸrݸ}r޸(hjBKhj׸ubahj%ubahjubahj ubehj ubehj ubj )r߸}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhj߸h]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKKeUinternaluhjh]rhXForeign librariesrr}r(hjQ&hjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKK eUinternaluhjh]rhXBuild informationrr}r(hjt)hjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r (U anchornamehUrefurij h]h]h]h]h]h]r (KKKK eUinternaluhjh]r hXConfigurationsr r }r(hj@hjubahj%ubahjubj )r}r(hUh}r(h]h]h]h]h]uhjh]r(j )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKK KeUinternaluhjh]rhX?Example: A package containing a library and executable programsr r!}r"(hj@hjubahj%ubahjubahj ubj )r#}r$(hUh}r%(h]h]h]h]h]uhjh]r&j)r'}r((hUh}r)(h]h]h]h]h]uhj#h]r*j!)r+}r,(hUh}r-(U anchornamehUrefurij h]h]h]h]h]h]r.(KKKK KeUinternaluhj'h]r/hXLayoutr0r1}r2(hj1@hj+ubahj%ubahjubahj ubj )r3}r4(hUh}r5(h]h]h]h]h]uhjh]r6j)r7}r8(hUh}r9(h]h]h]h]h]uhj3h]r:j!)r;}r<(hUh}r=(U anchornamehUrefurij h]h]h]h]h]h]r>(KKKK KeUinternaluhj7h]r?hXAExample: Using explicit braces rather than indentation for layoutr@rA}rB(hjY@hj;ubahj%ubahjubahj ubj )rC}rD(hUh}rE(h]h]h]h]h]uhjh]rFj)rG}rH(hUh}rI(h]h]h]h]h]uhjCh]rJj!)rK}rL(hUh}rM(U anchornameh|Urefurij h]h]h]h]h]h]rN(KKKK KeUinternaluhjGh]rOhXConfiguration FlagsrPrQ}rR(hjn@hjKubahj%ubahjubahj ubehj ubehj ubj )rS}rT(hUh}rU(h]h]h]h]h]uhjh]rV(j)rW}rX(hUh}rY(h]h]h]h]h]uhjSh]rZj!)r[}r\(hUh}r](U anchornamehUrefurij h]h]h]h]h]h]r^(KKKK eUinternaluhjWh]r_hXConditional Blocksr`ra}rb(hjAhj[ubahj%ubahjubj )rc}rd(hUh}re(h]h]h]h]h]uhjSh]rf(j )rg}rh(hUh}ri(h]h]h]h]h]uhjch]rjj)rk}rl(hUh}rm(h]h]h]h]h]uhjgh]rnj!)ro}rp(hUh}rq(U anchornamehUrefurij h]h]h]h]h]h]rr(KKKK KeUinternaluhjkh]rshX Conditionsrtru}rv(hjHBhjoubahj%ubahjubahj ubj )rw}rx(hUh}ry(h]h]h]h]h]uhjch]rzj)r{}r|(hUh}r}(h]h]h]h]h]uhjwh]r~j!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKK KeUinternaluhj{h]rhX"Resolution of Conditions and Flagsrr}r(hj2Dhjubahj%ubahjubahj ubehj ubehj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehvUrefurij h]h]h]h]h]h]r(KKKK eUinternaluhjh]rhX/Meaning of field values when using conditionalsrr}r(hjDhjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKK eUinternaluhjh]rhXCommon stanzasrr}r(hjEhjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKKeUinternaluhjh]rhXSource Repositoriesrr}r(hjEhjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r¹(KKKKeUinternaluhjh]rùhX Downloading a package’s sourcerĹrŹ}rƹ(hjHhjubahj%ubahjubahj ubehj ubehj ubj )rǹ}rȹ(hUh}rɹ(h]h]h]h]h]uhjUh]rʹ(j)r˹}r̹(hUh}r͹(h]h]h]h]h]uhjǹh]rιj!)rϹ}rй(hUh}rѹ(U anchornamehrUrefurij h]h]h]h]h]h]rҹ(KKKeUinternaluhj˹h]rӹhXCustom setup scriptsrԹrչ}rֹ(hjb\hjϹubahj%ubahjubj )r׹}rع(hUh}rٹ(h]h]h]h]h]uhjǹh]rڹj )r۹}rܹ(hUh}rݹ(h]h]h]h]h]uhj׹h]r޹j)r߹}r(hUh}r(h]h]h]h]h]uhj۹h]rj!)r}r(hUh}r(U anchornamehUrefurij h]h]h]h]h]h]r(KKKKeUinternaluhj߹h]r(hXBackward compatibility and rr}r(hjM]hjubj)r}r(hjP]hjjDNhjh}r(h]h]h]h]h]ujPNh]rhX custom-setuprr}r(hjV]hjubaubehj%ubahjubahj ubahj ubehj ubj )r}r(hUh}r(h]h]h]h]h]uhjUh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehyUrefurij h]h]h]h]h]h]r(KKKeUinternaluhjh]rhX"Autogenerated modules and includesrr}r(hjZ_hjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhjUh]r(j)r}r(hUh}r(h]h]h]h]h]uhjh]r j!)r }r (hUh}r (U anchornamehUrefurij h]h]h]h]h]h]r (KKKeUinternaluhjh]rhX&Accessing data files from package coderr}r(hjeZhj ubahj%ubahjubj )r}r(hUh}r(h]h]h]h]h]uhjh]rj )r}r(hUh}r(h]h]h]h]h]uhjh]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r (U anchornamehUrefurij h]h]h]h]h]h]r!(KKKKeUinternaluhjh]r"hXAccessing the package versionr#r$}r%(hj[hjubahj%ubahjubahj ubahj ubehj ubj )r&}r'(hUh}r((h]h]h]h]h]uhjUh]r)(j)r*}r+(hUh}r,(h]h]h]h]h]uhj&h]r-j!)r.}r/(hUh}r0(U anchornamehUrefurij h]h]h]h]h]h]r1(KKKeUinternaluhj*h]r2hXSystem-dependent parametersr3r4}r5(hjRhj.ubahj%ubahjubj )r6}r7(hUh}r8(h]h]h]h]h]uhj&h]r9j )r:}r;(hUh}r<(h]h]h]h]h]uhj6h]r=j)r>}r?(hUh}r@(h]h]h]h]h]uhj:h]rAj!)rB}rC(hUh}rD(U anchornamehtUrefurij h]h]h]h]h]h]rE(KKKKeUinternaluhj>h]rFhXExample: Using autoconfrGrH}rI(hjShjBubahj%ubahjubahj ubahj ubehj ubj )rJ}rK(hUh}rL(h]h]h]h]h]uhjUh]rMj)rN}rO(hUh}rP(h]h]h]h]h]uhjJh]rQj!)rR}rS(hUh}rT(U anchornamehUrefurij h]h]h]h]h]h]rU(KKKeUinternaluhjNh]rVhXConditional compilationrWrX}rY(hjQUhjRubahj%ubahjubahj ubj )rZ}r[(hUh}r\(h]h]h]h]h]uhjUh]r]j)r^}r_(hUh}r`(h]h]h]h]h]uhjZh]raj!)rb}rc(hUh}rd(U anchornamehwUrefurij h]h]h]h]h]h]re(KKKeUinternaluhj^h]rfhXMore complex packagesrgrh}ri(hjVhjbubahj%ubahjubahj ubehj ubehj ubehj ubj*j )rj}rk(hUh}rl(h]h]h]h]h]uh]rmj )rn}ro(hUh}rp(h]h]h]h]h]uhjjh]rq(j)rr}rs(hUh}rt(h]h]h]h]h]uhjnh]ruj!)rv}rw(hUh}rx(U anchornameUUrefurij*h]h]h]h]h]hj.Uinternaluhjrh]ryhX Introductionrzr{}r|(hj3hjvubahj%ubahjubj )r}}r~(hUh}r(h]h]h]h]h]uhjnh]r(j )r}r(hUh}r(h]h]h]h]h]uhj}h]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij*h]h]h]h]h]h]r(KKeUinternaluhjh]rhX A tool for working with packagesrr}r(hX A tool for working with packageshjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhj}h]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij*h]h]h]h]h]h]r(KKeUinternaluhjh]rhXWhat’s in a packagerr}r(hXWhat's in a packagehjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhj}h]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij*h]h]h]h]h]h]r(KKeUinternaluhjh]rhXCabal featuresetrr}r(hXCabal featuresethjubahj%ubahjubahj ubj )r}r(hUh}r(h]h]h]h]h]uhj}h]rj)r}r(hUh}r(h]h]h]h]h]uhjh]rj!)r}r(hUh}r(U anchornamehUrefurij*h]h]h]h]h]h]r(KKeUinternaluhjh]rhXSimilar systemsrr}r(hXSimilar systemshjubahj%ubahjubahj ubehj ubehj ubahj ubj4j )r}rº(hUh}rú(h]h]h]h]h]uh]rĺj )rź}rƺ(hUh}rǺ(h]h]h]h]h]uhjh]rȺ(j)rɺ}rʺ(hUh}r˺(h]h]h]h]h]uhjźh]r̺j!)rͺ}rκ(hUh}rϺ(U anchornameUUrefurij4h]h]h]h]h]hj8Uinternaluhjɺh]rкhX Package Concepts and DevelopmentrѺrҺ}rӺ(hj=hjͺubahj%ubahjubj )rԺ}rպ(hUh}rֺ(h]h]h]h]h]uhjźh]r׺j)rغ}rٺ(hUhjԺjDXJ/home/refold/code/haskell/cabal-3.0/Cabal/doc/concepts-and-development.rsthjh}rں(UnumberedKUparentj4U titlesonlyUmaxdepthKUglobh]h]h]h]h]Uentries]rۺNhprܺaUhiddenUcaptionNU includefiles]rݺhpaU includehiddenujPKh]ubahj ubehj ubahj ubuU indexentriesr޺}rߺ(h]h]h]r(jtjujvjwjwjzxjxjRyjqyjyjzjzjzjzjT{js{j{j |j}j}j~j5jTjjjj܊jjjjjhjjjljjjjfjjjj'j>jjɏj>j]jjj&jjבjjujjj.jMjdjjj/jƔjjjjXjwjjj j#jjj˗j:jUjjjjOjnjjݙjjpjj̚jj_j~jjhjjjj%jDj[jjٞjjwjjj4jSjjjjjjj͡jjjj jjj`jȤj0jjjhjj(jjΧjjjjjjjjjjjxjjj8jjjQjpjjӄj)jHj_jj܅jjHjgj~jӆjj j^j}jjj;eh]h]h]r((j! X+setup command line option; --help, -h or -?jUNtr(j! X.setup command line option; --verbose=n or -v njUNtr(j! XEsetup-configure command line option; --ghc or -g, --jhc, --lhc, --uhcjUNtr(j! XFsetup-configure command line option; --with-compiler=path or -w *path*j3UNtr(j! X7setup-configure command line option; --with-hc-pkg=pathjUNtr(j! X5setup-configure command line option; --with-prog=pathjUNtr(j! X;setup-configure command line option; --prog-options=optionsjUNtr(j! X9setup-configure command line option; --prog-option=optionj7UNtr(j! X1setup-configure command line option; --prefix=dirjUNtr(j! X1setup-configure command line option; --bindir=dirj UNtr(j! X1setup-configure command line option; --libdir=dirjUNtr(j! X4setup-configure command line option; --dynlibdir=dirjSUNtr(j! X5setup-configure command line option; --libexecdir=dirjUNtr(j! X2setup-configure command line option; --datadir=dirjUNtr(j! X5setup-configure command line option; --sysconfdir=dirj*UNtr(j! X4setup-configure command line option; --libsubdir=dirj5UNtr(j! X8setup-configure command line option; --libexecsubdir=dirjUNtr(j! X5setup-configure command line option; --datasubdir=dirjCUNtr(j! X1setup-configure command line option; --docdir=dirj$UNtr(j! X2setup-configure command line option; --htmldir=dirjUNtr(j! X<setup-configure command line option; --program-prefix=prefixjUNtr(j! X<setup-configure command line option; --program-suffix=suffixjUNtr(j! X@setup-configure command line option; -f flagname or -f -flagnamej;UNtr(j! X6setup-configure command line option; --flags=flagspecsjUNtr(j! X3setup-configure command line option; --enable-testsjUNtr(j! X4setup-configure command line option; --disable-testsjUNtr(j! X6setup-configure command line option; --enable-coveragej&UNtr(j! X7setup-configure command line option; --disable-coveragejUNtr(j! X+setup-configure command line option; --userj=UNtr(j! X-setup-configure command line option; --globaljUNtr(j! X4setup-configure command line option; --package-db=dbj\UNtr(j! X0setup-configure command line option; --ipid=ipidjUNtr(j! X.setup-configure command line option; --cid=cidjQUNtr(j! X?setup-configure command line option; --default-user-config=filejUNtr(j! XHsetup-configure command line option; --enable-optimization[=n] or -O [n]jUNtr(j! X;setup-configure command line option; --disable-optimizationjUNtr(j! X7setup-configure command line option; --enable-profilingjUNtr(j! X8setup-configure command line option; --disable-profilingjYUNtr(j! XEsetup-configure command line option; --enable-library-profiling or -pjUNtr(j! X@setup-configure command line option; --disable-library-profilingjUNtr (j! X?setup-configure command line option; --profiling-detail[=level]jUNtr (j! XGsetup-configure command line option; --library-profiling-detail[=level]jUNtr (j! X=setup-configure command line option; --enable-library-vanillaj UNtr (j! X>setup-configure command line option; --disable-library-vanillajUNtr (j! X>setup-configure command line option; --enable-library-for-ghcijUNtr(j! X?setup-configure command line option; --disable-library-for-ghcijUNtr(j! X8setup-configure command line option; --enable-split-objsj^UNtr(j! X9setup-configure command line option; --disable-split-objsjUNtr(j! XBsetup-configure command line option; --enable-executable-strippingjUNtr(j! XCsetup-configure command line option; --disable-executable-strippingjKUNtr(j! X4setup-configure command line option; --enable-sharedjUNtr(j! X5setup-configure command line option; --disable-sharedjUNtr(j! X4setup-configure command line option; --enable-staticjUNtr(j! X5setup-configure command line option; --disable-staticjUNtr(j! X@setup-configure command line option; --enable-executable-dynamicjUNtr(j! XAsetup-configure command line option; --disable-executable-dynamicj UNtr(j! X?setup-configure command line option; --enable-executable-staticjUUNtr(j! X@setup-configure command line option; --disable-executable-staticjUNtr(j! X;setup-configure command line option; --configure-option=strj`UNtr(j! X?setup-configure command line option; --extra-include-dirs[=dir]jUNtr(j! X;setup-configure command line option; --extra-lib-dirs[=dir]j?UNtr(j! XAsetup-configure command line option; --extra-framework-dirs[=dir]jUNtr(j! X@setup-configure command line option; --dependency[=pkgname=ipid]jUNtr (j! X:setup-configure command line option; --exact-configurationjUNtr!(j! XOsetup-configure command line option; --allow-newer[=pkgs], --allow-older[=pkgs]jUNtr"(j! X<setup-configure command line option; --constraint=constraintjGUNtr#(j! X<setup-configure command line option; --preference=preferencejIUNtr$(j! X=setup-configure command line option; --disable-response-filesjUNtr%(j! XMsetup-build command line option; --prog-options=options, --prog-option=optionjUNtr&(j! X+setup-haddock command line option; --hooglejUNtr'(j! X6setup-haddock command line option; --html-location=urljUNtr((j! X0setup-haddock command line option; --executablesjUNtr)(j! X-setup-haddock command line option; --internaljUNtr*(j! X-setup-haddock command line option; --css=pathjUNtr+(j! X5setup-haddock command line option; --hyperlink-sourcej,UNtr,(j! X6setup-haddock command line option; --hscolour-css=pathjUNtr-(j! X1setup-hscolour command line option; --executablesjUNtr.(j! X.setup-hscolour command line option; --css=pathjOUNtr/(j! X+setup-install command line option; --globaljUNtr0(j! X)setup-install command line option; --userjUNtr1(j! X.setup-copy command line option; --destdir=pathjUNtr2(j! X,setup-register command line option; --globalj1UNtr3(j! X*setup-register command line option; --userjUNtr4(j! X0setup-register command line option; --gen-scriptj9UNtr5(j! X;setup-register command line option; --gen-pkg-config[=path]jUNtr6(j! X-setup-register command line option; --inplacej.UNtr7(j! X.setup-unregister command line option; --globaljEUNtr8(j! X,setup-unregister command line option; --userjUNtr9(j! X2setup-unregister command line option; --gen-scriptjUNtr:(j! X5setup-clean command line option; --save-configure, -sjUNtr;(j! X.setup-test command line option; --builddir=dirjAUNtr<(j! X0setup-test command line option; --human-log=pathjWUNtr=(j! X2setup-test command line option; --machine-log=pathjMUNtr>(j! X5setup-test command line option; --show-details=filterj(UNtr?(j! X6setup-test command line option; --test-options=optionsjUNtr@(j! XKsetup-test command line option; Give extra options to the test executables.jUNtrA(j! X4setup-test command line option; --test-option=optionjUNtrB(j! X3setup-test command line option; --test-wrapper=pathj"UNtrC(j! X+setup-sdist command line option; --snapshotjUNtrDej]j ]j]j ]rE(j" j jjjjjjjjj1jjj8jkjjj4jjAjtjj;jj%jsjj@jjRj!j!j_"j.#jq#j#j$jJj`JjJj&j 'j]'j'j?(j(j)j-j:.j.j.jv/j/j?1j5j`5j5j}6j6j7j7jo8j8j79j9j9j:j9:jl:jM;j;j;j;j<j<jQ=j=j>j3>j>j@j@j+AjAj*EjEjFjvGjGj(HjcHjHj_^j\j)\j^ej*]j4]uUall_docsrF}rG(hGAS5W2EhGAS5WjShGAS5WhGAS5WdhGAS5WkhGAS5W|jGAS5W3pj GAS5WjGAS5Whsj GAS5W_o?j*GAS5W1j4GAS5W3ujZ}rH(j6ZjMZjNZj%ZKj;ZjLZjAZjBZjZjZj=ZNjZNjZjZjTZj7Zj8Zhj"Zj#ZjWZj*ZuU ref_contextrI}rJUnumbered_toctreesrKh]rLhaRrMUdomainsrN}Uversioning_comparerOUoriginal_image_urirP}rQub.