HOOG`X[Jkh&'""99??  +01FFHH&&++GG2<<3$$4%%68WWoo9<_a##(+//36;BEJLLNRW\^pssuuxxzz~ ""&,.04466:HJLNOQSUUX_aaccggijmrt $$'(**,-/03358::Gb ;=?CCSS\\^^xxzz    ##'*EEGGIJPPddkkmqzz  ""))33<=IIYZ\\__kkuu%'*+4477QRUUZZ``ggvx{{c ##)+<  ##''++2266:;AAHJLLYY\\_ackmmoprrt$&+,..129:@@EEPRVVXhlnvwzz|~d  $%':@@CCLMSSWX^ottx    #((..1=@AHHMNPPSSYZ]]__cdjjmmppt   (*..1133==@@EFJJSSWWYZ\ceekknnqruvxx||<e  ##&&((+,..8:??ABK\^_beggijooqx{,./1;==?ACCEQSSUUXY[[]djkoqttyz|| "$$'*./1244669=@@f ++./1144CCLMQSVVXY[[__bbss ""&&+Yaaddhhnnyy{{ ((**/0AAFFJJaaccmmpv~~!"..29 g ##&&//56;<>>BBLSYYbbjjop  &'/03366:HLLRSVVZt{|  ,-/0::>?AAVgjjvv|~  hZ ))003366<<AAEVZZeekk ''008:<<UUXX[[ekrru    %&+,22:;PU[[ssuu  #$&(/?EEJKZZbbeeikmmi  ';>?CHLMQVXX\\^_aaccffhhkkmnpvyz~~   #,..0=??AADDFJLLNNTTVVYY]]_`cdffhhjlooqqxy #$((**13558<BLQRj<<RRkO ##00KSZZ   66:;HHNO__aaccggppu ::Xguvyy|~##79;;??EHJJQQbbii{}l  "';=?CCEFQSW\^_bbefqvxxzz!#&,./19>JRUXY]]aacdmqssz|~  #$((**/178ABDDFFJLQSVWYZ__hhkmpsuxzz/m *+46;<QQVW^w}}!!,,0044<=??BCEFKKMORX\\ggiimmoottvv(,,135578BBGGQQSSYYddffhhlmxxzz}}Nn ##**,,11;;>@CHLMOQSSV^`prrv    "&446=??ACFFHMVVXY]acdffhhjkmmooqrttvv !!##%=BIKLRRVWZZ5o  #&&*+02479<>?ADLMOPSWZ !#&00668:<=AADILORWYY\\__ddfkmqt  #**,WYY^^``ddghkouvx|~p !#&&+,..3688;<>>AACDLSUVXXcceehikkmmpw}}!,,0066:=AAFFHHUUXY\]__aacdfkppstyy  #$((**,,..q **oosswx}} r ##&&))++-.469<>?ABGJLMSSVVXX\\^^cdijllpvzz|    "#',.02266<=AAGHLLNW[`ddgkooqrttxy~s #&,,./23579<>?AACDMMPSXY[\^_bdffhikmoorrvx}~   ,/022568;==??AADDFJMQTTVVYZ_acdffhhjknoqqwwy{~It !"&&..3468:;>>ADJJOPSSUVXX\_acffhhjkrrwy|",335689<<?ADJLMS[]_bdffhhjlyz   !#$)*./13558<>Jxu &;CCLLSSVVbbllnoxx  !"00@@BBLMSSWYddoorrzz~ #&((**11SSYZ_`kkuuxxvN ++9:??[\ssuv==FGQQXX]]kkooqq  "":;BBIIKLNNVWggmm{{%%KKVV\\ggijzzwkk89NO]]**ZZ0?ee{}x9rrxx,89IJzz//<<OO__aaeeoott66XX^^hhwwyy||yG 88::BBJJ\\jjmmzzEEGGMM]]kk  $$..IIUU~~  %'*+FGIIUU]_ggruyy{{~~z66]]x.\jVbDD()?b->bAllaAnyaArcha BlockReasonaBoola BuildFlagsva BuildInfoaa BuildTypeNaCCharaCClock`CDev`CDoubleI`CFloat_CIno_CInt`_CIntMax_CIntPtr^CLDoublew^CLLong/^CLong]CMode]COffW]CPid]CPtrdiff\CSChar\CShort7\ CSigAtomic[CSize[CSsize_[CTime-[CUCharZCUIntZCUIntMaxUZCUIntPtr ZCULLongYCULong}YCUShort5YCWcharXChanXCharX CleanFlagsX CommandParseXCompilerXCompilerFlavoryX CompilerIdbXComplexWXConfVarNX ConfigFlagsAXConfiguredProgram3X ConsoleEventXConstr X ConstrRepXCopyDestW CopyFlagsWDataRepWDataTypeW DependencyW DependencyMapWDigitWDocWDouble^WDynamicEWE126WE6'WEitherWElemVErrnoV ExceptionV ExecutableV ExtensionVFdnVFieldeV FingerTreeGVFixity>VFlag-VFlagName VFloatUGeneralCategoryUGenericPackageDescriptionU GlobalFlagsU HaddockFlagsUHandleUHashDataU HscolourFlagsUIOxUIOUArrayfUIdQUInsertsMU InstallDirsDU InstallFlags7UIntUInt16TInt32TInt64TInt8lTIntMapPTIntPtrTIntSetSIntegerSLexemeSLibrarySLicenseSLocalBuildInfoS MakefileFlagsSMapuSMaybe&S ModuleNameSNestedAtomicallyR NoMethodErrorRNodeRNonTerminationROSROptimisationLeveltROrderingdRPSRPDTaggedFRPError@RPWarning:R PackageCheck4R PackageDB&RPackageDescriptionRPackageIdentifierQ PackageNameQ ParseResultQ PathComponentQ PathTemplateQPathTemplateVariableQPatternMatchFailQPlatformQProgramConfigurationtQProgramLocationfQQSem\QQSemNRQReadEIQReadP0QReadPrecQ RecConErrorP RecSelErrorP RecUpdErrorP RegisterFlagsPRepoKindPRepoTypeP SDistFlagsPSTMkPSeq3PSetP SourceRepoP StableNamePTVarO TestFlagsOThreadIdO ThreadStatusOTimeoutOTreepOTyConjOTypeRepdOUnique\O VerbosityBOVersion"O VersionRangeOVersionWildcard OViewLNViewRNWordNWord16kNWord32DNWord64NWord8MWordPtrMZipListM[::]M[]IM TraversableFoldable Applicative AlternativeMonadFix MonadPlusFunctorMonadFunctor Applicative ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq PrintfArgDataStorableIArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorableIArrayMArray Typeable1FunctorFoldable Traversable Typeable1FunctorFoldable TraversableTextTextEqReadShowTextEqOrdShowReadTypeableBoundedEnumOrdEqShowOrdEqDataData Typeable1Functor ApplicativeMonad TraversableFoldableTypeableShow ExceptionEqShowOrdEqShowEqOrdTypeableDataMonoidShow Typeable1 Typeable1ShowReadEqFoldable Typeable1FunctorFoldable TraversableMonad MonadPlus Typeable1 Typeable1FunctorMonadMonoidShowTextShowReadOrdEqTextShowReadOrdEqMonoidShowTypeableShow ExceptionTypeableShow ExceptionTypeableShow ExceptionFunctorMonad MonadPlusFunctorMonad MonadPlusFunctorTypeableTypeableEqShowReadShowReadTextReadShowOrdEqTypeableShow ExceptionShowReadEqShowReadShowReadMonadTextOrdEqShowReadTextPackageOrdEqShowReadPackageEqReadShowReadShowEqShowShowShowMonoidShowMonad MonadPlusMonoidDataIxBoundedEnumReadShowEqTextReadShowOrdEqTypeableShow ExceptionFoldableFunctor TraversableTypeableShow ExceptionTypeableShow ExceptionTextShowReadOrdEq TraversableFoldable Applicative AlternativeMonadFix MonadPlusFunctorMonad Typeable2MonoidShowShowReadTextEqShowReadMonoidReadEqShowShowEq PrintfArgDataBitsIxMonoidDataEqOrdShowReadTypeable ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqFoldableFunctor Typeable1 PrintfArgDataStorableIArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorableIArrayMArray PrintfArgDataStorableBitsIxIArrayMArrayMonoidShowFunctorEqFunctor Applicative Typeable2MArray ApplicativeMonadFixMArrayMonoidShowShowEqDataMonoidShowMonoidPackageEqShowIxBoundedShowReadEnumOrdEq PrintfArgDataStorableIArrayMArrayShowOrdEqFunctorEqShowShowEqFoldableFunctor TraversableEqShow ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqTextEqReadShowMonoidEqReadShowTypeable ExceptionShowEqEqFunctorFoldable Traversable Typeable2 HasResolution HasResolution ExceptionTypeableShow PrintfArgDataStorableIArrayMArrayShowFoldableFunctor TraversableMonoidReadShowTextEqShowReadShowTypeableDataShowEqMonoidShowShowEqShowEqShowEqReadShowEnumOrdEqTypeableEqShowReadMonoidShowShowEq Typeable1TextShowReadOrdEqTextOrdEqReadShowReadShowFunctorMonoidShow PrintfArgIsCharDataStorableIxIArrayMArray Typeable1 ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqTextEqReadShowMonoidEqReadShowMonoidShowTextDataStorableIxIArrayMArrayShowOrdEqTextReadShowOrdEqMonoidBoundedShowReadOrdEqMonoidBoundedShowReadOrdEqArrow ArrowChoice ArrowApply ArrowLoopCategoryMonoidDataEqOrdIxZb>ArgPlaceHolderzjArgsgjBoundsUj ByteCountMjCString>j CStringLen#jCWStringj CWStringLeni ClockTickiConIndexi DescriptioniDeviceIDi DiffArrayi DiffUArrayiEdgei EpochTimeiFileID|iFileModeti FileOffsetmiFilePath`iFinalizerEnvPtr-i FinalizerPtr iFlaghFlagAssignmenthForesthGenerichGenericBhGenericMhGenericQhGenericRhGenericThGraphnhHookedBuildInfo.hIOError hIPrhInstallDirTemplatesgInstalledPackageInfogKeygLFlagsgLimitgLineNogMicrog MkOptDescrIgNamenEeLdSGeneralCategoryemta{loptimisatiȧoϧn֧OptimisationLevelpDataReparsePErrorp0t7i>mEiLsSaZtaihoonvOptimisationLeveleWsterminaȨtϨi֨oݨnNonTerminationpa cing&m-a4r;kBGeneralCategory SearchResulte\oun|omϩpatbinds Extensiono֩rݩphismrestr#i*c1t8i?oFnM Extensiontchjoqdxerror NoMethodErrormplǪiΪcժiܪtprelud e Extensionl*a1g8FlageITreeoZpayhdoevs}tCopyDestufferinëgʫ BufferModergArgDescrcCompilerFlavors̬tw"q)u0a7l>iEfLiSeZdaohpoevr}ators ExtensionbsdĬOStӬeڬdatomic all y'NestedAtomicallymHeONamedbfiipewl~dpuns Extension6aeıiko_u vڭarMVar#MVar#lҮtab$l+e2ab>yEtLeSaZrarhaoyv#}MutableByteArray#rray# MutableArray#tٮiparamt ypec&l-a4s;sBeIsP Extensiond%nkaowitoneRepoTypedMonoiddįMonadfpݯlus MonadPlusi xMonadFixe itu6l=eDnKaRmYe` ModuleNamef{ierl԰symbolGeneralCategorye۰tterGeneralCategoryModefko&p-t4d;eBsIcPrW MkOptDescrlraygFlagcpsArchroMicror˱cұuٱrialRepoTypegkDp7rt̲xEy(b/e6MaybeiLmSuZmaohpotvi}misationOptimisationLevelhӲsڲymbolGeneralCategoryra y'MArrayMapeK BuildTypef_iflmetf{lags MakefileFlagsichóaʳsѳhس Extension8kArcha)ehf<g!ioc-gsw5e<rCcJaQsXe_lfemttt{erGeneralCategorysofpreȴcϴiִsݴionArithExceptiono ff ConsoleEventa4l;bBuIiPlWd^ienlfsozLocalBuildInfob޶cmnt Conditione׵uȵxϵOSbLn5separa tor GeneralCategoryo<LineNouSfZfaehroivn}g BufferModeitLimitensƶeͶLicensedelrFsubd irva%r,PathTemplateVariableaMrTy[LibraryrsazltypesynonyǷmηsշ ExtensionirvarPathTemplateVariablep(l/LicenselCaJgQsXLFlagsftxyemeLexemeternumȸbϸeָrݸGeneralCategorytEitherm odeModest5e<rCvJeQrXs_ifomnt VersionRangetLasteCileislȹiϹKleislindsign atur&e-s4 ExtensionyJKeyh|ucsjtqMaybecCompilerFlavor 3(adfgnmnCoqp]rGsxպIxc"strin gIsStringh)a0r7IsChariNxUOSrdIPrIOaeomJr-tлuarrayIOUArrayo׻d޻iffarray IOToDiffArraye4f;IORefoQdXe_IOModerx{ception IOExceptionrȼoϼrּIOErrortype IOErrorTyperr$a+y2IOArrayc dfhWisthInt #|1f3P6:8,ce!mprʽsetIntSeteѽpؽDataReptrIntPtra pIntMapgr-s4e;cBtIvPeWr^seilosnzranges VersionRangeer¾aɾlоIntegralrIntegeronstr ConstrRepInt84AInt642WInt326mInt16Int#talldeflaſg̿sӿ InstallFlagsdpack age!i(n/f6o=InstalledPackageInfo_`InstalledPackageInfo_irstemplatesInstallDirTemplates InstallDirst ialq&u-o4t;eBGeneralCategorye^reilts StdStreamixFixityexoutofboundsArrayExceptionohe r'e.n5t<iCnJsQtXa_nfcmets{ Extensionplredicativetypes ExtensionConfVari c'i.t5p<aCrJaQmXs_ Extensionnuo|reHandlerblockFieldentLexeme6rrayIArray4Arch8/66Archa1be4opBstujgqsxCompilerFlavormldirvarPathTemplateVariablecolourflag$s+ HscolourFlagsprbuSxZOSiinptwf~type HPrintfTypeaArchokedbuildin foHookedBuildInfoalrEeLdSoZcauhmoevn}ts ExtensioniumCompilerFlavorpoverflowAsyncExceptioncCompilerFlavordCnsBhrNeUs\ocljuqtxion HasResolutiontable HashTabledleHandlepr Handlero!s(n/ HandlePosndJoQcXk_fflmatg{s HaddockFlags ae7hilgmXn'pqrt GenericT'aphGraph GenericQ'lLicenseu.a5r<cChJRepoType GenericM'onbua|lfpackagedb PackageDBlags GlobalFlagstRepoTypec#CompilerFlavorn>eErLaiXc_Generic'bmp qrstGenericT' GenericT' ExtensionGenericRGenericQ' GenericQ'ack"a)g0e7d>eEsLcSrZiaphtoivo}nGenericPackageDescriptionGenericM' GenericM'GenericBGeneric'lcizedn$e+w2t9y@pGeNdUe\rcijvqixng ExtensionategoryGeneralCategorydts ExtensionFielddiilloru,n3c]p?tFrMFunPtrtdioprwFunctoronaldependencies ExtensionayeUoms&t-r4i;nBgIPErrore\bcsjdqOSctional Fractionall7r*undonsystemProgramLocationeYm6a=tDGeneralCategoryi|setlForestgnfptr ForeignPtrunctioninter fac!e( Extensiond>aEbLlSeZFoldableaeo}atFloatcirepDataRepngFloatingonstr ConstrRepxi$b+l2e9ciEnLsStZaanhcoevs} Extensionontexts ExtensiongFlaganameFlagNamess i'g.n5m<eCnJtQFlagAssignmenteflnrxeityFixitydFixedstFirstali,quo teGeneralCategoryz3e:rAeqpMtTr[ FinalizerPtrnxvptrFinalizerEnvPtreiOm(opathFilePathffse t FileOffseto/d6e=FileModedVFileIDlmdtFielddescr FieldDescrFd 1S6Gadimnomp)qrxcNeiten&ds2i9b_oEnL Extensionlfemrte{cords Extensioneddefaultrules Extensionst*cefxs@uGcNcUe\scsjExitCodeailureExitCodexception Exceptionode ExitCodet%e,n3t:iAaHlOqVu]adnktriyfication Extensioncutable Executablen amev&a-r4PathTemplateVariableeUp\tcijoqnx Exception ExceptionrnorcmsgErrorMsgall ErrorCalloErrnoEqo0c7h>tEiLmSeZ EpochTimeftLexemecdumEnumoEndolosingmarkGeneralCategorypt$y+dRlGr<ViewRViewLaYt`agdneuc|ls ExtensiontherEithergeEdgerlierv ers i'o.n5 VersionRangeE62ZE12ae<io#uynaexception ExceptionmicDynamicalDualcnuIw4n;DownbPlWe^DoubleDocdirvarPathTemplateVariablefs!videbyzero ArithExceptiona(m/b6i=gDuKaRtYe`rgencuo|rdfields Extensionfa uarray DiffUArrayrra"y) DiffArraya`cfnp`rsvfimcte{idDeviceIDcription Descriptioniveda tat y'p.e5a<bClJeQ Extensionegnndue|ncy DependencyormalArithExceptionaultHandleri mal!n(u/m6b=eDrKGeneralCategorydglnouc|kDeadlockr staDatadgrHstypeDataTypeubd irv a'r.PathTemplateVariableeOpVDataRepinruv|arPathTemplateVariablehpunctuationGeneralCategorycsRepoTypeacdfhioj;lmZn=oaprqs3tugvRwyclicsccSCCc-stringCWStringl en CWStringLenh4a;rBCWcharsYRepoTypecil3rshtom BuildTypeortCUShortrencysym bolGeneralCategoryl]o?nFgMCULongodnkgrCULLongntCUIntmptrCUIntPtraxCUIntMaxharCUCharime$CTimecLh'istNrUi\ncgjCStringlen CStringLenizeCSsizegzeCSizeatomi c CSigAtomico.r5t<CShorthSaZraCSCharexatepirocess CreateProcesspe StdStreamiLp=trdif$f+CPtrdiff ExtensiondSCPidf(mnDpr| ConditionydfptoCopyDestrefixCopyDestlags  CopyFlagse$s+t2CopyDestdVfyiKnstdrkorlyGeneralCategoryc ConsoleEventotConstrConstrarep ConstrRepinedc#l*a1s8s?mFeMtTh[obdisp Extensionleevent ConsoleEventectorpunct uat!i(o/n6GeneralCategorynRdYe`xgConIndexivarConfVargf%ure BuildTypedprogram ConfiguredPrograml,a3g:sA ConfigFlagsintgrneue|CondTreeodeCondTreetion ConditionmpilexComplexle%r,CompilerfiuvMaTr[PathTemplateVariabled| CompilerIdlavorCompilerFlavorandCommandehlpsr)ui CommandUIe0a7d>yEtLoSgZoa CommandParseazrse CommandParseist CommandParseelp CommandParserrors CommandParsef/COffoDtK ConditiondofdmetCModespecCmdSpecdelocfnPse ConsoleEventpunc tuat&i-o4n;GeneralCategorygWCLongkmtti{ck ClockTickongCLLonganflags CleanFlagso ubl"e)CLDoublemBpIbPuWf^CJmpBufnvotCIntmptrCIntPtraxCIntMaxCInoaeEo r TextDetailsice"o)p0t7OptDescrcLkSpZaachkoavg}econtentopsCheckPackageContentOpsnrCharChaniel@p#o*s1CFposoGaNtUCFloatllesCFileeoubleCDoublevCDevhlockCClockarCCharln}t/cie;gBoIrPyWCategoryhpHandlerd Conditionendartime CalendarTimeayilorssFuVyte c'o.u5n<tC ByteCountfiblidpfitype BuildTypenfo BuildInfolags BuildFlagsfermo$d+e2 BufferModedM3f4YLicenseLicenseezak ConsoleEventoundesBoundsdBoundedlBoolop tOptDescro%c,k3be|rDeKaRsYo`ng BlockReasondibonbdef-mostm BlockReasonther BlockReasonvar BlockReasono4r;eBiIgPnWc^aellls BlockReasonxception BlockReasoneadmvarBlockedOnDeadMVarl a'c.k5h<oClJeQ BlockReasonnidpewf~initelyBlockedIndefinitelyuffering BufferModen5t s'Bitsd<iCrJvQaXr_PathTemplateVariablenzaarRepoTypegpatterns Extension bcd\iMlmzn%prs*sy6n=cDeKxRcYe`pgtniuo|nAsyncExceptionertionfailedAssertionFailedcTgvimr#ao/w6ArrowaWclmpszheorvo} ArrowZero Extensionlus ArrowPlusonad ArrowMonadoop  ArrowLooph&o-i4c;eB ArrowChoicep^pellys ArrowApplyyArray#exceptionArrayExceptionArray#Archthe&x-c4e;pBtIiPoWn^ArithExceptiond&opsArgslaceholderArgPlaceHolderrde rArgOrdere-s4c;rBArgDescrh[Archvnaur|PathTemplateVariablepelicative Applicativendmo deIOModey,Anyv>eErLsSiZoanh VersionRangebigouous SearchResultusparsePErrorglzpbter#n*a1t8i?vFeM AlternativehiapArchAllrightsreservedLicensecrepDataRepo"n)s0t7r> ConstrRepxTOSdcrj#qAddr#yclicsccSCCsoluteseekSeekMode:-]![]:4];[::])P()`%..m,=,+++*)s)+)((C('$O$$#c#1#"'"!! NEChar[]a(,)[]Char[] aOptDescraabbaStringChar[][]Char[]baMaOptDescraaBoolFlagBoolFlagaStringChar[][]Char[]`?Arch*Bool cDC1+ BuildFlags, BuildInfof"- BuildType. CleanFlagsT/CompilerECompilerFlavor>0 CompilerIdC?ConfVarjD ConfigFlags1ConfiguredProgramCopyDest2 CopyFlagsW3 DependencyDocKub Executable4 Extension5FieldFlagNameGenericPackageDescription GlobalFlagsV6 HaddockFlags 7 HscolourFlagsR8 InstallFlagsX9Inth3Library:License;LocalBuildInfow MakefileFlagsQ< ModuleName=OS>OptimisationLevel?OrderingdPErrorPWarning PackageCheck PackageDB@PackageDescriptiono4_APackageIdentifierS PackageNameT PathTemplatePathTemplateVariableBPlatform C PreProcessor2$DProgramEProgramConfiguration ZUFProgramLocation[  RegisterFlagsYGRepoKind HRepoType I SDistFlagsUJShowOrParseArgsK SourceRepo TestFlagsSL UserHooksV%M Verbosity@)NVersionU@5O VersionRangeEBAPaGo\cpdirxflagsjChar[]aMaybeChar[]Char[]MaybefChar[] ModuleNameInstalledPackageInfo_Maybe()CharrParserCharCharrParser^6CompilerFlavorCharrParser DependencyCharrParser ExtensionCharrParserFilePathCharrParserLicenseCharrParser ModuleNameCharrParser PackageNameCharrParserStringCharrParser_StringCharsParser VersionCharrParser VersionRangeCharrParseraCharrParser XHacvCondTreeL VersionRangeCompilerFlavor(,)CharrParseraString(,)CharrParserConfVar ConditionCharrParsera[]CharrParseraErrorMsgEitherC()IODZ=:75210/.-,+*'$!   a`v () ParseResultBoolmc BuildFlags CommandUI BuildInfo[] BuildTypeMaybe BuildType[]%Char[]&J"igedYX;|yshg^'& CleanFlags CommandUICompilerFlavorMaybe ConfigFlags CommandUIConfiguredProgramMaybe CopyFlags CommandUI Dependency[]T. Executable[] Extension[]=/(FlagName[]mGenericPackageDescriptionIO%GenericPackageDescription ParseResult GlobalFlags CommandUI HaddockFlags CommandUI HscolourFlags CommandUI InstallFlags CommandUILibraryMaybeLocalBuildInfoIO] MakefileFlags CommandUI ModuleName[]0 PackageCheck[]lPackageIdentifierIOPackageIdentifier[]R} PathTemplate InstallDirsProgramMaybe Program[])ProgramConfigurationIO?; RegisterFlags CommandUI RepoTypeMaybe SDistFlags CommandUI  SourceRepo[] TestFlags CommandUI  VerbosityMaybe~ VerbosityReadE!VersionMaybeVa FieldDescraIO&aMaybeaZaOptDescra OptionFielda ParseResulttaReadE]\Wca SearchResultI"a[][actionCommandlb FieldDescrebOptDescrb OptionFieldfc ConditionN!rqc InstallDirs`dir InstallDirsOflags CommandParseYPflags CommandUIflags OptionFieldgmCheckPackageContentOps[mInstalledPackageInfo_m[]~pkgMaybepkg PackageIndexQbpkg[]BoolFlagName(,)[]Q PathTemplatePathTemplateVariable(,)[]ProgramConfigurationCompiler(,)IOMProgramConfigurationConfiguredProgram(,)IO> VersionRangeCompilerFlavor(,)[]Library Dependency[]ConfVarCondTreeMaybek IntMaybePackageIdentifierpkgIntInt[]IntArray(,,)Char[] Extension(,)[]:ConfiguredProgramMaybeProgram(,)[]PackageIdentifier[]pkg(,)[]action CommandParsea(,) CommandParseeVersionPackageIdentifier(,)[] PackageName(,)[]Char[][]CompilerFlavor(,)[]+ BoolFlagName(,)[]PackageDescription(,) Dependency[]EitherChar[]Char[]EitherChar[]IntMaybe(,)PackageIdentifier[]pkg(,)[]pkg PackageIndexEither BuildInfoChar[](,)[] BuildInfoMaybe(,)Char[]IO <984)Char[] InstallDirsChar[]MaybeChar[][] nWSRB<-,#{zk ConfigFlags OptionField[]Field[] ParseResultLocalBuildInfoMaybeIO ModuleNameInstalledPackageInfo_ PackageIndex ModuleNameInstalledPackageInfo_ ParseResult PackageCheck[]IO PackageCheck[]mdPackageDescriptionMaybeIO PathTemplate InstallDirsIOAVersionMaybeIOaOptDescr[]flags OptionField[]ipkg[] SearchResultpkg[][] PreProcessorLocalBuildInfo BuildInfoChar[](,)[]#ExitCodeChar[](,)IO(aChar[]EitherIO acvCondTreeMaybeacvCondTreev Condition(,,)[]n  Executable Dependency[]ConfVarCondTreeChar[](,)[]mChar[]Char[](,)[]vP*(Char[][]Char[](,)[]uO'  BuildInfoChar[](,)[] BuildInfoMaybe(,)IO #    BuildInfoChar[](,)[] BuildInfoMaybe(,) ParseResultChar[]MaybeIO  Char[]Maybe InstallDirsChar[][]IOChar[][][] ModuleNameInstalledPackageInfo_ PackageIndexIO6Char[]Char[](,)MaybeIO ModuleNameInstalledPackageInfo_ PackageIndexMaybeIO3 PathTemplateChar[] InstallDirs OptionField[]$ PathTemplateChar[] InstallDirsNBoolChar[] {xsp]G8CompilerFlavorChar[]HCopyDestChar[]^OptimisationLevelChar[]I PackageDBChar[]|J PathTemplateChar[]K VerbosityChar[] }yt_L9&aChar[]FChar[]Char[] zwrq\F7%Char[]MaybeChar[].>w0wutt=tss@sr8nmm,m mllRl)lkWkjj?^^s\F\\[[[FEEEAA9>===<<0<;;;c;K;;::999888>776]4()IO BuildFlags UserHooksLocalBuildInfoPackageDescriptionV()IO CopyFlags UserHooksLocalBuildInfoPackageDescriptionV()IO HaddockFlags UserHooksLocalBuildInfoPackageDescriptionV#()IO HscolourFlags UserHooksLocalBuildInfoPackageDescriptionV ()IO InstallFlags UserHooksLocalBuildInfoPackageDescriptionV()IO MakefileFlags UserHooksLocalBuildInfoPackageDescriptionV ()IO RegisterFlags UserHooksLocalBuildInfoPackageDescriptionVVaaBoolaabbbBoolbbafecba`Char[][]IOConfiguredProgram VerbosityBoolChar_^BoolbDocaaaabfedcbBoolbaba()IO CleanFlags UserHooksLocalBuildInfoMaybePackageDescriptionV()IO SDistFlags UserHooksLocalBuildInfoMaybePackageDescriptionVa ParseResultaChar[]IntVersionMaybeIOChar[] VerbosityBoolMaybeaBoolMaybebbaaIO ExecutableaIOLibrarya ParseResultPErrora[]bChar[][]CompilerFlavor(,)[]bactionChar[][]flagslChar[][]aChar[][]bflags OptionField[]ShowOrParseArgsChar[]MaybeIO VerbosityChar[]Maybe[]aChar[]Maybe[]bBoolChar[]b VerbosityChar[]flagsgbba[]aIOHandleChar[]ErrorMsgChar[]\aChar[]]bChar[]aErrorMsgEitherChar[]W()IO VerbosityChar[]Char[]ZBoolmChar[][[Char[]Char[]YaIOChar[]Char[]a(,)[]Char[]X aOptDescrsetgetStringChar[][]Char[]LocalBuildInfoIO ConfigFlags BuildInfoChar[](,)[] BuildInfoMaybe(,)PackageDescriptionGenericPackageDescriptionEither(,)VbbChar[][]CompilerFlavor(,)[] ()IO VerbosityChar[]Char[](,)Char[]Char[](,)$ ()IOLocalBuildInfoPackageDescriptionBoolChar[][]V()IOLocalBuildInfoPackageDescription BuildFlagsChar[][]V ()IOLocalBuildInfoPackageDescription ConfigFlagsChar[][]V()IOLocalBuildInfoPackageDescription CopyFlagsChar[][]V()IOLocalBuildInfoPackageDescription HaddockFlagsChar[][]V$()IOLocalBuildInfoPackageDescription HscolourFlagsChar[][]V!()IOLocalBuildInfoPackageDescription InstallFlagsChar[][]V()IOLocalBuildInfoPackageDescription MakefileFlagsChar[][]V ()IOLocalBuildInfoPackageDescription RegisterFlagsChar[][]VV ()IOLocalBuildInfoMaybePackageDescription CleanFlagsChar[][]V ()IOLocalBuildInfoMaybePackageDescription SDistFlagsChar[][]V  BuildInfoChar[](,)[] BuildInfoMaybe(,)IO BuildFlagsChar[][]V  BuildInfoChar[](,)[] BuildInfoMaybe(,)IO CleanFlagsChar[][]V  BuildInfoChar[](,)[] BuildInfoMaybe(,)IO ConfigFlagsChar[][]V  BuildInfoChar[](,)[] BuildInfoMaybe(,)IO CopyFlagsChar[][]V  BuildInfoChar[](,)[] BuildInfoMaybe(,)IO HaddockFlagsChar[][]V"  BuildInfoChar[](,)[] BuildInfoMaybe(,)IO HscolourFlagsChar[][]V  BuildInfoChar[](,)[] BuildInfoMaybe(,)IO InstallFlagsChar[][]V  BuildInfoChar[](,)[] BuildInfoMaybe(,)IO MakefileFlagsChar[][]V  BuildInfoChar[](,)[] BuildInfoMaybe(,)IO RegisterFlagsChar[][]VV  BuildInfoChar[](,)[] BuildInfoMaybe(,)IO SDistFlagsChar[][]VbChar[]Maybe()IOChar[][]bbBoolChar[]flagsflags VerbosityChar[]g@Arch Bool2 iiAA$#"!wwww w w w  BuildFlags )('&% BuildInfoB210/.-,+* CalendarTime543Char6 CleanFlags987Compiler 3@?>=<;:wCompilerFlavorDCBA CompilerIdE ConfigFlagsUTSRQPONMLKJIHGF#]ConfiguredProgram 54[ZYXWVCopyDest CopyFlags a`_^]\ DependencybDocErrorMsgc Executable,+fedFieldhgFlagNamejiGenericPackageDescriptiononmlk GlobalFlagsp HaddockFlags vutsrq HscolourFlags yxw InstallFlags  }|{zInt~tLibrary0/LicenseLocalBuildInfo3:   a`2 MakefileFlags   ModuleNameOS OptimisationLevelwPErrorPWarning PackageCheck PackageDB63w PackageDescriptionJ:987/.,   a`4wd_PackageIdentifier10 PackageName PathTemplateww PreProcessorProgram >=<;ProgramConfiguration?>=<;63Z wProgramLocation RegisterFlags RepoKind SDistFlagsShowOrParseArgsi SourceRepoString TestFlags UserHooks-      Verbosity1Z@?>=<;:9876543210/.-,+*)('&%$#"!  VersionCBAAC5 VersionRangeEEDC>DaLKJIHGFutabddccMcNLdirO O O O O OOOOOOOOOflagsPkgetpkgUTSRQsetaOptDescrsetget[]aaReadEaCharrCharPStringParserChar[]Char[]MaybeaaaCharrParseraCharaParser\aCharrParserHacConfVarCondTreemacvCondTreeponbCharrParsercloseCharrParseropenCharrParsersepCharrParser VersionRangeCompilerFlavor(,)b(()IO BuildTypeMaybeChar[]bb99882100//.....--,,++*)('&%$#!     iaaa`     gCompilerFlavorMaybe Dependency[]"" Executable[]ExitCodeIOv Extension[]=<" Field[]IntMaybeLibraryMaybeLocalBuildInfoMaybe98 ModuleNameInstalledPackageInfo_y ModuleName[]!" PWarning[]PackageDescriptionMaybelPackageIdentifier[]w PathTemplate InstallDirswProgram[]VRepoTypeMaybe SourceRepo[] VersionMaybea CommandUIea FieldDescreutsaIO&a InstallDirs`a OptionFieldfa ParseResultaReadEa[]b InstallDirs`bReadEc Conditionrrqdir InstallDirsxflags CommandUIlkjihgfmCheckPackageContentOpsdcmInstalledPackageInfo_~}|{zm[]  pkg PackageIndexQbpkg[]awwthcaCharrParser[]  BuildInfoChar[](,)[] BuildInfoMaybe(,)PackageDescriptionGenericPackageDescriptionEither(,)]BoolFlagName(,)[] PathTemplatePathTemplateVariable(,)[] VersionRangeCompilerFlavor(,)[]Library Dependency[]ConfVarCondTreeMaybeChar[] Extension(,)[]E Char[]Char[][]Char[](,)b(,,)[]Char[][]CompilerFlavor(,)[]"aChara[]ParserendChara[]ParserStringChar[](,)aChar[]Char[](,)ZZ.,+`Char[][]Char[](,)aa`` BuildInfoChar[](,)[] BuildInfoMaybe(,)_^ Char[] InstallDirs``Char[]Maybe wChar[][]U=<54*)(!!       """"" " " """"""e ModuleNameInstalledPackageInfo_ PackageIndexwPackageDescriptionMaybeIOVa FieldDescr[]aOptDescr[]a[][]actionCommand[]epkg PackageIndexMaybe PreProcessorLocalBuildInfo BuildInfoChar[](,)[] V9 acvCondTreeMaybeacvCondTreev Condition(,,)[]L  Executable Dependency[]ConfVarCondTreeChar[](,)[]Char[]Char[](,)[]'"BoolaaaChar[][]Char[](,)Char[](,,,)[]Char[][]Char[](,)[] PathTemplateChar[] InstallDirsBoolChar[] YYXXWWVVUTRCompilerFlavorChar[]CopyDestChar[]WOptimisationLevelChar[]  PackageDBChar[]YX PathTemplateChar[]   VerbosityChar[]  YXWUTSRQaChar[]G\[ZChar[]Char[] YXWUTSRRQQChar[]MaybeChar[]Yg׵zo`UJ2 ִŴ}l[J1 ճʳmOD9زͲufWL]N?0!װȰwh]tM>/ خt[K2ЭxY9.߬ɬ}rg\QF7!nGêvbWL<ةcE%ʨziRA$ ̧o^L: Ŧ}rB"ХjXD0ڤnL8$ͣz_B(Ƣ{iQסy_,ߠĠygUC( ޟßygG3 מvdR7ٝŝ{iW?-œK(؛|qfOD9.ԚĚzhDǙ|l\J8(ݘ˘~RB2"їrg\Q>* ՖŖvkWE:(ޕ̕xaE5#۔˔~sbP7͓sh]R3Ւʒvk`QF)ϑuQ?4ڐvg\QB7#׏w\H9Ў~sa9*ލǍujXM:/ތhO;+׋Njt[K,͊q]9%ɉ}YE! ň~o`QB3$ۇxfK5߆ˆfR>&؅ąwSH4 ܄ɄzodUA1 ߃cL5؂o]L7, ρāFlagV1OrdaEqa MkOptDescrSFlags MkOptDescrOptFlagsReadP.ReadPStringReadPStringFilePath~FilePath%StringReadPReadSStringr%ArgsHookedBuildInfoPPSuffixHandler9Packagepkg8Packagepkg3PackagepkgPackageFixedDepspkg/Packagepkg*4EqbMonoidb MkOptDescr`TextaTextaStringfReadPFlag\Flag <]%ProgArgProgArgStringcFilePathPPSuffixHandlerFilePathInstalledPackageInfoProgArgProgArgStringInstalledPackageInfoFilePath>StringBFilePathAFilePath0FilePathloFilePath;FilePath<FilePathFilePathStringFilePathStringFilePathStringnFilePathFilePath FilePath,}String FilePathHookedBuildInfoStringIFilePathStringStringFilePathProgArgString@InstalledPackageInfoYZ[\FilePathFilePathl nF! hrG6ViArgsxArgsHookedBuildInfohjArgswyArgsHookedBuildInfogArgsvArgsHookedBuildInfofArgsuArgsHookedBuildInfoeArgstArgsHookedBuildInfodArgssArgsHookedBuildInfocArgsrArgsHookedBuildInfobArgsqArgsHookedBuildInfoaArgspArgsHookedBuildInfo`ArgsoArgsHookedBuildInfo-ArgsStringPPSuffixHandler~ e:HookedBuildInfo[FlagXFilePathFlagStringFilePathb8Flag7Flag3FilePathFlagFilePathStringFlagFlagFlagFilePathFlagFilePathFlag\]FilePathLEFilePathFlagFlagAssignmentString_ProgArgFilePathFilePathvProgArgcString,FilePath+FilePathFilePath5Packagepkg]ZFilePathString/FilePathStringFilePathInstallDirTemplates}String.FilePathInstallDirTemplatesFilePathz|StringPackagepkg- mTFilePathgPPSuffixHandlerh1FilePathPPSuffixHandlerPPSuffixHandlerStringPPSuffixHandlerPPSuffixHandlerFilePath FFilePath 9BSj \DStringsFilePath-FlagStringtFilePathpString1FilePathPPSuffixHandlerO|}String?@ALineNoString!FilePath\StringoFlagjkFilePathFlag[4FilePathStringMQString0FilePath9InstalledPackageInfoFilePath7InstallDirTemplatesStringLineNoLineNoStringLineNoStringLineNoStringLineNoStringLineNoStringLineNoReadPStringLineNoStringStringzReadPEFlagCFlag?DFlag8FilePathFlag$FlagFlagFilePathFlagFilePathStringStringFlag  Flag FlagString FilePathFlagFlag0Flag]String _FlagStringLineNoStringJStringFilePathPackagepkg@FilePath:FilePathyFlagkFlagsxFlagmFilePathFlagpStringFilePathProgArgR?>StringBCFilePath=FlagAssignmentQFilePathStringPStringJFlag<fFlagOSFlagLFlagKFlagGFlagFMNUVWdeFlagAHITFilePathFlag3String[StringInstallDirTemplates976oFlagAString5StringFlagFlagFilePathFlag ReadPKJC(MYUlStringmFilePathStringoStringFilePathStringStringFlagFilePathFlagFilePath^StringIFilePathString_4PackagepkgG&HI=StringLineNoStringReadPStringReadPStringXReadPStringFilePathProgArgString$MonoidbArgPlaceHolder MkOptDescrStringFilePathProgArgString~FilePathStringMonoidbArgPlaceHolder MkOptDescrStringNameFilePath*StringStringuFilePath`StringEString]FilePath7String-FilePathPPSuffixHandlerFilePath"FilePathFilePathLFilePathStringFilePathString~String)StringStringFilePathString12LineNoStringStringFlagjStringmStringStringFilePathtuvwFilePathString%StringStringFlag$StringFilePathString/String MkOptDescrSFlagsyFilePathStringFilePathStringHStringStringfString*FilePathStringFilePathtFilePathFilePathStringd_StringFlagStringZNFilePathBoundedbEnumbEqbShowb MkOptDescrwProgArgStringa DescriptionFlagLFlagsSFlags DescriptionLFlags MkOptDescrSFlagsName#MonoidbArgPlaceHolder MkOptDescrStringMonoidbArgPlaceHolder MkOptDescrStringPReadPStringStringStringStringEInstalledPackageInfoStringHookedBuildInfoStringInstalledPackageInfoStringTextaStringaProgArgStringLineNoStringFilePathStringsFilePathStringStringFilePath String FilePathFilePathStringFilePathuFilePathxFilePathFilePathbReadaFilePathStringArgPlaceHolder DescriptionOptFlagsString"ArgPlaceHolder DescriptionOptFlagsString DescriptionOptFlagsFilePathHookedBuildInfoStringFilePathFilePathStringFilePathStringFilePathStringz{String$&StringReadPnBStringStringString DescriptionOptFlagsEqb Description MkOptDescrOptFlagsSPackagepkgFlagAssignmentPPSuffixHandlerStringzFilePathString FilePathFlagStringFilePathFlagStringxProgArgStringStringStringOReadPReadPReadPRReadPReadPReadP<=ReadPReadPNReadPFGReadP<JqrReadPsReadP ReadPReadSReadPQbPackagepkgaPackagepkg_Packagepkg)^PackageFixedDepspkgPackagepkg(PackageFixedDepspkgPackageFixedDepspkg:PackagepkgString9PackagepkgStringPackageFixedDepspkgPackagepkgPackageFixedDepspkgPackageFixedDepspkgyPackagepkgPackageFixedDepspkgGraphVertexName{;FilePathString,8Ri [StringTStringFilePathInstalledPackageInfoString%*PSTpYFilePathInstallDirTemplatesInstalledPackageInfowLineNoStringStringPkWcdb!String+String"(0String'-String#String,StringMonadmFilePathUnrecFieldParser MkOptDescrOptFlagsHookedBuildInfoBHookedBuildInfoStringXHookedBuildInfoFlagFlagFlagFilePathFlag>FilePathFlagqFilePathFlagFlag5FilePathFlagFilePathFlagZFilePathFlag FilePathFlagmFilePathFlag3u:@;qr}~#'INRUL8&QUtv ,K# ./>?@A&'z{:g{()+JRe'/OV`cdeghik|Efn 07DklK|StringFilePath5FlagMPPSuffixHandlerDReadP:TextaReadPReadPVReadPKReadPTU^ReadPLReadPGReadPFReadPCReadP>ReadP;MReadP=ReadPReadPHReadPReadPSReadPvxy!wFilePathW2ni2hHookedBuildInfoFlag'(,-77EEIIMNZ[ooqqv:LLPW^`cdhhkostvvz|  %'),-336689;;>@IKOORSUZ^uwy{|~U    ""$$(*./235688:=@BEEHORTVWYY]addg  `bgijpprz|~E  ""$$**,-//1268:;>@EEIIKLNNPWZZ^^cdg!!%(0146:<CEIIKNPPSTVY[[^^`addggijnnprttzz2135688::=JQQUVX !!$$*-11338<AKMRTTXZ]]abddiikkmnppsuww{{~~1   #%))0?DEINRRVVYY]^`accggiprrtwy}C^_ccegnoux{~  $$&'))79;=?@FGJKVW\^ccijpprru  &'--11==AGIIYZ__acmmppssuv3""((..1479==@ELLOORRUVZZbbffknpprswx{{}FVWYZ^eghksuwz|~~  %''))1379;>@HKLOOQSUY]]deggiknnpprsuvx" ""''-.00558=DDJJQQVWYYaaffiillnnqrvvzz==BBOOQQTTddffkloprs~~2BBEGILP!!%-136;=EHKMOQQTTVVXXZ[^`bkmnquw~4~%1279;;=>BBOOQQSSVV[[cennwy{{~~'  &)114589;;HJMQST[[cciinnpprruuxy}}D>?ABDDGGKLNNPPV     ""$$&(-.00348=CDFLOQUVY[^^`cffiiknpvxz8k&kjjjjfjBj jiiiibiBi*iihhhhhlh>hhggggPg8ggffffqfYf9ffeeeveRe6eedddd_d9d dcccncFccbbbb|bRb2baaaaaxadaFa0a```v`:``___W_)__^^^s^K^7^^]]]c]3] ]\\\\[\/\[[[[m[O[[ZZyZWZ-Z ZYYYYkY;Y YXXXoX1XWWW}WEWWVVV}V[V-VUUUU[U-UTTT}TST)TSSSZS4SSRR~RPR$RQQQQVQQPPPPbP@PPOOOO~OhOVO0O ONNN\N@N NNMMMMiMIM+M MLLL}LOL!LKKKaK1KJJJ[J)JJIIoI3IHHHYH+HGGG}GOG+GFFFiFKFFEEE|E@E,EEDDDDbDDDDCCCtCLC$CBBBlB>>>T>&>>===b=:==<<<<<`<?<<;;;q;U;;:::Y:)::999q9C9#9988_8388777g7C7)7 7666{6W6;6 65555C5#54444M444333s3G333222Y23222111h1H11000z0P0 0///r/P/.//..x.T.:. ..----h-H--,,,,n,R,(,,++~+V+2++***z*Z*B* *))))))^)>))(((v(b(4(''''g'7'&&&P&*&&%%%`%4%%$$$`$8$$$$####Z#0# #"""t"R":"""!!!!v!V!6! !   t R 4  vF ^4xd@(lBb< xdL.fF*nF.dL|^F|b>$d>hT>,\(a=u?d-rJ    r P (    j >     \      d B      T .  vR6l:T.~\D2~dH(hPb0|\<p< }[9{Y9m5a?[;yW1 {Q- _CqU+KsI-wWAc? cK;oKm5W5i=aKyaCya?mG/}Q9 q=k?nL,f8`4 jH. nT:^<~J"^*xbPyhcXYHCxargslxargsx86_64X86_64 writeutf8file writeUTF8FilewritepersistbuildconfigwritePersistBuildConfigwritepackagedescription writePackageDescriptionwriteinstalledconfigCwriteInstalledConfigwritehookedbuildinfowwriteHookedBuildInfowritefileatomicwriteFileAtomicwriteautogenfileswriteAutogenFileswraptextwrapTextwraplinewrapLinewithvanillalib5withVanillaLibwithutf8filecontentscwithUTF8FileContents withtempfile withTempFilewithtempdirectorywithTempDirectory withsharedlib withSharedLib withprograms withPrograms withproflib* withProfLib withprofexeL withProfExe withpackagedbp withPackageDBwithoptimizationwithOptimizationwithlibwithLib withinrange withinRange withghcilib withGHCiLibwithfilecontents#withFileContents~withexeFwithExewindows`Windows warnunrec| warnUnrecwarningwarningwarnwarn} viewpatterns ViewPatterns|viewasfielddescrviewAsFieldDescr{ versionrange VersionRangeversion:Version+ verbosityV Verbosity*verbosevverbosevaxVaxvarVarutilsUtils) utfwarning UTFWarninguserspecifypathsuserSpecifyPathszuserspecifypathuserSpecifyPathyuserspecifyargssIuserSpecifyArgssxuserspecifyargstuserSpecifyArgswuserspecifiedargsuserSpecifiedArgsv userspecified UserSpecifiedu userpackagedb UserPackageDBtusermaybespecifypathuserMaybeSpecifyPaths userhooksF UserHooks(qr updateprogramx updateProgrampupdatepackagedescriptionupdatePackageDescriptionunsupportedextensionsunsupportedExtensionsounregistercommandunregisterCommandn unregister; unregisterm unreghookZ unregHooklunrecfieldparserUnrecFieldParserunlitUnlit'unlitunliftedffitypesUnliftedFFITypeskunknownlicenseUnknownLicenseunknownextension(UnknownExtensionjunknownbuildtypeTUnknownBuildTypeunionversionrangesUnionVersionRanges unicodesyntax UnicodeSyntaxiundecidableinstancesUndecidableInstancesh unboxedtuples UnboxedTuplesg unambiguous+ UnambiguousftypesynonyminstancesVTypeSynonymInstancese typeoperators TypeOperatorsd typefamilies TypeFamiliesctrygetconfigstatefiletryGetConfigStateFilebtrueargtrueArgatransformlistcomp!TransformListComp`toutf8DtoUTF8_topologicalorderftopologicalOrder^topathtemplatetoPathTemplate]toflagtoFlag\ tofilepath toFilePath thisversion ThisVersionthispackageversionthisPackageVersiontext8Text& testverbosityY testVerbosity[ testflags{ TestFlagsYZ testedwith testedWith testdistpref testDistPrefX testcommand testCommandWtemplatehaskell TemplateHaskellV tarprogram. tarProgramU tabserrorM TabsErrorsystemlSystem% syntaxerror syntaxErrorsynopsissynopsissvnSVN succeedreade succeedReadEsubstpathtemplatesubstPathTemplateST stripprogram0 stripProgramR stripexesQ stripExesQstringlstringPstandalonederivingStandaloneDerivingO stability stabilitysrcprefsrcPrefNsrcdistSrcDist$ splitobjs  splitObjsMspecificpackagedb3SpecificPackageDBLsparcUSparcspacelistfieldtspaceListField sourcerepos sourceRepos sourcerepo SourceReposolarisSolarissnapshotversionsnapshotVersionKsnapshotpackage'snapshotPackageJsmartcopysourcesRsmartCopySourcesI skipspacesx skipSpacesH skipmany1 skipMany1GskipmanyskipManyFsimpleuserhookssimpleUserHooks simpleprogram simpleProgramE simpleparse# simpleParse simplefieldE simpleFieldsimplebSimple#simplesilentsilent showtoken showTokenshowtestedwithshowTestedWithshowsinglenamedfieldshowSingleNamedField showpwarning" showPWarningshowpackagedescriptionPshowPackageDescriptionDshoworparseargsShowOrParseArgsCshowinstalledpackageinfofieldshowInstalledPackageInfoFieldshowinstalledpackageinfoshowInstalledPackageInfoshowhookedbuildinfo1showHookedBuildInfoB showfreetext\ showFreeText showforghc~ showForGHC showforcabal showForCabal showfilepath showFilePath showfields showFieldsshowcompilerid showCompilerIdAshowargs,ShowArgs@shBSHsflagsVSFlags? setupmessaget setupMessage>setupSetup"sepby1sepBy1=sepbysepBy<sectionSection searchresult SearchResult;searchbynamesubstring#searchByNameSubstring: searchbynameP searchByName9sdistverbosityvsDistVerbosity8 sdistsnapshot sDistSnapshot7 sdisthook sDistHook6 sdistflags SDistFlags45 sdistdistpref  sDistDistPref3 sdistcommand. sdistCommand2sdistKsdist1 scratchdirf scratchDir0scopedtypevariablesScopedTypeVariables/satisfysatisfy.s390S390runtestsrunTests-runsimplepreprocessorrunSimplePreProcessor,runreade:runReadErunpreprocessor]runPreProcessor+runp|runPrunerunErs6000Rs6000 rewritefile rewriteFile*reversetopologicalorderreverseTopologicalOrder)reversedependencyclosure,reverseDependencyClosure(restrictedtypesynonymsfRestrictedTypeSynonyms'restoreprogramconfigurationrestoreProgramConfiguration&requireprogramrequireProgram%reqarg'reqArg'$reqargReqArg"reqArg#repotype8RepoTyperepoTyperepothisbRepoThisrepotag}repoTag reposubdir repoSubdir repomodule repoModule repolocation repoLocationrepokindunknownRepoKindUnknownrepokind&RepoKindrepoKindrepoheadPRepoHead repobranchn repoBranchremoveregscriptsremoveRegScripts!removeinstalledconfigremoveInstalledConfig relaxedpolyrecRelaxedPolyRec regverbosity regVerbosity regpackagedb> regPackageDB registerflagsc RegisterFlagsregistercommandregisterCommandregisterRegister!register reginplace regInPlacereghookregHook reggenscript regGenScript reggenpkgconfC regGenPkgConf regdistprefg regDistPref recursivedo RecursiveDorecordwildcardsRecordWildCards recordpuns RecordPunsreconfigureprogramsreconfigurePrograms readutf8file( readUTF8File reads_to_pJ readS_to_PreadpackagedescriptionvreadPackageDescription  readp_to_s readP_to_S  readp_to_e readP_to_EreadpReadP readhookedbuildinforeadHookedBuildInfo  readfields. readFields readeorfailO readEOrFailreadekReadEreaddescreadDesc rawsystemstdout'rawSystemStdout'rawsystemstdoutrawSystemStdoutrawsystemprogramstdoutconfrawSystemProgramStdoutConfrawsystemprogramstdoutPrawSystemProgramStdoutrawsystemprogramconfrawSystemProgramConfrawsystemprogramrawSystemProgram rawsystemexit rawSystemExit ranlibprogram ranlibProgram rankntypes( RankNTypes rank2typesH Rank2Types quasiquotesi QuasiQuotespwarningPWarning|}~ publicdomain PublicDomainz{ progsuffix progSuffixprogramversionprogramVersionprogrampostconf#programPostConf programpathI programPath programnamek programNameprogramlocationProgramLocationprogramLocation programid programIdprogramfindversionprogramFindVersionprogramfindlocation"programFindLocationprogramconfigurationUProgramConfiguration programargs programArgsprogramProgram progprefix progPrefixprogdirprogdirprogargProgArgprintpackageproblems!printPackageProblemspreunregIpreUnregypresdistipreSDistxpreregpreRegwpreprocesssourcespreprocessSources preprocessor PreProcessor preprocess PreProcess preparetree prepareTreepreparesnapshottreeHprepareSnapshotTree premakefiler preMakefilevpreinstpreInstu prehscolour preHscolourt prehaddock preHaddocks prefixvar PrefixVarprefixrelativeinstalldirs,prefixRelativeInstallDirsprefix[prefixprecopytpreCopyrpreconfpreConfqprecleanpreCleanpprebuildpreBuildoppunlitppUnlitppsuffixhandlerPPSuffixHandler ppsuffixes7 ppSuffixespphsc2hsUppHsc2hspphappypppHappy ppgreencard ppGreenCardppfieldsppFieldsnppfieldppFieldmppcpp'ppCpp'ppcppppCppppc64PPC64lppc2hs%ppC2hsppc:PPCkppalexOppAlex postunregj postUnregj postsdist postSDistipostregpostRegh postmakefile postMakefilegpostinstpostInstf posthscolour postHscoloure posthaddock> postHaddockdpostfixoperatorsiPostfixOperatorspostcopypostCopycpostconfpostConfb postclean postCleana postbuild postBuild`polymorphiccomponentsPolymorphicComponentsplatformindependentRplatformIndependentplatformyPlatform^_plainplain pkgvervar PkgVerVar pkgversion pkgVersion]pkgurlpkgUrl[\ pkgnamevar  PkgNameVarpkgname(pkgNameZpkgidvarCPkgIdVar pkgdescrfilec pkgDescrFilepkgconfigprogrampkgConfigProgrampkgconfigdependspkgconfigDependsYpfailpfailperrorPErrorWXpatternsignatures PatternSignatures patternguards@  PatternGuardspathtemplatevariablem PathTemplateVariable pathtemplate  PathTemplate pathsmodule  PathsModuleparseversionrangeq parseVersionRangeQV parseutils  ParseUtils parsetokenq'/  parseTokenQ'U parsetokenqR  parseTokenQTparsetestedwithqy parseTestedWithQS parseseplist  parseSepListR parseresult  ParseResultPQ parsereade  parseReadEO parsequoted  parseQuotedNparsepkgconfigdependency= parsePkgconfigDependencyMparsepackagenameqr parsePackageNameQLparsepackagedescription parsePackageDescriptionparseoptversion parseOptVersionKparseoptcommalist parseOptCommaListJparseok( ParseOkHIparsemodulenameqS parseModuleNameQG parselicenseq|  parseLicenseQFparseinstalledpackageinfo parseInstalledPackageInfoEparsehookedbuildinfo parseHookedBuildInfo parsefreetext  parseFreeTextDparsefilepathq; parseFilePathQC parsefields`  parseFieldsB parsefailed  ParseFailed@A parsefail  parseFail?parseextensionq parseExtensionQ>parsecondition parseConditionparsecompilerflavorcompat*parseCompilerFlavorCompat=parsecommalist]parseCommaList<parsebuildtoolparseBuildTool; parseargs ParseArgsparseParseparse:parallellistcompParallelListComppackageversionpackageVersion9 packagename= PackageName67 packageName8 packageindexu PackageIndexpackageimportsPackageImportspackageidentifierPackageIdentifier45 packageid PackageId2 packageId3packagefixeddeps(PackageFixedDeps1packagedistsuspiciousYPackageDistSuspiciouspackagedistinexcusablePackageDistInexcusablepackagedescriptionPackageDescription./packageDescription0 packagedeps  packageDeps packagedb- PackageDB packagecheckN PackageCheckpackagebuildwarningyPackageBuildWarningpackagebuildimpossiblePackageBuildImpossiblepackagePackage+package,-overloadedstringsOverloadedStringsoverlappinginstancesAOverlappingInstances otherrepotypen OtherRepoType*otherosOtherOS) othermodules otherModules( otherlicense OtherLicense&' othercompiler OtherCompiler% otherarch OtherArch$osx4OSX#osvarHOSVaros[OS!"orlaterversion{orLaterVersion orearlierversionorEarlierVersion optsfield optsFieldoptionverbosityoptionVerbosityoptionsoptions optionname- optionName optionfieldN OptionField optiondescrt optionDescroptionaloptionaloptionoptionoptimisationlevelOptimisationLeveloptflagsOptFlagsoptdescrOptDescroptarg'0optArg'optargIOptArgoptArgopenbsdnOpenBSD objextension objExtensionnotthisversionnotThisVersionnotthispackageversionnotThisPackageVersionnotice noticenormaloptimisation-NormalOptimisationnormalQnormalnoparsejNoParsenooptimisationNoOptimisationnoneNonenomonopatbindsNoMonoPatBindsnomonomorphismrestrictionNoMonomorphismRestrictionnoimplicitprelude4NoImplicitPreludenoflagWNoFlag noextraflagsu noExtraFlags nocopydest NoCopyDestnoargnoArg nhcprogram nhcProgramnhcNHCnewqualifiedoperatorsNewQualifiedOperatorsnetbsd9NetBSDnamedfieldpunsYNamedFieldPunsnamewNamemunch1munch1munchmunchmultiparamtypeclassesMultiParamTypeClasses multioption multiOption moreverbose moreVerbosemonotone7Monotone modulepathU modulePath modulenameu ModuleNamemksimplepreprocessormkSimplePreProcessor~mksharedlibnamemkSharedLibName} mkproflibname mkProfLibName| mkoptdescr MkOptDescr{ mklibname< mkLibNamezmkflagWMkFlagmipsmMipsmergemergey mercurial MercurialmaybegetpersistbuildconfigmaybeGetPersistBuildConfigx maybeexit maybeExitwmaximumoptimisation"MaximumOptimisationv matchfileglobN matchFileGlobumatchdirfileglobwmatchDirFileGlobtmanytillmanyTillsmany1many1rmanymanyqmandirmandirpmakefileverbositymakefileVerbosityo makefilehook+ makefileHook n makefileflagsT MakefileFlagslm makefilefile} makefileFilekmakefiledistprefmakefileDistPrefjmakefilecommandmakefileCommandimakefilemakefilegh makecommand makeCommandfmake1Make  maintainerO maintainer  mainmmain  magichash MagicHashemacrosMacrosm68kM68k lowercase lowercased lookupprogram lookupProgramclookuppackagenamelookupPackageNameblookuppackageidHlookupPackageIdalookupknownprogramulookupKnownProgram`lookupdependencylookupDependency_looklook^ locationpath locationPath\]locatederrormsg locatedErrorMsg localpkgdescr2 localPkgDescr[localbuildinfofile]localBuildInfoFileZlocalbuildinfoLocalBuildInfoXYlitLit listfield listFieldlinuxLinuxlinenoLineNoWlineNo liftoption#  liftOptionV liftfieldB  liftField licensefileb  licenseFilelicense Licenselicense libsubdirvar  LibsubdirVarU libsubdir  libsubdirT librarydirs  libraryDirslibrary!Librarylibrary libmodulesE! libModules libexposede! libExposed libexecdir! libexecdirSliberaltypesynonyms!LiberalTypeSynonymsR libdirvar! LibdirVarQlibdir!libdirP libbuildinfo" libBuildInfolgpl+"LGPLlflagsE"LFlagsO lessverboseb" lessVerbose ldprogram" ldProgramN ldoptions" ldOptions laterversion" LaterVersionknownsuffixhandlers"knownSuffixHandlersM knownprograms# knownProgramsLknownextensionsD#knownExtensionsKknownbuildtypesn#knownBuildTypeskindsignatures#KindSignaturesJ jhcprogram# jhcProgramIjhc#JHC isinfixof# isInfixOfH isanyversion$ isAnyVersionirix-$IRIXinttoverbosityK$intToVerbosityintersectversionranges{$IntersectVersionRanges intercalate$ intercalateGinsthook$instHookFinstallverbosity$installVerbosityEinstallusewrapper%installUseWrapperDinstallpackagedbI%installPackageDBC installlibo% installLib@ABinstallinplace%installInPlace?installincludes%installIncludes installflags% InstallFlags=> installexe& installExe:;< installedpkgs<& installedPkgs9installedpackageinfo_j&InstalledPackageInfo_installedpackageinfo&InstalledPackageInfoinstalldistpref&installDistPref8installdirtemplates'InstallDirTemplates6installDirTemplates7installdirsoptionsN'installDirsOptions5 installdirsw' InstallDirs34installcommand'installCommand2install'Install install01insert'insert/initialpathtemplateenv(initialPathTemplateEnv.initialbuildstepsJ(initialBuildSteps-infok(info,incoherentinstances(IncoherentInstances+includes(includes includedirs( includeDirs includedir( includedir*impredicativetypes%)ImpredicativeTypes) importdirsM) importDirsimplicitparamsq)ImplicitParams(impl)Impl ignoreunrec) ignoreUnrecifblock)IfBlockia64)IA64i386)I386 hugsprogram* hugsProgram' hugsoptions0* hugsOptionshugsK*Hugs htmldirvari* HtmldirVar&htmldir*htmldir% hssourcedirs* hsSourceDirs hslibraries* hsLibrarieshscolourverbosity*hscolourVerbosity$hscolourprogram+hscolourProgram# hscolourprefC+ hscolourPref" hscolourhookg+ hscolourHook! hscolourflags+ HscolourFlags hscolourexecutables+hscolourExecutableshscolourdistpref+hscolourDistPref hscolourcss, hscolourCSShscolourcommand<,hscolourCommandhscolour_,hscolour hsc2hsprogram, hsc2hsProgramhpux,HPUXhppa,Hppahookedprograms,hookedProgramshookedpreprocessors-hookedPreProcessorshookedbuildinfo2-HookedBuildInfohomepageU-homepage hmakeprogramy- hmakeProgram hiddenmodules- hiddenModules heredocuments- HereDocumentshelium-Helium hcoptions- hcOptionshbc.HBChaslibs,.hasLibshasexesF.hasExes happyprograme. happyProgramhaddockverbosity.haddockVerbosityhaddockprogrampaths.haddockProgramPathshaddockprogramargs.haddockProgramArgshaddockprogram/haddockProgram haddockpref>/ haddockPref haddockname`/ haddockNamehaddockinternal/haddockInternal haddockinterfaces/haddockInterfaces haddockhtmls/ haddockHTMLshaddockhtmllocation0haddockHtmlLocation haddockhscolourcss70haddockHscolourCss haddockhscolourd0haddockHscolour  haddockhook0 haddockHook  haddockhoogle0 haddockHoogle haddockflags0 HaddockFlagshaddockexecutables1haddockExecutableshaddockdistpref21haddockDistPref haddockdirW1 haddockdir haddockcssw1 haddockCsshaddockcommand1haddockCommandhaddock1Haddock haddockgreencardprogram1greencardProgramgpl 2GPLgnuarch%2GnuArch globalversionE2 globalVersionglobalpackagedbm2GlobalPackageDBglobalnumericversion2globalNumericVersion globalflags2 GlobalFlags globalcommand2 globalCommandgit 3Gitghcverbosityoptions-3ghcVerbosityOptionsghcsharedoptions\3ghcSharedOptions ghcprogram3 ghcProgramghcprofoptions3ghcProfOptions ghcpkgprogram3 ghcPkgProgram ghcoptions3 ghcOptionsghc 4GHC getpersistbuildconfig14getPersistBuildConfiggetinstalledpackagesf4getInstalledPackagesget4getgenpackageflags4genPackageFlagsgenerics4Genericsgenericpackagedescription4GenericPackageDescriptiongenerate05generategeneralizednewtypederivingb5GeneralizedNewtypeDeriving gccprogram5 gccProgramgather5gathergadts5GADTsfunctionaldependencies5FunctionalDependenciesfullpathtemplateenv!6fullPathTemplateEnvfromutf8H6fromUTF8 fromstringf6 FromStringfrompathtemplate6fromPathTemplatefromlist6fromListfromflagordefault6fromFlagOrDefaultfromflag6fromFlagfreevars7freeVarsfreebsd57FreeBSD frameworksR7 frameworks frameworkdirsy7 frameworkDirs foundonsystem7 FoundOnSystemforeignfunctioninterface7ForeignFunctionInterfacefname7fNameflexibleinstances8FlexibleInstancesflexiblecontextsH8FlexibleContextsflattenpackagedescription}8flattenPackageDescriptionflagtoverbosity8flagToVerbosityflagtooptimisationlevel8flagToOptimisationLevel flagtomaybe9 flagToMaybe flagtolist29 flagToListflagnameP9FlagNameflagName flagmanual9 flagManualflagdescription9flagDescription flagdefault9 flagDefaultflagassignment9FlagAssignmentflag:Flagfindprogramversion@:findProgramVersionfindprogramonpatho:findProgramOnPathfindpackagedesc:findPackageDescfindhookedpackagedesc:findHookedPackageDescfindfilewithextension';findFileWithExtension'findfilewithextension9;findFileWithExtensionfindfileb;findFilefinalizepackagedescription;finalizePackageDescriptionfieldset;fieldSet fieldname; fieldNamefieldget<fieldGet fielddescr"< FieldDescrfieldI<Fieldfieldffihugsprograms<ffihugsProgramfalsearg<falseArg failreade< failReadEf<F extratmpfiles< extraTmpFiles extrasrcfiles= extraSrcFiles extralibs*= extraLibsextralibrariesM=extraLibraries extralibdirss= extraLibDirsextraghcilibraries=extraGHCiLibrariesextensionstoflags=extensionsToFlags extensions= extensions extension> Extension extensiblerecords<>ExtensibleRecordsextendeddefaultrulesm>ExtendedDefaultRulesexposedmodules>exposedModulesexposed>exposed explanation> explanationexistentialquantification?ExistentialQuantificationexenameF?exeName exemodulesc? exeModules exeextension? exeExtension executables? executablesexecutablenamevar?ExecutableNameVar executable? Executableequating@equatingendby13@endBy1endbyJ@endByemptyuserhooksi@emptyUserHooksemptytestflags@emptyTestFlagsemptysdistflags@emptySDistFlagsemptyregisterflags@emptyRegisterFlagsemptyprogramconfiguration"AemptyProgramConfigurationemptypackagedescription^AemptyPackageDescriptionemptymakefileflagsAemptyMakefileFlags emptylibraryA emptyLibraryemptyinstallflagsAemptyInstallFlagsemptyinstalledpackageinfoBemptyInstalledPackageInfoemptyhscolourflagsSBemptyHscolourFlagsemptyhookedbuildinfoBemptyHookedBuildInfoemptyhaddockflagsBemptyHaddockFlagsemptyglobalflagsBemptyGlobalFlagsemptyexecutableCemptyExecutableemptydatadecls7CEmptyDataDeclsemptycopyflags_CemptyCopyFlagsemptyconfigflagsCemptyConfigFlagsemptycleanflagsCemptyCleanFlagsemptybuildinfoCemptyBuildInfoemptybuildflagsDemptyBuildFlagsearlierversion/DEarlierVersion dynlibdirRD dynlibdir doesfileexisttD doesFileExistdoesdirectoryexistDdoesDirectoryExist docdirvarD DocdirVardocdirDdocdir dllextensionD dllExtensiondisplayEdisplaydisp5Edispdisambiguaterecordfields]EDisambiguateRecordFieldsdiewithlocationEdieWithLocationdieEdie descriptionE Description descriptiondesccabalversionFdescCabalVersionderivedatatypeable2FDeriveDataTypeabledependsWFdependsdependencyinconsistenciesFdependencyInconsistenciesdependencygraphFdependencyGraphdependencycyclesFdependencyCyclesdependencyclosureGdependencyClosure dependency:G DependencydeletepackagenameeGdeletePackageNamedeletepackageidGdeletePackageIddeletedependencyGdeleteDependencydefaultuserhooksGdefaultUserHooksdefaulttestflagsHdefaultTestFlagsdefaultsdistflagsAHdefaultSDistFlagsdefaultregisterflagsrHdefaultRegisterFlagsdefaultprogramconfigurationHdefaultProgramConfigurationdefaultpackagedescHdefaultPackageDescdefaultmakefileflagsIdefaultMakefileFlagsdefaultmainwithhooksargsPIdefaultMainWithHooksArgsdefaultmainwithhooksIdefaultMainWithHooks~defaultmainnoreadIdefaultMainNoRead|}defaultmainargsIdefaultMainArgsz{ defaultmainJ defaultMainxydefaultinstallflagsAJdefaultInstallFlagsdefaultinstalldirsrJdefaultInstallDirsdefaulthscolourflagsJdefaultHscolourFlagsdefaulthookedpackagedescJdefaultHookedPackageDescwdefaulthaddockflagsKdefaultHaddockFlagsdefaultglobalflagsHKdefaultGlobalFlagsdefaultdistprefuKdefaultDistPrefdefaultcopyflagsKdefaultCopyFlagsdefaultconfigflagsKdefaultConfigFlagsdefaultcompilerflavorLdefaultCompilerFlavorvdefaultcleanflags7LdefaultCleanFlagsdefaultbuildflagseLdefaultBuildFlagsdebugLdebug deafeningL deafeningudatetosnapshotnumberLdateToSnapshotNumber datasubdirvarL DatasubdirVar datasubdirM datasubdir datafiles9M dataFilest datadirvarXM DatadirVardatadiruMdataDirsdatadirdarcsMDarcsrcvsMCVSqcustomfieldspdMcustomFieldsPDpcustomfieldsbiMcustomFieldsBIocustomNCustomn currentdir/N currentDircsourcesMNcSourcesmcreatedirectoryifmissingverboseNcreateDirectoryIfMissingVerbose createarchiveN createArchive cppprogramN cppProgram~ cppoptionsN cppOptionsl cpphsprogramO cpphsProgram} cppheadernameBO cppHeaderName|cpp^OCPP{countrOcountzcorOCOrk copyverbosityO copyVerbosityycopyusewrapperOcopyUseWrapperxcopytoOCopyTovw copyrightP copyrightij copyprefix+P CopyPrefixtu copyinplacePP copyInPlacescopyhookoPcopyHookhr copyflagsP CopyFlagspqcopyfileverbosePcopyFileVerboseo copyfilesP copyFilesn copydistprefP copyDistPrefmcopydirectoryrecursiveverbose2QcopyDirectoryRecursiveVerboselcopydestcQCopyDestijcopyDestk copycommandQ copyCommandhconstrainedclassmethodsQConstrainedClassMethodsgconfvarQConfVargconfigverbosityRconfigVerbosityfconfigvanillalib9RconfigVanillaLibeconfiguserinstallfRconfigUserInstalldconfigureprogramRconfigureProgramcconfigureoptionsRconfigureOptionsbconfiguredprogramRConfiguredProgram`aconfigurecommandSconfigureCommand_ configureargsFS configureArgs^configureallknownprogramsxSconfigureAllKnownPrograms] configureS Configuref configureXYZ[\ configurationS ConfigurationconfigstripexesTconfigStripExesWconfigsplitobjs=TconfigSplitObjsVconfigsharedlibgTconfigSharedLibUconfigscratchdirTconfigScratchDirTconfigprogsuffixTconfigProgSuffixSconfigprogramsTconfigProgramsRconfigprogrampathsUconfigProgramPathsQconfigprogramargsCUconfigProgramArgsPconfigprogprefixpUconfigProgPrefixO configproflibU configProfLibN configprofexeU configProfExeMconfigpackagedbUconfigPackageDBLconfigoptimizationVconfigOptimizationKconfiginstalldirsCVconfigInstallDirsJ confighcpkgkV configHcPkgI confighcpathV configHcPathHconfighcflavorVconfigHcFlavorG configghcilibV configGHCiLibF configflagsV ConfigFlagsDEconfigextralibdirs,WconfigExtraLibDirsCconfigextraincludedirs`WconfigExtraIncludeDirsBconfigdistprefWconfigDistPrefAconfigdependencyWconfigDependency@configconstraintsWconfigConstraints?configconfigureargsXconfigConfigureArgs>configconfigurationsflagsOXconfigConfigurationsFlags=configcompilerauxXconfigCompilerAux<configcompilerXconfigCompiler;confhookXconfHooke: condtreedataX condTreeDatadcondtreeconstraints!YcondTreeConstraintsccondtreecomponentsRYcondTreeComponentsbcondtreexYCondTreeacondnodeYCondNode` condlibraryY condLibrary_ conditionY Condition^condexecutablesYcondExecutables] componentsZ components\compilerversionAZcompilerVersion9 compilervargZ CompilerVar8 compileridZ CompilerIdZ[ compilerId7compilerflavorZCompilerFlavorYcompilerFlavor6compilerextensions[compilerExtensions5compiler&[Compiler23compiler4 comparing][ comparing1 commandusage~[ commandUsage0 commandui[ CommandUI./commandsynopsis[commandSynopsis- commandsrun[ commandsRun,commandshowoptions\commandShowOptions+commandreadytogoD\CommandReadyToGo* commandparsel\ CommandParse)commandoptions\commandOptions( commandname\ commandName' commandlist\ CommandList& commandhelp\ CommandHelp% commanderrors] CommandErrors$commanddescriptionJ]commandDescription#commanddefaultflags{]commandDefaultFlags"commandaddaction]commandAddAction!command]Command commalistfield]commaListFieldXcombineinstalldirs^combineInstallDirscnot@^CNotWcleanverbosity^^cleanVerbosity cleansaveconf^ cleanSaveConf cleanhook^ cleanHookV cleanflags^ CleanFlags cleandistpref^ cleanDistPref cleancommand_ cleanCommandchoiceoptfromenum?_choiceOptFromEnum choiceopte_ ChoiceOpt choiceOptchoice_choicecheckpersistbuildconfig_checkPersistBuildConfigcheckpackagefiles_checkPackageFilescheckpackagefilenames`checkPackageFileNamescheckpackagecontentopsU`CheckPackageContentOpscheckpackagecontent`checkPackageContent checkpackage` checkPackage checkforeigndeps`checkForeignDeps checkconfiguredpackageacheckConfiguredPackage check:aCheck chattytryTa chattyTry charmachar chainr1achainr1chainrachainrchainl1achainl1chainlachainl ccoptionsa ccOptionsTUccldoptionsbuildinfobccLdOptionsBuildInfocategory?bcategoryRScatchparseerrorfbcatchParseErrorQcandbCAndP cabalversionb cabalVersioncabalbootstrappingbcabalBootstrappingcabalbCabal c2hsprogram c c2hsProgrambuiltinprograms0cbuiltinProgramsbuildverbosityYcbuildVerbosity buildverbosec buildVerbose buildtypec BuildTypeN buildTypeO buildtoolsc buildToolsMbuildprogrampathscbuildProgramPathsbuildprogramargs"dbuildProgramArgs buildplatformKd buildPlatformL buildpathsnd BuildPathsbuildosdbuildOSK buildinfod BuildInfoHI buildInfoJ buildhookd buildHookG buildflagsd BuildFlags builddistpref"e buildDistPrefbuilddirCebuildDir builddependsce buildDependsFbuildcompilerflavorebuildCompilerFlavorE buildcommande buildCommand buildarche buildArchD buildablee buildableCbuildfBuildbuild bugreportsHf bugReportsBbsd4bfBSD4@Absd3zfBSD3>?brokenpackagesfbrokenPackagesboolopt'fboolOpt'booloptfBoolOptboolOpt boolfield g boolField= bindirvar(g BindirVarbindirCgbindirbetweenversionsinclusivemgbetweenVersionsInclusive<betweengbetweenbazaargBazaar; bangpatternsg BangPatternsautogenmodulesdirgautogenModulesDirautogenmodulename&hautogenModuleNameautoconfuserhooksThautoconfUserHooks:authorwhauthor89arrowshArrows arprogramh arProgramarmhArm7argshArgs6argplaceholderhArgPlaceHolderarchvariArchVararch3iArch45 anyversionQi AnyVersion3 ambiguouspi Ambiguous ambigousparsei AmbigousParse12alphaiAlpha0allrightsreservediAllRightsReserved./allpackagesbynamejallPackagesByName allpackages0j allPackages allbuildinfoSj allBuildInfo- alexprogramvj alexProgramaixjAIX,addknownprogramsjaddKnownProgramsaddknownprogramjaddKnownProgramabsoluteinstalldirskabsoluteInstallDirs<++.k<+++++@k+++"YXVGSQMJIEYEr?<9<:}8l43G1.y-u%%l$ #LaNR gJb"3_%sGWCW^nBn8b(=IZSzymkBIS&{ ~HHlwyݼ<.(E'NԵUs"=0L0t ۫.)"j 9ϣs5Ρv۠J~d6Tښ\ؙ`_ŕ-Ǔ:=Α֏PȌ5ŋ\Ň0 7K~~}r}(}|R|{@{zSzyhyxxwAwv#vt rq qpoo8oommmllkkkitifeednd4dc6ba>a```8`_\_^\^^]D\[[YUT#SRRQPPMPO=ONtNMmKKJJIHHHeGG}FEgEDqDC}CCBTBBpA@u@@?m?=?>=t==`<,<;v:#9865I421r0/----,+*)('&%$#""!   1 )&>  q c +  jy SjSvIM6uDTlfD.l7:Wo54{R&aM[CtdRw,"G9XͶȵ̲\n"άO_Cȡ ޙ5<<b`{BbÌًL,OZ҄[߀J+~ ~}&|zyOyxwvvOutDt,onm,mlkkwji8ihggUfeedcJca`T_^\[ZZYX$XTTfSRcRQQ2QPOoOKJWJ@IHG!GFQFErEDCCjCCBhA@?,?>1>=<;D;:L:99F98~87B7o6 654Y4337321/,+0)-&%%5%$$Z#"j"!  1 y#o E]G*oE3J;K]s 'J1{ jse ~N_:" era~=I5=mMHVw)wx|`"*CNN{h-s4ֶfٲm  zd#٦#UQ01k3^ÛiM͗I@* &h'@{yӁ{~}1}||@|{C{zzyhy yxJxww'wuts2rp?po o=nlkfkiKihg@gff{eVdbJa_P^\[ZZ5ZYYkXW]V!VwU+UT{T%TSSlRQEQPcPOMLK9KIH6GEDnCFBAA@?$?>=)=F<;:99C875404%3271'0-c,$#@"a!` { poH!Dyu \ p o  G 1 EJ.\ n"e^Lw"o ukZwi;@RQD-z @?).7Ob:{ H|f IAҾ~ȽRٺ^ghNW;A3ƕ~ߓ(mPׄ΃тY~}unlitunlit :: FilePath -> String -> Either String StringB~~FilePathStringEitherStringStringunlit takes a filename (for error reports), and transforms the given string, to eliminate the literate comments from the program text. plainplain :: String -> String -> StringD)StringStringStringNo unliteration. generategenerate :: PackageDescription -> LocalBuildInfo -> StringPackageDescriptionLocalBuildInfoStringgenerategenerate :: PackageDescription -> LocalBuildInfo -> StringjPackageDescriptionLocalBuildInfoString xargs xargs :: Int -> ([String] -> IO ()) -> [String] -> [String] -> IO ()k#Int[]StringIO()[]String[]StringIO()bLike the unix xargs program. Useful for when we've got very long command lines that might overflow an OS limit on command line length and so you need to invoke a command multiple times to get all the args in. Use it with either of the rawSystem variants above. For example:
xargs (32*1024) (rawSystemExit verbosity) prog fixedArgs bigArgs
 writeUTF8File writeUTF8File :: FilePath -> String -> IO ()V7FilePathStringIO()tWrites a Unicode String as a UTF8 encoded text file. Uses writeFileAtomic, so provides the same guarantees. 'writePersistBuildConfigwritePersistBuildConfig :: FilePath -> LocalBuildInfo -> IO ()wPFilePathLocalBuildInfoIO()\After running configure, output the LocalBuildInfo to the localBuildInfoFile. writePackageDescriptionwritePackageDescription :: FilePath -> PackageDescription -> IO ()]FilePathPackageDescriptionIO()&writeInstalledConfigwriteInstalledConfig :: FilePath -> PackageDescription -> LocalBuildInfo -> Bool -> Maybe FilePath -> IO ()PFilePathPackageDescriptionLocalBuildInfoBoolMaybeFilePathIO()RRegister doesn't drop the register info file, it must be done in a separate step. writeHookedBuildInfowriteHookedBuildInfo :: FilePath -> HookedBuildInfo -> IO ()wFilePathHookedBuildInfoIO() writeFileAtomicwriteFileAtomic :: FilePath -> String -> IO (), FilePathStringIO() Writes a file atomically. The file is either written sucessfully or an IO exception is raised and the original file is left unchanged.
  • Warning: On Windows this operation is very nearly but not quite atomic. See below.
On Posix it works by writing a temporary file and atomically renaming over the top any pre-existing target file with the temporary one. On Windows it is not possible to rename over an existing file so the target file has to be deleted before the temporary file is renamed to the target. Therefore there is a race condition between the existing file being removed and the temporary file being renamed. Another thread could write to the target or change the permission on the target directory between the deleting and renaming steps. An exception would be raised but the target file would either no longer exist or have the content as written by the other thread. On windows it is not possible to delete a file that is open by a process. This case will give an IO exception but the atomic property is not affected. #writeAutogenFiles writeAutogenFiles ::  Verbosity -> PackageDescription -> LocalBuildInfo -> IO ()! VerbosityPackageDescriptionLocalBuildInfoIO()HGenerate and write out the Paths_pkg.hs and cabal_macros.h files  wrapTextwrapText :: String -> StringɍStringStringGWraps text to the default line width. Existing newlines are preserved.  wrapLinewrapLine :: Int -> [String] ->  [[String]]rInt[]String[][]StringIWraps a list of words to a list of lines of words of a particular width. withVanillaLibwithVanillaLib :: LocalBuildInfo -> Bool]DLocalBuildInfoBoolWhether to build normal libs.  withUTF8FileContentswithUTF8FileContents :: FilePath -> (String -> IO a) -> IO a%FilePathStringIOaIOa_Reads a UTF8 encoded text file as a Unicode String Same behaviour as withFileContents.  withTempFile  withTempFile :: FilePath -> String -> (FilePath -> Handle -> IO a) -> IO aNFilePathStringFilePathHandleIOaIOa5Use a temporary filename that doesn't already exist.  withTempDirectory withTempDirectory ::  Verbosity -> FilePath -> IO a -> IO a1 VerbosityFilePathIOaIOaSUse a temporary directory. Use this exact given dir which must not already exist.  withSharedLib withSharedLib :: LocalBuildInfo -> BoolLocalBuildInfoBool*Whether to build shared versions of libs.  withPrograms withPrograms :: LocalBuildInfo -> ProgramConfigurationLocalBuildInfoProgramConfiguration#Location and args for all programs  withProfLib withProfLib :: LocalBuildInfo -> BoolM4LocalBuildInfoBool-Whether to build profiling versions of libs.  withProfExe withProfExe :: LocalBuildInfo -> BoolӔLocalBuildInfoBool,Whether to build executables for profiling.  withPackageDB withPackageDB :: LocalBuildInfo ->  PackageDBzLocalBuildInfo PackageDB*What package database to use, global/user withOptimizationwithOptimization :: LocalBuildInfo -> OptimisationLevelX2LocalBuildInfoOptimisationLevel3Whether to build with optimization (if available).  withGHCiLib withGHCiLib :: LocalBuildInfo -> BoolLocalBuildInfoBool2Whether to build libs suitable for use with GHCi.  withFileContentswithFileContents :: FilePath -> (String -> IO a) -> IO aїFilePathStringIOaIOaGets the contents of a file, but guarantee that it gets closed. The file is read lazily but if it is not fully consumed by the action then the remaining input is truncated and the file is closed.  warnwarn ::  Verbosity -> String -> IO () VerbosityStringIO()|Non fatal conditions that may be indicative of an error or problem. We display these at the normal verbosity level.  ViewPatterns ViewPatterns ::  Extensionݙљ ExtensionviewAsFieldDescrviewAsFieldDescr ::  OptionField a ->  FieldDescr amG OptionFielda FieldDescra~to view as a FieldDescr, we sort the list of interfaces (Req > Bool > Choice > Opt) and consider only the first one.  userSpecifyPathsuserSpecifyPaths :: [(String, FilePath)] -> ProgramConfiguration -> ProgramConfigurationқ[](,)StringFilePathProgramConfigurationProgramConfigurationELike userSpecifyPath but for a list of progs and their paths.  userSpecifyPath userSpecifyPath :: String -> FilePath -> ProgramConfiguration -> ProgramConfigurationStringFilePathProgramConfigurationProgramConfigurationUser-specify this path. Basically override any path information for this program in the configuration. If it's not a known program ignore it.  userSpecifyArgssuserSpecifyArgss :: [(String, [ProgArg])] -> ProgramConfiguration -> ProgramConfigurationp[](,)String[]ProgArgProgramConfigurationProgramConfigurationDLike userSpecifyPath but for a list of progs and their args.  userSpecifyArgs userSpecifyArgs :: String ->  [ProgArg] -> ProgramConfiguration -> ProgramConfigurationRString[]ProgArgProgramConfigurationProgramConfigurationUser-specify the arguments for this program. Basically override any args information for this program in the configuration. If it's not a known program, ignore it..  userSpecifiedArgsuserSpecifiedArgs :: Program -> ProgramConfiguration ->  [ProgArg]ProgramProgramConfiguration[]ProgArgFGet any extra args that have been previously specified for a program.  UserSpecified UserSpecified :: FilePath -> ProgramLocationFilePathProgramLocationHThe user gave the path to this program, eg. --ghc-path=/usr/bin/ghc-6.6  UserPackageDB UserPackageDB ::  PackageDBSG PackageDB userMaybeSpecifyPath userMaybeSpecifyPath :: String -> Maybe FilePath -> ProgramConfiguration -> ProgramConfigurationJStringMaybeFilePathProgramConfigurationProgramConfiguration) UserHooksN UserHooks :: ?(Args -> Bool -> PackageDescription -> LocalBuildInfo -> IO ()) -> IO (Maybe PackageDescription) -> [PPSuffixHandler] ->  [Program] -> +(Args -> ConfigFlags -> IO HookedBuildInfo) -> ((Either GenericPackageDescription PackageDescription, HookedBuildInfo) -> ConfigFlags -> IO LocalBu -> F(Args -> ConfigFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> *(Args -> BuildFlags -> IO HookedBuildInfo) -> J(PackageDescription -> LocalBuildInfo -> UserHooks -> BuildFlags -> IO ()) ->  E(Args -> BuildFlags -> PackageDescription -> LocalBuildInfo -> IO ()) ->  -(Args -> MakefileFlags -> IO HookedBuildInfo) ->  M(PackageDescription -> LocalBuildInfo -> UserHooks -> MakefileFlags -> IO ()) ->  H(Args -> MakefileFlags -> PackageDescription -> LocalBuildInfo -> IO ()) ->  *(Args -> CleanFlags -> IO HookedBuildInfo) -> P(PackageDescription -> Maybe LocalBuildInfo -> UserHooks -> CleanFlags -> IO ()) -> K(Args -> CleanFlags -> PackageDescription -> Maybe LocalBuildInfo -> IO ()) -> )(Args -> CopyFlags -> IO HookedBuildInfo) -> I(PackageDescription -> LocalBuildInfo -> UserHooks -> CopyFlags -> IO ()) -> D(Args -> CopyFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> ,(Args -> InstallFlags -> IO HookedBuildInfo) -> L(PackageDescription -> LocalBuildInfo -> UserHooks -> InstallFlags -> IO ()) -> G(Args -> InstallFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> *(Args -> SDistFlags -> IO HookedBuildInfo) -> P(PackageDescription -> Maybe LocalBuildInfo -> UserHooks -> SDistFlags -> IO ()) -> K(Args -> SDistFlags -> PackageDescription -> Maybe LocalBuildInfo -> IO ()) -> -(Args -> RegisterFlags -> IO HookedBuildInfo) -> M(PackageDescription -> LocalBuildInfo -> UserHooks -> RegisterFlags -> IO ()) -> H(Args -> RegisterFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> -(Args -> RegisterFlags -> IO HookedBuildInfo) -> M(PackageDescription -> LocalBuildInfo -> UserHooks -> RegisterFlags -> IO ()) -> H(Args -> RegisterFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> -(Args -> HscolourFlags -> IO HookedBuildInfo) ->  M(PackageDescription -> LocalBuildInfo -> UserHooks -> HscolourFlags -> IO ()) -> !H(Args -> HscolourFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> ",(Args -> HaddockFlags -> IO HookedBuildInfo) -> #L(PackageDescription -> LocalBuildInfo -> UserHooks -> HaddockFlags -> IO ()) -> $G(Args -> HaddockFlags -> PackageDescription -> LocalBuildInfo -> IO ()) ->  UserHooks&ArgsBoolPackageDescriptionLocalBuildInfoIO()IOMaybePackageDescription[]PPSuffixHandler[]ProgramArgs ConfigFlagsIOHookedBuildInfo(,)EitherGenericPackageDescriptionPackageDescriptionHookedBuildInfo ConfigFlagsIOLocalBuildInfoArgs ConfigFlagsPackageDescriptionLocalBuildInfoIO()Args BuildFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks BuildFlagsIO()Args BuildFlagsPackageDescriptionLocalBuildInfoIO()Args MakefileFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks MakefileFlagsIO()Args MakefileFlagsPackageDescriptionLocalBuildInfoIO()Args CleanFlagsIOHookedBuildInfoPackageDescriptionMaybeLocalBuildInfo UserHooks CleanFlagsIO()Args CleanFlagsPackageDescriptionMaybeLocalBuildInfoIO()Args CopyFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks CopyFlagsIO()Args CopyFlagsPackageDescriptionLocalBuildInfoIO()Args InstallFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks InstallFlagsIO()Args InstallFlagsPackageDescriptionLocalBuildInfoIO()Args SDistFlagsIOHookedBuildInfoPackageDescriptionMaybeLocalBuildInfo UserHooks SDistFlagsIO()Args SDistFlagsPackageDescriptionMaybeLocalBuildInfoIO()Args RegisterFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks RegisterFlagsIO()Args RegisterFlagsPackageDescriptionLocalBuildInfoIO()Args RegisterFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks RegisterFlagsIO()Args RegisterFlagsPackageDescriptionLocalBuildInfoIO()Args HscolourFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks HscolourFlagsIO()Args HscolourFlagsPackageDescriptionLocalBuildInfoIO()Args HaddockFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks HaddockFlagsIO()Args HaddockFlagsPackageDescriptionLocalBuildInfoIO() UserHooksildInfo)) UserHooksdata  UserHooks$@Hooks allow authors to add specific functionality before and after a command is run, and also to specify additional preprocessors.
  • WARNING: The hooks interface is under rather constant flux as we try to understand users needs. Setup files that depend on this interface may break in future releases.
 updateProgram updateProgram :: ConfiguredProgram -> ProgramConfiguration -> ProgramConfiguration6ConfiguredProgramProgramConfigurationProgramConfiguration-Update a configured program in the database. unsupportedExtensionsunsupportedExtensions :: Compiler ->  [Extension] ->  [Extension]Compiler[] Extension[] ExtensionCFor the given compiler, return the extensions it does not support. unregisterCommandunregisterCommand :: CommandUI RegisterFlagsպ CommandUI RegisterFlags& unregister  unregister :: PackageDescription -> LocalBuildInfo ->  RegisterFlags -> IO ()dPackageDescriptionLocalBuildInfo RegisterFlagsIO()) unregHook unregHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  RegisterFlags -> IO ()[ UserHooksPackageDescriptionLocalBuildInfo UserHooks RegisterFlagsIO()COver-ride this hook to get different behavior during registration. UnliftedFFITypesUnliftedFFITypes ::  ExtensionNB ExtensionUnknownExtensionUnknownExtension :: String ->  ExtensionĽString Extension UnicodeSyntax UnicodeSyntax ::  Extension  ExtensionUndecidableInstancesUndecidableInstances ::  Extensionzn Extension UnboxedTuples UnboxedTuples ::  Extensionξ¾ Extension Unambiguous Unambiguous :: a -> SearchResult a=$a SearchResultaTypeSynonymInstancesTypeSynonymInstances ::  Extension Extension TypeOperators TypeOperators ::  Extension Extension TypeFamilies TypeFamilies ::  ExtensionE9 Extension'tryGetConfigStateFiletryGetConfigStateFile ::  Read a => FilePath -> IO (Either String a)ReadaFilePathIOEitherStringatrueArgtrueArg :: SFlags -> LFlags ->  Description -> (b -> Flag Bool) -> (Flag Bool -> b -> b) ->  OptDescr bSFlagsLFlags DescriptionbFlagBoolFlagBoolbbOptDescrbTransformListCompTransformListComp ::  ExtensionbV Extension toUTF8toUTF8 :: String -> StringStringString topologicalOrdertopologicalOrder :: PackageFixedDeps pkg => PackageIndex pkg -> [pkg]x<PackageFixedDepspkg PackageIndexpkg[]pkgtoPathTemplatetoPathTemplate :: FilePath ->  PathTemplateFilePath PathTemplatePConvert a FilePath to a PathTemplate including any template vars. toFlagtoFlag :: a -> Flag aaFlaga testVerbosity testVerbosity ::  TestFlags -> Flag Verbosity TestFlagsFlag Verbosity TestFlags TestFlags ::  Flag FilePath -> Flag Verbosity ->  TestFlagsFlagFilePathFlag Verbosity TestFlags TestFlagsdata  TestFlags testDistPref testDistPref ::  TestFlags ->  Flag FilePathwW TestFlagsFlagFilePath testCommand testCommand :: CommandUI TestFlags CommandUI TestFlagsTemplateHaskellTemplateHaskell ::  Extension6* Extension tarProgram tarProgram :: ProgramvProgramsubstPathTemplate substPathTemplate :: PackageDescription -> LocalBuildInfo ->  PathTemplate -> FilePath^PackageDescriptionLocalBuildInfo PathTemplateFilePathsubstPathTemplatesubstPathTemplate :: &[(PathTemplateVariable, PathTemplate)] ->  PathTemplate ->  PathTemplateK[](,)PathTemplateVariable PathTemplate PathTemplate PathTemplate stripProgram stripProgram :: ProgramProgram stripExes stripExes :: LocalBuildInfo -> BoolLocalBuildInfoBool,Whether to strip executables during install stringstring :: String -> ReadP r StringStringReadPrString)Parses and returns the specified string. StandaloneDerivingStandaloneDeriving ::  Extension* ExtensionsrcPrefsrcPref :: FilePath -> FilePathyFilePathFilePath splitObjs splitObjs :: LocalBuildInfo -> BoolLocalBuildInfoBool'Use -split-objs with GHC, if available SpecificPackageDBSpecificPackageDB :: FilePath ->  PackageDBFilePath PackageDB(snapshotVersionsnapshotVersion ::  CalendarTime -> Version -> Version9 CalendarTimeVersionVersionZModifies a Version by appending a snapshot number corresponding to the given date. (snapshotPackagesnapshotPackage ::  CalendarTime -> PackageDescription -> PackageDescriptionW CalendarTimePackageDescriptionPackageDescriptioneModifies a PackageDescription by appending a snapshot number corresponding to the given date.  smartCopySourcessmartCopySources ::  Verbosity ->  [FilePath] -> FilePath ->  [ModuleName] -> [String] -> IO ()q Verbosity[]FilePathFilePath[] ModuleName[]StringIO()Copy the source files into the right directory. Looks in the build prefix for files that look like the input modules, based on the input search suffixes. It copies the files into the target directory.  skipSpaces skipSpaces ::  ReadP r ()ReadPr()Skips all whitespace.  skipMany1 skipMany1 ::  ReadP r a ->  ReadP r ()nLReadPraReadPr(),Like many1, but discards the result. skipManyskipMany ::  ReadP r a ->  ReadP r ()ReadPraReadPr()+Like many, but discards the result.  simpleProgram simpleProgram :: String -> ProgramStringProgramMake a simple named program. By default we'll just search for it in the path and not try to find the version name. You can override these behaviours if necessary, eg:
simpleProgram "foo" { programFindLocation = ... , programFindVersion ... }
showPackageDescriptionshowPackageDescription :: PackageDescription -> String<PackageDescriptionStringShowOrParseArgsdata ShowOrParseArgs~showHookedBuildInfoshowHookedBuildInfo :: HookedBuildInfo -> StringHookedBuildInfoStringshowCompilerIdshowCompilerId :: Compiler -> StringvaCompilerStringShowArgsShowArgs :: ShowOrParseArgsShowOrParseArgsSFlagstype SFlags = [Char]"Short command line option strings  setupMessage  setupMessage ::  Verbosity -> String -> PackageIdentifier -> IO () VerbosityStringPackageIdentifierIO()sepBy1sepBy1 ::  ReadP r a ->  ReadP r sep ->  ReadP r [a]JReadPraReadPrsepReadPr[]asepBy1 p sep parses one or more occurrences of p, separated by sep. Returns a list of values returned by p. sepBysepBy ::  ReadP r a ->  ReadP r sep ->  ReadP r [a]xReadPraReadPrsepReadPr[]asepBy p sep parses zero or more occurrences of p, separated by sep. Returns a list of values returned by p.  SearchResultdata  SearchResult a~ searchByNameSubstringsearchByNameSubstring :: Package pkg => PackageIndex pkg -> String -> [pkg]JPackagepkg PackageIndexpkgString[]pkg~Does a case-insensitive substring search by package name. That is, all packages that contain the given string in their name.  searchByName searchByName :: Package pkg => PackageIndex pkg -> String -> SearchResult [pkg]TPackagepkg PackageIndexpkgString SearchResult[]pkg'Does a case-insensitive search by package name. If there is only one package that compares case-insentiviely to this name then the search is unambiguous and we get back all versions of that package. If several match case-insentiviely but one matches exactly then it is also unambiguous. If however several match case-insentiviely and none match exactly then we have an ambiguous result, and we get back all the versions of all the packages. The list of ambiguous results is split by exact package name. So it is a non-empty list of non-empty lists. sDistVerbositysDistVerbosity ::  SDistFlags -> Flag VerbosityM+ SDistFlagsFlag Verbosity sDistSnapshot sDistSnapshot ::  SDistFlags ->  Flag Bool SDistFlagsFlagBool) sDistHook sDistHook ::  UserHooks -> PackageDescription -> Maybe LocalBuildInfo ->  UserHooks ->  SDistFlags -> IO () UserHooksPackageDescriptionMaybeLocalBuildInfo UserHooks SDistFlagsIO()<Over-ride this hook to get different behavior during sdist.  SDistFlags  SDistFlags ::  Flag Bool ->  Flag FilePath -> Flag Verbosity ->  SDistFlagsFlagBoolFlagFilePathFlag Verbosity SDistFlags SDistFlagsdata  SDistFlags/Flags to sdist: (snapshot, verbosity)  sDistDistPref sDistDistPref ::  SDistFlags ->  Flag FilePath SDistFlagsFlagFilePath sdistCommand sdistCommand :: CommandUI SDistFlags<" CommandUI SDistFlags(sdistsdist :: PackageDescription -> Maybe LocalBuildInfo ->  SDistFlags -> (FilePath -> FilePath) -> [PPSuffixHandler] -> IO ()vPackageDescriptionMaybeLocalBuildInfo SDistFlagsFilePathFilePath[]PPSuffixHandlerIO()Create a source distribution.  scratchDir scratchDir :: LocalBuildInfo -> FilePath LocalBuildInfoFilePath+Where to put the result of the Hugs build. ScopedTypeVariablesScopedTypeVariables ::  Extension Extensionsatisfysatisfy :: (Char -> Bool) ->  ReadP r CharCharBoolReadPrCharRConsumes and returns the next character, if it satisfies the specified predicate. )runTestsrunTests ::  UserHooks -> Args -> Bool -> PackageDescription -> LocalBuildInfo -> IO ()T  UserHooksArgsBoolPackageDescriptionLocalBuildInfoIO()Used for ./setup test !runSimplePreProcessor runSimplePreProcessor ::  PreProcessor -> FilePath -> FilePath ->  Verbosity -> IO ()V PreProcessorFilePathFilePath VerbosityIO()!runPreProcessor runPreProcessor ::  PreProcessor -> (FilePath, FilePath) -> (FilePath, FilePath) ->  Verbosity -> IO ()g  PreProcessor(,)FilePathFilePath(,)FilePathFilePath VerbosityIO() rewriteFile rewriteFile :: FilePath -> String -> IO ()FilePathStringIO()Write a file but only if it would have new content. If we would be writing the same as the existing content then leave the file as is so that we do not update the file's modification time.  reverseTopologicalOrderreverseTopologicalOrder :: PackageFixedDeps pkg => PackageIndex pkg -> [pkg]q5PackageFixedDepspkg PackageIndexpkg[]pkg reverseDependencyClosurereverseDependencyClosure :: PackageFixedDeps pkg => PackageIndex pkg -> [PackageIdentifier] -> [pkg]sPackageFixedDepspkg PackageIndexpkg[]PackageIdentifier[]pkgTakes the transative closure of the packages reverse dependencies. RestrictedTypeSynonymsRestrictedTypeSynonyms ::  Extensionk_ Extension restoreProgramConfigurationrestoreProgramConfiguration ::  [Program] -> ProgramConfiguration -> ProgramConfigurationM[]ProgramProgramConfigurationProgramConfigurationThe Read/Show instance does not preserve all the unconfigured Programs because Program is not in Read/Show because it contains functions. So to fully restore a deserialised ProgramConfiguration use this function to add back all the known Programs.
  • It does not add the default programs, but you probably want them, use builtinPrograms in addition to any extra you might need.
 requireProgram requireProgram ::  Verbosity -> Program ->  VersionRange -> ProgramConfiguration -> ,IO (ConfiguredProgram, ProgramConfiguration)3 VerbosityProgram VersionRangeProgramConfigurationIO(,)ConfiguredProgramProgramConfigurationaCheck that a program is configured and available to be run. Additionally check that the version of the program number is suitable. For example AnyVersion or orLaterVersion (Version [1,0] []) It raises an exception if the program could not be configured or the version is unsuitable, otherwise it returns the configured program. reqArg' reqArg' ::  Monoid b => ArgPlaceHolder ->  (String -> b) -> (b -> [String]) -> #MkOptDescr (a -> b) (b -> a -> a) aDMonoidbArgPlaceHolderStringbb[]String MkOptDescrabbaaa*(String -> a) variant of reqArg reqArg reqArg ::  Monoid b => ArgPlaceHolder -> ReadE b -> (b -> [String]) -> #MkOptDescr (a -> b) (b -> a -> a) azMonoidbArgPlaceHolderReadEbb[]String MkOptDescrabbaaa/Create a string-valued command line interface. ReqArgReqArg ::  Description -> OptFlags -> ArgPlaceHolder -> ReadE (a -> a) -> (a -> [String]) ->  OptDescr a DescriptionOptFlagsArgPlaceHolderReadEaaa[]StringOptDescra&removeRegScriptsremoveRegScripts :: IO ()shIO()&removeInstalledConfigremoveInstalledConfig :: FilePath -> IO ()FilePathIO()RelaxedPolyRecRelaxedPolyRec ::  ExtensionH< Extension regVerbosity regVerbosity ::  RegisterFlags -> Flag Verbosity RegisterFlagsFlag Verbosity regPackageDB regPackageDB ::  RegisterFlags -> Flag PackageDBZ5 RegisterFlagsFlag PackageDB RegisterFlags RegisterFlags :: Flag PackageDB ->  Flag Bool -> Flag (Maybe FilePath) ->  Flag Bool ->  Flag FilePath -> Flag Verbosity ->  RegisterFlags>Flag PackageDBFlagBoolFlagMaybeFilePathFlagBoolFlagFilePathFlag Verbosity RegisterFlags RegisterFlagsdata  RegisterFlagsdFlags to register and unregister: (user package, gen-script, in-place, verbosity) registerCommandregisterCommand :: CommandUI RegisterFlags CommandUI RegisterFlags&register register :: PackageDescription -> LocalBuildInfo ->  RegisterFlags -> IO ()cPackageDescriptionLocalBuildInfo RegisterFlagsIO() regInPlace regInPlace ::  RegisterFlags ->  Flag Bool RegisterFlagsFlagBool)regHookregHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  RegisterFlags -> IO ()' UserHooksPackageDescriptionLocalBuildInfo UserHooks RegisterFlagsIO()COver-ride this hook to get different behavior during registration.  regGenScript regGenScript ::  RegisterFlags ->  Flag Bool RegisterFlagsFlagBool regGenPkgConf regGenPkgConf ::  RegisterFlags -> Flag (Maybe FilePath)V RegisterFlagsFlagMaybeFilePath regDistPref regDistPref ::  RegisterFlags ->  Flag FilePath RegisterFlagsFlagFilePath RecursiveDo RecursiveDo ::  ExtensionXL ExtensionRecordWildCardsRecordWildCards ::  Extension Extension RecordPuns RecordPuns ::  Extension Extension reconfigurePrograms reconfigurePrograms ::  Verbosity -> [(String, FilePath)] -> [(String, [ProgArg])] -> ProgramConfiguration -> IO ProgramConfigurationY Verbosity[](,)StringFilePath[](,)String[]ProgArgProgramConfigurationIOProgramConfigurationreconfigure a bunch of programs given new user-specified args. It takes the same inputs as userSpecifyPath and userSpecifyArgs and for all progs with a new path it calls configureProgram.  readUTF8File readUTF8File :: FilePath ->  IO StringFilePathIOStringaReads a UTF8 encoded text file as a Unicode String Reads lazily using ordinary readFile.  readS_to_P readS_to_P :: ReadS a ->  ReadP r asUReadSaReadPraConverts a Haskell ReadS-style function into a parser. Warning: This introduces local backtracking in the resulting parser, and therefore a possible inefficiency. readPackageDescriptionreadPackageDescription ::  Verbosity -> FilePath -> IO GenericPackageDescription VerbosityFilePathIOGenericPackageDescriptionParse the given package file.  readP_to_S readP_to_S ::  ReadP a a -> ReadS avXReadPaaReadSaConverts a parser into a Haskell ReadS-style function. This is the main way in which you can "run" a ReadP parser: the expanded type is readP_to_S :: ReadP a -> String -> [(a,String)] ReadPtype ReadP r a = Parser r Char areadHookedBuildInforeadHookedBuildInfo ::  Verbosity -> FilePath -> IO HookedBuildInfoA VerbosityFilePathIOHookedBuildInfo)readDescreadDesc ::  UserHooks -> IO (Maybe PackageDescription) UserHooksIOMaybePackageDescriptionRead the description file  rawSystemStdout' rawSystemStdout' ::  Verbosity -> FilePath -> [String] -> IO (String, ExitCode) VerbosityFilePath[]StringIO(,)StringExitCode rawSystemStdout rawSystemStdout ::  Verbosity -> FilePath -> [String] ->  IO StringX VerbosityFilePath[]StringIOStringSRun a command and return its output. The output is assumed to be encoded as UTF8.  rawSystemProgramStdoutConf rawSystemProgramStdoutConf ::  Verbosity -> Program -> ProgramConfiguration ->  [ProgArg] ->  IO String   VerbosityProgramProgramConfiguration[]ProgArgIOStringELooks up the given program in the program configuration and runs it.  rawSystemProgramStdout rawSystemProgramStdout ::  Verbosity -> ConfiguredProgram ->  [ProgArg] ->  IO String   VerbosityConfiguredProgram[]ProgArgIOString7Runs the given configured program and gets the output.  rawSystemProgramConf rawSystemProgramConf ::  Verbosity -> Program -> ProgramConfiguration ->  [ProgArg] -> IO ()8   VerbosityProgramProgramConfiguration[]ProgArgIO()ELooks up the given program in the program configuration and runs it.  rawSystemProgram rawSystemProgram ::  Verbosity -> ConfiguredProgram ->  [ProgArg] -> IO ()H   VerbosityConfiguredProgram[]ProgArgIO()#Runs the given configured program.  rawSystemExit  rawSystemExit ::  Verbosity -> FilePath -> [String] -> IO ()  VerbosityFilePath[]StringIO() ranlibProgram ranlibProgram :: ProgramlbProgram RankNTypes RankNTypes ::  Extension Extension Rank2Types Rank2Types ::  Extension Extension QuasiQuotes QuasiQuotes ::  ExtensionXL Extension progSuffix progSuffix :: LocalBuildInfo ->  PathTemplateLocalBuildInfo PathTemplate/Suffix to be appended to installed executables  programVersionprogramVersion :: ConfiguredProgram ->  Maybe VersionrConfiguredProgramMaybeVersion-The version of this program, if it is known.  programPostConf programPostConf :: Program ->  Verbosity -> ConfiguredProgram ->  IO [ProgArg][Program VerbosityConfiguredProgramIO[]ProgArgA function to do any additional configuration after we have located the program (and perhaps identified its version). It is allowed to return additional flags that will be passed to the program on every invocation.  programPath programPath :: ConfiguredProgram -> FilePathConfiguredProgramFilePath'The full path of a configured program.  programName programName :: Program -> StringlProgramString(The simple name of the program, eg. ghc  programLocationprogramLocation :: ConfiguredProgram -> ProgramLocation>ConfiguredProgramProgramLocation7Location of the program. eg. /usr/bin/ghc-6.4  ProgramLocationdata ProgramLocationWhere a program was found. Also tells us whether it's specifed by user or not. This includes not just the path, but the program as well.  programId programId :: ConfiguredProgram -> StringConfiguredProgramStringJust the name again  programFindVersion programFindVersion :: Program ->  Verbosity -> FilePath -> IO (Maybe Version)cProgram VerbosityFilePathIOMaybeVersionTry to find the version of the program. For many programs this is not possible or is not necessary so it's ok to return Nothing.  programFindLocationprogramFindLocation :: Program ->  Verbosity -> IO (Maybe FilePath)Program VerbosityIOMaybeFilePathqA function to search for the program if it's location was not specified by the user. Usually this will just be a  ProgramConfigurationdata ProgramConfigurationThe configuration is a collection of information about programs. It contains information both about configured programs and also about programs that we are yet to configure. The idea is that we start from a collection of unconfigured programs and one by one we try to configure them at which point we move them into the configured collection. For unconfigured programs we record not just the Program but also any user-provided arguments and location for the program.  programArgs programArgs :: ConfiguredProgram ->  [ProgArg]ConfiguredProgram[]ProgArgDefault command-line args for this program. These flags will appear first on the command line, so they can be overridden by subsequent flags.  Program Program :: String -> "(Verbosity -> IO (Maybe FilePath)) -> -(Verbosity -> FilePath -> IO (Maybe Version)) -> 0(Verbosity -> ConfiguredProgram -> IO [ProgArg]) -> Program nString VerbosityIOMaybeFilePath VerbosityFilePathIOMaybeVersion VerbosityConfiguredProgramIO[]ProgArgProgram Programdata Program>.Represents a program which can be configured.  progPrefix progPrefix :: LocalBuildInfo ->  PathTemplateLocalBuildInfo PathTemplate0Prefix to be prepended to installed executables progdirprogdir :: InstallDirs dir -> dirm InstallDirsdirdir ProgArgtype ProgArg = String(printPackageProblemsprintPackageProblems ::  Verbosity -> PackageDescription -> IO ()wK VerbosityPackageDescriptionIO())preUnreg preUnreg ::  UserHooks -> Args ->  RegisterFlags -> IO HookedBuildInfo6  UserHooksArgs RegisterFlagsIOHookedBuildInfo&Hook to run before unregister command )preSDist preSDist ::  UserHooks -> Args ->  SDistFlags -> IO HookedBuildInfo!  UserHooksArgs SDistFlagsIOHookedBuildInfoHHook to run before sdist command. Second arg indicates verbosity level. )preReg preReg ::  UserHooks -> Args ->  RegisterFlags -> IO HookedBuildInfo"! UserHooksArgs RegisterFlagsIOHookedBuildInfo$Hook to run before register command !preprocessSourcespreprocessSources :: PackageDescription -> LocalBuildInfo -> Bool ->  Verbosity -> [PPSuffixHandler] -> IO ()[##PackageDescriptionLocalBuildInfoBool Verbosity[]PPSuffixHandlerIO()nApply preprocessors to the sources from hsSourceDirs, to obtain a Haskell source file for each module. ! PreProcessor PreProcessor :: Bool -> D((FilePath, FilePath) -> (FilePath, FilePath) -> Verbosity -> IO ()) ->  PreProcessor$r$Bool(,)FilePathFilePath(,)FilePathFilePath VerbosityIO() PreProcessor! PreProcessordata  PreProcessor%MThe interface to a preprocessor, which may be implemented using an external program, but need not be. The arguments are the name of the input file, the name of the output file and a verbosity level. Here is a simple example that merely prepends a comment to the given source file:
ppTestHandler :: PreProcessor
ppTestHandler =
  PreProcessor {
    platformIndependent = True,
    runPreProcessor = mkSimplePreProcessor $ \inFile outFile verbosity ->
      do info verbosity (inFile++" has been preprocessed to "++outFile)
         stuff <- readFile inFile
         writeFile outFile ("-- preprocessed as a test\n\n" ++ stuff)
         return ExitSuccess
We split the input and output file names into a base directory and the rest of the file name. The input base dir is the path in the list of search dirs that this file was found in. The output base dir is the build dir where all the generated source files are put. The reason for splitting it up this way is that some pre-processors don't simply generate one output .hs file from one input file but have dependencies on other genereated files (notably c2hs, where building one .hs file may require reading other .chi files, and then compiling the .hs file may require reading a generated .h file). In these cases the generated files need to embed relative path names to each other (eg the generated .hs file mentions the .h file in the FFI imports). This path must be relative to the base directory where the genereated files are located, it cannot be relative to the top level of the build tree because the compilers do not look for .h files relative to there, ie we do not use "-I .", instead we use "-I dist/build" (or whatever dist dir has been set by the user) Most pre-processors do not care of course, so mkSimplePreProcessor and runSimplePreProcessor functions handle the simple case. ( prepareTree prepareTree ::  Verbosity -> PackageDescription -> Maybe LocalBuildInfo -> FilePath -> FilePath -> [PPSuffixHandler] ->  IO FilePath-=- VerbosityPackageDescriptionMaybeLocalBuildInfoFilePathFilePath[]PPSuffixHandlerIOFilePath*Prepare a directory tree of source files. (prepareSnapshotTreeprepareSnapshotTree ::  Verbosity -> PackageDescription -> Maybe LocalBuildInfo -> FilePath -> FilePath -> [PPSuffixHandler] ->  IO FilePathA/. VerbosityPackageDescriptionMaybeLocalBuildInfoFilePathFilePath[]PPSuffixHandlerIOFilePathPrepare a directory tree of source files for a snapshot version. It is expected that the appropriate snapshot version has already been set in the package description, eg using snapshotPackage or snapshotVersion. ) preMakefile  preMakefile ::  UserHooks -> Args ->  MakefileFlags -> IO HookedBuildInfo00 UserHooksArgs MakefileFlagsIOHookedBuildInfoKHook to run before makefile command. Second arg indicates verbosity level. )preInst preInst ::  UserHooks -> Args ->  InstallFlags -> IO HookedBuildInfo11 UserHooksArgs InstallFlagsIOHookedBuildInfo#Hook to run before install command ) preHscolour  preHscolour ::  UserHooks -> Args ->  HscolourFlags -> IO HookedBuildInfo22 UserHooksArgs HscolourFlagsIOHookedBuildInfoKHook to run before hscolour command. Second arg indicates verbosity level. ) preHaddock  preHaddock ::  UserHooks -> Args ->  HaddockFlags -> IO HookedBuildInfo33 UserHooksArgs HaddockFlagsIOHookedBuildInfoJHook to run before haddock command. Second arg indicates verbosity level.  PrefixVar PrefixVar :: PathTemplateVariable4w4PathTemplateVariable#The $prefix path variable prefixRelativeInstallDirsprefixRelativeInstallDirs :: PackageDescription -> LocalBuildInfo -> InstallDirs (Maybe FilePath)5\5PackageDescriptionLocalBuildInfo InstallDirsMaybeFilePath%See prefixRelativeInstallDirs prefixRelativeInstallDirs prefixRelativeInstallDirs :: PackageIdentifier ->  CompilerId -> InstallDirTemplates -> InstallDirs (Maybe FilePath)66PackageIdentifier CompilerIdInstallDirTemplates InstallDirsMaybeFilePathCheck which of the paths are relative to the installation $prefix. If any of the paths are not relative, ie they are absolute paths, then it prevents us from making a relocatable package (also known as a "prefix independent" package). prefixprefix :: InstallDirs dir -> dir?8#8 InstallDirsdirdir)preCopy preCopy ::  UserHooks -> Args ->  CopyFlags -> IO HookedBuildInfo88 UserHooksArgs CopyFlagsIOHookedBuildInfo Hook to run before copy command )preConf preConf ::  UserHooks -> Args ->  ConfigFlags -> IO HookedBuildInfo99 UserHooksArgs ConfigFlagsIOHookedBuildInfo%Hook to run before configure command )preClean preClean ::  UserHooks -> Args ->  CleanFlags -> IO HookedBuildInfo:t: UserHooksArgs CleanFlagsIOHookedBuildInfoHHook to run before clean command. Second arg indicates verbosity level. )preBuild preBuild ::  UserHooks -> Args ->  BuildFlags -> IO HookedBuildInfo;u; UserHooksArgs BuildFlagsIOHookedBuildInfoHHook to run before build command. Second arg indicates verbosity level. !ppUnlitppUnlit ::  PreProcessorB<3< PreProcessor!PPSuffixHandlertype PPSuffixHandler8 = (String, BuildInfo -> LocalBuildInfo -> PreProcessor)<gA preprocessor for turning non-Haskell files with the given extension into plain Haskell source files. ! ppSuffixes ppSuffixes :: [PPSuffixHandler] -> [String]==[]PPSuffixHandler[]String?Convenience function; get the suffixes of these preprocessors. !ppHsc2hsppHsc2hs ::  BuildInfo -> LocalBuildInfo ->  PreProcessor>Z> BuildInfoLocalBuildInfo PreProcessor!ppHappyppHappy ::  BuildInfo -> LocalBuildInfo ->  PreProcessor ?> BuildInfoLocalBuildInfo PreProcessor! ppGreenCard ppGreenCard ::  BuildInfo -> LocalBuildInfo ->  PreProcessor?? BuildInfoLocalBuildInfo PreProcessor!ppCpp' ppCpp' :: [String] ->  BuildInfo -> LocalBuildInfo ->  PreProcessor|@B@[]String BuildInfoLocalBuildInfo PreProcessor!ppCppppCpp ::  BuildInfo -> LocalBuildInfo ->  PreProcessorA@ BuildInfoLocalBuildInfo PreProcessor!ppC2hsppC2hs ::  BuildInfo -> LocalBuildInfo ->  PreProcessorA~A BuildInfoLocalBuildInfo PreProcessor!ppAlexppAlex ::  BuildInfo -> LocalBuildInfo ->  PreProcessorBBB BuildInfoLocalBuildInfo PreProcessor) postUnreg postUnreg ::  UserHooks -> Args ->  RegisterFlags -> PackageDescription -> LocalBuildInfo -> IO ()ECB UserHooksArgs RegisterFlagsPackageDescriptionLocalBuildInfoIO()%Hook to run after unregister command ) postSDist postSDist ::  UserHooks -> Args ->  SDistFlags -> PackageDescription -> Maybe LocalBuildInfo -> IO ()vDD UserHooksArgs SDistFlagsPackageDescriptionMaybeLocalBuildInfoIO()GHook to run after sdist command. Second arg indicates verbosity level. )postRegpostReg ::  UserHooks -> Args ->  RegisterFlags -> PackageDescription -> LocalBuildInfo -> IO ()EkE UserHooksArgs RegisterFlagsPackageDescriptionLocalBuildInfoIO()#Hook to run after register command ) postMakefile postMakefile ::  UserHooks -> Args ->  MakefileFlags -> PackageDescription -> LocalBuildInfo -> IO ()FF UserHooksArgs MakefileFlagsPackageDescriptionLocalBuildInfoIO()JHook to run after makefile command. Second arg indicates verbosity level. )postInstpostInst ::  UserHooks -> Args ->  InstallFlags -> PackageDescription -> LocalBuildInfo -> IO ()1HG UserHooksArgs InstallFlagsPackageDescriptionLocalBuildInfoIO()cHook to run after install command. postInst should be run on the target, not on the build machine. ) postHscolour postHscolour ::  UserHooks -> Args ->  HscolourFlags -> PackageDescription -> LocalBuildInfo -> IO ()ILI UserHooksArgs HscolourFlagsPackageDescriptionLocalBuildInfoIO()JHook to run after hscolour command. Second arg indicates verbosity level. ) postHaddock postHaddock ::  UserHooks -> Args ->  HaddockFlags -> PackageDescription -> LocalBuildInfo -> IO ()JJ UserHooksArgs HaddockFlagsPackageDescriptionLocalBuildInfoIO()IHook to run after haddock command. Second arg indicates verbosity level. PostfixOperatorsPostfixOperators ::  ExtensionKK Extension)postCopypostCopy ::  UserHooks -> Args ->  CopyFlags -> PackageDescription -> LocalBuildInfo -> IO ()L;L UserHooksArgs CopyFlagsPackageDescriptionLocalBuildInfoIO()Hook to run after copy command )postConfpostConf ::  UserHooks -> Args ->  ConfigFlags -> PackageDescription -> LocalBuildInfo -> IO ()MUM UserHooksArgs ConfigFlagsPackageDescriptionLocalBuildInfoIO()$Hook to run after configure command ) postClean postClean ::  UserHooks -> Args ->  CleanFlags -> PackageDescription -> Maybe LocalBuildInfo -> IO ()N}N UserHooksArgs CleanFlagsPackageDescriptionMaybeLocalBuildInfoIO()GHook to run after clean command. Second arg indicates verbosity level. ) postBuild postBuild ::  UserHooks -> Args ->  BuildFlags -> PackageDescription -> LocalBuildInfo -> IO ()PO UserHooksArgs BuildFlagsPackageDescriptionLocalBuildInfoIO()GHook to run after build command. Second arg indicates verbosity level. PolymorphicComponentsPolymorphicComponents ::  ExtensionPP Extension!platformIndependentplatformIndependent ::  PreProcessor -> BoolAQ*Q PreProcessorBool PkgVerVar PkgVerVar :: PathTemplateVariableQQPathTemplateVariable4The $version package version path variable  PkgNameVar PkgNameVar :: PathTemplateVariable;R$RPathTemplateVariable-The $pkg package name path variable PkgIdVarPkgIdVar :: PathTemplateVariableRRPathTemplateVariableBThe $pkgid package Id path variable, eg foo-1.0  pkgDescrFile pkgDescrFile :: LocalBuildInfo -> Maybe FilePathSoSLocalBuildInfoMaybeFilePath6the filename containing the .cabal file, if available  pkgConfigProgrampkgConfigProgram :: Program!TTProgrampfailpfail ::  ReadP r aiTYTReadPraAlways fails. PatternSignaturesPatternSignatures ::  ExtensionTT Extension PatternGuards PatternGuards ::  Extension'UU ExtensionPathTemplateVariabledata PathTemplateVariablesU PathTemplatedata  PathTemplateUnAn abstract path, posibly containing variables that need to be substituted for to get a real FilePath.  ParseResultdata  ParseResult aYVparsePackageDescriptionparsePackageDescription :: String -> %ParseResult GenericPackageDescriptionWVString ParseResultGenericPackageDescriptionParses the given file into a GenericPackageDescription. In Cabal 1.2 the syntax for package descriptions was changed to a format with sections and possibly indented property descriptions. ParseOkParseOk ::  [PWarning] -> a ->  ParseResult agX?X[]PWarninga ParseResultaparseHookedBuildInfoparseHookedBuildInfo :: String -> ParseResult HookedBuildInfo YXString ParseResultHookedBuildInfo ParseFailed ParseFailed :: PError ->  ParseResult aYfYPError ParseResultaparseConditionparseCondition :: ReadP r (Condition ConfVar)ZYReadPr ConditionConfVar/Parse a configuration condition from a string.  ParseArgs ParseArgs :: ShowOrParseArgsZwZShowOrParseArgsParallelListCompParallelListComp ::  ExtensionZZ Extension PackageIndexdata Package pkg =>  PackageIndex pkg2[The collection of information about packages from one or more PackageDBs. It can be searched effeciently by package name and version. PackageImportsPackageImports ::  Extension\\ ExtensionAllow imports to be qualified by the package name that the module is intended to be imported from, e.g.
import "network" Network.Socket
PackageDistSuspiciousPackageDistSuspicious :: String ->  PackageCheck+]]String PackageCheck!An issue that might not be a problem for the package author but might be annoying or determental when the package is distributed to users. We should encourage distributed packages to be free from these issues, but occasionally there are justifiable reasons so we cannot ban them entirely. PackageDistInexcusablePackageDistInexcusable :: String ->  PackageCheck^^String PackageCheckAn issue that is ok in the author's environment but is almost certain to be a portability problem for other environments. We can quite legitimately refuse to publicly distribute packages with these problems.  packageDeps packageDeps :: LocalBuildInfo -> [PackageIdentifier]8` `LocalBuildInfo[]PackageIdentifierWhich packages we depend on, exactly. The PackageDescription specifies a set of build dependencies that must be satisfied in terms of version ranges. This field fixes those dependencies to the specific versions available on this machine for this compiler.  PackageDBdata  PackageDB|anSome compilers have a notion of a database of available packages. For some there is just one global db of packages, other compilers support a per-user or an arbitrary db specified at some location in the file system. This can be used to build isloated environments of packages, for example to build a collection of related packages without installing them globally.  PackageCheckdata  PackageCheck&c,Results of some kind of failed package check. There are a range of severities, from merely dubious to totally insane. All of them come with a human readable explanation. In future we may augment them with more machine readable explanations, for example to help an IDE suggest automatic corrections. PackageBuildWarningPackageBuildWarning :: String ->  PackageCheckddString PackageCheckA problem that is likely to affect building the package, or an issue that we'd like every package author to be aware of, even if the package is never distributed. PackageBuildImpossiblePackageBuildImpossible :: String ->  PackageCheckeeString PackageCheckThis package description is no good. There's no way it's going to build sensibly. This should give an error at configure time. OverloadedStringsOverloadedStrings ::  Extensionff ExtensionOverlappingInstancesOverlappingInstances ::  Extensionwindows or linux optionVerbosityoptionVerbosity :: (flags -> Flag Verbosity) -> "(Flag Verbosity -> flags -> flags) -> OptionField flagsh~hflagsFlag VerbosityFlag Verbosityflagsflags OptionFieldflags optionName optionName ::  OptionField a -> NameGi,i OptionFieldaName OptionField OptionField :: Name ->  [OptDescr a] ->  OptionField aiiName[]OptDescra OptionFielda OptionFielddata  OptionField a#j?We usually have a datatype for storing configuration values, where every field stores a configuration option, and the user sets the value either via command line flags or a configuration file. An individual OptionField models such a field, and we usually build a list of options associated to a configuration datatype.  optionDescr optionDescr ::  OptionField a ->  [OptDescr a]kk OptionFielda[]OptDescraoptionaloptional ::  ReadP r a ->  ReadP r ()bl@lReadPraReadPr()Qoptional p optionally parses p and always returns (). optionoption :: SFlags -> LFlags ->  Description -> get -> set -> MkOptDescr get set a ->  OptionField amjmSFlagsLFlags Descriptiongetset MkOptDescrgetseta OptionFieldaxCreate an option taking a single OptDescr. No explicit Name is given for the Option, the name is the first LFlag given. optionoption :: a ->  ReadP r a ->  ReadP r annaReadPraReadPracoption x p will either parse p or return x without consuming any input. OptimisationLeveldata OptimisationLevelboSome compilers support optimising. Some have different levels. For compliers that do not the level is just capped to the level they do support. OptFlagstype OptFlags = (SFlags, LFlags);pOptDescrdata OptDescr aqpaAn OptionField takes one or more OptDescrs, describing the command line interface for the field. optArg' optArg' ::  Monoid b => ArgPlaceHolder -> (Maybe String -> b) -> (b -> [Maybe String]) -> #MkOptDescr (a -> b) (b -> a -> a) arqMonoidbArgPlaceHolderMaybeStringbb[]MaybeString MkOptDescrabbaaa*(String -> a) variant of optArg optArg optArg ::  Monoid b => ArgPlaceHolder -> ReadE b -> b -> (b -> [Maybe String]) -> #MkOptDescr (a -> b) (b -> a -> a) aXsrMonoidbArgPlaceHolderReadEbbb[]MaybeString MkOptDescrabbaaaDCreate a string-valued command line interface with a default value. OptArgOptArg ::  Description -> OptFlags -> ArgPlaceHolder -> ReadE (a -> a) -> (a -> a) -> (a -> [Maybe String]) ->  OptDescr atkt DescriptionOptFlagsArgPlaceHolderReadEaaaaa[]MaybeStringOptDescra objExtension objExtension :: String%uuStringExtension for object files. For GHC and NHC the extension is "o". Hugs uses either "o" or "obj" depending on the used C compiler.  noticenotice ::  Verbosity -> String -> IO ()?vv VerbosityStringIO()Useful status messages. We display these at the normal verbosity level. This is for the ordinary helpful status messages that users see. Just enough information to know that things are working but not floods of detail. NormalOptimisationNormalOptimisation :: OptimisationLevelw}wOptimisationLevelNoOptimisationNoOptimisation :: OptimisationLevelwwOptimisationLevel NoneNone :: SearchResult aFx2x SearchResultaNoMonoPatBindsNoMonoPatBinds ::  Extensionxx ExtensionNoMonomorphismRestrictionNoMonomorphismRestriction ::  Extensionyx ExtensionNoImplicitPreludeNoImplicitPrelude ::  ExtensiondyXy ExtensionNoFlagNoFlag :: Flag ayyFlaga noExtraFlags noExtraFlags :: [String] -> IO ()zy[]StringIO()Utility function, many commands do not accept additional flags. This action fails with a helpful error message if the user supplies any extra.  NoCopyDest NoCopyDest :: CopyDestzzCopyDest NoCopyDest NoCopyDest :: CopyDest?{4{CopyDestnoArgnoArg :: (Eq b, Monoid b) => b -> #MkOptDescr (a -> b) (b -> a -> a) a{{EqbMonoidbb MkOptDescrabbaaa nhcProgram nhcProgram :: Program<|2|ProgramNewQualifiedOperatorsNewQualifiedOperators ::  Extension|| ExtensionNamedFieldPunsNamedFieldPuns ::  Extension|| ExtensionNametype Name = String-}munch1munch1 :: (Char -> Bool) -> ReadP r String}}CharBoolReadPrStringBParses the first one or more characters satisfying the predicate. munchmunch :: (Char -> Bool) -> ReadP r Stringi~D~CharBoolReadPrStringCParses the first zero or more characters satisfying the predicate. MultiParamTypeClassesMultiParamTypeClasses ::  Extension Extension multiOption  multiOption :: Name -> get -> set -> [get -> set -> OptDescr a] ->  OptionField aNamegetset[]getsetOptDescra OptionFieldaCreate an option taking several OptDescrs. You will have to give the flags and description individually to the OptDescr constructor. !mkSimplePreProcessor mkSimplePreProcessor :: ,(FilePath -> FilePath -> Verbosity -> IO ()) -> (FilePath, FilePath) -> (FilePath, FilePath) ->  Verbosity -> IO ()ρVFilePathFilePath VerbosityIO()(,)FilePathFilePath(,)FilePathFilePath VerbosityIO()mkSharedLibNamemkSharedLibName :: PackageIdentifier ->  CompilerId -> StringuKPackageIdentifier CompilerIdString mkProfLibName mkProfLibName :: PackageIdentifier -> StringׂPackageIdentifierString MkOptDescrtype  MkOptDescr get set a> = SFlags -> LFlags -> Description -> get -> set -> OptDescr aw mkLibName mkLibName :: PackageIdentifier -> StringуPackageIdentifierString mergemerge :: Package pkg => PackageIndex pkg -> PackageIndex pkg -> PackageIndex pkgDŽuPackagepkg PackageIndexpkg PackageIndexpkg PackageIndexpkguMerge two indexes. Packages from the second mask packages of the same exact name (case-sensitively) from the first. 'maybeGetPersistBuildConfigmaybeGetPersistBuildConfig :: FilePath -> IO (Maybe LocalBuildInfo)…FilePathIOMaybeLocalBuildInfo+Try to read the localBuildInfoFile.  maybeExit maybeExit ::  IO ExitCode -> IO ()lIOExitCodeIO()MaximumOptimisationMaximumOptimisation :: OptimisationLevelOptimisationLevel matchFileGlob matchFileGlob :: FilePath ->  IO [FilePath]|YFilePathIO[]FilePath matchDirFileGlobmatchDirFileGlob :: FilePath -> FilePath ->  IO [FilePath]#FilePathFilePathIO[]FilePathmanyTillmanyTill ::  ReadP r a ->  ReadP [a] end ->  ReadP r [a]ψReadPraReadP[]aendReadPr[]amanyTill p end parses zero or more occurrences of p, until end succeeds. Returns a list of values returned by p. many1many1 ::  ReadP r a ->  ReadP r [a]ډReadPraReadPr[]a4Parses one or more occurrences of the given parser. manymany ::  ReadP r a ->  ReadP r [a][ReadPraReadPr[]a5Parses zero or more occurrences of the given parser. mandirmandir :: InstallDirs dir -> dir" InstallDirsdirdirmakefileVerbositymakefileVerbosity ::  MakefileFlags -> Flag Verbosity MakefileFlagsFlag Verbosity) makefileHook makefileHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  MakefileFlags -> IO ()Ȍr UserHooksPackageDescriptionLocalBuildInfo UserHooks MakefileFlagsIO()?Over-ride this hook to get different behavior during makefile.  MakefileFlags  MakefileFlags ::  Flag FilePath ->  Flag FilePath -> Flag Verbosity ->  MakefileFlagsFlagFilePathFlagFilePathFlag Verbosity MakefileFlags MakefileFlagsdata  MakefileFlags& makefileFile makefileFile ::  MakefileFlags ->  Flag FilePath MakefileFlagsFlagFilePathmakefileDistPrefmakefileDistPref ::  MakefileFlags ->  Flag FilePath< MakefileFlagsFlagFilePathmakefileCommandmakefileCommand :: CommandUI MakefileFlags CommandUI MakefileFlagsmakefile makefile :: PackageDescription -> LocalBuildInfo ->  MakefileFlags -> IO ()~>PackageDescriptionLocalBuildInfo MakefileFlagsIO()#makefile makefile :: PackageDescription -> LocalBuildInfo ->  MakefileFlags -> [PPSuffixHandler] -> IO ()}&PackageDescriptionLocalBuildInfo MakefileFlags[]PPSuffixHandlerIO() makeCommand makeCommand :: String -> String -> Maybe (String -> String) -> flags -> ((ShowOrParseArgs -> [OptionField flags]) -> CommandUI flags̒TStringStringMaybeStringStringflagsShowOrParseArgs[] OptionFieldflags CommandUIflags-Make a Command from standard GetOpt options.  MagicHash MagicHash ::  ExtensionE9 Extension lowercase lowercase :: String -> StringStringString lookupProgram lookupProgram :: Program -> ProgramConfiguration -> Maybe ConfiguredProgramn0ProgramProgramConfigurationMaybeConfiguredProgram!Try to find a configured program  lookupPackageNamelookupPackageName :: Package pkg => PackageIndex pkg ->  PackageName -> [pkg]]Packagepkg PackageIndexpkg PackageName[]pkg.Does a case-sensitive search by package name.  lookupPackageIdlookupPackageId :: Package pkg => PackageIndex pkg -> PackageIdentifier ->  Maybe pkghPackagepkg PackageIndexpkgPackageIdentifierMaybepkgDoes a lookup by package id (name & version). Since multiple package DBs mask each other case-sensitively by package name, then we get back at most one package.  lookupKnownProgramlookupKnownProgram :: String -> ProgramConfiguration ->  Maybe ProgramɗStringProgramConfigurationMaybeProgram lookupDependencylookupDependency :: Package pkg => PackageIndex pkg ->  Dependency -> [pkg]TPackagepkg PackageIndexpkg Dependency[]pkgDoes a case-sensitive search by package name and a range of versions. We get back any number of versions of the specified package name, all satisfying the version range constraint. looklook :: ReadP r StringReadPrStringNLook-ahead: returns the part of the input that is left, without consuming it.  locationPath locationPath :: ProgramLocation -> FilePatheGProgramLocationFilePath locationPath locationPath :: ProgramLocation -> FilePathŚProgramLocationFilePath localPkgDescr localPkgDescr :: LocalBuildInfo -> PackageDescriptionuNLocalBuildInfoPackageDescriptionJThe resolved package description, that does not contain any conditionals. 'localBuildInfoFilelocalBuildInfoFile :: FilePath -> FilePath;$FilePathFilePath
dist/setup-config
LocalBuildInfo,LocalBuildInfo :: InstallDirTemplates -> Compiler -> FilePath -> FilePath -> [PackageIdentifier] -> !PackageIndex InstalledPackageInfo -> Maybe FilePath -> PackageDescription -> ProgramConfiguration ->  PackageDB ->  Bool ->  Bool ->  Bool ->  Bool -> OptimisationLevel -> Bool -> Bool -> Bool ->  PathTemplate ->  PathTemplate -> LocalBuildInfozInstallDirTemplatesCompilerFilePathFilePath[]PackageIdentifier PackageIndexInstalledPackageInfoMaybeFilePathPackageDescriptionProgramConfiguration PackageDBBoolBoolBoolBoolOptimisationLevelBoolBoolBool PathTemplate PathTemplateLocalBuildInfoLocalBuildInfodata LocalBuildInfoOData cached after configuration step. See also Distribution.Setup.ConfigFlags. LineNotype LineNo = Intg liftOption  liftOption :: (b -> a) ->  (a -> b -> b) ->  OptionField a ->  OptionField b-baabb OptionFielda OptionFieldb LibsubdirVar LibsubdirVar :: PathTemplateVariable~PathTemplateVariable&The $libsubdir path variable  libsubdir libsubdir :: InstallDirs dir -> dir, InstallDirsdirdir libexecdir libexecdir :: InstallDirs dir -> dir InstallDirsdirdirLiberalTypeSynonymsLiberalTypeSynonyms ::  Extension Extension LibdirVar LibdirVar :: PathTemplateVariableaJPathTemplateVariable#The $libdir path variable libdirlibdir :: InstallDirs dir -> dirӣ InstallDirsdirdirLFlagstype LFlags = [String],!Long command line option strings  ldProgram ldProgram :: ProgramProgram!knownSuffixHandlersknownSuffixHandlers :: [PPSuffixHandler] []PPSuffixHandlerHStandard preprocessors: GreenCard, c2hs, hsc2hs, happy, alex and cpphs.  knownPrograms knownPrograms :: ProgramConfiguration -> $[(Program, Maybe ConfiguredProgram)]ԥProgramConfiguration[](,)ProgramMaybeConfiguredProgramknownExtensionsknownExtensions ::  [Extension]m[] ExtensionKindSignaturesKindSignatures ::  Extensionզɦ Extension jhcProgram jhcProgram :: ProgramProgram isInfixOf isInfixOf :: String -> String -> Bool~StringStringBool intercalate intercalate :: [a] -> [[a]] -> [a][]a[][]a[]a)instHookinstHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  InstallFlags -> IO ()"ͨ UserHooksPackageDescriptionLocalBuildInfo UserHooks InstallFlagsIO()>Over-ride this hook to get different behavior during install. installVerbosityinstallVerbosity ::  InstallFlags -> Flag Verbosity˩ InstallFlagsFlag VerbosityinstallUseWrapperinstallUseWrapper ::  InstallFlags ->  Flag BoolvW InstallFlagsFlagBoolinstallPackageDBinstallPackageDB ::  InstallFlags -> Flag PackageDB InstallFlagsFlag PackageDB installLib installLib ::  Verbosity -> FilePath -> FilePath -> PackageIdentifier -> Library -> IO () VerbosityFilePathFilePathPackageIdentifierLibraryIO()$Install for nhc98: .hi and .a files  installLib installLib ::  Verbosity -> FilePath -> FilePath -> PackageDescription -> Library -> IO ()Ȭ VerbosityFilePathFilePathPackageDescriptionLibraryIO() installLib installLib ::  CopyFlags -> LocalBuildInfo -> FilePath -> FilePath -> FilePath -> PackageDescription -> IO ()2ح CopyFlagsLocalBuildInfoFilePathFilePathFilePathPackageDescriptionIO()7Install for ghc, .hi, .a and, if --with-ghci given, .o installInPlaceinstallInPlace ::  InstallFlags ->  Flag Boolˮ InstallFlagsFlagBool InstallFlags InstallFlags :: Flag PackageDB ->  Flag FilePath ->  Flag Bool ->  Flag Bool -> Flag Verbosity ->  InstallFlagsFlag PackageDBFlagFilePathFlagBoolFlagBoolFlag Verbosity InstallFlags InstallFlagsdata  InstallFlagsK3Flags to install: (package db, verbosity)  installExe installExe ::  Verbosity -> FilePath -> FilePath -> (FilePath, FilePath) ->  Executable -> IO ()/ VerbosityFilePathFilePath(,)FilePathFilePath ExecutableIO()Install executables for GHC.  installExe installExe ::  Verbosity -> FilePath -> FilePath -> (FilePath, FilePath) -> PackageDescription ->  Executable -> IO ()ղn VerbosityFilePathFilePath(,)FilePathFilePathPackageDescription ExecutableIO() installExe installExe ::  CopyFlags -> LocalBuildInfo -> InstallDirs FilePath -> InstallDirs FilePath -> FilePath -> (FilePath, FilePath) -> PackageDescription -> IO ()gԳ CopyFlagsLocalBuildInfo InstallDirsFilePath InstallDirsFilePathFilePath(,)FilePathFilePathPackageDescriptionIO()Install executables for GHC.  installedPkgs installedPkgs :: LocalBuildInfo -> !PackageIndex InstalledPackageInfo7LocalBuildInfo PackageIndexInstalledPackageInfo+All the info about all installed packages. installDistPrefinstallDistPref ::  InstallFlags ->  Flag FilePathʵ InstallFlagsFlagFilePathinstallDirTemplatesinstallDirTemplates :: LocalBuildInfo -> InstallDirTemplateseLocalBuildInfoInstallDirTemplatesEThe installation directories for the various differnt kinds of files InstallDirTemplatestype InstallDirTemplates = InstallDirs PathTemplate9The installation directories in terms of PathTemplates that contain variables. The defaults for most of the directories are relative to each other, in particular they are all relative to a single prefix. This makes it convenient for the user to override the default installation directory by only having to specify --prefix=... rather than overriding each individually. This is done by allowing $-style variables in the dirs. These are expanded by textual substituion (see substPathTemplate). A few of these installation directories are split into two components, the dir and subdir. The full installation path is formed by combining the two together with /. The reason for this is compatibility with other unix build systems which also support --libdir and --datadir. We would like users to be able to configure --libdir=/usr/lib64 for example but because by default we want to support installing multiple versions of packages and building the same package for multiple compilers we append the libsubdir to get: /usr/lib64/$pkgid/$compiler. An additional complication is the need to support relocatable packages on systems which support such things, like Windows. installDirsOptionsinstallDirsOptions :: /[OptionField (InstallDirs (Flag PathTemplate))]|[] OptionField InstallDirsFlag PathTemplate InstallDirs  InstallDirs :: dir -> dir -> dir -> dir -> dir -> dir -> dir -> dir -> dir ->  dir ->  dir ->  dir ->  dir ->  dir -> InstallDirs dir0ӽdirdirdirdirdirdirdirdirdirdirdirdirdirdir InstallDirsdir InstallDirsdata  InstallDirs dirn-The directories where we will install files for packages. We have several different directories for different types of files since many systems have conventions whereby different types of files in a package are installed in different direcotries. This is particularly the case on unix style systems. installCommandinstallCommand :: CommandUI InstallFlags CommandUI InstallFlags%install install :: PackageDescription -> LocalBuildInfo ->  CopyFlags -> IO ()PackageDescriptionLocalBuildInfo CopyFlagsIO()Perform the "./setup install" and "./setup copy" actions. Move files into place based on the prefix argument. FIX: nhc isn't implemented yet. "installinstall ::  Verbosity -> FilePath -> FilePath -> FilePath -> FilePath -> FilePath -> (FilePath, FilePath) -> PackageDescription -> IO ()^  VerbosityFilePathFilePathFilePathFilePathFilePath(,)FilePathFilePathPackageDescriptionIO()Install for Hugs. For install, copy-prefix = prefix, but for copy they're different. The library goes in <copy-prefix>/lib/hugs/packages/<pkgname> (i.e. <prefix>/lib/hugs/packages/<pkgname> on the target system). Each executable goes in <copy-prefix>/lib/hugs/programs/<exename> (i.e. <prefix>/lib/hugs/programs/<exename> on the target system) with a script <copy-prefix>/bin/<exename> pointing at <prefix>/lib/hugs/programs/<exename>.  insertinsert :: Package pkg => pkg -> PackageIndex pkg -> PackageIndex pkgNPackagepkgpkg PackageIndexpkg PackageIndexpkgInserts a single package into the index. This is equivalent to (but slightly quicker than) using mappend or merge with a singleton index. initialPathTemplateEnvinitialPathTemplateEnv :: PackageIdentifier ->  CompilerId -> &[(PathTemplateVariable, PathTemplate)]&PackageIdentifier CompilerId[](,)PathTemplateVariable PathTemplate>The initial environment has all the static stuff but no paths #initialBuildStepsinitialBuildSteps :: FilePath -> PackageDescription -> LocalBuildInfo ->  Verbosity -> [PPSuffixHandler] -> IO ().FilePathPackageDescriptionLocalBuildInfo Verbosity[]PPSuffixHandlerIO() infoinfo ::  Verbosity -> String -> IO () VerbosityStringIO()sMore detail on the operation of some action. We display these messages when the verbosity level is verbose IncoherentInstancesIncoherentInstances ::  Extension Extension includedir includedir :: InstallDirs dir -> dirJ. InstallDirsdirdirImpredicativeTypesImpredicativeTypes ::  Extension ExtensionImplicitParamsImplicitParams ::  Extension Extension hugsProgram hugsProgram :: ProgramJ@Program HtmldirVar HtmldirVar :: PathTemplateVariablePathTemplateVariable$The $htmldir path variable htmldirhtmldir :: InstallDirs dir -> dir?# InstallDirsdirdirhscolourVerbosityhscolourVerbosity ::  HscolourFlags -> Flag Verbosity HscolourFlagsFlag Verbosity hscolourProgramhscolourProgram :: Program&Program hscolourPref hscolourPref :: FilePath -> PackageDescription -> FilePathFilePathPackageDescriptionFilePath) hscolourHook hscolourHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  HscolourFlags -> IO () UserHooksPackageDescriptionLocalBuildInfo UserHooks HscolourFlagsIO()?Over-ride this hook to get different behavior during hscolour.  HscolourFlags  HscolourFlags ::  Flag FilePath ->  Flag Bool ->  Flag FilePath -> Flag Verbosity ->  HscolourFlagsFlagFilePathFlagBoolFlagFilePathFlag Verbosity HscolourFlags HscolourFlagsdata  HscolourFlags\hscolourExecutableshscolourExecutables ::  HscolourFlags ->  Flag Bool HscolourFlagsFlagBoolhscolourDistPrefhscolourDistPref ::  HscolourFlags ->  Flag FilePathxT HscolourFlagsFlagFilePath hscolourCSS hscolourCSS ::  HscolourFlags ->  Flag FilePath HscolourFlagsFlagFilePathhscolourCommandhscolourCommand :: CommandUI HscolourFlagstW CommandUI HscolourFlags$hscolour hscolour :: PackageDescription -> LocalBuildInfo -> [PPSuffixHandler] ->  HscolourFlags -> IO ()sPackageDescriptionLocalBuildInfo[]PPSuffixHandler HscolourFlagsIO() hsc2hsProgram hsc2hsProgram :: ProgramProgram)hookedProgramshookedPrograms ::  UserHooks ->  [Program]?" UserHooks[]ProgramfThese programs are detected at configure time. Arguments for them are added to the configure command. )hookedPreProcessorshookedPreProcessors ::  UserHooks -> [PPSuffixHandler]; UserHooks[]PPSuffixHandlerHCustom preprocessors in addition to and overriding knownSuffixHandlers.  hmakeProgram hmakeProgram :: ProgramProgram HereDocuments HereDocuments ::  Extension% Extension happyProgram happyProgram :: ProgramsiProgramhaddockVerbosityhaddockVerbosity ::  HaddockFlags -> Flag Verbosity HaddockFlagsFlag VerbosityhaddockProgramPathshaddockProgramPaths ::  HaddockFlags -> [(String, FilePath)]y HaddockFlags[](,)StringFilePathhaddockProgramArgshaddockProgramArgs ::  HaddockFlags -> [(String, [String])]R HaddockFlags[](,)String[]String haddockProgramhaddockProgram :: ProgramProgram haddockPref haddockPref :: FilePath -> PackageDescription -> FilePathDFilePathPackageDescriptionFilePath haddockName haddockName :: PackageDescription -> FilePathPackageDescriptionFilePathhaddockInternalhaddockInternal ::  HaddockFlags ->  Flag BoolI* HaddockFlagsFlagBoolhaddockHtmlLocationhaddockHtmlLocation ::  HaddockFlags ->  Flag String HaddockFlagsFlagStringhaddockHscolourCsshaddockHscolourCss ::  HaddockFlags ->  Flag FilePathiF HaddockFlagsFlagFilePathhaddockHscolourhaddockHscolour ::  HaddockFlags ->  Flag Bool HaddockFlagsFlagBool) haddockHook haddockHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  HaddockFlags -> IO () UserHooksPackageDescriptionLocalBuildInfo UserHooks HaddockFlagsIO()>Over-ride this hook to get different behavior during haddock.  haddockHoogle haddockHoogle ::  HaddockFlags ->  Flag Bool HaddockFlagsFlagBool HaddockFlags HaddockFlags :: [(String, FilePath)] -> [(String, [String])] ->  Flag Bool ->  Flag String ->  Flag Bool ->  Flag Bool ->  Flag FilePath ->  Flag Bool ->  Flag FilePath ->  Flag FilePath ->  Flag Verbosity ->  HaddockFlags [](,)StringFilePath[](,)String[]StringFlagBoolFlagStringFlagBoolFlagBoolFlagFilePathFlagBoolFlagFilePathFlagFilePathFlag Verbosity HaddockFlags HaddockFlagsdata  HaddockFlags1haddockExecutableshaddockExecutables ::  HaddockFlags ->  Flag Bool HaddockFlagsFlagBoolhaddockDistPrefhaddockDistPref ::  HaddockFlags ->  Flag FilePathE" HaddockFlagsFlagFilePath haddockdir haddockdir :: InstallDirs dir -> dir InstallDirsdirdir haddockCss haddockCss ::  HaddockFlags ->  Flag FilePath9 HaddockFlagsFlagFilePathhaddockCommandhaddockCommand :: CommandUI HaddockFlags CommandUI HaddockFlags$haddock haddock :: PackageDescription -> LocalBuildInfo -> [PPSuffixHandler] ->  HaddockFlags -> IO ()QPackageDescriptionLocalBuildInfo[]PPSuffixHandler HaddockFlagsIO() greencardProgramgreencardProgram :: ProgramProgram globalVersion globalVersion ::  GlobalFlags ->  Flag Boolz\ GlobalFlagsFlagBoolGlobalPackageDBGlobalPackageDB ::  PackageDB PackageDBglobalNumericVersionglobalNumericVersion ::  GlobalFlags ->  Flag Bool]? GlobalFlagsFlagBool GlobalFlags GlobalFlags ::  Flag Bool ->  Flag Bool ->  GlobalFlagsFlagBoolFlagBool GlobalFlags GlobalFlagsdata  GlobalFlags3;Flags that apply at the top level, not to any sub-command.  globalCommand globalCommand :: CommandUI GlobalFlags CommandUI GlobalFlagsghcVerbosityOptionsghcVerbosityOptions ::  Verbosity -> [String]aE Verbosity[]String ghcProgram ghcProgram :: ProgramProgram ghcPkgProgram ghcPkgProgram :: ProgramProgram ghcOptions  ghcOptions :: LocalBuildInfo ->  BuildInfo -> FilePath -> [String]LocalBuildInfo BuildInfoFilePath[]String'getPersistBuildConfiggetPersistBuildConfig :: FilePath -> IO LocalBuildInfoL)FilePathIOLocalBuildInfoRead the localBuildInfoFile. Error if it doesn't exist. Also fail if the file containing LocalBuildInfo is older than the .cabal file, indicating that a re-configure is required. getInstalledPackages getInstalledPackages ::  Verbosity ->  PackageDB -> ProgramConfiguration -> &IO (PackageIndex InstalledPackageInfo) Verbosity PackageDBProgramConfigurationIO PackageIndexInstalledPackageInfogetInstalledPackages getInstalledPackages ::  Verbosity ->  PackageDB -> ProgramConfiguration -> &IO (PackageIndex InstalledPackageInfo)6 Verbosity PackageDBProgramConfigurationIO PackageIndexInstalledPackageInfo'getInstalledPackages getInstalledPackages ::  Verbosity -> Compiler ->  PackageDB -> ProgramConfiguration -> .IO (Maybe (PackageIndex InstalledPackageInfo))} VerbosityCompiler PackageDBProgramConfigurationIOMaybe PackageIndexInstalledPackageInfogetget ::  ReadP r CharReadPrCharJConsumes and returns the next character. Fails if there is no input left. GenericsGenerics ::  Extension[O ExtensionGeneralizedNewtypeDerivingGeneralizedNewtypeDeriving ::  Extension Extension gccProgram gccProgram :: Program Programgathergather :: ReadP (String -> P Char r) a -> ReadP r (String, a)ReadPStringPCharraReadPr(,)StringaTransforms a parser into one that does the same, but in addition returns the exact characters read. IMPORTANT NOTE: gather gives a runtime error if its first argument is built using any occurrences of readS_to_P. GADTsGADTs ::  Extension ExtensionFunctionalDependenciesFunctionalDependencies ::  ExtensionJ> ExtensionfullPathTemplateEnv fullPathTemplateEnv :: PackageIdentifier ->  CompilerId -> InstallDirs FilePath -> &[(PathTemplateVariable, PathTemplate)]zPackageIdentifier CompilerId InstallDirsFilePath[](,)PathTemplateVariable PathTemplate fromUTF8fromUTF8 :: String -> StringStringStringfromPathTemplatefromPathTemplate ::  PathTemplate -> FilePathZ? PathTemplateFilePath8Convert back to a path, any remaining vars are included  fromListfromList :: Package pkg => [pkg] -> PackageIndex pkg*Packagepkg[]pkg PackageIndexpkgcBuild an index out of a bunch of packages. If there are duplicates, later ones mask earlier ones. fromFlagOrDefaultfromFlagOrDefault :: a -> Flag a -> aaFlagaafromFlagfromFlag :: Flag a -> aaPFlagaafreeVarsfreeVars :: CondTree ConfVar c a ->  [FlagName]CondTreeConfVarca[]FlagName FoundOnSystem FoundOnSystem :: FilePath -> ProgramLocationnPFilePathProgramLocation;The location of the program, as located by searching PATH. ForeignFunctionInterfaceForeignFunctionInterface ::  Extension ExtensionFlexibleInstancesFlexibleInstances ::  Extensionoc ExtensionFlexibleContextsFlexibleContexts ::  Extension ExtensionflattenPackageDescriptionflattenPackageDescription :: GenericPackageDescription -> PackageDescriptionWGenericPackageDescriptionPackageDescriptionFlatten a generic package description by ignoring all conditions and just join the field descriptors into on package description. Note, however, that this may lead to inconsistent field values, since all values are joined into one field, which may not be possible in the original package description, due to the use of exclusive choices (if ... else ...). XXX: One particularly tricky case is defaulting. In the original package description, e.g., the source directory might either be the default or a certain, explicitly set path. Since defaults are filled in only after the package has been resolved and when no explicit value has been set, the default path will be missing from the package description returned by this function. flagToOptimisationLevelflagToOptimisationLevel ::  Maybe String -> OptimisationLevel MaybeStringOptimisationLevel flagToMaybe flagToMaybe :: Flag a -> Maybe aw]FlagaMaybea flagToList flagToList :: Flag a -> [a]Flaga[]aFlagFlag :: a -> Flag a-aFlagaFlagdata Flag a[All flags are monoids, they come in two flavours: 1. list flags eg
--ghc-option=foo --ghc-option=bar
gives us all the values [foo, bar] 2. singular value flags, eg:
--enable-foo --disable-foo
gives us Just False So this Flag type is for the latter singular kind of flag. Its monoid instance gives us the behaviour where it starts out as NoFlag and later flags override earlier ones. Flagtype Flag = StringF findProgramVersion findProgramVersion :: ProgArg -> (String -> String) ->  Verbosity -> FilePath -> IO (Maybe Version)FProgArgStringString VerbosityFilePathIOMaybeVersionLook for a program and try to find it's version number. It can accept either an absolute path or the name of a program binary, in which case we will look for the program on the path.  findProgramOnPathfindProgramOnPath :: FilePath ->  Verbosity -> IO (Maybe FilePath)FilePath VerbosityIOMaybeFilePath Look for a program on the path.  findPackageDescfindPackageDesc :: FilePath ->  IO FilePathP3FilePathIOFilePathYFind a package description file in the given directory. Looks for .cabal files.  findHookedPackageDescfindHookedPackageDesc :: FilePath -> IO (Maybe FilePath)EFilePathIOMaybeFilePath`Find auxiliary package information in the given directory. Looks for .buildinfo files.  findFileWithExtension' findFileWithExtension' :: [String] ->  [FilePath] -> FilePath -> IO (Maybe (FilePath, FilePath))S[]String[]FilePathFilePathIOMaybe(,)FilePathFilePath findFileWithExtension findFileWithExtension :: [String] ->  [FilePath] -> FilePath -> IO (Maybe FilePath)H[]String[]FilePathFilePathIOMaybeFilePath findFilefindFile ::  [FilePath] -> FilePath ->  IO FilePath#[]FilePathFilePathIOFilePathfinalizePackageDescriptionfinalizePackageDescription :: Package pkg => FlagAssignment -> Maybe (PackageIndex pkg) -> OS -> Arch ->  CompilerId ->  [Dependency] -> GenericPackageDescription -> 8Either [Dependency] (PackageDescription, FlagAssignment)=rPackagepkgFlagAssignmentMaybe PackageIndexpkgOSArch CompilerId[] DependencyGenericPackageDescriptionEither[] Dependency(,)PackageDescriptionFlagAssignmentCreate a package description with all configurations resolved. This function takes a GenericPackageDescription and several environment parameters and tries to generate PackageDescription by finding a flag assignment that result in satisfiable dependencies. It takes as inputs a not necessarily complete specifications of flags assignments, an optional package index as well as platform parameters. If some flags are not assigned explicitly, this function will try to pick an assignment that causes this function to succeed. The package index is optional since on some platforms we cannot determine which packages have been installed before. When no package index is supplied, every dependency is assumed to be satisfiable, therefore all not explicitly assigned flags will get their default values. This function will fail if it cannot find a flag assignment that leads to satisfiable dependencies. (It will not try alternative assignments for explicitly specified flags.) In case of failure it will return a minimum number of dependencies that could not be satisfied. On success, it will return the package description and the full flag assignment chosen. fieldSet fieldSet ::  FieldDescr a -> LineNo -> String -> a ->  ParseResult a d  FieldDescraLineNoStringa ParseResultafieldSet n str x Parses the field value from the given input string str and stores the result in x if the parse was successful. Otherwise, reports an error on line number n.  fieldName fieldName ::  FieldDescr a -> String FieldDescraStringfieldGetfieldGet ::  FieldDescr a -> a -> DocY= FieldDescraaDoc FieldDescr  FieldDescr :: String ->  (a -> Doc) -> ((LineNo -> String -> a -> ParseResult a) ->  FieldDescr aGStringaDocLineNoStringa ParseResulta FieldDescra FieldDescrdata  FieldDescr adField descriptor. The parameter a parameterizes over where the field's value is stored in.  ffihugsProgramffihugsProgram :: Program7-ProgramfalseArgfalseArg :: SFlags -> LFlags ->  Description -> (b -> Flag Bool) -> (Flag Bool -> b -> b) ->  OptDescr bFSFlagsLFlags DescriptionbFlagBoolFlagBoolbbOptDescrbextensionsToFlagsextensionsToFlags :: Compiler ->  [Extension] -> [Flag]Compiler[] Extension[]FlagGFor the given compiler, return the flags for the supported extensions.  Extensiondata  ExtensioneThis represents language extensions beyond Haskell 98 that are supported by some implementations, usually in some special mode. ExtensibleRecordsExtensibleRecords ::  ExtensionA5 ExtensionExtendedDefaultRulesExtendedDefaultRules ::  Extension Extension explanation explanation ::  PackageCheck -> String PackageCheckString explanation explanation ::  PackageCheck -> Stringn PackageCheckString explanation explanation ::  PackageCheck -> String PackageCheckString explanation explanation ::  PackageCheck -> StringkR PackageCheckStringExistentialQuantificationExistentialQuantification ::  Extension Extension exeExtension exeExtension :: String#StringeExtension for executable files (typically "" on Unix and "exe" on Windows or OS/2) ExecutableNameVarExecutableNameVar :: PathTemplateVariablePathTemplateVariable,The executable name; used in shell wrappers  equating equating :: Eq a => (b -> a) -> b -> b -> BoolEqababbBoolendBy1endBy1 ::  ReadP r a ->  ReadP r sep ->  ReadP r [a]UReadPraReadPrsepReadPr[]ahendBy p sep parses one or more occurrences of p, separated and ended by sep. endByendBy ::  ReadP r a ->  ReadP r sep ->  ReadP r [a][#ReadPraReadPrsepReadPr[]aiendBy p sep parses zero or more occurrences of p, separated and ended by sep. )emptyUserHooksemptyUserHooks ::  UserHooks UserHooks)Empty UserHooks which do nothing. emptyTestFlagsemptyTestFlags ::  TestFlags TestFlagsemptySDistFlagsemptySDistFlags ::  SDistFlags SDistFlagsemptyRegisterFlagsemptyRegisterFlags ::  RegisterFlagsYI RegisterFlags emptyProgramConfigurationemptyProgramConfiguration :: ProgramConfigurationProgramConfigurationemptyMakefileFlagsemptyMakefileFlags ::  MakefileFlagsA1 MakefileFlagsemptyInstallFlagsemptyInstallFlags ::  InstallFlags InstallFlagsemptyHscolourFlagsemptyHscolourFlags ::  HscolourFlags  HscolourFlagsemptyHaddockFlagsemptyHaddockFlags ::  HaddockFlagsk\ HaddockFlagsemptyGlobalFlagsemptyGlobalFlags ::  GlobalFlags GlobalFlagsEmptyDataDeclsEmptyDataDecls ::  Extension ExtensionemptyCopyFlagsemptyCopyFlags ::  CopyFlagsui CopyFlagsemptyConfigFlagsemptyConfigFlags ::  ConfigFlags ConfigFlagsemptyCleanFlagsemptyCleanFlags ::  CleanFlags-   CleanFlagsemptyBuildFlagsemptyBuildFlags ::  BuildFlags z  BuildFlags dynlibdir dynlibdir :: InstallDirs dir -> dir   InstallDirsdirdir doesFileExist doesFileExist :: CheckPackageContentOps m -> FilePath -> m Bool!u!CheckPackageContentOpsmFilePathmBooldoesDirectoryExistdoesDirectoryExist :: CheckPackageContentOps m -> FilePath -> m Boolf"1"CheckPackageContentOpsmFilePathmBool DocdirVar DocdirVar :: PathTemplateVariable""PathTemplateVariable#The $docdir path variable docdirdocdir :: InstallDirs dir -> dirV#:# InstallDirsdirdir dllExtension dllExtension :: String##StringwExtension for dynamically linked (or shared) libraries (typically "so" on Unix and "dll" on Windows) DisambiguateRecordFieldsDisambiguateRecordFields ::  Extension$w$ Extension dieWithLocation dieWithLocation :: FilePath ->  Maybe Int -> String -> IO a1%%FilePathMaybeIntStringIOa diedie :: String -> IO a%r%StringIOa Descriptiontype  Description = String%DeriveDataTypeableDeriveDataTypeable ::  Extension)&& Extension dependencyInconsistenciesdependencyInconsistencies :: PackageFixedDeps pkg => PackageIndex pkg -> /[(PackageName, [(PackageIdentifier, Version)])]W'&PackageFixedDepspkg PackageIndexpkg[](,) PackageName[](,)PackageIdentifierVersionGiven a package index where we assume we want to use all the packages (use dependencyClosure if you need to get such a index subset) find out if the dependencies within it use consistent versions of each package. Return all cases where multiple packages depend on different versions of some other package. Each element in the result is a package name along with the packages that depend on it and the versions they require. These are guaranteed to be distinct.  dependencyGraphdependencyGraph :: PackageFixedDeps pkg => PackageIndex pkg -> 9(Graph, Vertex -> pkg, PackageIdentifier -> Maybe Vertex)Q*)PackageFixedDepspkg PackageIndexpkg(,,)GraphVertexpkgPackageIdentifierMaybeVertexBuilds a graph of the package dependencies. Dependencies on other packages that are not in the index are discarded. You can check if there are any such dependencies with brokenPackages.  dependencyCyclesdependencyCycles :: PackageFixedDeps pkg => PackageIndex pkg -> [[pkg]]++PackageFixedDepspkg PackageIndexpkg[][]pkgFind if there are any cycles in the dependency graph. If there are no cycles the result is []. This actually computes the strongly connected components. So it gives us a list of groups of packages where within each group they all depend on each other, directly or indirectly.  dependencyClosuredependencyClosure :: PackageFixedDeps pkg => PackageIndex pkg -> [PackageIdentifier] -> 6Either (PackageIndex pkg) [(pkg, [PackageIdentifier])]W.-PackageFixedDepspkg PackageIndexpkg[]PackageIdentifierEither PackageIndexpkg[](,)pkg[]PackageIdentifierTries to take the transative closure of the package dependencies. If the transative closure is complete then it returns that subset of the index. Otherwise it returns the broken packages as in brokenPackages.
  • Note that if the result is Right [] it is because at least one of the original given PackageIdentifiers do not occur in the index.
 deletePackageNamedeletePackageName :: Package pkg =>  PackageName -> PackageIndex pkg -> PackageIndex pkg0q0Packagepkg PackageName PackageIndexpkg PackageIndexpkgERemoves all packages with this (case-sensitive) name from the index.  deletePackageIddeletePackageId :: Package pkg => PackageIdentifier -> PackageIndex pkg -> PackageIndex pkg11PackagepkgPackageIdentifier PackageIndexpkg PackageIndexpkg)Removes a single package from the index.  deleteDependencydeleteDependency :: Package pkg =>  Dependency -> PackageIndex pkg -> PackageIndex pkg22Packagepkg Dependency PackageIndexpkg PackageIndexpkg@Removes all packages satisfying this dependency from the index. defaultTestFlagsdefaultTestFlags ::  TestFlags33 TestFlagsdefaultSDistFlagsdefaultSDistFlags ::  SDistFlags33 SDistFlagsdefaultRegisterFlagsdefaultRegisterFlags ::  RegisterFlagsU4E4 RegisterFlags defaultProgramConfigurationdefaultProgramConfiguration :: ProgramConfiguration44ProgramConfiguration defaultPackageDescdefaultPackageDesc ::  Verbosity ->  IO FilePathb5D5 VerbosityIOFilePath9Package description file (pkgname.cabal) defaultMakefileFlagsdefaultMakefileFlags ::  MakefileFlags65 MakefileFlagsdefaultInstallFlagsdefaultInstallFlags ::  InstallFlagsk6\6 InstallFlagsdefaultInstallDirs defaultInstallDirs :: CompilerFlavor -> Bool -> Bool -> IO InstallDirTemplates>77CompilerFlavorBoolBoolIOInstallDirTemplatesdefaultHscolourFlagsdefaultHscolourFlags ::  HscolourFlags77 HscolourFlags defaultHookedPackageDescdefaultHookedPackageDesc :: IO (Maybe FilePath)*88IOMaybeFilePathPOptional auxiliary package information file (pkgname.buildinfo) defaultHaddockFlagsdefaultHaddockFlags ::  HaddockFlags88 HaddockFlagsdefaultGlobalFlagsdefaultGlobalFlags ::  GlobalFlagsB949 GlobalFlagsdefaultDistPrefdefaultDistPref :: FilePath99FilePathdefaultDistPrefdefaultDistPref :: FilePath99FilePathdefaultCopyFlagsdefaultCopyFlags ::  CopyFlagsH:<: CopyFlagsdefaultConfigFlagsdefaultConfigFlags :: ProgramConfiguration ->  ConfigFlags::ProgramConfiguration ConfigFlagsdefaultCleanFlagsdefaultCleanFlags ::  CleanFlags@;3; CleanFlagsdefaultBuildFlagsdefaultBuildFlags ::  BuildFlags;; BuildFlags debugdebug ::  Verbosity -> String -> IO ()<; VerbosityStringIO()pDetailed internal debugging information We display these messages when the verbosity level is deafening (dateToSnapshotNumberdateToSnapshotNumber ::  CalendarTime -> Int=< CalendarTimeIntGiven a date produce a corresponding integer representation. For example given a date 18032008 produce the number 20080318.  DatasubdirVar DatasubdirVar :: PathTemplateVariable>=PathTemplateVariable'The $datasubdir path variable  datasubdir datasubdir :: InstallDirs dir -> dir>> InstallDirsdirdir DatadirVar DatadirVar :: PathTemplateVariable?>PathTemplateVariable$The $datadir path variable datadirdatadir :: InstallDirs dir -> dir?y? InstallDirsdirdir currentDir currentDir :: FilePath??FilePathThe path name that represents the current directory. In Unix, it's ".", but this is system-specific. (E.g. AmigaOS uses the empty string "" for the current directory.)  createDirectoryIfMissingVerbose createDirectoryIfMissingVerbose ::  Verbosity -> Bool -> FilePath -> IO ()dA PackageDescription -> Maybe LocalBuildInfo -> FilePath -> FilePath ->  IO FilePathB)B VerbosityPackageDescriptionMaybeLocalBuildInfoFilePathFilePathIOFilePathFCreate an archive from a tree of source files, and clean up the tree.  cppProgram cppProgram :: ProgramCCProgram cpphsProgram cpphsProgram :: ProgramfC\CProgram cppHeaderName cppHeaderName :: StringCCStringCPPCPP ::  ExtensionCC Extensioncountcount :: Int ->  ReadP r a ->  ReadP r [a]~DRDIntReadPraReadPr[]am count n p parses n occurrences of p in sequence. A list of results is returned.  copyVerbosity copyVerbosity ::  CopyFlags -> Flag VerbositynEME CopyFlagsFlag VerbositycopyUseWrappercopyUseWrapper ::  CopyFlags ->  Flag BoolEE CopyFlagsFlagBoolCopyToCopyTo :: FilePath -> CopyDestMF6FFilePathCopyDestCopyToCopyTo :: FilePath -> CopyDestFFFilePathCopyDest CopyPrefix CopyPrefix :: FilePath -> CopyDestGGFilePathCopyDest CopyPrefix CopyPrefix :: FilePath -> CopyDestGrGFilePathCopyDest copyInPlace copyInPlace ::  CopyFlags ->  Flag BoolGG CopyFlagsFlagBool)copyHookcopyHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  CopyFlags -> IO ()IH UserHooksPackageDescriptionLocalBuildInfo UserHooks CopyFlagsIO();Over-ride this hook to get different behavior during copy.  CopyFlags CopyFlags ::  Flag CopyDest ->  Flag FilePath ->  Flag Bool ->  Flag Bool -> Flag Verbosity ->  CopyFlagsSJIFlagCopyDestFlagFilePathFlagBoolFlagBoolFlag Verbosity CopyFlags CopyFlagsdata  CopyFlagsJMFlags to copy: (destdir, copy-prefix (backwards compat), verbosity)  copyFileVerbose copyFileVerbose ::  Verbosity -> FilePath -> FilePath -> IO ()K[K VerbosityFilePathFilePathIO() copyFiles  copyFiles ::  Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO ()QLL VerbosityFilePath[](,)FilePathFilePathIO()Copies a bunch of files to a target directory, preserving the directory structure in the target location. The target directories are created if they do not exist. The files are identified by a pair of base directory and a path relative to that base. It is only the relative part that is preserved in the destination. For example:
copyFiles normal "dist/src"
   [("", "src/Foo.hs"), ("dist/build/", "src/Bar.hs")]
This would copy "src/Foo.hs" to "dist/src/src/Foo.hs" and copy "dist/build/src/Bar.hs" to "dist/src/src/Bar.hs". This operation is not atomic. Any IO failure during the copy (including any missing source files) leaves the target in an unknown state so it is best to use it with a freshly created directory so that it can be simply deleted if anything goes wrong.  copyDistPref copyDistPref ::  CopyFlags ->  Flag FilePathOO CopyFlagsFlagFilePath copyDirectoryRecursiveVerbose copyDirectoryRecursiveVerbose ::  Verbosity -> FilePath -> FilePath -> IO ()PP VerbosityFilePathFilePathIO()copyDestcopyDest ::  CopyFlags ->  Flag CopyDest.QQ CopyFlagsFlagCopyDestCopyDestdata CopyDestbQ1The location prefix for the copy command. CopyDestdata CopyDestQ1The location prefix for the copy command.  copyCommand copyCommand :: CommandUI CopyFlags_RFR CommandUI CopyFlagsConstrainedClassMethodsConstrainedClassMethods ::  ExtensionRR ExtensionconfigVerbosityconfigVerbosity ::  ConfigFlags -> Flag VerbosityRS/S ConfigFlagsFlag Verbosityverbosity level configVanillaLibconfigVanillaLib ::  ConfigFlags ->  Flag BoolSS ConfigFlagsFlagBoolEnable vanilla library configUserInstallconfigUserInstall ::  ConfigFlags ->  Flag BoolTcT ConfigFlagsFlagBoolThe --user/--global flag  configureProgram configureProgram ::  Verbosity -> Program -> ProgramConfiguration -> IO ProgramConfigurationU>U VerbosityProgramProgramConfigurationIOProgramConfigurationTry to configure a specific program. If the program is already included in the colleciton of unconfigured programs then we use any user-supplied location and arguments. If the program gets configured sucessfully it gets added to the configured collection. Note that it is not a failure if the program cannot be configured. It's only a failure if the user supplied a location and the program could not be found at that location. The reason for it not being a failure at this stage is that we don't know up front all the programs we will need, so we try to configure them all. To verify that a program was actually sucessfully configured use requireProgram. configureOptionsconfigureOptions :: ShowOrParseArgs -> [OptionField ConfigFlags]XXShowOrParseArgs[] OptionField ConfigFlags ConfiguredProgram ConfiguredProgram :: String ->  Maybe Version ->  [ProgArg] -> ProgramLocation -> ConfiguredProgramYYStringMaybeVersion[]ProgArgProgramLocationConfiguredProgram ConfiguredProgramdata ConfiguredProgramZconfigureCommandconfigureCommand :: ProgramConfiguration -> CommandUI ConfigFlagsZZProgramConfiguration CommandUI ConfigFlags configureArgs configureArgs :: Bool ->  ConfigFlags -> [String]W[3[Bool ConfigFlags[]StringWArguments to pass to a configure script, e.g. generated by autoconf.  configureAllKnownProgramsconfigureAllKnownPrograms ::  Verbosity -> ProgramConfiguration -> IO ProgramConfiguration\Q\ VerbosityProgramConfigurationIOProgramConfigurationKTry to configure all the known programs that have not yet been configured.  configure  configure ::  Verbosity -> Maybe FilePath -> Maybe FilePath -> ProgramConfiguration -> #IO (Compiler, ProgramConfiguration)^] VerbosityMaybeFilePathMaybeFilePathProgramConfigurationIO(,)CompilerProgramConfiguration configure  configure ::  Verbosity -> Maybe FilePath -> Maybe FilePath -> ProgramConfiguration -> #IO (Compiler, ProgramConfiguration)P_^ VerbosityMaybeFilePathMaybeFilePathProgramConfigurationIO(,)CompilerProgramConfiguration" configure  configure ::  Verbosity -> Maybe FilePath -> Maybe FilePath -> ProgramConfiguration -> #IO (Compiler, ProgramConfiguration)`` VerbosityMaybeFilePathMaybeFilePathProgramConfigurationIO(,)CompilerProgramConfiguration configure  configure ::  Verbosity -> Maybe FilePath -> Maybe FilePath -> ProgramConfiguration -> #IO (Compiler, ProgramConfiguration)aMa VerbosityMaybeFilePathMaybeFilePathProgramConfigurationIO(,)CompilerProgramConfiguration' configure configure :: F(Either GenericPackageDescription PackageDescription, HookedBuildInfo) ->  ConfigFlags -> IO LocalBuildInfobub(,)EitherGenericPackageDescriptionPackageDescriptionHookedBuildInfo ConfigFlagsIOLocalBuildInfoZPerform the "./setup configure" action. Returns the .setup-config file. configStripExesconfigStripExes ::  ConfigFlags ->  Flag Boolcc ConfigFlagsFlagBoolEnable executable stripping configSplitObjsconfigSplitObjs ::  ConfigFlags ->  Flag BoolddFd ConfigFlagsFlagBoolEnable -split-objs with GHC configSharedLibconfigSharedLib ::  ConfigFlags ->  Flag Booled ConfigFlagsFlagBoolBuild shared library configScratchDirconfigScratchDir ::  ConfigFlags ->  Flag FilePathee ConfigFlagsFlagFilePathconfigProgSuffixconfigProgSuffix ::  ConfigFlags -> Flag PathTemplate4ff ConfigFlagsFlag PathTemplateInstalled executable suffix. configProgramsconfigPrograms ::  ConfigFlags -> ProgramConfigurationff ConfigFlagsProgramConfiguration All programs that cabal may run configProgramPathsconfigProgramPaths ::  ConfigFlags -> [(String, FilePath)]gwg ConfigFlags[](,)StringFilePathuser specifed programs paths configProgramArgsconfigProgramArgs ::  ConfigFlags -> [(String, [String])]hh5h ConfigFlags[](,)String[]Stringuser specifed programs args configProgPrefixconfigProgPrefix ::  ConfigFlags -> Flag PathTemplateih ConfigFlagsFlag PathTemplateInstalled executable prefix.  configProfLib configProfLib ::  ConfigFlags ->  Flag Boolii ConfigFlagsFlagBool Enable profiling in the library  configProfExe configProfExe ::  ConfigFlags ->  Flag BoolNj0j ConfigFlagsFlagBool%Enable profiling in the executables. configPackageDBconfigPackageDB ::  ConfigFlags -> Flag PackageDBjj ConfigFlagsFlag PackageDBWhich package DB to use configOptimizationconfigOptimization ::  ConfigFlags -> Flag OptimisationLevelkk ConfigFlagsFlagOptimisationLevelEnable optimization. configInstallDirsconfigInstallDirs ::  ConfigFlags -> InstallDirs (Flag PathTemplate)~lIl ConfigFlags InstallDirsFlag PathTemplateInstallation paths  configHcPkg configHcPkg ::  ConfigFlags ->  Flag FilePathml ConfigFlagsFlagFilePathgiven hc-pkg location  configHcPath configHcPath ::  ConfigFlags ->  Flag FilePathmm ConfigFlagsFlagFilePathgiven compiler location configHcFlavorconfigHcFlavor ::  ConfigFlags -> Flag CompilerFlavorVn.n ConfigFlagsFlagCompilerFlavor3The "flavor" of the compiler, sugh as GHC or Hugs.  configGHCiLib configGHCiLib ::  ConfigFlags ->  Flag Boolon ConfigFlagsFlagBool"Enable compiling library for GHCi  ConfigFlags: ConfigFlags :: ProgramConfiguration -> [(String, FilePath)] -> [(String, [String])] -> Flag CompilerFlavor ->  Flag FilePath ->  Flag FilePath ->  Flag Bool ->  Flag Bool ->  Flag Bool ->  Flag Bool ->  [String] ->  Flag OptimisationLevel ->  Flag PathTemplate ->  Flag PathTemplate -> InstallDirs (Flag PathTemplate) ->  Flag FilePath ->  [FilePath] ->  [FilePath] ->  Flag FilePath -> Flag Verbosity ->  Flag Bool -> Flag PackageDB ->  Flag Bool ->  Flag Bool ->  Flag Bool ->  [Dependency] -> FlagAssignment ->  ConfigFlags@t&rProgramConfiguration[](,)StringFilePath[](,)String[]StringFlagCompilerFlavorFlagFilePathFlagFilePathFlagBoolFlagBoolFlagBoolFlagBool[]StringFlagOptimisationLevelFlag PathTemplateFlag PathTemplate InstallDirsFlag PathTemplateFlagFilePath[]FilePath[]FilePathFlagFilePathFlag VerbosityFlagBoolFlag PackageDBFlagBoolFlagBoolFlagBool[] DependencyFlagAssignment ConfigFlags ConfigFlagsdata  ConfigFlagszt$Flags to configure command configExtraLibDirsconfigExtraLibDirs ::  ConfigFlags ->  [FilePath](uu ConfigFlags[]FilePath#path to search for extra libraries configExtraIncludeDirsconfigExtraIncludeDirs ::  ConfigFlags ->  [FilePath]uu ConfigFlags[]FilePath path to search for header files configDistPrefconfigDistPref ::  ConfigFlags ->  Flag FilePathvbv ConfigFlagsFlagFilePathdist prefix 'configDependency configDependency ::  Verbosity -> !PackageIndex InstalledPackageInfo ->  Dependency -> IO PackageIdentifierwHw Verbosity PackageIndexInstalledPackageInfo DependencyIOPackageIdentifierHTest for a package dependency and record the version we have installed. configConstraintsconfigConstraints ::  ConfigFlags ->  [Dependency]uxSx ConfigFlags[] Dependency(Additional constraints for dependencies configConfigureArgsconfigConfigureArgs ::  ConfigFlags -> [String]%yy ConfigFlags[]String&Extra arguments to configure configConfigurationsFlagsconfigConfigurationsFlags ::  ConfigFlags -> FlagAssignmentyy ConfigFlagsFlagAssignment'configCompilerAuxconfigCompilerAux ::  ConfigFlags -> #IO (Compiler, ProgramConfiguration)zhz ConfigFlagsIO(,)CompilerProgramConfiguration'configCompilerconfigCompiler :: Maybe CompilerFlavor -> Maybe FilePath -> Maybe FilePath -> ProgramConfiguration ->  Verbosity -> #IO (Compiler, ProgramConfiguration)"|{MaybeCompilerFlavorMaybeFilePathMaybeFilePathProgramConfiguration VerbosityIO(,)CompilerProgramConfiguration)confHook confHook ::  UserHooks -> F(Either GenericPackageDescription PackageDescription, HookedBuildInfo) ->  ConfigFlags -> IO LocalBuildInfoh}| UserHooks(,)EitherGenericPackageDescriptionPackageDescriptionHookedBuildInfo ConfigFlagsIOLocalBuildInfo@Over-ride this hook to get different behavior during configure. compilerVersioncompilerVersion :: Compiler -> Version~~CompilerVersion CompilerVar CompilerVar :: PathTemplateVariable~k~PathTemplateVariable5The compiler name and version, eg ghc-6.6.1  compilerId compilerId :: Compiler ->  CompilerId'Compiler CompilerIdcompilerFlavorcompilerFlavor :: Compiler -> CompilerFlavorCompilerCompilerFlavorcompilerExtensionscompilerExtensions :: Compiler -> [(Extension, String)]FCompiler[](,) ExtensionStringcompilercompiler :: LocalBuildInfo -> CompilerLocalBuildInfoCompiler!The compiler we're building with CompilerCompiler ::  CompilerId -> [(Extension, String)] -> CompilerO CompilerId[](,) ExtensionStringCompilerCompilerdata Compiler comparing  comparing ::  Ord a => (b -> a) -> b -> b -> OrderingW2OrdababbOrdering commandUsage commandUsage :: CommandUI flags -> String -> Stringǂ CommandUIflagsStringString)The useage line summary for this command  CommandUI CommandUI :: String -> String -> (String -> String) -> Maybe (String -> String) -> flags -> ((ShowOrParseArgs -> [OptionField flags]) -> CommandUI flagsStringStringStringStringMaybeStringStringflagsShowOrParseArgs[] OptionFieldflags CommandUIflags CommandUIdata  CommandUI flags΄commandSynopsiscommandSynopsis :: CommandUI flags -> StringQ2 CommandUIflagsStringCA short, one line description of the command to use in help texts.  commandsRun  commandsRun ::  CommandUI a -> [Command action] -> [String] -> %CommandParse (a, CommandParse action); CommandUIa[]Commandaction[]String CommandParse(,)a CommandParseactioncommandShowOptionscommandShowOptions :: CommandUI flags -> flags -> [String]P$ CommandUIflagsflags[]String;Show flags in the standard long option command line format CommandReadyToGoCommandReadyToGo :: flags -> CommandParse flagsflags CommandParseflags CommandParsedata  CommandParse flagsVcommandOptionscommandOptions :: CommandUI flags -> ShowOrParseArgs -> [OptionField flags]$ CommandUIflagsShowOrParseArgs[] OptionFieldflags'All the Option fields for this command  commandName commandName :: CommandUI flags -> StringƉ CommandUIflagsStringbThe name of the command as it would be entered on the command line. For example "build".  CommandList CommandList :: [String] -> CommandParse flags[]String CommandParseflags CommandHelp CommandHelp :: (String -> String) -> CommandParse flagsHStringString CommandParseflags CommandErrors CommandErrors :: [String] -> CommandParse flagsՋ[]String CommandParseflagscommandDescriptioncommandDescription :: CommandUI flags -> Maybe (String -> String)Q CommandUIflagsMaybeStringString<Additional explanation of the command to use in help texts. commandDefaultFlagscommandDefaultFlags :: CommandUI flags -> flagsH* CommandUIflagsflagsInitial / empty flags commandAddActioncommandAddAction :: CommandUI flags -> (flags -> [String] -> action) -> Command action> CommandUIflagsflags[]StringactionCommandactionCommanddata Command actionwcombineInstallDirs combineInstallDirs ::  (a -> b -> c) ->  InstallDirs a ->  InstallDirs b ->  InstallDirs c\abc InstallDirsa InstallDirsb InstallDirsccleanVerbositycleanVerbosity ::  CleanFlags -> Flag Verbosity CleanFlagsFlag Verbosity cleanSaveConf cleanSaveConf ::  CleanFlags ->  Flag Bool^A CleanFlagsFlagBool) cleanHook cleanHook ::  UserHooks -> PackageDescription -> Maybe LocalBuildInfo ->  UserHooks ->  CleanFlags -> IO ()t UserHooksPackageDescriptionMaybeLocalBuildInfo UserHooks CleanFlagsIO()<Over-ride this hook to get different behavior during clean.  CleanFlags  CleanFlags ::  Flag Bool ->  Flag FilePath -> Flag Verbosity ->  CleanFlags};FlagBoolFlagFilePathFlag Verbosity CleanFlags CleanFlagsdata  CleanFlags cleanDistPref cleanDistPref ::  CleanFlags ->  Flag FilePath8 CleanFlagsFlagFilePath cleanCommand cleanCommand :: CommandUI CleanFlags CommandUI CleanFlagschoiceOptFromEnumchoiceOptFromEnum :: %(Bounded b, Enum b, Show b, Eq b) => #MkOptDescr (a -> b) (b -> a -> a) a2BoundedbEnumbShowbEqb MkOptDescrabbaaacreate a Choice option out of an enumeration type. As long flags, the Show output is used. As short flags, the first character which does not conflict with a previous one is used.  choiceOpt choiceOpt :: Eq b => [(b, OptFlags, Description)] -> #MkOptDescr (a -> b) (b -> a -> a) a•Eqb[](,,)bOptFlags Description MkOptDescrabbaaacreate a Choice option  ChoiceOpt ChoiceOpt :: ,[(Description, OptFlags, a -> a, a -> Bool)] ->  OptDescr a[](,,,) DescriptionOptFlagsaaaBoolOptDescrachoicechoice ::  [ReadP r a] ->  ReadP r amF[]ReadPraReadPra,Combines all parsers in the specified list. 'checkPersistBuildConfigcheckPersistBuildConfig :: FilePath -> FilePath -> IO ():FilePathFilePathIO()MCheck that localBuildInfoFile is up-to-date with respect to the .cabal file. checkPackageFilescheckPackageFiles :: PackageDescription -> FilePath -> IO [PackageCheck]LPackageDescriptionFilePathIO[] PackageCheckSanity check things that requires IO. It looks at the files in the package and expects to find the package unpacked in at the given filepath. checkPackageFileNamescheckPackageFileNames ::  [FilePath] -> [PackageCheck]tM[]FilePath[] PackageCheckCheck the names of all files in a package for portability problems. This should be done for example when creating or validating a package tarball. CheckPackageContentOpsCheckPackageContentOps :: (FilePath -> m Bool) -> (FilePath -> m Bool) -> CheckPackageContentOps mFilePathmBoolFilePathmBoolCheckPackageContentOpsmCheckPackageContentOpsdata CheckPackageContentOps mPeA record of operations needed to check the contents of packages. Used by checkPackageContent. checkPackageContentcheckPackageContent ::  Monad m => CheckPackageContentOps m -> PackageDescription -> m [PackageCheck]]MonadmCheckPackageContentOpsmPackageDescriptionm[] PackageCheckWSanity check things that requires looking at files in the package. This is a generalised version of checkPackageFiles that can work in any monad for which you can provide CheckPackageContentOps operations. The point of this extra generality is to allow doing checks in some virtual file system, for example a tarball in memory.  checkPackage checkPackage :: GenericPackageDescription -> Maybe PackageDescription -> [PackageCheck]GenericPackageDescriptionMaybePackageDescription[] PackageCheckCheck for common mistakes and problems in package descriptions. This is the standard collection of checks covering all apsects except for checks that require looking at files within the package. For those see checkPackageFiles. It requires the GenericPackageDescription and optionally a particular configuration of that package. If you pass Nothing then we just check a version of the generic description using flattenPackageDescription. 'checkForeignDeps checkForeignDeps :: PackageDescription -> LocalBuildInfo ->  Verbosity -> IO ()[PackageDescriptionLocalBuildInfo VerbosityIO()checkConfiguredPackagecheckConfiguredPackage :: PackageDescription -> [PackageCheck]?PackageDescription[] PackageCheck chattyTry chattyTry :: String -> IO () -> IO ()StringIO()IO()VPerform an IO action, catching any IO exceptions and printing an error if one occurs. charchar :: Char ->  ReadP r Charw\CharReadPrChar,Parses and returns the specified character. chainr1chainr1 ::  ReadP r a -> ReadP r (a -> a -> a) ->  ReadP r aMReadPraReadPraaaReadPraFLike chainr, but parses one or more occurrences of p. chainr chainr ::  ReadP r a -> ReadP r (a -> a -> a) -> a ->  ReadP r aKReadPraReadPraaaaReadPrachainr p op x parses zero or more occurrences of p, separated by op. Returns a value produced by a right associative application of all functions returned by op. If there are no occurrences of p, x is returned. chainl1chainl1 ::  ReadP r a -> ReadP r (a -> a -> a) ->  ReadP r aͧReadPraReadPraaaReadPraFLike chainl, but parses one or more occurrences of p. chainl chainl ::  ReadP r a -> ReadP r (a -> a -> a) -> a ->  ReadP r aȨReadPraReadPraaaaReadPrachainl p op x parses zero or more occurrences of p, separated by op. Returns a value produced by a left associative application of all functions returned by op. If there are no occurrences of p, x is returned. 'ccLdOptionsBuildInfoccLdOptionsBuildInfo :: [String] -> [String] ->  BuildInfo[]String[]String BuildInfoMakes a BuildInfo from C compiler and linker flags. This can be used with the output from configuration programs like pkg-config and similar package-specific programs like mysql-config, freealut-config etc. For example:
ccflags <- rawSystemProgramStdoutConf verbosity prog conf ["--cflags"]
ldflags <- rawSystemProgramStdoutConf verbosity prog conf ["--libs"]
return (ccldOptionsBuildInfo (words ccflags) (words ldflags))
 cabalVersion cabalVersion :: VersionʬVersion cabalBootstrappingcabalBootstrapping :: BoolBool c2hsProgram c2hsProgram :: Programj`Program builtinProgramsbuiltinPrograms ::  [Program]ƭ[]ProgramUThe default list of programs. These programs are typically used internally to Cabal. buildVerbositybuildVerbosity ::  BuildFlags -> Flag Verbosity BuildFlagsFlag Verbosity buildVerbose buildVerbose ::  BuildFlags ->  Verbosity BuildFlags VerbositybuildProgramPathsbuildProgramPaths ::  BuildFlags -> [(String, FilePath)] BuildFlags[](,)StringFilePathbuildProgramArgsbuildProgramArgs ::  BuildFlags -> [(String, [String])]X& BuildFlags[](,)String[]String) buildHook buildHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  BuildFlags -> IO ()_  UserHooksPackageDescriptionLocalBuildInfo UserHooks BuildFlagsIO()=Over-ride this hook to gbet different behavior during build.  BuildFlags  BuildFlags :: [(String, FilePath)] -> [(String, [String])] ->  Flag FilePath -> Flag Verbosity ->  BuildFlagsȲR[](,)StringFilePath[](,)String[]StringFlagFilePathFlag Verbosity BuildFlags BuildFlagsdata  BuildFlags buildDistPref buildDistPref ::  BuildFlags ->  Flag FilePathb BuildFlagsFlagFilePathbuildDirbuildDir :: LocalBuildInfo -> FilePathڳLocalBuildInfoFilePathWhere to build the package.  buildCommand buildCommand :: ProgramConfiguration -> CommandUI BuildFlagsProgramConfiguration CommandUI BuildFlags build build :: PackageDescription -> LocalBuildInfo ->  Verbosity -> IO ()s7PackageDescriptionLocalBuildInfo VerbosityIO()QFIX: For now, the target must contain a main module. Not used ATM. Re-add later. build build :: PackageDescription -> LocalBuildInfo ->  Verbosity -> IO ()EPackageDescriptionLocalBuildInfo VerbosityIO()HBuilding a package for JHC. Currently C source files are not supported. "build build :: PackageDescription -> LocalBuildInfo ->  Verbosity -> IO ()JPackageDescriptionLocalBuildInfo VerbosityIO()Building a package for Hugs. build build :: PackageDescription -> LocalBuildInfo ->  Verbosity -> IO ()`$PackageDescriptionLocalBuildInfo VerbosityIO()WBuilding for GHC. If .ghc-packages exists and is readable, add it to the command-line. #build build :: PackageDescription -> LocalBuildInfo ->  BuildFlags -> [PPSuffixHandler] -> IO ()VPackageDescriptionLocalBuildInfo BuildFlags[]PPSuffixHandlerIO()5Build the libraries and executables in this package.  brokenPackagesbrokenPackages :: PackageFixedDeps pkg => PackageIndex pkg -> [(pkg, [PackageIdentifier])]̺pPackageFixedDepspkg PackageIndexpkg[](,)pkg[]PackageIdentifierAll packages that have dependencies that are not in the index. Returns such packages along with the dependencies that they're missing. boolOpt'boolOpt' :: OptFlags -> OptFlags -> 3MkOptDescr (a -> Flag Bool) (Flag Bool -> a -> a) a5OptFlagsOptFlags MkOptDescraFlagBoolFlagBoolaaaboolOpt' boolOpt' :: (b -> Maybe Bool) ->  (Bool -> b) -> OptFlags -> OptFlags -> #MkOptDescr (a -> b) (b -> a -> a) aCbMaybeBoolBoolbOptFlagsOptFlags MkOptDescrabbaaaboolOptboolOpt :: SFlags -> SFlags -> 3MkOptDescr (a -> Flag Bool) (Flag Bool -> a -> a) aͽSFlagsSFlags MkOptDescraFlagBoolFlagBoolaaaboolOpt boolOpt :: (b -> Maybe Bool) ->  (Bool -> b) -> SFlags -> SFlags -> #MkOptDescr (a -> b) (b -> a -> a) aȾbMaybeBoolBoolbSFlagsSFlags MkOptDescrabbaaaBoolOptBoolOpt ::  Description -> OptFlags -> OptFlags -> (Bool -> a -> a) -> (a -> Maybe Bool) ->  OptDescr a(ӿ DescriptionOptFlagsOptFlagsBoolaaaMaybeBoolOptDescra BindirVar BindirVar :: PathTemplateVariablesPathTemplateVariable#The $bindir path variable bindirbindir :: InstallDirs dir -> dir InstallDirsdirdirbetween between ::  ReadP r open ->  ReadP r close ->  ReadP r a ->  ReadP r aReadPropenReadPrcloseReadPraReadPra between open close p parses open, followed by p and finally close. Only the value of p is returned.  BangPatterns BangPatterns ::  Extension ExtensionautogenModulesDirautogenModulesDir :: LocalBuildInfo -> StringG,LocalBuildInfoString5The directory in which we put auto-generated modules autogenModuleNameautogenModuleName :: PackageDescription ->  ModuleNamePackageDescription ModuleName@The name of the auto-generated module associated with a package ArrowsArrows ::  Extension Extension arProgram arProgram :: ProgramProgram)Argstype Args = [String]ArgPlaceHoldertype ArgPlaceHolder = String`ArchVarArchVar :: PathTemplateVariablePathTemplateVariable?The cpu architecture name, eg i386 or x86_64  Ambiguous Ambiguous :: [a] -> SearchResult apQ[]a SearchResulta allPackagesByNameallPackagesByName :: Package pkg => PackageIndex pkg -> [[pkg]]"Packagepkg PackageIndexpkg[][]pkgZGet all the packages from the index. They are grouped by package name, case-sensitively.  allPackages allPackages :: Package pkg => PackageIndex pkg -> [pkg]Packagepkg PackageIndexpkg[]pkg%Get all the packages from the index.  alexProgram alexProgram :: ProgramProgram addKnownProgramsaddKnownPrograms ::  [Program] -> ProgramConfiguration -> ProgramConfigurationW[]ProgramProgramConfigurationProgramConfiguration addKnownProgramaddKnownProgram :: Program -> ProgramConfiguration -> ProgramConfigurationProgramProgramConfigurationProgramConfiguration0Add a known program that we may configure later absoluteInstallDirs absoluteInstallDirs :: PackageDescription -> LocalBuildInfo -> CopyDest -> InstallDirs FilePath>PackageDescriptionLocalBuildInfoCopyDest InstallDirsFilePathSee absoluteInstallDirs absoluteInstallDirs absoluteInstallDirs :: PackageIdentifier ->  CompilerId -> CopyDest -> InstallDirTemplates -> InstallDirs FilePath|"PackageIdentifier CompilerIdCopyDestInstallDirTemplates InstallDirsFilePathConvert from abstract install directories to actual absolute ones by substituting for all the variables in the abstract paths, to get real absolute path. <++ (<++) ::  ReadP a a ->  ReadP r a ->  ReadP r azReadPaaReadPraReadPraxLocal, exclusive, left-biased choice: If left parser locally produces any result at all, then right parser is not used. +++ (+++) ::  ReadP r a ->  ReadP r a ->  ReadP r aReadPraReadPraReadPraSymmetric choice. YHCYHC :: CompilerFlavorCompilerFlavorX86_64X86_64 :: ArchNGArchwithLib withLib :: PackageDescription -> a -> (Library -> IO a) -> IO aPackageDescriptionaLibraryIOaIOasIf the package description has a library section, call the given function with the library build info as argument.  withinRange withinRange :: Version ->  VersionRange -> BoolVersion VersionRangeBool/Does this version fall within the given range? withExewithExe :: PackageDescription -> (Executable -> IO a) -> IO ()PackageDescription ExecutableIOaIO()SPerform the action on each buildable Executable in the package description. WindowsWindows :: OSkfOS warnUnrec warnUnrec :: UnrecFieldParser aUnrecFieldParseraA default unrecognized field parser which simply returns Nothing, i.e. ignores all unrecognized fields, so warnings will be generated. warningwarning :: String -> ParseResult ()String ParseResult() VersionRangedata  VersionRange Verbositydata  Verbosity6verboseverbose ::  Verbosity~r VerbosityVaxVax :: ArchArchVarVar :: c ->  Condition c c Conditionc UTFWarning UTFWarning :: LineNo -> String -> PWarningrLineNoStringPWarning* UserHooksN UserHooks :: ?(Args -> Bool -> PackageDescription -> LocalBuildInfo -> IO ()) -> IO (Maybe PackageDescription) -> [PPSuffixHandler] ->  [Program] -> +(Args -> ConfigFlags -> IO HookedBuildInfo) -> ((Either GenericPackageDescription PackageDescription, HookedBuildInfo) -> ConfigFlags -> IO LocalBu. -> F(Args -> ConfigFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> *(Args -> BuildFlags -> IO HookedBuildInfo) -> J(PackageDescription -> LocalBuildInfo -> UserHooks -> BuildFlags -> IO ()) ->  E(Args -> BuildFlags -> PackageDescription -> LocalBuildInfo -> IO ()) ->  -(Args -> MakefileFlags -> IO HookedBuildInfo) ->  M(PackageDescription -> LocalBuildInfo -> UserHooks -> MakefileFlags -> IO ()) ->  H(Args -> MakefileFlags -> PackageDescription -> LocalBuildInfo -> IO ()) ->  *(Args -> CleanFlags -> IO HookedBuildInfo) -> P(PackageDescription -> Maybe LocalBuildInfo -> UserHooks -> CleanFlags -> IO ()) -> K(Args -> CleanFlags -> PackageDescription -> Maybe LocalBuildInfo -> IO ()) -> )(Args -> CopyFlags -> IO HookedBuildInfo) -> I(PackageDescription -> LocalBuildInfo -> UserHooks -> CopyFlags -> IO ()) -> D(Args -> CopyFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> ,(Args -> InstallFlags -> IO HookedBuildInfo) -> L(PackageDescription -> LocalBuildInfo -> UserHooks -> InstallFlags -> IO ()) -> G(Args -> InstallFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> *(Args -> SDistFlags -> IO HookedBuildInfo) -> P(PackageDescription -> Maybe LocalBuildInfo -> UserHooks -> SDistFlags -> IO ()) -> K(Args -> SDistFlags -> PackageDescription -> Maybe LocalBuildInfo -> IO ()) -> -(Args -> RegisterFlags -> IO HookedBuildInfo) -> M(PackageDescription -> LocalBuildInfo -> UserHooks -> RegisterFlags -> IO ()) -> H(Args -> RegisterFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> -(Args -> RegisterFlags -> IO HookedBuildInfo) -> M(PackageDescription -> LocalBuildInfo -> UserHooks -> RegisterFlags -> IO ()) -> H(Args -> RegisterFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> -(Args -> HscolourFlags -> IO HookedBuildInfo) ->  M(PackageDescription -> LocalBuildInfo -> UserHooks -> HscolourFlags -> IO ()) -> !H(Args -> HscolourFlags -> PackageDescription -> LocalBuildInfo -> IO ()) -> ",(Args -> HaddockFlags -> IO HookedBuildInfo) -> #L(PackageDescription -> LocalBuildInfo -> UserHooks -> HaddockFlags -> IO ()) -> $G(Args -> HaddockFlags -> PackageDescription -> LocalBuildInfo -> IO ()) ->  UserHooks*Y&ArgsBoolPackageDescriptionLocalBuildInfoIO()IOMaybePackageDescription[]PPSuffixHandler[]ProgramArgs ConfigFlagsIOHookedBuildInfo(,)EitherGenericPackageDescriptionPackageDescriptionHookedBuildInfo ConfigFlagsIOLocalBuildInfoArgs ConfigFlagsPackageDescriptionLocalBuildInfoIO()Args BuildFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks BuildFlagsIO()Args BuildFlagsPackageDescriptionLocalBuildInfoIO()Args MakefileFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks MakefileFlagsIO()Args MakefileFlagsPackageDescriptionLocalBuildInfoIO()Args CleanFlagsIOHookedBuildInfoPackageDescriptionMaybeLocalBuildInfo UserHooks CleanFlagsIO()Args CleanFlagsPackageDescriptionMaybeLocalBuildInfoIO()Args CopyFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks CopyFlagsIO()Args CopyFlagsPackageDescriptionLocalBuildInfoIO()Args InstallFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks InstallFlagsIO()Args InstallFlagsPackageDescriptionLocalBuildInfoIO()Args SDistFlagsIOHookedBuildInfoPackageDescriptionMaybeLocalBuildInfo UserHooks SDistFlagsIO()Args SDistFlagsPackageDescriptionMaybeLocalBuildInfoIO()Args RegisterFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks RegisterFlagsIO()Args RegisterFlagsPackageDescriptionLocalBuildInfoIO()Args RegisterFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks RegisterFlagsIO()Args RegisterFlagsPackageDescriptionLocalBuildInfoIO()Args HscolourFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks HscolourFlagsIO()Args HscolourFlagsPackageDescriptionLocalBuildInfoIO()Args HaddockFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks HaddockFlagsIO()Args HaddockFlagsPackageDescriptionLocalBuildInfoIO() UserHooksildInfo)* UserHooksdata  UserHooksi@Hooks allow authors to add specific functionality before and after a command is run, and also to specify additional preprocessors.
  • WARNING: The hooks interface is under rather constant flux as we try to understand users needs. Setup files that depend on this interface may break in future releases.
updatePackageDescriptionupdatePackageDescription :: HookedBuildInfo -> PackageDescription -> PackageDescriptionIHookedBuildInfoPackageDescriptionPackageDescription* unregHook unregHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  RegisterFlags -> IO ()< UserHooksPackageDescriptionLocalBuildInfo UserHooks RegisterFlagsIO()COver-ride this hook to get different behavior during registration. UnrecFieldParsertype UnrecFieldParser a# = (String, String) -> a -> Maybe a@(The type of a function which, given a name-value pair of an unrecognized field, and the current structure being built, decides whether to incorporate the unrecognized field (by returning Just x, where x is a possibly modified version of the structure being built), or not (by returning Nothing). UnknownLicenseUnknownLicense :: String -> LicenseStringLicenseTNot a recognised license. Allows us to deal with future extensions more gracefully.  UnknownLicenseUnknownLicense :: String -> LicenseStringLicenseTNot a recognised license. Allows us to deal with future extensions more gracefully. UnknownBuildTypeUnknownBuildType :: String ->  BuildTypebLString BuildTypea package that uses an unknown build type cannot actually be built. Doing it this way rather than just giving a parse error means we get better error messages and allows you to inspect the rest of the package description. UnionVersionRangesUnionVersionRanges ::  VersionRange ->  VersionRange ->  VersionRange VersionRange VersionRange VersionRange toFilePath toFilePath ::  ModuleName -> FilePathbI ModuleNameFilePath ThisVersion ThisVersion :: Version ->  VersionRangeVersion VersionRangethisPackageVersionthisPackageVersion :: PackageIdentifier ->  DependencyhFPackageIdentifier DependencyTextclass Text a testedWith testedWith :: PackageDescription ->  [(CompilerFlavor, VersionRange)]PPackageDescription[](,)CompilerFlavor VersionRange TabsError TabsError :: LineNo -> PErrorLineNoPError TabsError TabsError :: LineNo -> PErrorLineNoPError syntaxError syntaxError :: LineNo -> String ->  ParseResult aLineNoString ParseResultasynopsissynopsis :: PackageDescription -> StringPackageDescriptionString#A one-line summary of this package SVNSVN :: RepoType~sRepoType succeedReadE succeedReadE ::  (String -> a) -> ReadE aStringaReadEa stability stability :: PackageDescription -> StringqRPackageDescriptionString stability stability :: InstalledPackageInfo_ m -> StringInstalledPackageInfo_mStringSparcSparc :: Arch2+ArchspaceListFieldspaceListField :: String ->  (a -> Doc) ->  ReadP [a] a ->  (b -> [a]) -> ([a] -> b -> b) ->  FieldDescr bIStringaDocReadP[]aab[]a[]abb FieldDescrb sourceRepos sourceRepos :: PackageDescription ->  [SourceRepo]PackageDescription[] SourceRepo SourceRepo SourceRepo :: RepoKind -> Maybe RepoType ->  Maybe String ->  Maybe String ->  Maybe String ->  Maybe String -> Maybe FilePath ->  SourceRepoERepoKindMaybeRepoTypeMaybeStringMaybeStringMaybeStringMaybeStringMaybeFilePath SourceRepo SourceRepodata  SourceRepo}Information about the source revision control system for a package. When specifying a repo it is useful to know the meaning or intention of the information as doing so enables automation. There are two obvious common purposes: one is to find the repo for the latest development version, the other is to find the repo for this specific release. The ReopKind specifies which one we mean (or another custom one). A package can specify one or the other kind or both. Most will specify just a head repo but some may want to specify a repo to reconstruct the sources for this package release. The required information is the RepoType which tells us if it's using Darcs, Git for example. The repoLocation and other details are interpreted according to the repo type. SolarisSolaris :: OSOS*simpleUserHookssimpleUserHooks ::  UserHooks& UserHooksLHooks that correspond to a plain instantiation of the "simple" build system  simpleParse simpleParse ::  Text a => String -> Maybe aTextaStringMaybea simpleField simpleField :: String ->  (a -> Doc) ->  ReadP a a -> (b -> a) ->  (a -> b -> b) ->  FieldDescr bStringaDocReadPaabaabb FieldDescrb simplesimple :: String ->  ModuleNameO8String ModuleNameSimpleSimple ::  BuildType BuildType/calls Distribution.Simple.defaultMain silentsilent ::  Verbosity  Verbosity showToken showToken :: String -> DocfVStringDocshowTestedWithshowTestedWith :: (CompilerFlavor, VersionRange) -> Doc(,)CompilerFlavor VersionRangeDocshowSingleNamedFieldshowSingleNamedField :: [FieldDescr a] -> String -> Maybe (a -> String)[] FieldDescraStringMaybeaString showPWarning showPWarning :: FilePath -> PWarning -> StringO0FilePathPWarningStringshowInstalledPackageInfoFieldshowInstalledPackageInfoField :: String -> &Maybe (InstalledPackageInfo -> String)StringMaybeInstalledPackageInfoStringshowInstalledPackageInfoshowInstalledPackageInfo :: InstalledPackageInfo -> StringInstalledPackageInfoString showFreeText showFreeText :: String -> DocStringDocPretty-print free-format text, ensuring that it is vertically aligned, and with blank lines replaced by dots for correct re-parsing.  showForGHC showForGHC ::  Verbosity -> String VerbosityString showForCabal showForCabal ::  Verbosity -> Stringu_ VerbosityString showFilePath showFilePath :: FilePath -> DocFilePathDoc showFields showFields :: [FieldDescr a] -> a -> StringfA[] FieldDescraaStringSHSH :: ArchArchSection Section :: LineNo -> String -> String -> [Field] -> FieldJ  LineNoStringString[]FieldFieldA section with a name and possible parameter. The syntactic structure is:
sectionname> <arg {
  field*
}
* sDistHook sDistHook ::  UserHooks -> PackageDescription -> Maybe LocalBuildInfo ->  UserHooks ->  SDistFlags -> IO ()   UserHooksPackageDescriptionMaybeLocalBuildInfo UserHooks SDistFlagsIO()<Over-ride this hook to get different behavior during sdist. S390S390 :: Arch_ X Arch*runTestsrunTests ::  UserHooks -> Args -> Bool -> PackageDescription -> LocalBuildInfo -> IO ()N   UserHooksArgsBoolPackageDescriptionLocalBuildInfoIO()Used for ./setup test runReadErunReadE :: ReadE a -> String -> Either ErrorMsg a  ReadEaStringEitherErrorMsgarunP runP :: LineNo -> String ->  ReadP a a -> String ->  ParseResult a  LineNoStringReadPaaString ParseResultarunE runE :: LineNo -> String -> ReadE a -> String ->  ParseResult aJLineNoStringReadEaString ParseResultaRs6000Rs6000 :: ArchArchrepoTyperepoType ::  SourceRepo -> Maybe RepoType: SourceRepoMaybeRepoTypeoThe type of the source repository system for this repo, eg Darcs or Git. This field is required. RepoTypedata RepoTypeAn enumeration of common source control systems. The fields used in the SourceRepo depend on the type of repo. The tools and methods used to obtain and track the repo depend on the repo type. RepoThisRepoThis :: RepoKindRepoKindThe repository containing the sources for this exact package version or release. For this kind of repo a tag should be given to give enough information to re-create the exact sources. repoTagrepoTag ::  SourceRepo ->  Maybe String SourceRepoMaybeStringThe tag identify a particular state of the repository. This should be given for the RepoThis repo kind and not for RepoHead kind.  repoSubdir repoSubdir ::  SourceRepo -> Maybe FilePath( SourceRepoMaybeFilePathWSome repositories contain multiple projects in different subdirectories This field specifies the subdirectory where this packages sources can be found, eg the subdirectory containing the .cabal file. It is interpreted relative to the root of the repository. This field is optional. If not given the default is "." ie no subdirectory.  repoModule repoModule ::  SourceRepo ->  Maybe String SourceRepoMaybeString@CVS can put multiple "modules" on one server and requires a module name in addition to the location to identify a particular repo. Logically this is part of the location but unfortunately has to be specified separately. This field is required for the CVS RepoType and should not be given otherwise.  repoLocation repoLocation ::  SourceRepo ->  Maybe String SourceRepoMaybeStringaThe location of the repository. For most RepoTypes this is a URL. This field is required. RepoKindUnknownRepoKindUnknown :: String -> RepoKindwStringRepoKindrepoKindrepoKind ::  SourceRepo -> RepoKind SourceRepoRepoKind*The kind of repo. This field is required. RepoKinddata RepoKindV0What this repo info is for, what it represents. RepoHeadRepoHead :: RepoKindRepoKindThe repository for the "head" or development version of the project. This repo is where we should track the latest development activity or the usual repo people should get to contribute patches.  repoBranch repoBranch ::  SourceRepo ->  Maybe String  SourceRepoMaybeStringThe name or identifier of the branch, if any. Many source control systems have the notion of multiple branches in a repo that exist in the same location. For example Git and CVS use this while systems like Darcs use different locations for different branches. This field is optional but should be used if necessary to identify the sources, especially for the RepoThis repo kind. *regHookregHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  RegisterFlags -> IO ()V UserHooksPackageDescriptionLocalBuildInfo UserHooks RegisterFlagsIO()COver-ride this hook to get different behavior during registration.  readP_to_E readP_to_E :: (String -> ErrorMsg) ->  ReadP a a -> ReadE adStringErrorMsgReadPaaReadEa readFields readFields :: String -> ParseResult [Field]String ParseResult[]Field readEOrFail readEOrFail :: ReadE a -> String -> a|ReadEaStringaReadEReadE :: (String -> Either ErrorMsg a) -> ReadE a%StringEitherErrorMsgaReadEaReadEnewtype ReadE aX#Parser with simple error reporting *readDescreadDesc ::  UserHooks -> IO (Maybe PackageDescription)  UserHooksIOMaybePackageDescriptionRead the description file PWarningPWarning :: String -> PWarning | StringPWarningPWarningdata PWarning PWarningdata PWarning  PublicDomain PublicDomain :: LicenseG!=!License?Holder makes no claim to ownership, least restrictive license.  PublicDomain PublicDomain :: License!!License?Holder makes no claim to ownership, least restrictive license. *preUnreg preUnreg ::  UserHooks -> Args ->  RegisterFlags -> IO HookedBuildInfo"" UserHooksArgs RegisterFlagsIOHookedBuildInfo&Hook to run before unregister command *preSDist preSDist ::  UserHooks -> Args ->  SDistFlags -> IO HookedBuildInfo#z# UserHooksArgs SDistFlagsIOHookedBuildInfoHHook to run before sdist command. Second arg indicates verbosity level. *preReg preReg ::  UserHooks -> Args ->  RegisterFlags -> IO HookedBuildInfo$z$ UserHooksArgs RegisterFlagsIOHookedBuildInfo$Hook to run before register command * preMakefile  preMakefile ::  UserHooks -> Args ->  MakefileFlags -> IO HookedBuildInfo%c% UserHooksArgs MakefileFlagsIOHookedBuildInfoKHook to run before makefile command. Second arg indicates verbosity level. *preInst preInst ::  UserHooks -> Args ->  InstallFlags -> IO HookedBuildInfo&j& UserHooksArgs InstallFlagsIOHookedBuildInfo#Hook to run before install command * preHscolour  preHscolour ::  UserHooks -> Args ->  HscolourFlags -> IO HookedBuildInfo'Q' UserHooksArgs HscolourFlagsIOHookedBuildInfoKHook to run before hscolour command. Second arg indicates verbosity level. * preHaddock  preHaddock ::  UserHooks -> Args ->  HaddockFlags -> IO HookedBuildInfo(^( UserHooksArgs HaddockFlagsIOHookedBuildInfoJHook to run before haddock command. Second arg indicates verbosity level. *preCopy preCopy ::  UserHooks -> Args ->  CopyFlags -> IO HookedBuildInfo)`) UserHooksArgs CopyFlagsIOHookedBuildInfo Hook to run before copy command *preConf preConf ::  UserHooks -> Args ->  ConfigFlags -> IO HookedBuildInfoo*7* UserHooksArgs ConfigFlagsIOHookedBuildInfo%Hook to run before configure command *preClean preClean ::  UserHooks -> Args ->  CleanFlags -> IO HookedBuildInfoM++ UserHooksArgs CleanFlagsIOHookedBuildInfoHHook to run before clean command. Second arg indicates verbosity level. *preBuild preBuild ::  UserHooks -> Args ->  BuildFlags -> IO HookedBuildInfoN,, UserHooksArgs BuildFlagsIOHookedBuildInfoHHook to run before build command. Second arg indicates verbosity level. ppFieldsppFields :: [FieldDescr a] -> a -> Doc-,[] FieldDescraaDocppFieldppField :: String -> Doc -> Doc-n-StringDocDocPPC64PPC64 :: Arch--ArchPPCPPC :: Arch--Arch* postUnreg postUnreg ::  UserHooks -> Args ->  RegisterFlags -> PackageDescription -> LocalBuildInfo -> IO ().. UserHooksArgs RegisterFlagsPackageDescriptionLocalBuildInfoIO()%Hook to run after unregister command * postSDist postSDist ::  UserHooks -> Args ->  SDistFlags -> PackageDescription -> Maybe LocalBuildInfo -> IO ()'0/ UserHooksArgs SDistFlagsPackageDescriptionMaybeLocalBuildInfoIO()GHook to run after sdist command. Second arg indicates verbosity level. *postRegpostReg ::  UserHooks -> Args ->  RegisterFlags -> PackageDescription -> LocalBuildInfo -> IO ()m11 UserHooksArgs RegisterFlagsPackageDescriptionLocalBuildInfoIO()#Hook to run after register command * postMakefile postMakefile ::  UserHooks -> Args ->  MakefileFlags -> PackageDescription -> LocalBuildInfo -> IO ()2H2 UserHooksArgs MakefileFlagsPackageDescriptionLocalBuildInfoIO()JHook to run after makefile command. Second arg indicates verbosity level. *postInstpostInst ::  UserHooks -> Args ->  InstallFlags -> PackageDescription -> LocalBuildInfo -> IO ()33 UserHooksArgs InstallFlagsPackageDescriptionLocalBuildInfoIO()cHook to run after install command. postInst should be run on the target, not on the build machine. * postHscolour postHscolour ::  UserHooks -> Args ->  HscolourFlags -> PackageDescription -> LocalBuildInfo -> IO ()N54 UserHooksArgs HscolourFlagsPackageDescriptionLocalBuildInfoIO()JHook to run after hscolour command. Second arg indicates verbosity level. * postHaddock postHaddock ::  UserHooks -> Args ->  HaddockFlags -> PackageDescription -> LocalBuildInfo -> IO ()6M6 UserHooksArgs HaddockFlagsPackageDescriptionLocalBuildInfoIO()IHook to run after haddock command. Second arg indicates verbosity level. *postCopypostCopy ::  UserHooks -> Args ->  CopyFlags -> PackageDescription -> LocalBuildInfo -> IO ()77 UserHooksArgs CopyFlagsPackageDescriptionLocalBuildInfoIO()Hook to run after copy command *postConfpostConf ::  UserHooks -> Args ->  ConfigFlags -> PackageDescription -> LocalBuildInfo -> IO ()88 UserHooksArgs ConfigFlagsPackageDescriptionLocalBuildInfoIO()$Hook to run after configure command * postClean postClean ::  UserHooks -> Args ->  CleanFlags -> PackageDescription -> Maybe LocalBuildInfo -> IO ()+:9 UserHooksArgs CleanFlagsPackageDescriptionMaybeLocalBuildInfoIO()GHook to run after clean command. Second arg indicates verbosity level. * postBuild postBuild ::  UserHooks -> Args ->  BuildFlags -> PackageDescription -> LocalBuildInfo -> IO ()o;!; UserHooksArgs BuildFlagsPackageDescriptionLocalBuildInfoIO()GHook to run after build command. Second arg indicates verbosity level. PlatformPlatform :: Arch -> OS -> Platform(<<ArchOSPlatformPlatformdata Platform\< pkgVersion pkgVersion :: PackageIdentifier -> Version<<PackageIdentifierVersion$the version of this package, eg 1.2 pkgUrlpkgUrl :: PackageDescription -> Stringp=Q=PackageDescriptionStringpkgUrlpkgUrl :: InstalledPackageInfo_ m -> String==InstalledPackageInfo_mStringpkgNamepkgName :: PackageIdentifier ->  PackageNameo>L>PackageIdentifier PackageName"The name of this package, eg. foo pkgconfigDependspkgconfigDepends ::  BuildInfo ->  [Dependency]?> BuildInfo[] Dependency"pkg-config packages that are used PErrordata PErrori?PErrordata PError?parseVersionRangeQparseVersionRangeQ :: ReadP r VersionRange@?ReadPr VersionRange parseTokenQ' parseTokenQ' :: ReadP r Stringq@\@ReadPrString parseTokenQ parseTokenQ :: ReadP r String@@ReadPrStringparseTestedWithQparseTestedWithQ :: &ReadP r (CompilerFlavor, VersionRange)lA:AReadPr(,)CompilerFlavor VersionRange parseSepList parseSepList ::  ReadP r b ->  ReadP r a ->  ReadP r [a]BAReadPrbReadPraReadPr[]a ParseResultdata  ParseResult aPB ParseResultdata  ParseResult aB parseReadE parseReadE :: ReadE a ->  ReadP r aBBReadEaReadPra parseQuoted parseQuoted ::  ReadP r a ->  ReadP r ayCXCReadPraReadPraparsePkgconfigDependencyparsePkgconfigDependency :: ReadP r DependencyCCReadPr DependencyparsePackageNameQparsePackageNameQ :: ReadP r PackageNamemDSDReadPr PackageNameparseOptVersionparseOptVersion :: ReadP r VersionDDReadPrVersionparseOptCommaListparseOptCommaList ::  ReadP r a ->  ReadP r [a]cE a ->  ParseResult aEE[]PWarninga ParseResultaParseOkParseOk ::  [PWarning] -> a ->  ParseResult ayFQF[]PWarninga ParseResultaparseModuleNameQparseModuleNameQ :: ReadP r ModuleNameFFReadPr ModuleNameparse a module name  parseLicenseQ parseLicenseQ :: ReadP r LicenseaGKGReadPrLicenseparseInstalledPackageInfoparseInstalledPackageInfo :: String ->  ParseResult InstalledPackageInfoHGString ParseResultInstalledPackageInfo parseFreeText parseFreeText :: ReadP s String|HgHReadPsStringparseFilePathQparseFilePathQ :: ReadP r FilePathHHReadPrFilePath parseFields  parseFields :: [FieldDescr a] -> a -> String ->  ParseResult aIeI[] FieldDescraaString ParseResulta ParseFailed ParseFailed :: PError ->  ParseResult aJIPError ParseResulta ParseFailed ParseFailed :: PError ->  ParseResult aJmJPError ParseResulta parseFail parseFail :: PError ->  ParseResult aJJPError ParseResultaparseExtensionQparseExtensionQ :: ReadP r ExtensioniKQKReadPr ExtensionparseCompilerFlavorCompatparseCompilerFlavorCompat :: ReadP r CompilerFlavorKKReadPrCompilerFlavorLike classifyCompilerFlavor but compatible with the old ReadS parser. It is compatible in the sense that it accepts only the same strings, eg GHC but not ghc. However other strings get mapped to OtherCompiler. The point of this is that we do not allow extra valid values that would upset older Cabal versions that had a stricter parser however we cope with new values more gracefully so that we'll be able to introduce new value in future without breaking things so much. parseCommaListparseCommaList ::  ReadP r a ->  ReadP r [a]pNINReadPraReadPr[]aparseBuildToolparseBuildTool :: ReadP r DependencyNNReadPr Dependencyparseparse ::  Text a =>  ReadP r a9OOTextaReadPrapackageVersionpackageVersion :: Package pkg => pkg -> VersionOOPackagepkgpkgVersion packageName packageName :: Package pkg => pkg ->  PackageNameIP$PPackagepkgpkg PackageName PackageName PackageName :: String ->  PackageNamePPString PackageName PackageNamenewtype  PackageNamePPackageIdentifierPackageIdentifier ::  PackageName -> Version -> PackageIdentifierQxQ PackageNameVersionPackageIdentifierPackageIdentifierdata PackageIdentifierQ#The name and version of a package.  packageId packageId :: Package pkg => pkg -> PackageIdentifierRsRPackagepkgpkgPackageIdentifier PackageIdtype  PackageId = PackageIdentifierR5Type alias so we can use the shorter name PackageId. PackageFixedDepsclass Package pkg => PackageFixedDeps pkgwS_Subclass of packages that have specific versioned dependencies. So for example a not-yet-configured package has dependencies on version ranges, not specific versions. A configured or an already installed package depends on exact versions. Some operations or data structures (like dependency graphs) only make sense on this subclass of package types. packageDescriptionpackageDescription :: GenericPackageDescription -> PackageDescriptionUVUGenericPackageDescriptionPackageDescriptionPackageDescription6PackageDescription :: PackageIdentifier -> License -> FilePath -> String -> String -> String -> String ->  [(CompilerFlavor, VersionRange)] -> String ->  String ->  String ->  [SourceRepo] ->  String ->  String -> String -> [(String, String)] ->  [Dependency] ->  VersionRange -> Maybe BuildType ->  Maybe Library ->  [Executable] ->  [FilePath] -> FilePath ->  [FilePath] ->  [FilePath] -> PackageDescriptionYXPackageIdentifierLicenseFilePathStringStringStringString[](,)CompilerFlavor VersionRangeStringStringString[] SourceRepoStringStringString[](,)StringString[] Dependency VersionRangeMaybe BuildTypeMaybeLibrary[] Executable[]FilePathFilePath[]FilePath[]FilePathPackageDescriptionPackageDescriptiondata PackageDescriptionYKThis data type is the internal representation of the file pkg.cabal. It contains two kinds of information about the package: information which is needed for all packages, such as the package name and version, and information which is needed for the simple build system only, such as the compiler options and library name. packagepackage :: PackageDescription -> PackageIdentifier[}[PackageDescriptionPackageIdentifierpackagepackage :: InstalledPackageInfo_ m -> PackageIdentifier@\\InstalledPackageInfo_mPackageIdentifierPackageclass Package pkgw\Class of things that can be identified by a PackageIdentifier Types in this class are all notions of a package. This allows us to have different types for the different phases that packages go though, from simple name/id, package description, configured or installed packages.  OtherRepoType OtherRepoType :: String -> RepoType^]StringRepoTypeOtherOSOtherOS :: String -> OSX^I^StringOS otherModules otherModules ::  BuildInfo ->  [ModuleName]^^ BuildInfo[] ModuleName non-exposed or non-main modules  OtherLicense OtherLicense :: LicenseD_:_LicenseSome other license.  OtherLicense OtherLicense :: License__LicenseSome other license.  OtherCompiler OtherCompiler :: String -> CompilerFlavor4``StringCompilerFlavor OtherArch OtherArch :: String -> Arch``StringArchOSXOSX :: OS``OSOSdata OS`OSOS :: OS -> ConfVar:a*aOSConfVarorLaterVersionorLaterVersion :: Version ->  VersionRangeaaVersion VersionRangeorEarlierVersionorEarlierVersion :: Version ->  VersionRange2bbVersion VersionRange optsField  optsField :: String -> CompilerFlavor -> #(b -> [(CompilerFlavor, [String])]) -> (([(CompilerFlavor, [String])] -> b -> b) ->  FieldDescr bccStringCompilerFlavorb[](,)CompilerFlavor[]String[](,)CompilerFlavor[]Stringbb FieldDescrboptionsoptions ::  BuildInfo -> [(CompilerFlavor, [String])]0dc BuildInfo[](,)CompilerFlavor[]StringOpenBSDOpenBSD :: OSjdedOSnotThisVersionnotThisVersion :: Version ->  VersionRangeddVersion VersionRangenotThisPackageVersionnotThisPackageVersion :: PackageIdentifier ->  Dependency|eZePackageIdentifier Dependencynormalnormal ::  Verbosityee VerbosityNoParseNoParse :: String -> LineNo -> PError:ffStringLineNoPErrorNoParseNoParse :: String -> LineNo -> PErrorffStringLineNoPErrorNHCNHC :: CompilerFlavorffCompilerFlavorNetBSDNetBSD :: OS4g/gOS moreVerbose moreVerbose ::  Verbosity ->  Verbositygg Verbosity VerbosityMonotoneMonotone :: RepoTypeggRepoType modulePath modulePath ::  Executable -> FilePath^hEh ExecutableFilePath ModuleNamedata  ModuleNamehMkFlag MkFlag :: FlagName -> String -> Bool -> Bool -> Flag8iiFlagNameStringBoolBoolFlagMipsMips :: ArchpiiiArch Mercurial Mercurial :: RepoTypeiiRepoType* makefileHook makefileHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  MakefileFlags -> IO ()jwj UserHooksPackageDescriptionLocalBuildInfo UserHooks MakefileFlagsIO()?Over-ride this hook to get different behavior during makefile. MakeMake ::  BuildTypeNkBk BuildType-calls Distribution.Make.defaultMain  maintainer maintainer :: PackageDescription -> StringkkPackageDescriptionString maintainer maintainer :: InstalledPackageInfo_ m -> StringlYlInstalledPackageInfo_mString mainmain ::  ModuleNamell ModuleNameM68kM68k :: ArchllArchlocatedErrorMsglocatedErrorMsg :: PError -> (Maybe LineNo, String)mgmPError(,)MaybeLineNoStringLitLit :: Bool ->  Condition cmmBool Conditionc listField listField :: String ->  (a -> Doc) ->  ReadP [a] a ->  (b -> [a]) -> ([a] -> b -> b) ->  FieldDescr bnnStringaDocReadP[]aab[]a[]abb FieldDescrbLinuxLinux :: OS4o/oOSlineNolineNo :: Field -> LineNoo|oFieldLineNoLineNotype LineNo = Into liftField  liftField :: (b -> a) ->  (a -> b -> b) ->  FieldDescr a ->  FieldDescr bpNpbaabb FieldDescra FieldDescrb licenseFile licenseFile :: PackageDescription -> FilePathqpPackageDescriptionFilePathlicenselicense :: PackageDescription -> Licenseq`qPackageDescriptionLicenselicenselicense :: InstalledPackageInfo_ m -> LicenserqInstalledPackageInfo_mLicenseLicensedata License7rThis datatype indicates the license under which your package is released. It is also wise to add your license to each source file using the license-file field. The AllRightsReserved constructor is not actually a license, but states that you are not giving anyone else a license to use or distribute your work. The comments below are general guidelines. Please read the licenses themselves and consult a lawyer if you are unsure of your rights to release the software.  Licensedata LicenseDtThis datatype indicates the license under which your package is released. It is also wise to add your license to each source file using the license-file field. The AllRightsReserved constructor is not actually a license, but states that you are not giving anyone else a license to use or distribute your work. The comments below are general guidelines. Please read the licenses themselves and consult a lawyer if you are unsure of your rights to release the software.  libraryDirs libraryDirs :: InstalledPackageInfo_ m ->  [FilePath]vvInstalledPackageInfo_m[]FilePathlibrarylibrary :: PackageDescription ->  Maybe Library=wwPackageDescriptionMaybeLibraryLibrary Library ::  [ModuleName] -> Bool ->  BuildInfo -> Libraryww[] ModuleNameBool BuildInfoLibraryLibrarydata Libraryx libModules libModules :: PackageDescription ->  [ModuleName]xxxPackageDescription[] ModuleName<Get all the module names from the libraries in this package  libExposed libExposed :: Library -> Bool?y-yLibraryBool%Is the lib to be exposed by default?  libBuildInfo libBuildInfo :: Library ->  BuildInfoyyLibrary BuildInfoLGPLLGPL :: LicensezzLicense=Lesser GPL, Less restrictive than GPL, useful for libraries.  LGPLLGPL :: LicensezzLicense=Lesser GPL, Less restrictive than GPL, useful for libraries.  lessVerbose lessVerbose ::  Verbosity ->  Verbosity<{#{ Verbosity Verbosity ldOptions ldOptions ::  BuildInfo -> [String]{{ BuildInfo[]Stringoptions for linker  ldOptions ldOptions :: InstalledPackageInfo_ m -> [String]N|!|InstalledPackageInfo_m[]String LaterVersion LaterVersion :: Version ->  VersionRange||Version VersionRangeknownBuildTypesknownBuildTypes ::  [BuildType]$}}[] BuildTypeJHCJHC :: CompilerFlavorn}]}CompilerFlavor isAnyVersion isAnyVersion ::  VersionRange -> Bool}} VersionRangeBoolIRIXIRIX :: OS~ ~OSintToVerbosityintToVerbosity :: Int -> Maybe Verbosity~q~IntMaybe VerbosityIntersectVersionRangesIntersectVersionRanges ::  VersionRange ->  VersionRange ->  VersionRangeG VersionRange VersionRange VersionRange*instHookinstHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  InstallFlags -> IO ()P UserHooksPackageDescriptionLocalBuildInfo UserHooks InstallFlagsIO()>Over-ride this hook to get different behavior during install. installIncludesinstallIncludes ::  BuildInfo ->  [FilePath] BuildInfo[]FilePath%.h files to install with the package InstalledPackageInfo_data InstalledPackageInfo_ mInstalledPackageInfotype InstalledPackageInfo# = InstalledPackageInfo_ ModuleNameInstalledPackageInfo<InstalledPackageInfo :: PackageIdentifier -> License -> String -> String -> String -> String -> String -> String -> String ->  String ->  Bool ->  [m] ->  [m] ->  [FilePath] ->  [FilePath] -> [String] -> [String] -> [String] ->  [FilePath] -> [String] -> [PackageIdentifier] -> [String] -> [String] -> [String] ->  [FilePath] -> [String] ->  [FilePath] ->  [FilePath] -> InstalledPackageInfo_ mPackageIdentifierLicenseStringStringStringStringStringStringStringStringBool[]m[]m[]FilePath[]FilePath[]String[]String[]String[]FilePath[]String[]PackageIdentifier[]String[]String[]String[]FilePath[]String[]FilePath[]FilePathInstalledPackageInfo_mincludesincludes ::  BuildInfo ->  [FilePath]wY BuildInfo[]FilePath(The .h files to be found in includeDirs includesincludes :: InstalledPackageInfo_ m -> [String],InstalledPackageInfo_m[]String includeDirs includeDirs ::  BuildInfo ->  [FilePath] BuildInfo[]FilePathdirectories to find .h files  includeDirs includeDirs :: InstalledPackageInfo_ m ->  [FilePath]X)InstalledPackageInfo_m[]FilePath importDirs importDirs :: InstalledPackageInfo_ m ->  [FilePath]InstalledPackageInfo_m[]FilePathImplImpl :: CompilerFlavor ->  VersionRange -> ConfVar}SCompilerFlavor VersionRangeConfVar ignoreUnrec ignoreUnrec :: UnrecFieldParser aʉUnrecFieldParseraA default unrecognized field parser which silently (i.e. no warnings will be generated) ignores unrecognized fields, by returning the structure being built unmodified. IfBlock IfBlock :: LineNo -> String -> [Field] -> [Field] -> Field@ LineNoString[]Field[]FieldFieldA conditional block with an optional else branch:
if condition {
  field*
} else {
  field*
}
IA64IA64 :: ArchArchI386I386 :: Arch1*Arch hugsOptions hugsOptions :: InstalledPackageInfo_ m -> [String]ČInstalledPackageInfo_m[]StringHugsHugs :: CompilerFlavorCompilerFlavor hsSourceDirs hsSourceDirs ::  BuildInfo ->  [FilePath]l BuildInfo[]FilePath/where to look for the haskell module hierarchy  hsLibraries hsLibraries :: InstalledPackageInfo_ m -> [String]LInstalledPackageInfo_m[]String* hscolourHook hscolourHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  HscolourFlags -> IO ()_  UserHooksPackageDescriptionLocalBuildInfo UserHooks HscolourFlagsIO()?Over-ride this hook to get different behavior during hscolour. HPUXHPUX :: OSҏ͏OSHppaHppa :: Arch Arch*hookedProgramshookedPrograms ::  UserHooks ->  [Program]i UserHooks[]ProgramfThese programs are detected at configure time. Arguments for them are added to the configure command. *hookedPreProcessorshookedPreProcessors ::  UserHooks -> [PPSuffixHandler]] UserHooks[]PPSuffixHandlerHCustom preprocessors in addition to and overriding knownSuffixHandlers. HookedBuildInfotype HookedBuildInfo+ = (Maybe BuildInfo, [(String, BuildInfo)])9homepagehomepage :: PackageDescription -> StringPackageDescriptionStringhomepagehomepage :: InstalledPackageInfo_ m -> String6InstalledPackageInfo_mString hiddenModules hiddenModules :: InstalledPackageInfo_ m -> [m]ÓInstalledPackageInfo_m[]mHeliumHelium :: CompilerFlavorCompilerFlavor hcOptions hcOptions :: CompilerFlavor ->  BuildInfo -> [String]CompilerFlavor BuildInfo[]String2Select options for a particular Haskell compiler. HBCHBC :: CompilerFlavor)CompilerFlavorhasLibshasLibs :: PackageDescription -> Bool~PackageDescriptionBool&does this package have any libraries? hasExeshasExes :: PackageDescription -> Bool3PackageDescriptionBool(does this package have any executables? haddockInterfaceshaddockInterfaces :: InstalledPackageInfo_ m ->  [FilePath]ϖInstalledPackageInfo_m[]FilePath haddockHTMLs haddockHTMLs :: InstalledPackageInfo_ m ->  [FilePath]hInstalledPackageInfo_m[]FilePath* haddockHook haddockHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  HaddockFlags -> IO ()Q UserHooksPackageDescriptionLocalBuildInfo UserHooks HaddockFlagsIO()>Over-ride this hook to get different behavior during haddock. GPLGPL :: License License<GNU Public License. Source code must accompany alterations.  GPLGPL :: LicenseLicense<GNU Public License. Source code must accompany alterations. GnuArchGnuArch :: RepoTypeRepoTypeGitGit :: RepoTypeXMRepoTypeghcSharedOptionsghcSharedOptions ::  BuildInfo -> [String]֚ BuildInfo[]StringghcProfOptionsghcProfOptions ::  BuildInfo -> [String]P4 BuildInfo[]StringGHCGHC :: CompilerFlavorCompilerFlavorgenPackageFlagsgenPackageFlags :: GenericPackageDescription -> [Flag]2GenericPackageDescription[]FlagGenericPackageDescription GenericPackageDescription :: PackageDescription -> [Flag] -> -Maybe (CondTree ConfVar [Dependency] Library) -> 4[(String, CondTree ConfVar [Dependency] Executable)] -> GenericPackageDescription KPackageDescription[]FlagMaybeCondTreeConfVar[] DependencyLibrary[](,)StringCondTreeConfVar[] Dependency ExecutableGenericPackageDescriptionGenericPackageDescriptiondata GenericPackageDescription` FromString FromString :: String ->  Maybe LineNo -> PErrorɞStringMaybeLineNoPError FromString FromString :: String ->  Maybe LineNo -> PErrorzVStringMaybeLineNoPErrorFreeBSDFreeBSD :: OSOS frameworks frameworks ::  BuildInfo -> [String]&  BuildInfo[]String support frameworks for Mac OS X  frameworks frameworks :: InstalledPackageInfo_ m -> [String]נInstalledPackageInfo_m[]String frameworkDirs frameworkDirs :: InstalledPackageInfo_ m ->  [FilePath]rCInstalledPackageInfo_m[]FilePathfNamefName :: Field -> StringʡFieldStringflagToVerbosityflagToVerbosity :: ReadE Verbosity1ReadE VerbosityflagNameflagName :: Flag -> FlagName~FlagFlagNameFlagNameFlagName :: String -> FlagNameStringFlagNameFlagNamenewtype FlagName,CA FlagName is the name of a user-defined configuration flag  flagManual flagManual :: Flag -> BoolˣFlagBoolflagDescriptionflagDescription :: Flag -> String5$FlagString flagDefault flagDefault :: Flag -> BoolFlagBoolFlagAssignmenttype FlagAssignment = [(FlagName, Bool)]A FlagAssignment is a total or partial mapping of FlagNames to Bool flag values. It represents the flags chosen by the user or discovered during configuration. For example --flags=foo --flags=-bar becomes [(foo, True), (bar, False)] FlagFlag :: FlagName -> ConfVarfPFlagNameConfVarFlagdata FlagA flag can represent a feature to be included, or a way of linking a target against its dependencies, or in fact whatever you can think of. fieldSet fieldSet ::  FieldDescr a -> LineNo -> String -> a ->  ParseResult a FieldDescraLineNoStringa ParseResultafieldSet n str x Parses the field value from the given input string str and stores the result in x if the parse was successful. Otherwise, reports an error on line number n.  fieldName fieldName ::  FieldDescr a -> String%  FieldDescraStringfieldGetfieldGet ::  FieldDescr a -> a -> Doc FieldDescraaDoc FieldDescr  FieldDescr :: String ->  (a -> Doc) -> ((LineNo -> String -> a -> ParseResult a) ->  FieldDescr a?StringaDocLineNoStringa ParseResulta FieldDescra FieldDescrdata  FieldDescr aƪdField descriptor. The parameter a parameterizes over where the field's value is stored in. field field :: String ->  (a -> Doc) ->  ReadP a a ->  FieldDescr a׫StringaDocReadPaa FieldDescraFielddata Field failReadE failReadE :: ErrorMsg -> ReadE apWErrorMsgReadEaF F :: LineNo -> String -> String -> FieldҬLineNoStringStringField8A regular property>: <value field  extraTmpFiles extraTmpFiles :: PackageDescription ->  [FilePath]PackageDescription[]FilePath extraSrcFiles extraSrcFiles :: PackageDescription ->  [FilePath]H!PackageDescription[]FilePath extraLibs extraLibs ::  BuildInfo -> [String] BuildInfo[]StringLwhat libraries to link with when compiling a program that uses your package extraLibrariesextraLibraries :: InstalledPackageInfo_ m -> [String]pInstalledPackageInfo_m[]String extraLibDirs extraLibDirs ::  BuildInfo -> [String] BuildInfo[]StringextraGHCiLibrariesextraGHCiLibraries :: InstalledPackageInfo_ m -> [String]InstalledPackageInfo_m[]String extensions extensions ::  BuildInfo ->  [Extension],  BuildInfo[] ExtensionexposedModulesexposedModules :: Library ->  [ModuleName]Library[] ModuleNameexposedModulesexposedModules :: InstalledPackageInfo_ m -> [m]9InstalledPackageInfo_m[]mexposedexposed :: InstalledPackageInfo_ m -> BoolInstalledPackageInfo_mBoolexeNameexeName ::  Executable -> String ExecutableString exeModules exeModules :: PackageDescription ->  [ModuleName]PackageDescription[] ModuleName7Get all the module names from the exes in this package  executables executables :: PackageDescription ->  [Executable]oFPackageDescription[] Executable Executable  Executable :: String -> FilePath ->  BuildInfo ->  ExecutableStringFilePath BuildInfo Executable Executabledata  ExecutableQ*emptyUserHooksemptyUserHooks ::  UserHooks UserHooks)Empty UserHooks which do nothing. emptyPackageDescriptionemptyPackageDescription :: PackageDescriptionJ5PackageDescription emptyLibrary emptyLibrary :: LibraryLibraryemptyInstalledPackageInfoemptyInstalledPackageInfo :: InstalledPackageInfo_ m#InstalledPackageInfo_memptyHookedBuildInfoemptyHookedBuildInfo :: HookedBuildInfoHookedBuildInfoemptyExecutableemptyExecutable ::  Executable޷ ExecutableemptyBuildInfoemptyBuildInfo ::  BuildInfoA5 BuildInfoEarlierVersionEarlierVersion :: Version ->  VersionRangeVersion VersionRangedisplaydisplay ::  Text a => a -> String$ TextaaStringdispdisp ::  Text a => a -> DockTextaaDoc description description :: PackageDescription -> StringPackageDescriptionString+A more verbose description of this package  description description :: InstalledPackageInfo_ m -> StringInstalledPackageInfo_mStringdescCabalVersiondescCabalVersion :: PackageDescription ->  VersionRangeI$PackageDescription VersionRangeHIf this package depends on a specific version of Cabal, give that here. dependsdepends :: PackageFixedDeps pkg => pkg -> [PackageIdentifier]8PackageFixedDepspkgpkg[]PackageIdentifierdependsdepends :: InstalledPackageInfo_ m -> [PackageIdentifier]ټInstalledPackageInfo_m[]PackageIdentifier Dependency Dependency ::  PackageName ->  VersionRange ->  DependencyuK PackageName VersionRange Dependency Dependencydata  Dependency*defaultUserHooksdefaultUserHooks ::  UserHooks UserHooksBasic autoconf UserHooks: Thus configure can use local system information to generate package.buildinfo and possibly other files. *defaultMainWithHooksArgsdefaultMainWithHooksArgs ::  UserHooks -> [String] -> IO ()b UserHooks[]StringIO()YA customizable version of defaultMain that also takes the command line arguments. *defaultMainWithHooksdefaultMainWithHooks ::  UserHooks -> IO ()`H UserHooksIO().A customizable version of defaultMain. *defaultMainNoReaddefaultMainNoRead :: PackageDescription -> IO ()PackageDescriptionIO()gLike defaultMain, but accepts the package description as input rather than using IO to read it. defaultMainNoReaddefaultMainNoRead :: PackageDescription -> IO () PackageDescriptionIO()*defaultMainArgsdefaultMainArgs :: [String] -> IO ()g[]StringIO()zA version of defaultMain that is passed the command line arguments, rather than getting them from the environment. defaultMainArgsdefaultMainArgs :: [String] -> IO ()sX[]StringIO()* defaultMain defaultMain :: IO ()IO()A simple implementation of main for a Cabal setup script. It reads the package description file using IO, and performs the action specified on the command line.  defaultMain defaultMain :: IO ()IO()*defaultHookedPackageDescdefaultHookedPackageDesc :: IO (Maybe FilePath)5IOMaybeFilePathPOptional auxiliary package information file (pkgname.buildinfo) defaultCompilerFlavordefaultCompilerFlavor :: Maybe CompilerFlavorMaybeCompilerFlavorThe default compiler flavour to pick when compiling stuff. This defaults to the compiler used to build the Cabal lib. However if it's not a recognised compiler then it's Nothing and the user will have to specify which compiler they want.  deafening deafening ::  VerbosityD8 Verbosity dataFiles dataFiles :: PackageDescription ->  [FilePath]PackageDescription[]FilePathdataDirdataDir :: PackageDescription -> FilePathD#PackageDescriptionFilePathDarcsDarcs :: RepoType{RepoTypeCVSCVS :: RepoTypeRepoTypecustomFieldsPDcustomFieldsPD :: PackageDescription -> [(String, String)]i5PackageDescription[](,)StringString?Custom fields starting with x-, stored in a simple assoc-list. customFieldsBIcustomFieldsBI ::  BuildInfo -> [(String, String)]; BuildInfo[](,)StringString?Custom fields starting with x-, stored in a simple assoc-list. CustomCustom ::  BuildType BuildTypeEuses user-supplied Setup.hs or Setup.lhs (default) cSourcescSources ::  BuildInfo ->  [FilePath]wY BuildInfo[]FilePath cppOptions cppOptions ::  BuildInfo -> [String] BuildInfo[]String(options for pre-processing Haskell code COrCOr ::  Condition c ->  Condition c ->  Condition cu Conditionc Conditionc Conditionc copyright copyright :: PackageDescription -> String"PackageDescriptionString copyright copyright :: InstalledPackageInfo_ m -> StringInstalledPackageInfo_mString*copyHookcopyHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  CopyFlags -> IO ()Z UserHooksPackageDescriptionLocalBuildInfo UserHooks CopyFlagsIO();Over-ride this hook to get different behavior during copy. ConfVardata ConfVar6A ConfVar represents the variable type used.  Configure Configure ::  BuildType BuildTypecalls Distribution.Simple.defaultMainWithHooks defaultUserHooks, which invokes configure to generate additional build information used by later phases. *confHook confHook ::  UserHooks -> F(Either GenericPackageDescription PackageDescription, HookedBuildInfo) ->  ConfigFlags -> IO LocalBuildInfo  UserHooks(,)EitherGenericPackageDescriptionPackageDescriptionHookedBuildInfo ConfigFlagsIOLocalBuildInfo@Over-ride this hook to get different behavior during configure.  condTreeData condTreeData :: CondTree v c a -> a>#CondTreevcaacondTreeConstraintscondTreeConstraints :: CondTree v c a -> cCondTreevcaccondTreeComponentscondTreeComponents :: CondTree v c a -> 7[(Condition v, CondTree v c a, Maybe (CondTree v c a))]YCondTreevca[](,,) ConditionvCondTreevcaMaybeCondTreevcaCondTreedata CondTree v c aCondNode CondNode :: a -> c -> 7[(Condition v, CondTree v c a, Maybe (CondTree v c a))] -> CondTree v c a ac[](,,) ConditionvCondTreevcaMaybeCondTreevcaCondTreevca condLibrary condLibrary :: GenericPackageDescription -> -Maybe (CondTree ConfVar [Dependency] Library)GenericPackageDescriptionMaybeCondTreeConfVar[] DependencyLibrary Conditiondata  Condition c'@A boolean expression parameterized over the variable type used. condExecutablescondExecutables :: GenericPackageDescription -> 4[(String, CondTree ConfVar [Dependency] Executable)]iGenericPackageDescription[](,)StringCondTreeConfVar[] Dependency Executable components components ::  ModuleName -> [String] ModuleName[]String CompilerId CompilerId :: CompilerFlavor -> Version ->  CompilerIduMCompilerFlavorVersion CompilerId CompilerIddata  CompilerIdCompilerFlavordata CompilerFlavorcommaListFieldcommaListField :: String ->  (a -> Doc) ->  ReadP [a] a ->  (b -> [a]) -> ([a] -> b -> b) ->  FieldDescr bStringaDocReadP[]aab[]a[]abb FieldDescrbCNotCNot ::  Condition c ->  Condition cvS Conditionc Conditionc* cleanHook cleanHook ::  UserHooks -> PackageDescription -> Maybe LocalBuildInfo ->  UserHooks ->  CleanFlags -> IO ()0 UserHooksPackageDescriptionMaybeLocalBuildInfo UserHooks CleanFlagsIO()<Over-ride this hook to get different behavior during clean.  ccOptions ccOptions ::  BuildInfo -> [String]8 BuildInfo[]Stringoptions for C compiler  ccOptions ccOptions :: InstalledPackageInfo_ m -> [String]InstalledPackageInfo_m[]Stringcategorycategory :: PackageDescription -> StringV7PackageDescriptionStringcategorycategory :: InstalledPackageInfo_ m -> StringInstalledPackageInfo_mStringcatchParseErrorcatchParseError ::  ParseResult a -> (PError -> ParseResult a) ->  ParseResult ai ParseResultaPError ParseResulta ParseResultaCAndCAnd ::  Condition c ->  Condition c ->  Condition cE Conditionc Conditionc Conditionc buildType buildType :: PackageDescription -> Maybe BuildTypePackageDescriptionMaybe BuildType BuildTypedata  BuildType /The type of build system used by this package.  buildTools buildTools ::  BuildInfo ->  [Dependency] BuildInfo[] Dependencytools needed to build this bit  buildPlatform buildPlatform :: Platform$PlatformbuildOSbuildOS :: OS^YOS buildInfo buildInfo ::  Executable ->  BuildInfo Executable BuildInfo BuildInfo, BuildInfo :: Bool ->  [Dependency] -> [String] -> [String] -> [String] ->  [Dependency] -> [String] ->  [FilePath] ->  [FilePath] ->  [ModuleName] ->  [Extension] ->  [String] ->  [String] ->  [FilePath] ->  [FilePath] ->  [FilePath] -> [(CompilerFlavor, [String])] -> [String] -> [String] -> [(String, String)] ->  BuildInfo4Bool[] Dependency[]String[]String[]String[] Dependency[]String[]FilePath[]FilePath[] ModuleName[] Extension[]String[]String[]FilePath[]FilePath[]FilePath[](,)CompilerFlavor[]String[]String[]String[](,)StringString BuildInfo BuildInfodata  BuildInfoj* buildHook buildHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  BuildFlags -> IO ()q UserHooksPackageDescriptionLocalBuildInfo UserHooks BuildFlagsIO()=Over-ride this hook to gbet different behavior during build.  buildDepends buildDepends :: PackageDescription ->  [Dependency]>PackageDescription[] DependencybuildCompilerFlavorbuildCompilerFlavor :: CompilerFlavorCompilerFlavor buildArch buildArch :: ArchArch buildable buildable ::  BuildInfo -> BoolN: BuildInfoBoolcomponent is buildable here  bugReports bugReports :: PackageDescription -> StringPackageDescriptionStringBSD4BSD4 :: License$License64-clause BSD license, older, with advertising clause.  BSD4BSD4 :: LicenseLicense64-clause BSD license, older, with advertising clause. BSD3BSD3 :: License LicenseG3-clause BSD license, newer, no advertising clause. Very free license.  BSD3BSD3 :: LicenseLicenseG3-clause BSD license, newer, no advertising clause. Very free license.  boolField  boolField :: String ->  (b -> Bool) -> (Bool -> b -> b) ->  FieldDescr b`StringbBoolBoolbb FieldDescrbbetweenVersionsInclusivebetweenVersionsInclusive :: Version -> Version ->  VersionRange?VersionVersion VersionRangeBazaarBazaar :: RepoTypexRepoType*autoconfUserHooksautoconfUserHooks ::  UserHooks UserHooksauthorauthor :: PackageDescription -> StringS4PackageDescriptionStringauthorauthor :: InstalledPackageInfo_ m -> StringInstalledPackageInfo_mStringArmArm :: Arch Arch*Argstype Args = [String]CArchdata ArchoArchArch :: Arch -> ConfVarArchConfVar AnyVersion AnyVersion ::  VersionRange  VersionRange AmbigousParse AmbigousParse :: String -> LineNo -> PErrorStringLineNoPError AmbigousParse AmbigousParse :: String -> LineNo -> PError!StringLineNoPErrorAlphaAlpha :: Arch[TArchAllRightsReservedAllRightsReserved :: LicenseLicenseDNo rights are granted to others. Undistributable. Most restrictive.  AllRightsReservedAllRightsReserved :: LicenseOELicenseDNo rights are granted to others. Undistributable. Most restrictive.  allBuildInfo allBuildInfo :: PackageDescription ->  [BuildInfo]!PackageDescription[] BuildInfoThe BuildInfo for the library (if there is one and it's buildable) and all the buildable executables. Useful for gathering dependencies. AIXAIX :: OSOSVersionmodule Distribution.Version Exports the Version type along with a parser and pretty printer. A version is something like "1.3.3". It also defines the VersionRange data types. Version ranges are like ">= 1.2 && < 2".  Verbositymodule Distribution. VerbosityKA simple Verbosity type with associated utilities. There are 4 standard verbosity levels from silent, normal, verbose up to deafening. This is used for deciding what logging messages to print.  Utilsmodule Distribution.Simple.UtilsofA large and somewhat miscellaneous collection of utility functions used throughout the rest of the Cabal lib and in other tools that use the Cabal lib like cabal-install. It has a very simple set of logging actions. It has low level functions for running programs, a bunch of wrappers for various directory and file functions that do extra logging. ) UserHooksmodule Distribution.Simple. UserHooksThis defines the API that Setup.hs scripts can use to customise the way the build works. This module just defines the UserHooks type. The predefined sets of hooks that implement the Simple, Make and Configure build systems are defined in Distribution.Simple. The UserHooks is a big record of functions. There are 3 for each action, a pre, post and the action itself. There are few other miscellaneous hooks, ones to extend the set of programs and preprocessors and one to override the function used to read the .cabal file. This hooks type is widely agreed to not be the right solution. Partly this is because changes to it usually break custom Setup.hs files and yet many internal code changes do require changes to the hooks. For example we cannot pass any extra parameters to most of the functions that implement the various phases because it would involve changing the types of the corresponding hook. At some point it will have to be replaced. Unlitmodule Distribution.Simple.PreProcess.UnlitiRemove the "literal" markups from a Haskell source file, including ">", "\begin{code}", "\end{code}", and "#" Textmodule Distribution.Text5)This defines a Text class which is a bit like the Read and Show classes. The difference is that is uses a modern pretty printer and parser system and the format is not expected to be Haskell concrete syntax but rather the external human readable representation used by Cabal. Systemmodule Distribution.SystemCabal often needs to do slightly different things on specific platforms. You probably know about the os however using that is very inconvenient because it is a string and different Haskell implementations do not agree on using the same strings for the same platforms! (In particular see the controversy over windows vs ming32). So to make it more consistent and easy to use we have an OS enumeration. (SrcDistmodule Distribution.Simple.SrcDist-This handles the sdist command. The module exports an sdist action but also some of the phases that make it up so that other tools can use just the bits they need. In particular the preparation of the tree of files to go into the source tarball is separated from actually building the source tarball. The createArchive action uses the external tar program and assumes that it accepts the -z flag. Neither of these assumptions are valid on Windows. The sdist action now also does some distribution QA checks. *Simplemodule Distribution.SimpleqThis is the command line front end to the Simple build system. When given the parsed command-line args and package information, is able to perform basic commands like configure, build, install, register, etc. This module exports the main functions that Setup.hs scripts use. It re-exports the UserHooks type, the standard entry points like defaultMain and defaultMainWithHooks and the predefined sets of UserHooks that custom Setup.hs scripts can extend to add their own behaviour. This module isn't called "Simple" because it's simple. Far from it. It's called "Simple" because it does complicated things to simple software. The original idea was that there could be different build systems that all presented the same compatible command line interfaces. There is still a Distribution.Make system but in practice no packages use it. Setupmodule Distribution.Simple.SetupThis is a big module, but not very complicated. The code is very regular and repetitive. It defines the command line interface for all the Cabal commands. For each command (like configure, build etc) it defines a type that holds all the flags, the default set of flags and a CommandUI that maps command line flags to and from the corresponding flags type. All the flags types are instances of Monoid, see http://www.haskell.org/pipermail/cabal-devel/2007-December/001509.html for an explanation. The types defined here get used in the front end and especially in cabal-install which has to do quite a bit of manipulating sets of command line flags. This is actually relatively nice, it works quite well. The main change it needs is to unify it with the code for managing sets of fields that can be read and written from files. This would allow us to save configure flags in config files. &Registermodule Distribution.Simple.Register This module deals with registering and unregistering packages. There are a couple ways it can do this, one is to do it directly. Another is to generate a script that can be run later to do it. The idea here being that the user is shielded from the details of what command to use for package registration for a particular compiler. In practice this aspect was not especially popular so we also provide a way to simply generate the package registration file which then must be manually passed to ghc-pkg. It is possible to generate registration information for where the package is to be installed, or alternatively to register the package inplace in the build tree. The latter is occasionally handy, and will become more important when we try to build multi-package systems. This module does not delegate anything to the per-compiler modules but just mixes it all in in this module, which is rather unsatisfactory. The script generation and the unregister feature are not well used or tested. ReadPmodule Distribution.Compat.ReadP7This is a library of parser combinators, originally written by Koen Claessen. It parses all alternatives in parallel, so it never keeps hold of the beginning of the input string, a common source of space leaks with other parsers. The '(+++)' choice combinator is genuinely commutative; it makes no difference which branch is "shorter". See also Koen's paper Parallel Parsing Processes (http://www.cs.chalmers.se/~koen/publications.html). This version of ReadP has been locally hacked to make it H98, by Martin Sjgren mailto:msjogren@gmail.com ReadEmodule Distribution.ReadE.Simple parsing with failure  Programmodule Distribution.Simple.ProgramcThis provides an abstraction which deals with configuring and running programs. A Program is a static notion of a known program. A ConfiguredProgram is a Program that has been found on the current machine and is ready to be run (possibly with some user-supplied default args). Configuring a program involves finding its location and if necessary finding its version. There is also a ProgramConfiguration type which holds configured and not-yet configured programs. It is the parameter to lots of actions elsewhere in Cabal that need to look up and run programs. If we had a Cabal monad, the ProgramConfiguration would probably be a reader or state component of it. The module also defines all the known built-in Programs and the defaultProgramConfiguration which contains them all. One nice thing about using it is that any program that is registered with Cabal will get some "configure" and ".cabal" helpers like --with-foo-args --foo-path= and extra-foo-args. There's also good default behavior for trying to find "foo" in PATH, being able to override its location, etc. There's also a hook for adding programs in a Setup.lhs script. See hookedPrograms in Distribution.Simple.UserHooks. This gives a hook user the ability to get the above flags and such so that they don't have to write all the PATH logic inside Setup.lhs. ! PreProcessmodule Distribution.Simple. PreProcess;This defines a PreProcessor abstraction which represents a pre-processor that can transform one kind of file into another. There is also a PPSuffixHandler which is a combination of a file extension and a function for configuring a PreProcessor. It defines a bunch of known built-in preprocessors like cpp, cpphs, c2hs, hsc2hs, happy, alex etc and lists them in knownSuffixHandlers. On top of this it provides a function for actually preprocessing some sources given a bunch of known suffix handlers. This module is not as good as it could be, it could really do with a rewrite to address some of the problems we have with pre-processors.  PathsModulemodule Distribution.Simple.Build. PathsModule]Generating the Paths_pkgname module. This is a module that Cabal generates for the benefit of packages. It enables them to find their version number and find any installed data files at runtime. This code should probably be split off into another module.  ParseUtilsmodule Distribution. ParseUtilsUtilities for parsing PackageDescription and InstalledPackageInfo. The .cabal file format is not trivial, especially with the introduction of configurations and the section syntax that goes with that. This module has a bunch of parsing functions that is used by the .cabal parser and a couple others. It has the parsing framework code and also little parsers for many of the formats we get in various .cabal file fields, like module names, comma separated lists etc. Parsemodule! Distribution.PackageDescription.Parse This defined parsers and partial pretty printers for the .cabal format. Some of the complexity in this module is due to the fact that we have to be backwards compatible with old .cabal files, so there's code to translate into the newer structure.  PackageIndexmodule Distribution.Simple. PackageIndex2An index of packages. PackageDescriptionmodule Distribution.PackageDescriptionnThis defines the data structure for the .cabal file format. There are several parts to this structure. It has top level info and then Library and Executable sections each of which have associated BuildInfo data that's used to build the library or exe. To further complicate things there is both a PackageDescription and a GenericPackageDescription. This distinction relates to cabal configurations. When we initially read a .cabal file we get a GenericPackageDescription which has all the conditional sections. Before actually building a package we have to decide on each conditional. Once we've done that we get a PackageDescription. It was done this way initially to avoid breaking too much stuff when the feature was introduced. It could probably do with being rationalised at some point to make it simpler. Packagemodule Distribution.PackageF#"Defines a package identifier along with a parser and pretty printer for it. PackageIdentifiers consist of a name and an exact version. It also defines a Dependency data type. A dependency is a package name and a version range, like "foo >= 1.2 && < 2".  NHCmodule Distribution.Simple.NHC$fThis module contains most of the NHC-specific code for configuring, building and installing packages.  ModuleNamemodule Distribution. ModuleNameM%$Data type for Haskell module names. Makemodule Distribution.Make%This is an alternative build system that delegates everything to the make program. All the commands just end up calling make with appropriate arguments. The intention was to allow preexisting packages that used makefiles to be wrapped into Cabal packages. In practice essentially all such packages were converted over to the "Simple" build system instead. Consequently this module is not used much and it certainly only sees cursory maintenance and no testing. Perhaps at some point we should stop pretending that it works. Uses the parsed command-line from Distribution.Setup in order to build Haskell tools using a backend build system based on make. Obviously we assume that there is a configure script, and that after the ConfigCmd has been run, there is a Makefile. Further assumptions:
  • ConfigCmd We assume the configure script accepts --with-hc, --with-hc-pkg, --prefix, --bindir, --libdir, --libexecdir, --datadir.
  • BuildCmd We assume that the default Makefile target will build everything.
  • InstallCmd We assume there is an install target. Note that we assume that this does *not* register the package!
  • CopyCmd We assume there is a copy target, and a variable $(destdir). The copy target should probably just invoke make install recursively (e.g. $(MAKE) install prefix=$(destdir)/$(prefix) bindir=$(destdir)/$(bindir). The reason we can't invoke make install directly here is that we don't know the value of $(prefix).
  • SDistCmd We assume there is a dist target.
  • RegisterCmd We assume there is a register target and a variable $(user).
  • UnregisterCmd We assume there is an unregister target.
  • HaddockCmd We assume there is a docs or doc target.
Macrosmodule Distribution.Simple.Build.Macros-;Generate cabal_macros.h - CPP macros for package version testing When using CPP you get
MIN_VERSION_<package>(A,B,C)
for each package in build-depends, which is true if the version of package in use is >= A.B.C, using the normal ordering on version numbers. LocalBuildInfomodule Distribution.Simple.LocalBuildInfoJ/Once a package has been configured we have resolved conditionals and dependencies, configured the compiler and other needed external programs. The LocalBuildInfo is used to hold all this information. It holds the install dirs, the compiler, the exact package dependencies, the configured programs, the package database to use and a bunch of miscellaneous configure flags. It gets saved and reloaded from a file (dist/setup-config). It gets passed in to very many subsequent build actions.  Licensemodule Distribution.License1FThe License datatype. For more information about these and other open-source licenses, you may visit http://www.opensource.org/. The .cabal file allows you to specify a license file. Of course you can use any license you like but people often pick common open source licenses and it's useful if we can automatically recognise that (eg so we can display it on the hackage web pages). So you can also specify the license itself in the .cabal file from a short enumeration defined in this module. It includes GPL, LGPL and BSD3 licenses. JHCmodule Distribution.Simple.JHC4fThis module contains most of the JHC-specific code for configuring, building and installing packages. InstalledPackageInfomodule Distribution.InstalledPackageInfo4This is the information about an installed package that is communicated to the ghc-pkg program in order to register a package. ghc-pkg now consumes this package format (as of version 6.4). This is specific to GHC at the moment. The .cabal file format is for describing a package that is not yet installed. It has a lot of flexibility, like conditionals and dependency ranges. As such, that format is not at all suitable for describing a package that has already been built and installed. By the time we get to that stage, we have resolved all conditionals and resolved dependency version constraints to exact versions of dependent packages. So, this module defines the InstalledPackageInfo data structure that contains all the info we keep about an installed package. There is a parser and pretty printer. The textual format is rather simpler than the .cabal format: there are no sections, for example.  InstallDirsmodule Distribution.Simple. InstallDirs8This manages everything to do with where files get installed (though does not get involved with actually doing any installation). It provides an InstallDirs type which is a set of directories for where to install things. It also handles the fact that we use templates in these install dirs. For example most install dirs are relative to some $prefix and by changing the prefix all other dirs still end up changed appropriately. So it provides a PathTemplate type and functions for substituting for these templates. %Installmodule Distribution.Simple.Install#;This is the entry point into installing a built package. Performs the "./setup install" and "./setup copy" actions. It moves files into place based on the prefix argument. It does the generic bits and then calls compiler-specific functions to do the rest. "Hugsmodule Distribution.Simple.Hugss<fThis module contains most of the NHC-specific code for configuring, building and installing packages. $Haddockmodule Distribution.Simple.Haddock=QThis module deals with the haddock and hscolour commands. Sadly this is a rather complicated module. It deals with two versions of haddock (0.x and 2.x). It has to do pre-processing for haddock 0.x which involves 'unlit'ing and using -DHADDOCK for any source code that uses cpp. It uses information about installed packages (from ghc-pkg) to find the locations of documentation for dependent packages, so it can create links. The hscolour support allows generating html versions of the original source, with coloured syntax highlighting. GHCmodule Distribution.Simple.GHC?This is a fairly large module. It contains most of the GHC-specific code for configuring, building and installing packages. It also exports a function for finding out what packages are already installed. Configuring involves finding the ghc and ghc-pkg programs, finding what language extensions this version of ghc supports and returning a Compiler value. getInstalledPackages involves calling the ghc-pkg program to find out what packages are installed. Building is somewhat complex as there is quite a bit of information to take into account. We have to build libs and programs, possibly for profiling and shared libs. We have to support building libraries that will be usable by GHCi and also ghc's -split-objs feature. We have to compile any C files using ghc. Linking, especially for split-objs is remarkably complex, partly because there tend to be 1,000's of .o files and this can often be more than we can pass to the ld or ar programs in one go. There is also some code for generating Makefiles but the less said about that the better. Installing for libs and exes involves finding the right files and copying them to the right places. One of the more tricky things about this module is remembering the layout of files in the build directory (which is not explicitly documented) and thus what search dirs are used for various kinds of files.  Extensionmodule Language.Haskell. ExtensionEHaskell language extensions ' Configuremodule Distribution.Simple. ConfigureEThis deals with the configure phase. It provides the configure action which is given the package description and configure flags. It then tries to: configure the compiler; resolves any conditionals in the package description; resolve the package dependencies; check if all the extensions used by this package are supported by the compiler; check that all the build tools are available (including version checks if appropriate); checks for any required pkg-config packages (updating the BuildInfo with the results) Then based on all this it saves the info in the LocalBuildInfo and writes it out to the dist/setup-config file. It also displays various details to the user, the amount of information displayed depending on the verbosity level.  Configurationmodule! Distribution.PackageDescription. ConfigurationoIGThis is about the cabal configurations feature. It exports finalizePackageDescription and flattenPackageDescription which are functions for converting GenericPackageDescriptions down to PackageDescriptions. It has code for working with the tree of conditions and resolving or flattening conditions. Compilermodule Distribution.Simple.CompilerJThis should be a much more sophisticated abstraction than it is. Currently it's just a bit of data about the compiler, like it's flavour and name and version. The reason it's just data is because currently it has to be in Read and Show so it can be saved along with the LocalBuildInfo. The only interesting bit of info it contains is a mapping between language extensions and compiler command line flags. This module also defines a PackageDB type which is used to refer to package databases. Most compilers only know about a single global package collection but GHC has a global and per-user one and it lets you create arbitrary other package databases. We do not yet fully support this latter feature. Compilermodule Distribution.CompilerNThis has an enumeration of the various compilers that Cabal knows about. It also specifies the default compiler. Sadly you'll often see code that does case analysis on this compiler flavour enumeration like:
case compilerFlavor comp of
  GHC -> GHC.getInstalledPackages verbosity packageDb progconf
  JHC -> JHC.getInstalledPackages verbosity packageDb progconf
Obviously it would be better to use the proper Compiler abstraction because that would keep all the compiler-specific code together. Unfortunately we cannot make this change yet without breaking the UserHooks api, which would break all custom Setup.hs files, so for the moment we just have to live with this deficiency. If you're interested, see ticket #50. Commandmodule Distribution.Simple.CommandAQThis is to do with command line handling. The Cabal command line is organised into a number of named sub-commands (much like darcs). The CommandUI abstraction represents one of these sub-commands, with a name, description, a set of flags. Commands can be associated with actions and run. It handles some common stuff automatically, like the --help and command line completion flags. It is designed to allow other tools make derived commands. This feature is used heavily in cabal-install. Checkmodule! Distribution.PackageDescription.CheckSgThis has code for checking for various problems in packages. There is one set of checks that just looks at a PackageDescription in isolation and another set of checks that also looks at files in the package. Some of the checks are basic sanity checks, others are portability standards that we'd like to encourage. There is a PackageCheck type that distinguishes the different kinds of check so we can see which ones are appropriate to report in different situations. This code gets uses when configuring a package when we consider only basic problems. The higher standard is uses when when preparing a source tarball and by hackage when uploading new packages. The reason for this is that we want to hold packages that are expected to be distributed to a higher standard than packages that are only ever expected to be used on the author's own environment. Cabalpackage CabalWlA framework for packaging Haskell software The Haskell Common Architecture for Building Applications and Libraries: a framework defining a common interface for authors to more easily build their Haskell applications in a portable way. The Haskell Cabal is part of a larger infrastructure for distributing, organizing, and cataloging Haskell libraries and tools.  BuildPathsmodule Distribution.Simple. BuildPathsXIA bunch of dirs, paths and file names used for intermediate build steps. #Buildmodule Distribution.Simple.Build^YThis is the entry point to actually building the modules in a package. It doesn't actually do much itself, most of the work is delegated to compiler-specific actions. It does do some non-compiler specific bits like running pre-processors. There's some stuff to do with generating makefiles which is a well hidden feature that's used to build libraries inside the GHC build system but which we'd like to kill off and replace with something better (doing our own dependency analysis properly). *```~`i`C`/```____x_a_@__^^^^j^L^+^^]]]]p]W]>]%]]\\\\x\Y\<\\\ DistributionSimple DistributionSimple UserHooks DistributionSimpleSrcDist DistributionSimple Configure DistributionSimpleRegister DistributionSimpleInstall DistributionSimpleHaddock DistributionSimpleBuild DistributionSimpleHugs DistributionSimple PreProcess DistributionSimpleNHC DistributionSimpleJHC DistributionSimpleGHC DistributionSimpleBuild PathsModule DistributionSimple BuildPaths DistributionSimpleBuildMacros DistributionSimpleLocalBuildInfo DistributionMake DistributionSimpleSetup DistributionSimple InstallDirs DistributionSimpleCompiler DistributionSimpleCommand DistributionPackageDescriptionParse DistributionInstalledPackageInfo Distribution ParseUtils DistributionPackageDescriptionCheck DistributionPackageDescription Configuration DistributionPackageDescription DistributionCompiler DistributionLicense DistributionSimpleProgram DistributionSimple PackageIndex DistributionSimpleUtils Distribution ModuleName DistributionPackage Distribution Verbosity DistributionReadE DistributionSimple PreProcessUnlit DistributionSystemLanguageHaskell Extension DistributionVersion DistributionText DistributionCompatReadP`Cabal1.6.0.3Chttp://hackage.haskell.org/packages/archive/Cabal/1.6.0.3/doc/html/@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Cabal