a      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                  ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g hijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H!I"J"K#L#M#N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~%%%%%%&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' ' ' ' ''''''''''''''''''' '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_(`(a(b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~)))))))))))))))))))))))))))))))))))))))))))*********************************************************************************+++++++++++++,, - - - - ------------....... .!.".#.$.%.&.'.(.).*.+.,.-.../.0.1.2.3.4/5/6/7/8/9/:0;0<0=0>0?0@0A0B0C0D1E1F1G1H1I1J2K2L2M2N2O2P2Q2R2S2T2U2V3W3X3Y3Z3[3\3]3^3_3`3a4b4c5d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v6w7x7y7z7{7|7}7~777777777778888888889::;<<<<<<<===================>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAABBBBBCCC D E F F FFFFFFQGSafe  Thomas Tuegel 2010BSD3cabal-devel@haskell.orgportableSafeIf true, then children of this group may be run in parallel. Note that this setting is not inherited by children. In particular, consider a group F with "concurrently = False" that has some children, including a group T with "concurrently = True". The children of group T may be run concurrently with each other, as long as none are run at the same time as any of the direct children of group F.&IA human-readable description of the option to guide the user setting it.+Perform the test.,1A name for the test, unique within a test suite.-0Users can select groups of tests by their tags..5Descriptions of the options recognized by this test./Try to set the named option to the given value. Returns an error message if the option is not supported or the value could not be correctly parsed; otherwise, a )5 with the option set to the given value is returned.0PCreate a named group of tests, which are assumed to be safe to run in parallel.+  !"#$%&'()*+,-./0+  !"#$%&'()*+,-./0+)*+,-./#$%&'( !"  0    !"#$%&'()*+,-./0...cabal-devel@haskell.orgportableSafe1No unliteration.22 takes a filename (for error reports), and transforms the given string, to eliminate the literate comments from the program text. !"#$%&'()1*+2,-.1221 !"#$%&'()1*+2,-.H(c) Sven Panne 2002-2005/BSD-style (see the file libraries/base/LICENSE)libraries@haskell.orgportableSafe /sDescribes whether an option takes an argument or not, and if so how the argument is injected into a value of type a.0no argument expected1option requires argument2optional argument3Each 3 describes a single option.The arguments to 4 are:list of short option characters*list of long option strings (without "--")argument descriptorexplanation of option for user5-What to do with options following non-options6+no option processing after first non-option7*freely intersperse options and non-options8wrap non-options into options9Return a string describing the usage of a command, derived from the header (first argument) and the options described by the second argument.:pProcess the command-line, and return the list of values that matched (and those that didn't). The arguments are:The order requirements (see 5)The option descriptions (see 3)9The actual command line arguments (presumably got from IJ).:j returns a triple consisting of the option arguments, a list of non-options, and a list of error messages.;This is almost the same as :, but returns a quadruple consisting of the option arguments, a list of non-options, a list of unrecognized options, and a list of error messages.<=>?@A/0123456789BCDE:;FGHIJKL /0123456789:;<=>?@A/0123456789BCDE:;FGHIJKLcabal-devel@haskell.orgportableSafe343443342011, Dan Knappcabal-devel@haskell.orgportableSafe5Represents a dialect of C. The Monoid instance expresses backward compatibility, in the sense that 'mappend a b' is the least inclusive dialect which both a and b! can be correctly interpreted as.:A list of all file extensions which are recognized as possibly containing some dialect of C code. Note that this list is only for source files, not for header files.;Takes a dialect of C and whether code is intended to be passed through the preprocessor, and returns a filename extension for containing that code.<Infers from a filename's extension the dialect of C which it contains, and whether it is intended to be passed through the preprocessor. 56789:;<M56789:;<56789:;<56789:;<MKSafeNOPQRSTUVWXYZ[\]^_`abcdefNN"(c) The University of Glasgow 2002/BSD-style (see the file libraries/base/LICENSE)libraries@haskell.orgportableSafe >LConsumes and returns the next character. Fails if there is no input left.?PLook-ahead: returns the part of the input that is left, without consuming it.@ Always fails.ASymmetric choice.B}Local, exclusive, left-biased choice: If left parser locally produces any result at all, then right parser is not used.CzTransforms a parser into one that does the same, but in addition returns the exact characters read. IMPORTANT NOTE: C] gives a runtime error if its first argument is built using any occurrences of readS_to_P.DTConsumes and returns the next character, if it satisfies the specified predicate.E+Parses and returns the specified character.F(Parses and returns the specified string.GBParses the first zero or more characters satisfying the predicate.HAParses the first one or more characters satisfying the predicate.I+Combines all parsers in the specified list.JSkips all whitespace.K count n p  parses n occurrences of p/ in sequence. A list of results is returned.L between open close p  parses open, followed by p and finally close. Only the value of p is returned.M option x p will either parse p or return x without consuming any input.N optional p optionally parses p and always returns ().O4Parses zero or more occurrences of the given parser.P3Parses one or more occurrences of the given parser.QLike O, but discards the result.RLike P, but discards the result.S sepBy p sep$ parses zero or more occurrences of p, separated by sep*. Returns a list of values returned by p.T sepBy1 p sep# parses one or more occurrences of p, separated by sep*. Returns a list of values returned by p.U endBy p sep$ parses zero or more occurrences of p, separated and ended by sep.V endBy p sep# parses one or more occurrences of p, separated and ended by sep.W chainr p op x$ parses zero or more occurrences of p, separated by op#. Returns a value produced by a right9 associative application of all functions returned by op!. If there are no occurrences of p, x is returned.X chainl p op x$ parses zero or more occurrences of p, separated by op#. Returns a value produced by a left9 associative application of all functions returned by op!. If there are no occurrences of p, x is returned.YLike W(, but parses one or more occurrences of p.ZLike X(, but parses one or more occurrences of p.[manyTill p end$ parses zero or more occurrences of p, until end3 succeeds. Returns a list of values returned by p.\hConverts a parser into a Haskell ReadS-style function. This is the main way in which you can "run" a =" parser: the expanded type is 1 readP_to_S :: ReadP a -> String -> [(a,String)] ]Converts a Haskell ReadS-style function into a parser. Warning: This introduces local backtracking in the resulting parser, and therefore a possible inefficiency.3=ghijklmnop>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]qrstuvwx"=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]"=>?ABC@DEFGHJIKLMNOPQRSTUVWXZY[\]-=ghijklmnop>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]qrstuvwxABDuncan Coutts 2007cabal-devel@haskell.orgportableSafe^_`abyz^_`ab^_`ab^_`abyzFIsaac Jones, Simon Marlow 2003-2004 Duncan Coutts 2008BSD3cabal-devel@haskell.orgportableSafe+0l$A complementary representation of a mr. Instead of a boolean version predicate it uses an increasing sequence of non-overlapping, non-empty intervals.aThe key point is that this representation gives a canonical representation for the semantics of mxs. This makes it easier to check things like whether a version range is empty, covers all versions, or requires a certain minimum or maximum version. It also makes it easy to check equality or containment. It also makes it easier to identify 'simple' version predicates for translation into foreign packaging systems that do not support complex version range expressions.vThe version range -any4. That is, a version range containing all versions. withinRange v anyVersion = TruewHThe empty version range, that is a version range containing no versions.WThis can be constructed using any unsatisfiable version range expression, for example  > 1 && < 1. withinRange v noVersion = FalsexThe version range == v (withinRange v' (thisVersion v) = v' == vyThe version range  v|| v +withinRange v' (notThisVersion v) = v' /= vzThe version range > v (withinRange v' (laterVersion v) = v' > v{The version range >= v +withinRange v' (orLaterVersion v) = v' >= v|The version range < v *withinRange v' (earlierVersion v) = v' < v}The version range <= v -withinRange v' (orEarlierVersion v) = v' <= v~The version range  vr1 || vr2 X withinRange v' (unionVersionRanges vr1 vr2) = withinRange v' vr1 || withinRange v' vr2The version range  vr1 && vr2 \ withinRange v' (intersectVersionRanges vr1 vr2) = withinRange v' vr1 && withinRange v' vr2The version range == v.*.For example, for version 1.2, the version range == 1.2.* is the same as >= 1.2 && < 1.3 withinRange v' (laterVersion v) = v' >= v && v' < upper v where upper (Version lower t) = Version (init lower ++ [last lower + 1]) tThe version range >= v1 && <= v2.oIn practice this is not very useful because we normally use inclusive lower bounds and exclusive upper bounds. (withinRange v' (laterVersion v) = v' > v@Given a version range, remove the highest upper bound. Example: (>= 1 && < 3) || (>= 4 && < 5) is converted to  (>= 1 &&  3)|| (= 4).-Fold over the basic syntactic structure of a m.bThis provides a syntactic view of the expression defining the version range. The syntactic sugar ">= v", "<= v" and "== v.*"2 is presented in terms of the other basic syntax.For a semantic view use .An extended variant of < that also provides a view of in which the syntactic sugar ">= v", "<= v" and "== v.*"I is presented explicitly rather than in terms of the other basic syntax..Does this version fall within the given range?(This is the evaluation function for the m type.View a m as a union of intervals.5This provides a canonical view of the semantics of a m\ as opposed to the syntax of the expression used to define it. For the syntactic view use .Each interval is non-empty. The sequence is in increasing order and no intervals overlap or touch. Therefore only the first and last can be unbounded. The sequence can be empty if the range is empty (e.g. a range expression like  1&& 2).COther checks are trivial to implement using this view. For example: hisNoVersion vr | [] <- asVersionIntervals vr = True | otherwise = False isSpecificVersion vr | [(LowerBound v InclusiveBound ,UpperBound v' InclusiveBound)] <- asVersionIntervals vr , v == v' = Just v | otherwise = Nothing Does this m place any restriction on the ! or is it in fact equivalent to n.^Note this is a semantic check, not simply a syntactic check. So for example the following is True (for all v). EisAnyVersion (EarlierVersion v `UnionVersionRanges` orLaterVersion v)This is the converse of l. It check if the version range is empty, if there is no possible version that satisfies the version range.For example this is True (for all v): FisNoVersion (EarlierVersion v `IntersectVersionRanges` LaterVersion v)6Is this version range in fact just a specific version?For example the version range ">= 3 && <= 3" contains only the version 3. Simplify a m expression. For non-empty version ranges this produces a canonical form. Empty or inconsistent version ranges are left as-is because that provides more information."If you need a canonical form use )fromVersionIntervals . toVersionIntervals&It satisfies the following properties: 8withinRange v (simplifyVersionRange r) = withinRange v r  withinRange v r = withinRange v r' ==> simplifyVersionRange r = simplifyVersionRange r' || isNoVersion r || isNoVersion r'&Inspect the list of version intervals.Directly construct a l from a list of intervals.Each interval must be non-empty. The sequence must be in increasing order and no intervals may overlap or touch. If any of these conditions are not satisfied the function returns Nothing.{6Check an upper bound does not intersect a lower bound:--| or ---) or ---] or ---) but not ---] |--- (--- (--- [--- [---5Test if a version falls within the version intervals.VIt exists mostly for completeness and testing. It satisfies the following properties: }withinIntervals v (toVersionIntervals vr) = withinRange v vr withinIntervals v ivs = withinRange v (fromVersionIntervals ivs) Convert a m$ to a sequence of version intervals. Convert a l value back into a m0 expression representing the version intervals.Bcdefghijkl|mnopqrstuvwxyz{|}~"-any" version "== v" "> v" "< v""_ || _" union"_ && _" intersection "-any" version "== v" "> v" "< v" ">= v" "<= v""== v.*" wildcard. The function is passed the inclusive lower bound and the exclusive upper bounds of the range defined by the wildcard."_ || _" union"_ && _" intersection "(_)" parentheses}~{3cdefghijklmnopqrstuvwxyz{|}~3mnopqrstuvwxyz|{}~kijfghcdel4cdefghijkl|mnopqrstuvwxyz{|}~}~{ Isaac Jones 2003-2004BSD3libraries@haskell.orgportableSafe+0tcAllow overlapping class instances, provided there is a unique most specific instance for each use. chttp://www.haskell.org/ghc/docs/latest/html/users_guide/type-class-extensions.html#instance-overlapIgnore structural rules guaranteeing the termination of class instance resolution. Termination is guaranteed by a fixed-depth recursion stack, and compilation may fail if this depth is exceeded. hhttp://www.haskell.org/ghc/docs/latest/html/users_guide/type-class-extensions.html#undecidable-instancesImplies . Allow the implementation to choose an instance even when it is possible that further instantiation of types will lead to a more specific instance being applicable. chttp://www.haskell.org/ghc/docs/latest/html/users_guide/type-class-extensions.html#instance-overlap (deprecated) Allow recursive bindings in do blocks, using the rec keyword. See also .Allow recursive bindings using mdo, a variant of do. DoRec( provides a different, preferred syntax. _http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#recursive-do-notationdProvide syntax for writing list comprehensions which iterate over several lists together, like the  family of functions. fhttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#parallel-list-comprehensions*Allow multiple parameters in a type class. khttp://www.haskell.org/ghc/docs/latest/html/users_guide/type-class-extensions.html#multi-param-type-classes,Enable the dreaded monomorphism restriction. Ihttp://www.haskell.org/ghc/docs/latest/html/users_guide/monomorphism.html$Allow a specification attached to a multi-parameter type class which indicates that some parameters are entirely determined by others. The implementation will check that this property holds for the declared instances, and will use this property to reduce ambiguity in instance resolution. jhttp://www.haskell.org/ghc/docs/latest/html/users_guide/type-class-extensions.html#functional-dependenciesLike Y but does not allow a higher-rank type to itself appear on the left of a function arrow. khttp://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#universal-quantificationNAllow a universally-quantified type to occur on the left of a function arrow. khttp://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#universal-quantification@Allow data constructors to have polymorphic arguments. Unlike -, does not allow this for ordinary functions. khttp://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#universal-quantification1Allow existentially-quantified data constructors. lhttp://www.haskell.org/ghc/docs/latest/html/users_guide/data-type-extensions.html#existential-quantification=Cause a type variable in a signature, which has an explicit forallQ quantifier, to scope over the definition of the accompanying value declaration. hhttp://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#scoped-type-variablesDeprecated, use  instead.7Enable implicit function parameters with dynamic scope. fhttp://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#implicit-parametersHRelax some restrictions on the form of the context of a type signature. dhttp://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#flexible-contextsORelax some restrictions on the form of the context of an instance declaration. ahttp://www.haskell.org/ghc/docs/latest/html/users_guide/type-class-extensions.html#instance-rules2Allow data type declarations with no constructors. _http://www.haskell.org/ghc/docs/latest/html/users_guide/data-type-extensions.html#nullary-types.Run the C preprocessor on Haskell source code. [http://www.haskell.org/ghc/docs/latest/html/users_guide/options-phases.html#c-pre-processor]Allow an explicit kind signature giving the kind of types over which a type variable ranges. Zhttp://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#kindingbEnable a form of pattern which forces evaluation before an attempted match, and a form of strict let/where binding. Jhttp://www.haskell.org/ghc/docs/latest/html/users_guide/bang-patterns.html&Allow type synonyms in instance heads. ihttp://www.haskell.org/ghc/docs/latest/html/users_guide/type-class-extensions.html#flexible-instance-headDEnable Template Haskell, a system for compile-time metaprogramming. Mhttp://www.haskell.org/ghc/docs/latest/html/users_guide/template-haskell.htmlEnable the Foreign Function Interface. In GHC, implements the standard Haskell 98 Foreign Function Interface Addendum, plus some GHC-specific extensions. @http://www.haskell.org/ghc/docs/latest/html/users_guide/ffi.htmlEnable arrow notation. Khttp://www.haskell.org/ghc/docs/latest/html/users_guide/arrow-notation.html (deprecated)l Enable generic type classes, with default instances defined in terms of the algebraic structure of a type. Lhttp://www.haskell.org/ghc/docs/latest/html/users_guide/generic-classes.html,Enable the implicit importing of the module Prelude. When disabled, when desugaring certain built-in syntax into ordinary identifiers, use whatever is in scope rather than the Prelude -- version. [http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#rebindable-syntaxEnable syntax for implicitly binding local names corresponding to the field names of a record. Puns bind specific names, unlike . Uhttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#record-punsDEnable a form of guard which matches a pattern and binds variables. Xhttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#pattern-guardsAllow a type declared with newtype to use deriving9 for any class with an instance for the underlying type. Vhttp://www.haskell.org/ghc/docs/latest/html/users_guide/deriving.html#newtype-deriving,Enable the "Trex" extensible records system. Ahttp://cvs.haskell.org/Hugs/pages/users_guide/hugs-only.html#TREXEnable type synonyms which are transparent in some definitions and opaque elsewhere, as a way of implementing abstract datatypes. Fhttp://cvs.haskell.org/Hugs/pages/users_guide/restricted-synonyms.htmlHEnable an alternate syntax for string literals, with string templating. Ahttp://cvs.haskell.org/Hugs/pages/users_guide/here-documents.htmlAllow the character #W as a postfix modifier on identifiers. Also enables literal syntax for unboxed values. Thttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#magic-hashcAllow data types and type synonyms which are indexed by types, i.e. ad-hoc polymorphism for types. Jhttp://www.haskell.org/ghc/docs/latest/html/users_guide/type-families.html=Allow a standalone declaration which invokes the type class deriving mechanism. Zhttp://www.haskell.org/ghc/docs/latest/html/users_guide/deriving.html#stand-alone-derivingpAllow certain Unicode characters to stand for certain ASCII character sequences, e.g. keywords and punctuation. Xhttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#unicode-syntax:Allow the use of unboxed types as foreign types, e.g. in foreign import and foreign export. Ihttp://www.haskell.org/ghc/docs/latest/html/users_guide/ffi.html#id681687Enable interruptible FFI. Rhttp://www.haskell.org/ghc/docs/latest/html/users_guide/ffi.html#ffi-interruptible*Allow use of CAPI FFI calling convention (foreign import capi). Ihttp://www.haskell.org/ghc/docs/latest/html/users_guide/ffi.html#ffi-capi|Defer validity checking of types until after expanding type synonyms, relaxing the constraints on how synonyms may be used. _http://www.haskell.org/ghc/docs/latest/html/users_guide/data-type-extensions.html#type-synonyms\Allow the name of a type constructor, type class, or type variable to be an infix operator.Enable syntax for implicitly binding local names corresponding to the field names of a record. A wildcard binds all unmentioned names, unlike . Zhttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#record-wildcardsDeprecated, use  instead.QAllow a record field name to be disambiguated by the type of the record it's in. ]http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#disambiguate-fields=Enable traditional record syntax (as supported by Haskell 98) chttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#traditional-record-syntaxVEnable overloading of string literals using a type class, much like integer literals. ehttp://www.haskell.org/ghc/docs/latest/html/users_guide/type-class-extensions.html#overloaded-strings{Enable generalized algebraic data types, in which type variables may be instantiated on a per-constructor basis. Implies . Vhttp://www.haskell.org/ghc/docs/latest/html/users_guide/data-type-extensions.html#gadt>Enable GADT syntax for declaring ordinary algebraic datatypes. \http://www.haskell.org/ghc/docs/latest/html/users_guide/data-type-extensions.html#gadt-style"Make pattern bindings monomorphic. Rhttp://www.haskell.org/ghc/docs/latest/html/users_guide/monomorphism.html#id630981DRelax the requirements on mutually-recursive polymorphic functions. _http://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#typing-bindsEAllow default instantiation of polymorphic types in more situations. jhttp://www.haskell.org/ghc/docs/latest/html/users_guide/interactive-evaluation.html#extended-default-rulesEnable unboxed tuples. Vhttp://www.haskell.org/ghc/docs/latest/html/users_guide/primitives.html#unboxed-tuplesEnable deriving for classes  and LM. Whttp://www.haskell.org/ghc/docs/latest/html/users_guide/deriving.html#deriving-typeableEnable deriving for  and NO. Whttp://www.haskell.org/ghc/docs/latest/html/users_guide/deriving.html#deriving-typeable&Enable support for default signatures. khttp://www.haskell.org/ghc/docs/latest/html/users_guide/type-class-extensions.html#class-default-signatures?Allow type signatures to be specified in instance declarations. `http://www.haskell.org/ghc/docs/latest/html/users_guide/type-class-extensions.html#instance-sigsVAllow a class method's type to place additional constraints on a class type variable. ehttp://www.haskell.org/ghc/docs/latest/html/users_guide/type-class-extensions.html#class-method-typescAllow imports to be qualified by the package name the module is intended to be imported from, e.g. import "network" Network.Socket Yhttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#package-imports (deprecated)A Allow a type variable to be instantiated at a polymorphic type. mhttp://www.haskell.org/ghc/docs/6.12.3/html/users_guide/other-type-extensions.html#impredicative-polymorphism (deprecated)1 Change the syntax for qualified infix operators. ahttp://www.haskell.org/ghc/docs/6.12.3/html/users_guide/syntax-extns.html#new-qualified-operatorsURelax the interpretation of left operator sections to allow unary postfix operators. [http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#postfix-operatorscEnable quasi-quotation, a mechanism for defining new concrete syntax for expressions and patterns. _http://www.haskell.org/ghc/docs/latest/html/users_guide/template-haskell.html#th-quasiquotation\Enable generalized list comprehensions, supporting operations such as sorting and grouping. ihttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#generalised-list-comprehensionscEnable monad comprehensions, which generalise the list comprehension syntax to work for any monad. ^http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#monad-comprehensions]Enable view patterns, which match a value by applying a function and matching on the result. Whttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#view-patternsxAllow concrete XML syntax to be used in expressions and patterns, as per the Haskell Server Pages extension language:  &http://www.haskell.org/haskellwiki/HSP. The ideas behind it are discussed in the paper "Haskell Server Pages through Dynamic Loading" by Niklas Broberg, from Haskell Workshop '05.Allow regular pattern matching over lists, as discussed in the paper "Regular Expression Patterns" by Niklas Broberg, Andreas Farre and Josef Svenningsson, from ICFP '04.'Enable the use of tuple sections, e.g. (, True) desugars into x -> (x, True). Xhttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#tuple-sectionsGAllow GHC primops, written in C--, to be imported into a Haskell file.!Support for patterns of the form n + k, where k is an integer literal. Vhttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#n-k-patternsImprove the layout rule when if expressions are used in a do block.Enable support for multi-way if -expressions. Vhttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#multi-way-ifEnable support lambda-case expressions. Uhttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#lambda-caseqMakes much of the Haskell sugar be desugared into calls to the function with a particular name that is in scope. [http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#rebindable-syntaxMake forallN a keyword in types, which can be used to give the generalisation explicitly. chttp://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#explicit-foralls0Allow contexts to be put on datatypes, e.g. the Eq a in /data Eq a => Set a = NilSet | ConsSet a (Set a). chttp://www.haskell.org/ghc/docs/latest/html/users_guide/data-type-extensions.html#datatype-contextsLocal (let and where) bindings are monomorphic. chttp://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#mono-local-bindsEnable deriving for the PQ class. Whttp://www.haskell.org/ghc/docs/latest/html/users_guide/deriving.html#deriving-typeableEnable deriving for the RS class. Whttp://www.haskell.org/ghc/docs/latest/html/users_guide/deriving.html#deriving-typeableEnable deriving for the TU class. Whttp://www.haskell.org/ghc/docs/latest/html/users_guide/deriving.html#deriving-typeable&Enable non-decreasing indentation for do blocks. fhttp://www.haskell.org/ghc/docs/latest/html/users_guide/bugs-and-infelicities.html#infelicities-syntaxAllow imports to be qualified with a safe keyword that requires the imported module be trusted as according to the Safe Haskell definition of trust. import safe Network.Socket Vhttp://www.haskell.org/ghc/docs/latest/html/users_guide/safe-haskell.html#safe-importstCompile a module in the Safe, Safe Haskell mode -- a restricted form of the Haskell language to ensure type safety. Thttp://www.haskell.org/ghc/docs/latest/html/users_guide/safe-haskell.html#safe-trustCompile a module in the Trustworthy, Safe Haskell mode -- no restrictions apply but the module is marked as trusted as long as the package the module resides in is trusted. Thttp://www.haskell.org/ghc/docs/latest/html/users_guide/safe-haskell.html#safe-trustzCompile a module in the Unsafe, Safe Haskell mode so that modules compiled using Safe, Safe Haskell mode can't import it. Thttp://www.haskell.org/ghc/docs/latest/html/users_guide/safe-haskell.html#safe-trustAllow type classimplicit parameterbequality constraints to be used as types with the special kind constraint. Also generalise the  (ctxt => ty)H syntax so that any type of kind constraint can occur before the arrow. Lhttp://www.haskell.org/ghc/docs/latest/html/users_guide/constraint-kind.htmlEnable kind polymorphism. Nhttp://www.haskell.org/ghc/docs/latest/html/users_guide/kind-polymorphism.htmlEnable datatype promotion. Fhttp://www.haskell.org/ghc/docs/latest/html/users_guide/promotion.htmlEnable parallel arrays syntax ([:, :]) for Data Parallel Haskell. <http://www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell+Enable explicit role annotations, like in (/type role Foo representational representational). Bhttp://www.haskell.org/ghc/docs/latest/html/users_guide/roles.htmlWEnable overloading of list literals, arithmetic sequences and list patterns using the IsList type class. chttp://www.haskell.org/ghc/docs/latest/html/users_guide/type-class-extensions.html#overloaded-listsoEnable case expressions that have no alternatives. Also applies to lambda-case expressions if they are enabled. Thttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#empty-case#Triggers the generation of derived : instances for every datatype and type class declaration. Zhttp://www.haskell.org/ghc/docs/latest/html/users_guide/deriving.html#auto-derive-typeable;Desugars negative literals directly (without using negate). [http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#negative-literals5Allow the use of binary integer literal syntax (e.g.  0b11001001 to denote 201). Yhttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#binary-literals>Allow the use of floating literal syntax for all instances of  , including  and . Vhttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#num-decimals7Enable support for type classes with no type parameter. ghttp://www.haskell.org/ghc/docs/latest/html/users_guide/type-class-extensions.html#nullary-type-classes9Enable explicit namespaces in module import/export lists. ]http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#explicit-namespacesUAllow the user to write ambiguous types, and the type inference engine to infer them. \http://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#ambiguityEnable foreign import javascript.4Allow giving names to and abstracting over patterns. chttp://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#pattern-synonymsAllow anonymous placeholders (underscore) inside type signatures. The type inference engine will generate a message describing the type inferred at the hole's location. jhttp://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#partial-type-signaturesAllow named placeholders written with a leading underscore inside type signatures. Wildcards with the same name unify to the same type. bhttp://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#named-wildcardsEnable deriving for any class. chttp://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#derive-any-class2This represents language extensions beyond a base  definition (such as L) that are supported by some implementations, usually in some special mode.VWhere applicable, references are given to an implementation's official documentation.Enable a known extensionDisable a known extension4An unknown extension, identified by the name of its LANGUAGE pragma.+This represents a Haskell language dialect. Language ;s are interpreted relative to one of these base languages.>The Haskell 98 language as defined by the Haskell 98 report. http://haskell.org/onlinereport/BThe Haskell 2010 language as defined by the Haskell 2010 report. /http://www.haskell.org/onlinereport/haskell2010,An unknown language, identified by its name._Extensions that have been deprecated, possibly paired with another extension that replaces it. for s is really really slow so for the Text instance what we do is make a simple table indexed off the first letter in the extension name. The extension names actually cover the range 'A'-'Z'q pretty densely and the biggest bucket is 7 so it's not too bad. We just do a linear search within each bucket.This gives an order of magnitude improvement in parsing speed, and it'll also allow us to do case insensitive matches in future if we prefer.vvj Isaac Jones 2003-2004BSD3cabal-devel@haskell.orgportableSafe+0  Compiler information used for resolving configurations. Some fields can be set to Nothing to indicate that the information is unknown. Compiler flavour and version.FTag for distinguishing incompatible ABI's on the same architecture/os.POther implementations that this compiler claims to be compatible with, if known.'Supported language standards, if known.Supported extensions, if known.!Like * but compatible with the old ReadS parser.IIt is compatible in the sense that it accepts only the same strings, eg GHC4 but not "ghc". However other strings get mapped to   . 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.$vThe default compiler flavour to pick when compiling stuff. This defaults to the compiler used to build the Cabal lib.4However if it's not a recognised compiler then it's = and the user will have to specify which compiler they want.&Make a CompilerInfo of which only the known information is its CompilerId, its AbiTag and that it does not claim to be compatible with other compiler id's.*      !"#$%&      !"#$%& #"$!   &  %       !"#$%& Isaac Jones 2003-2004BSD3cabal-devel@haskell.orgportableSafe0(Some compilers support emitting debug info. Some have different levels. For compilers that do not the level is just capped to the level they do support.-Some compilers support optimising. Some have different levels. For compilers that do not the level is just capped to the level they do support.1We typically get packages from several databases, and stack them together. This type lets us be explicit about that stacking. For example typical stacks include: n[GlobalPackageDB] [GlobalPackageDB, UserPackageDB] [GlobalPackageDB, SpecificPackageDB "package.conf.inplace"]Note that the 3k is invariably at the bottom since it contains the rts, base and other special compiler-specific packages.We are not restricted to using just the above combinations. In particular we can use several custom package dbs and the user package db together.>When it comes to writing, the top most (last) package is used.2rSome 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.8Compiler flavour and version.9FTag for distinguishing incompatible ABI's on the same architecture/os.:FOther implementations that this compiler claims to be compatible with.;Supported language standards.<Supported extensions.=?A key-value map for properties not covered by the above fields.DaReturn the package that we should register into. This is the package db at the top of the stack.EMake package paths absoluteKBFor the given compiler, return the extensions it does not support.LFFor the given compiler, return the flags for the supported extensions.M0Does this compiler support parallel --make mode?N.Does this compiler support reexported-modules?O>Does this compiler support thinning/renaming on package flags?P(Does this compiler support package keys?&Utility function for GHC only features1'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPI      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP*6789:;<=>?@ABC23451DEF-./0G()*+,H'JILKMNOP '()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPVcabal-devel@haskell.orgportableSafeDInformation about features and quirks of a GHC-based implementation.Compiler flavors based on GHC behave similarly enough that some of the support code for them is shared. Every implementation has its own peculiarities, that may or may not be a direct result of the underlying GHC version. This record keeps track of these differences.All shared code (i.e. everything not in the Distribution.Simple.FLAVOR module) should use implementation info rather than version numbers to test for supported features.)bug in -odir handling for C compilations.%-info and --supported-languages flags#use -XRecordPuns for NamedFieldPunsstubdir flag supportedoutputdir flag supported)split-obj suffix does not contain p_o ext)#include on command line for FFI includes&fbuilding-cabal-package flag supported%package-id / -package flags supported)mingw and gcc are in separate directories"XHaskell2010 and -XHaskell98 flags(-supported-languages gives Ext and NoExt%NondecreasingIndentation is always onghci-script flag supported&use package-conf instead of package-dbg flag supported The License data type.8Isaac Jones 2003-2005 Duncan Coutts 2008BSD3cabal-devel@haskell.orgportableSafe+0QIndicates the license under which a package's source code is released. Versions of the licenses not listed here will be rejected by Hackage and cause  cabal check to issue a warning.RGNU General Public License,  6https://www.gnu.org/licenses/old-licenses/gpl-2.0.html version 2 or  %https://www.gnu.org/licenses/gpl.html version 3.S &https://www.gnu.org/licenses/agpl.html,GNU Affero General Public License, version 3.T$GNU Lesser General Public License,  7https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html version 2.1 or  &https://www.gnu.org/licenses/lgpl.html version 3.U .http://www.opensource.org/licenses/bsd-license2-clause BSD license.V /http://www.opensource.org/licenses/bsd-3-clause3-clause BSD license.W 1http://directory.fsf.org/wiki/License:BSD_4Clause4-clause BSD license. This license has not been approved by the OSI and is incompatible with the GNU GPL. It is provided for historical reasons and should be avoided.X &http://www.opensource.org/licenses/MIT MIT license.Y Ahttp://www.isc.org/downloads/software-support-policy/isc-license/ ISC licenseZ https://www.mozilla.org/MPL/#Mozilla Public License, version 2.0.[ https://www.apache.org/licenses/Apache License, version 2.0.\ZThe author of a package disclaims any copyright to its source code and dedicates it to the public domain. This is not a software license. Please note that it is not possible to dedicate works to the public domain in every jurisdiction, nor is a work that is in the public domain in one jurisdiction necessarily in the public domain elsewhere.]Explicitly 'All Rights Reserved', eg for proprietary software. The package may not be legally modified or redistributed by anyone but the rightsholder.^No license specified which legally defaults to 'All Rights Reserved'. The package may not be legally modified or redistributed by anyone but the rightsholder._Any other software license.`$Indicates an erroneous license name.a.The list of all currently recognised licenses.QRSTUVWXYZ[\]^_`aQRSTUVWXYZ[\]^_`aQRSTUVWXYZ[\]^_`aQRSTUVWXYZ[\]^_`a Duncan Coutts 2008BSD3cabal-devel@haskell.orgportableSafe+0bA valid Haskell module name.d Construct a b from a valid module name .This is just a convenience function intended for valid module strings. It is an error if it is used with a string that is not a valid module name. If you are parsing user input then use W instead.eThe module name Main.fDThe individual components of a hierarchical module name. For example 1components (fromString "A.B.C") = ["A", "B", "C"]gSConvert a module name to a file path, but without any file extension. For example: )toFilePath (fromString "A.B.C") = "A/B/C" bcdefgbcdefgbdfgec bcdefgIsaac Jones 2003-2004BSD3cabal-devel@haskell.orgportableSafe+0hClass of installed packages.?The primary data type which is an instance of this package is InstalledPackageInfo, but when we are doing install plans in Cabal install we may have other, installed package-like things which contain more metadata. Installed packages have exact dependencies j.k?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.mClass of things that have a vTypes 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.;Not all kinds of packages can be uniquely identified by a vn. In particular, installed packages cannot, there may be many installed instances of the same source package.o0Describes a dependency on a source package (API)qA qT is the notion of "package ID" which is visible to the compiler. Why is this not a z? The zS is a user-visible concept written explicity in Cabal files; on the other hand, a qp may contain, for example, information about the transitive dependency tree of a package. Why is this not an t? A qF affects the ABI because it is used for linker symbols; however, an tF can be used to distinguish two ABI-compatible versions of a library.rModern package key which is a hash of the PackageId and the transitive dependency key. Manually inline it here so we can get the instances we need. Also contains a short informative strings&Old-style package key which is just a z9. Required because old versions of GHC assume that the sourcePackageIdX recorded for an installed package coincides with the package key it was compiled with.tAn InstalledPackageId uniquely identifies an instance of an installed package. There can be at most one package with a given t1 in a package database, or overlay of databases.v"The name and version of a package.x!The name of this package, eg. fooy#the version of this package, eg 1.2z4Type alias so we can use the shorter name PackageId.PConvenience function which converts a fingerprint into a new-style package key.~ Generates a q from a z5, sorted package keys of the immediate dependencies.6Size of a 64-bit word when written as a base-62 string,Converts a 64-bit word into a base-62 string*Parses a base-62 string into a 64-bit word+Parses a base-62 string into a fingerprint. Simplify the m expression in a o. See ./hijklmnopqrstuvwxyz{|}~hijklmnopqrstuvwxyz{|}~{|}vwxyztuqrs~opmnklhij"hijklmnopqrstuvwxyz{|}~Duncan Coutts 2007-2008cabal-devel@haskell.orgportableSafe+03How strict to be when classifying strings into the  and  enums.vThe reason we have multiple ways to do the classification is because there are two situations where we need to do it.For parsing OS and arch names in .cabal files we really want everyone to be referring to the same or or arch by the same name. Variety is not a virtue in this case. We don't mind about case though.For the System.Info.os/arch different Haskell implementations use different names for the same or/arch. Also they tend to distinguish versions of an OS/arch which we just don't care about.The  classification allows us to recognise aliases that are already in common use but it allows us to distinguish them from the canonical name which enables us to warn about such deprecated aliases.4The platform Cabal was compiled on. In most cases, LocalBuildInfo.hostPlatform8 should be used instead (the platform we're targeting).:((Isaac Jones 2003-2005BSD3cabal-devel@haskell.orgportableSafe+0[?A boolean expression parameterized over the variable type used.A ConfVar# represents the variable type used.A " is a total or partial mapping of s to j 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)]A 1 is the name of a user-defined configuration 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.IAn enumeration of common source control systems. The fields used in the n depend on the type of repo. The tools and methods used to obtain and track the repo depend on the repo type./What this repo info is for, what it represents.The 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.The 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.CInformation 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 ReopKind6 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  which tells us if it's using ,  for example. The ? and other details are interpreted according to the repo type.)The kind of repo. This field is required.;The type of the source repository system for this repo, eg  or . This field is required.)The location of the repository. For most )s this is a URL. This field is required. 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  $ and should not be given otherwise.The 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  and  use this while systems like  use different locations for different branches. This field is optional but should be used if necessary to identify the sources, especially for the  repo kind.UThe tag identify a particular state of the repository. This should be given for the  repo kind and not for  kind.Some 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.component is buildable heretools needed to build this bit'options for pre-processing Haskell codeoptions for C compileroptions for linker!pkg-config packages that are usedsupport frameworks for Mac OS X.where to look for the Haskell module hierarchynon-exposed or non-main modules+language used when not explicitly specified'other languages used within the package'language extensions used by all modules1other language extensions used within the package*the old extensions field, treated same as Kwhat libraries to link with when compiling a program that uses your packageAif present, overrides extraLibs when package is loaded with GHCi.directories to find .h files'The .h files to be found in includeDirs$.h files to install with the package@Custom fields starting with x-, stored in a simple assoc-list.7Dependencies specific to a library or executable target3The "benchmark-type" field in the benchmark stanza."type: exitcode-stdio-x.y",Some unknown benchmark type e.g. "type: foo"nThe benchmark interfaces that are currently defined. Each benchmark must specify which interface it supports.ZMore interfaces may be defined in future, either new revisions or totally new interfaces.Benchmark interface "exitcode-stdio-1.0". The benchmark takes the form of an executable. It returns a zero exit code for success, non-zero for failure. The stdout and stderr channels may be logged. It takes no command line parameters and nothing on stdin.uA benchmark that does not conform to one of the above interfaces for the given reason (e.g. unknown benchmark type). %A "benchmark" stanza in a cabal file./The "test-type" field in the test suite stanza."type: exitcode-stdio-x.y""type: detailed-x.y"'Some unknown test type e.g. "type: foo"pThe test suite interfaces that are currently defined. Each test suite must specify which interface it supports.ZMore interfaces may be defined in future, either new revisions or totally new interfaces.Test interface "exitcode-stdio-1.0". The test-suite takes the form of an executable. It returns a zero exit code for success, non-zero for failure. The stdout and stderr channels may be logged. It takes no command line parameters and nothing on stdin.Test interface "detailed-0.9". The test-suite takes the form of a library containing a designated module that exports "tests :: [Test]".qA test suite that does not conform to one of the above interfaces for the given reason (e.g. unknown test type).&A "test-suite" stanza in a cabal file.+What sigs need implementations?,What sigs are visible to users?-$Is the lib to be exposed by default?/Renaming applied to the modules provided by a package. The boolean indicates whether or not to also include all of the original names of modules. Thus, ModuleRenaming False []$ is "don't expose any modules, and ModuleRenaming True [( Data.Bool, Bool)]+ is, "expose all modules, but also expose  Data.Bool as Bool".1.The type of build system used by this package.2calls Distribution.Simple.defaultMain3calls 9Distribution.Simple.defaultMainWithHooks defaultUserHooks, which invokes  configure@ to generate additional build information used by later phases.4calls Distribution.Make.defaultMain5uses user-supplied Setup.hs or  Setup.lhs (default)6a 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.7:This 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.E"A one-line summary of this packageF*A more verbose description of this packageHgCustom fields starting with x-, stored in a simple assoc-list. | YOU PROBABLY DON'T WANT TO USE THIS FIELD. This field is special! Depending on how far along processing the PackageDescription we are, the contents of this field are either nonsense, or the collected dependencies of *all* the components in this package. buildDepends is initialized by finalizePackageDescription and flattenPackageDescription3; prior to that, dependency info is stored in the  built around a K. When this resolution is done, dependency info is written to the inner \ and this field. This is all horrible, and #2066 tracks progress to get rid of this field.JThe version of the Cabal spec that this package description uses. For historical reasons this is specified with a version range but only ranges of the form >= vf make sense. We are in the process of transitioning to specifying just a single version, not a range.UOThe version of the Cabal spec that this package should be interpreted against.Historically we used a version range but we are switching to using a single version. Currently we accept either. This function converts into a single version by ignoring upper bounds in the version range.VUThe range of versions of the Cabal tools that this package is intended to work with.This function is deprecated and should not be used for new purposes, only to support old packages that rely on the old interpretation.\%does this package have any libraries? version of \]tIf the package description has a library section, call the given function with the library build info as argument.^Get all the module names from the library (exposed and internal modules) which need to be compiled. (This does not include reexports, which do not need to be compiled.)`'does this package have any executables?a%Perform the action on each buildable  in the package description.b$Get all the module names from an exed'Does this package have any test suites?e/Get all the enabled test suites from a package.f$Perform an action on each buildable  in a package.g+Get all the module names from a test suite.k&Does this package have any benchmarks?l.Get all the enabled benchmarks from a package.m$Perform an action on each buildable   in a package.n*Get all the module names from a benchmark.rThe  for the library (if there is one and it's buildable), and all buildable executables, test suites and benchmarks. Useful for gathering dependencies.sThe s used by this componenttThe +s that are used somewhere by this componentuThe  Extensions/ that are used by all modules in this componentw1Select options for a particular Haskell compiler.      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{      !      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{789:;<=>?@ABCDEFGHIJKLMNOPQRSTWUV123456X/0YZ'()*+,-."#$%&[]\^ !_a`bihcdfge     pojkmnlqrstuwxyv{zh       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{      !Isaac Jones 2003-2004BSD3cabal-devel@haskell.orgportableSafe 0~The $prefix path variableThe $bindir path variableThe $libdir path variableThe  $libsubdir path variableThe $datadir path variableThe  $datasubdir path variableThe $docdir path variableThe $htmldir path variableThe $pkg package name path variableThe $version package version path variableThe $pkgid package Id path variable, eg foo-1.0The $pkgkey package key path variable"The compiler name and version, eg  ghc-6.6.1The operating system name, eg windows or linuxThe CPU architecture name, eg i386 or x86_64:The Compiler's ABI identifier, $arch-$os-$compiler-$abitag%The optional ABI tag for the compiler+The executable name; used in shell wrappers$The name of the test suite being run,The result of the test suite being run, eg pass, fail, or error.#The name of the benchmark being run_An abstract path, possibly containing variables that need to be substituted for to get a real ".The location prefix for the copy command.)The installation directories in terms of s 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 substitution (see ).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 /Y. 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/$pkgkey/$compiler.{An additional complication is the need to support relocatable packages on systems which support such things, like Windows.9The 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 directories. This is particularly the case on Unix style systems.5Substitute the install dir templates into each other.To prevent cyclic substitutions, only some variables are allowed in particular dir templates. If out of scope vars are present, they are not substituted for. Checking for any remaining unsubstituted vars can be done as a subsequent operation.-The reason it is done this way is so that in  we can replace  with the ~ and get resulting s that still have the ~U in them. Doing this makes it each to check which paths are relative to the $prefix.Convert from abstract install directories to actual absolute ones by substituting for all the variables in the abstract paths, to get real absolute path.BCheck 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). Convert a " to a  including any template vars.7Convert back to a path, any remaining vars are included=The initial environment has all the static stuff but no pathsM|}~#$%&'()*+,-./012345:|}~:}~|$|}~#$%&'()*+,-./012345Jose Iborra 2008BSD3cabal-devel@haskell.orgportableSafe"Parser with simple error reporting 6767Ian Lynagh 2007BSD3cabal-devel@haskell.orgportableSafe089:;<   89:;<SafeXSafe=>?@ABCDE=B=>?@ABCYSafeF:Copies a file to a new destination. Often you should use G instead.GLike F, but does not touch the target if source and destination are already byte-identical. This is recommended as it is useful for time-stamp based recompilation avoidance.H[Checks if two files are byte-identical. Returns False if either of the files do not exist. IJKLFGHIJLFGH IJKLFGH#Isaac Jones, Simon Marlow 2003-2004=BSD3 portions Copyright (c) 2007, Galois Inc.cabal-devel@haskell.orgportableNone @Advanced options for   and .Keep temporary files?%No glob at all, just an ordinary filedir prefix and extension, like "foo/bar/*.baz" corresponds to FileGlob "foo/bar" ".baz"CNon fatal conditions that may be indicative of an error or problem.We display these at the  verbosity level.Useful status messages.We display these at the  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.,More detail on the operation of some action.6We display these messages when the verbosity level is 'Detailed internal debugging information6We display these messages when the verbosity level is  A variant of Y that doesn't perform the automatic line wrapping. Produces better output in some cases.XPerform an IO action, catching any IO exceptions and printing an error if one occurs.FWraps text to the default line width. Existing newlines are preserved.HWraps a list of words to a list of lines of words of a particular width.$Run a command and return its output.8The output is assumed to be text in the locale encoding.Run a command and return its output, errors and exit status. Optionally also supply some input. Also provides control over whether the binary/text mode of the input and output.Look for a program on the path.Look 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.Like 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 bigArgsJFind a file by looking in a search path. The file path must match exactly.Find a file by looking in a search path with one of a list of possible file extensions. The file base name should be given and it will be tried with each of the extensions in each element of the search path.Like x but returns which element of the search path the file was found in, and the file path relative to that base directory.@Finds the files corresponding to a list of Haskell module names.As  but for a list of module names.5Find the file corresponding to a Haskell module name.This is similar to j but specialised to a module name. The function fails if the file corresponding to the module is missing.9List all the files in a directory and all subdirectories.The order places files in sub-directories after all the files in their parent directories. The list is generated lazily so is not well defined if the source directory structure changes before the list is used.,Is this directory in the system search path?(Compare the modification times of two files to see if the first is newer than the second. The first file must exist but the second need not. The expected use case is when the second file is generated using the first. In this use case, if the result is True then the second file is out of date.Like -, but also checks that the first file exists.Same as createDirectoryIfMissing% but logs at higher verbosity levels.Copies a file without copying file permissions. The target file is created with default permissions. Any existing target file is replaced.3At higher verbosity levels it logs an info message.Install an ordinary file. This is like a file copy but the permissions are set appropriately for an installed file. On Unix it is "-rw-r--r--" while on Windows it uses the default permissions for the target directory.Install an executable file. This is like a file copy but the permissions are set appropriately for an installed file. On Unix it is "-rwxr-xr-x" while on Windows it uses the default permissions for the target directory.EInstall a file that may or not be executable, preserving permissions.Given a relative path to a file, copy it to the given directory, preserving the relative path and creating the parent directories if needed.MCommon implementation of , ,  and .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: RcopyFiles normal "dist/src" [("", "src/Foo.hs"), ("dist/build/", "src/Bar.hs")]qThis 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. This is like  but uses . This is like  but uses . This is like  but uses .This installs all the files in a directory to a target location, preserving the directory layout. All the files are assumed to be ordinary rather than executable files.?Recursively copy the contents of one directory to another path.Like N., but also checks that the file is executable. 4Use a temporary filename that doesn't already exist.  A version of   that additionally takes a  argument.%Create and use a temporary directory.Creates a new temporary directory inside the given directory, making use of the template. The temp directory is deleted after use. For example: >withTempDirectory verbosity "src" "sdist." $ \tmpDir -> do ...The tmpDir: will be a new subdirectory of the given directory, e.g.  src/sdist.342. A version of  that additionally takes a  argument.?Gets 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.Writes a file atomically.nThe file is either written successfully or an IO exception is raised and the original file is left unchanged.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.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.,NB: the file is assumed to be ASCII-encoded.DThe path name that represents the current directory. In Unix, it's "."D, but this is system-specific. (E.g. AmigaOS uses the empty string "" for the current directory.)Package description file (pkgname.cabal)DFind a package description file in the given directory. Looks for .cabal files.Like  , but calls  in case of error.-Optional auxiliary package information file (pkgname .buildinfo)FFind auxiliary package information in the given directory. Looks for  .buildinfo files.ODIgnore a Unicode byte order mark (BOM) at the beginning of the input2Reads a UTF8 encoded text file as a Unicode StringReads lazily using ordinary P.2Reads a UTF8 encoded text file as a Unicode StringSame behaviour as .4Writes a Unicode String as a UTF8 encoded text file.Uses ", so provides the same guarantees.3Fix different systems silly line ending conventions dropWhileEndLE p is equivalent to reverse . dropWhile p . reversep, but quite a bit faster. The difference between "Data.List.dropWhileEnd" and this version is that the one in  Data.Listj is strict in elements, but spine-lazy, while this one is spine-strict but lazy in elements. That's what LE" stands for - "lazy in elements".Example: F> tail $ Data.List.dropWhileEnd (<3) [undefined, 5, 4, 3, 2, 1] *** Exception: Prelude.undefined > tail $ dropWhileEndLE (<3) [undefined, 5, 4, 3, 2, 1] [5,4,3] > take 3 $ Data.List.dropWhileEnd (<3) [5, 4, 3, 2, 1, undefined] [5,4,3] > take 3 $ dropWhileEndLE (<3) [5, 4, 3, 2, 1, undefined] *** Exception: Prelude.undefined !takeWhileEndLE p is equivalent to reverse . takeWhile p . reverse;, but is usually faster (as well as being easier to read)."Like "Data.List.nub", but has  O(n log n) complexity instead of O(n^2) . Code for " and # taken from Niklas Hambchen's  $http://github.com/nh2/haskell-ordnubordnub package.# Like "Data.List.union", but has  O(n log n) complexity instead of O(n^2).$A right-biased version of ".Example: 3> ordNub [1,2,1] [1,2] > ordNubRight [1,2,1] [2,1] %A right-biased version of #.Example: ]> listUnion [1,2,3,4,3] [2,1,1] [1,2,3,4,3] > listUnionRight [1,2,3,4,3] [2,1,1] [4,3,2,1,1] `.a description of the action we were attemptingthe action itselfNew working dir or inheritNew environment or inheritstdinstdoutstderrProgram location ArgumentsNew working dir or inheritNew environment or inheritinput text and binary modeoutput in binary modeoutput, errors, exit version args8function to select version number from program outputlocationsearch locations File Name"build prefix (location of objects)search suffixesmodules"build prefix (location of objects)search suffixesmoduleCreate its parents too?QM    Temp dir to create the file inFile name template. See E. Temp dir to create the file inFile name template. See E. Where to look pkgname.cabalDirectory to searchdir/pkgname .buildinfo , if presentRO !"#$%&'()_      !"#$%&'()_      !&'()#%"$\QM     RO !"#$%&'()Z"(c) The University of Glasgow 2004BSD3cabal-devel@haskell.orgportableNoneSWe parse generically based on indent level and braces '{' '}'. To do that we split into lines and then '{' '}' tokens and other spans within a line.TThe T token is for bits that start a line, eg: "\n blah blah { blah" tokenises to: 8[Line n 2 False "blah blah", OpenBracket, Span n "blah"]cso lines are the only ones that can have nested layout, since they have a known indentation level.eg: we can't have this: if ... { } else otherubecause other cannot nest under else, since else doesn't start a line so cannot have nested layout. It'd have to be: if ... { } else other]but that's not so common, people would normally use layout or brackets not both in a single if else construct. "if ... { foo : bar } else other this is OKU"span in a line, following bracketsV A regular  property: value fieldWKA section with a name and possible parameter. The syntactic structure is:   sectionname  arg {  field* } X1A conditional block with an optional else branch:  if  condition {  field* } else {  field* } Y4The 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).*!Field descriptor. The parameter a< parameterizes over where the field's value is stored in..fieldSet n str x5 Parses the field value from the given input string str and stores the result in xK if the parse was successful. Otherwise, reports an error on line number n.ZA default unrecognized field parser which simply returns Nothing, i.e. ignores all unrecognized fields, so warnings will be generated.[A default unrecognized field parser which silently (i.e. no warnings will be generated) ignores unrecognized fields, by returning the structure being built unmodified.\Tokenise a single line, splitting on '{' '}' and the spans in between. Also trims leading & trailing space on those spans within the line.]HParse the stream of tokens into a tree of them, based on indent / layout^Parse the stream of tokens into a tree of them, based on indent This parse state expect to be in a layout context, though possibly nested within a braces context so we may still encounter closing braces._}Parse the stream of tokens into a tree of them, based on explicit braces This parse state expects to find a closing bracket.`\Convert the parse tree into the Field AST Also check for dodgy uses of tabs in indentation.a Convert ifthenelse Ws to Xsbparse a module namecPretty-print free-format text, ensuring that it is vertically aligned, and with blank lines replaced by dots for correct re-parsing.ddr breaks a string up into a list of strings at newline characters. The resulting strings do not contain newlines.e(the indentation used for pretty printinglfghSTUijkVWXY*+,-./012lm34567n8opqrstuvwxyz{|}~Z[\]^(indent level of the parent/previous line'accumulating param, trees in this levelremaining tokens1collected trees on this level and trailing tokens_(line of the '{', used for error messages'accumulating param, trees in this levelremaining tokens1collected trees on this level and trailing tokens`ab'The parser for the stuff between commas'The parser for the stuff between commas'The parser for the stuff between commas'The parser for the stuff between commascdeMkVWXY*+,-./012lm345678opqrsuvxyz{|}~Z[bceYfghSTUijkVWXY*+,-./012lm34567n8opqrstuvwxyz{|}~Z[\]^_`abcde"(c) The University of Glasgow 2004libraries@haskell.orgportableNone0C9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl=/012345679:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl=CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefB>?@A9:;<=/01345672ghijkl9:;<=>?@ABC#DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl["(c) The University of Glasgow 2004BSD3cabal-devel@haskell.orgportableNoneBThis is the InstalledPackageInfo type used by ghc-6.4.2 and later.It's here purely for the  instance so that we can read the package database used by those ghc versions. It is a little hacky to read the package db directly, but we do need the info and until ghc-6.9 there was no better method.@In ghc-6.4.1 and before the format was slightly different. See Distribution.Simple.GHC.IPI642/$\"(c) The University of Glasgow 2004BSD3cabal-devel@haskell.orgportableNone@This is the InstalledPackageInfo type used by ghc-6.4 and 6.4.1.It's here purely for the  instance so that we can read the package database used by those ghc versions. It is a little hacky to read the package db directly, but we do need the info and until ghc-6.9 there was no better method.+In ghc-6.4.2 the format changed a bit. See Distribution.Simple.GHC.IPI642                           Duncan Coutts 2007BSD3cabal-devel@haskell.orgportableNone (Common flags that apply to every commandv Long command line option stringsw!Short command line option stringsxaAn OptionField takes one or more OptDescrs, describing the command line interface for the field.}LWe usually have a data type 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 data type.QThe name of the command as it would be entered on the command line. For example "build".BA short, one line description of the command to use in help texts.IA function that maps a program name to a usage summary for this command.;Additional explanation of the command to use in help texts.+Post-Usage notes and examples in help textsInitial / empty flags&All the Option fields for this commandzCreate an option taking a single OptDescr. No explicit Name is given for the Option, the name is the first LFlag given.Create an option taking several OptDescrs. You will have to give the flags and description individually to the OptDescr constructor..Create a string-valued command line interface.CCreate a string-valued command line interface with a default value.!(String -> a) variant of "reqArg"!(String -> a) variant of "optArg"create a Choice optioncreate 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.uto view as a FieldDescr, we sort the list of interfaces (Req > Bool > Choice > Opt) and consider only the first one.:Show flags in the standard long option command line format DThe help text for this command with descriptions of all the options.0Default "usage" documentation text for commands.HCreate "usage" documentation from a list of parameter configurations.Make a Command from standard GetOpt options.'Parse a bunch of command line argumentsjMark command as hidden. Hidden commands don't show up in the 'progname help' or 'progname --help' output.Utility function, many commands do not accept additional flags. This action fails with a helpful error message if the user supplies any extra.6Helper function for creating globalCommand descriptionLm    nopqr   stuvwxyz{|}~DMkOptDescr constructors partially applied to flags and description.        namesynopsisusage alternativesinitial/empty flagsoptions  &Is the command a global or subcommand? :mnopqrstuvwxyz{|}~:nopqrm}~xyz{|wvuts2m    nopqr   stuvwxyz{|}~           Thomas Schilling, 2007BSD3cabal-devel@haskell.orgportableNone 0A set of targets with their package dependencies !tA map of dependencies. Newtyped since the default monoid instance is not appropriate. The monoid instance uses . ")Result of dependency test. Isomorphic to Maybe d but renamed for clarity. #5Simplify the condition and return its free variables. $Simplify a configuration condition using the OS and arch names. Returns the names of all the flags occurring in the condition..Parse a configuration condition from a string. %JTry to find a flag assignment that satisfies the constraints of all trees.Returns either the missing dependencies, or a tuple containing the resulting data, the associated dependencies, and the chosen flag assignments.In case of failure, the _smallest_ number of of missing dependencies is returned. [TODO: Could also be specified with a function argument.]LTODO: The current algorithm is rather naive. A better approach would be to:IRule out possible paths, by taking a look at the associated dependencies.Infer the required values for the conditions of these paths, and calculate the required domains for the variables used in these conditions. Then picking a flag assignment would be linear (I guess).iThis would require some sort of SAT solving, though, thus it's not implemented unless we really need it. &Flatten a CondTree. This will resolve the CondTree by taking all possible paths into account. Note that since branches represent exclusive choices this may not result in a "sane" result. 'mCombine the target-specific dependencies in a TargetSet to give the dependencies for the package as a whole. (\Collect up the targets in a TargetSet of tagged targets, storing the dependencies as we go.>Create a package description with all configurations resolved.This function takes a ; and several environment parameters and tries to generate 7G 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.hFlatten 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 ...).TODO: 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.+ ) * + , - . / ! 0 1 2 3 4 " 5 6 #(partial) variable assignment $ %3Domain for each flag name, will be tested in order.-OS as returned by Distribution.System.buildOS1Arch as returned by Distribution.System.buildArchCompiler informationAdditional constraintsDependency test function.}Either the missing dependencies (error case), or a pair of (set of build targets with dependencies, chosen flag assignments) 7 8 9 & ' : Input mapExtra constraints (%Explicitly specified flag assignmentsjIs a given dependency satisfiable from the set of available packages? If this is unknown then use True.The  and Compiler informationAdditional constraintshEither missing dependencies or the resolved package description along with the flag assignments chosen. ; < = > ? @ A B ) * + , - .  / ! 0 1 2 3 4 " 5 6 # $ % 7 8 9 & ' : ( ; < = > ? @ A BLennart Kolmodin 2008BSD3cabal-devel@haskell.orgportableNoneJA record of operations needed to check the contents of packages. Used by .-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.This package description is no good. There's no way it's going to build sensibly. This should give an error at configure time.A 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.$An issue that might not be a problem for the package author but might be annoying or detrimental 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.An 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.?Check for common mistakes and problems in package descriptions.This is the standard collection of checks covering all aspects except for checks that require looking at files within the package. For those see .It requires the I and optionally a particular configuration of that package. If you pass @ then we just check a version of the generic description using . C,Check that this package description is sane. D3Check that the package declares the version in the "cabal-version" field correctly. EA variation on the normal Text instance, shows any ()'s in the original textual syntax. We need to show these otherwise it's confusing to users when we complain of their presence but do not pretty print them! FACheck the build-depends fields for any weirdness or bad practise.Sanity check things that requires IO. It looks at the files in the package and expects to find the package unpacked in at the given file path.eSanity check things that requires looking at files in the package. This is a generalised version of 7 that can work in any monad for which you can provide  operations.zThe point of this extra generality is to allow doing checks in some virtual file system, for example a tarball in memory.Check the names of all files in a package for portability problems. This should be done for example when creating or validating a package tarball. G=Check a file name is valid for the portable POSIX tar format.vThe POSIX tar format has a restriction on the length of file names. It is unfortunately not a simple restriction like a maximum length. The exact restriction is that either the whole path be 100 characters or less, or it be possible to split the path on a directory separator such that the first part is 155 characters or less and the second part 100 characters or less.0 H I C J K L M N O P Q R S T U D E V F W X Y Z [ \ ] ^ G _ ` a b c( H I C J K L M N O P Q R S T U D E V F W X Y Z [ \ ] ^ G _ ` a b cIsaac Jones 2003-2005BSD3cabal-devel@haskell.orgportableNone+ dDependencies plus module renamings. This is what users specify; however, renaming information is not used for dependency resolution. esAn intermediate type just used for parsing the benchmark stanza. After validation it is converted into the proper   type. ftAn intermediate type just used for parsing the test-suite stanza. After validation it is converted into the proper  type. gStore any fields beginning with "x-" in the customFields field of a PackageDescription. All other fields will generate a warning. h`Given a parser and a filename, return the parse of the file, after checking if the file exists.Parse the given package file.Parses the given file into a .In Cabal 1.2 the syntax for package descriptions was changed to a format with sections and possibly indented property descriptions. iParse a list of fields, given a list of field descriptions, a structure to accumulate the parsed fields, and a function that can decide what to do with fields which don't match any of the field descriptions.J d j k l m n e o p q r s f t u v w x g y z { | } ~    h  i.descriptions of fields we know how to parse1possibly do something with unrecognized fields accumulatorfields to be parsed list of parseable fields1possibly do something with unrecognized fieldsaccumulated result and warningsthe field to be parsed   *+,-./018/01*+,-.8= d j k l m n e o p q r s f t u v w x g y z { | } ~    h  i   Jrgen Nicklisch-Franken 2010BSD3cabal-devel@haskell.org provisionalportableNone +Recompile with false for regression testing7Writes a .cabal file from a generic package description0Writes a generic package description to a string    None %NubListR : A right-biased version of  . That is +toNubListR ["-XNoFoo", "-XFoo", "-XNoFoo"] will result in ["-XFoo", "-XNoFoo"], unlike the normal ), which is left-biased. Built on top of $ and %.ANubList : A de-duplicated list that maintains the original order.'Smart constructor for the NubList type.7Lift a function over lists to a function over NubLists. 1Helper used by NubList/NubListR's Read instances.(Smart constructor for the NubListR type.8Lift a function over lists to a function over NubListRs. >Binary instance for 'NubList a' is the same as for '[a]'. For a6, we just pull off constructor and put the list. For `, we get the list and make a  out of it using . Monoid operations on NubLists. For a valid Monoid instance we need to satistfy the required monoid laws; identity, associativity and closure.'Identity : by inspection: mempty   NubList xs == NubList xs   mempty1Associativity : by inspection: (NubList xs   NubList ys)   NubList zs == NubList xs   (NubList ys   NubList zs)dClosure : appending two lists of type a and removing duplicates obviously does not change the type.         p(c) David Himmelstrup 2005, Bjorn Bringert 2007, Duncan Coutts 2008-2009cabal-devel@haskell.orgportableNone0")The default package index which contains B. Normally use this.>The collection of information about packages from one or more  PackageDB8s. These packages generally should have an instance of h-Packages are uniquely identified in by their tQ, they can also be efficiently looked up by package name or by name and version.EMap from fake installed package IDs to real ones. See Note [FakeMap]*Build an index out of a bunch of packages.If there are duplicates by t$ then later ones mask earlier ones.Merge two indexes.SPackages from the second mask packages from the first if they have the exact same t."For packages with the same source z, packages from the second are "preferred" over those from the first. Being preferred means they are top result when we do a lookup by source zM. This is the mechanism we use to prefer user packages over global packages.(Inserts a single package into the index.8This is equivalent to (but slightly quicker than) using   or  with a singleton index.2Removes a single installed package from the index.&Removes all packages with this source z from the index.DRemoves all packages with this (case-sensitive) name from the index.$Get all the packages from the index.$Get all the packages from the index.4They are grouped by package name (case-sensitively).$Get all the packages from the index.AThey are grouped by source package id (package name and version).4Does a lookup by source package id (name & version)..Since multiple package DBs mask each other by t(, then we get back at most one package.4Does a lookup by source package id (name & version).>There can be multiple installed packages with the same source z but different tK. They are returned in order of preference, with the most preferred first.Convenient alias of 0, but assuming only one package per package ID.%Does a lookup by source package name.=Does a lookup by source package name and a range of versions.oWe get back any number of versions of the specified package name, all satisfying the version range constraint./Does a case-insensitive search by package name.If there is only one package that compares case-insensitively to this name then the search is unambiguous and we get back all versions of that package. If several match case-insensitively but one matches exactly then it is also unambiguous. If however several match case-insensitively 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.9Does a case-insensitive substring search by package name.BThat is, all packages that contain the given string in their name.\Find 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. Variant of  which accepts a . See Note [FakeMap].HAll packages that have immediate dependencies that are not in the index.GReturns such packages along with the dependencies that they're missing. Variant of  which accepts a . See Note [FakeMap]. Variant of  which accepts a . See Note [FakeMap].ATries to take the transitive closure of the package dependencies.If the transitive closure is complete then it returns that subset of the index. Otherwise it returns the broken packages as in .Note that if the result is Right []3 it is because at least one of the original given zs do not occur in the index. Variant of  which accepts a . See Note [FakeMap].BTakes the transitive closure of the packages reverse dependencies. The given zs must be in the index. Variant of  which accepts a . See Note [FakeMap].+Builds 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 . Variant of  which accepts a . See Note [FakeMap].LGiven a package index where we assume we want to use all the packages (use  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. Variant of  which accepts a . See Note [FakeMap].  Variant of j which accepts a . See Note [FakeMap].6A rough approximation of GHC's module finder, takes a d and turns it into a map from module names to their source packages. It's used to initialize the  build-deps field in  cabal init.-    '')    ]Safe   Duncan Coutts 2013cabal-devel@haskell.orgportableNoneA specific dirThe system defaultOA search path to use when locating executables. This is analogous to the unix $PATH or win32 %PATH%Q but with the ability to use the system default method for finding executables ( ) which on unix is simply looking on the $PATH* but on win32 is a bit more complicated).The default to use is [ProgSearchPathDefault] but you can add extra dirs either before, after or instead of the default, e.g. here we add an extra dir to search after the usual ones. 8['ProgramSearchPathDefault', 'ProgramSearchPathDir' dir] Interpret a  to construct a new $PATHx env var. Note that this is close but not perfect because on Windows the search algorithm looks at more than just the %PATH%.)Isaac Jones 2006, Duncan Coutts 2007-2009cabal-devel@haskell.orgportableNone0Where a program was found. Also tells us whether it's specified by user or not. This includes not just the path, but the program as well.HThe user gave the path to this program, eg. --ghc-path=/usr/bin/ghc-6.6$The program was found automatically. KRepresents a program which has been configured and is thus ready to be run.(These are usually made by configuring a =, but if you have to construct one directly then start with  and override any extra fields. Just the name again ,The version of this program, if it is known. Default command-line args for this program. These flags will appear first on the command line, so they can be overridden by subsequent flags.Override command-line args for this program. These flags will appear last on the command line, so they override all earlier flags.Override environment variables for this program. These env vars will extend/override the prevailing environment of the current to form the environment for the new process.A key-value map listing various properties of the program, useful for feature detection. Populated during the configuration step, key names depend on the specific program.Location of the program. eg. /usr/bin/ghc-6.4-Represents a program which can be configured.9Note: rather than constructing this directly, start with  and override any extra fields.'The simple name of the program, eg. ghczA function to search for the program if its location was not specified by the user. Usually this will just be a call to .It is supplied with the prevailing search path which will typically just be used as-is, but can be extended or ignored as needed.Try 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.A function to do any additional configuration after we have located the program (and perhaps identified its version). For example it could add args, or environment vars.&The full path of a configured program./Suppress any extra arguments added by the user.Make 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: JsimpleProgram "foo" { programFindLocation = ... , programFindVersion ... }Make a simple  . 2simpleConfiguredProgram "foo" (FoundOnSystem path)                       Duncan Coutts 2009cabal-devel@haskell.orgportableNone 7Represents a specific invocation of a specific program.This is used as an intermediate type between deciding how to call a program and actually doing it. This provides the opportunity to the caller to adjust how the program will be called. These invocations can either be run directly or turned into shell or batch scripts..AReturn the current environment extended with the given overrides./Like 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.It takes four template invocations corresponding to the simple, initial, middle and last invocations. If the number of args given is small enough that we can get away with just a single invocation then the simple one is used:  $ simple argsIf the number of args given means that we need to use multiple invocations then the templates for the initial, middle and last invocations are used: I$ initial args_0 $ middle args_1 $ middle args_2 ... $ final args_n !"#$%&'()*+,-./  !"#$%&'()*+,-./ !"#$%&'()*+/,-.  !"#$%&'()*+,-./ Duncan Coutts 2009, 2013cabal-devel@haskell.orgportableNone06Information about the features and capabilities of an hc-pkg program.3no package DB stack supported4'hc-pkg does not support verbosity flags5-use package-conf option instead of package-db6%requires single file package database7Call hc-pkg9 to initialise a package database at the location {path}. hc-pkg init {path}8Run hc-pkg` using a given package DB stack, directly forwarding the provided command-line arguments to it.9Call hc-pkg to register a package. Ahc-pkg register {filename | -} [--user | --global | --package-db]:Call hc-pkg to re-register a package. Ahc-pkg register {filename | -} [--user | --global | --package-db];Call hc-pkg to unregister a package <hc-pkg unregister [pkgid] [--user | --global | --package-db]<Call hc-pkg to expose a package. 8hc-pkg expose [pkgid] [--user | --global | --package-db]=Call hc-pkg to hide a package. 6hc-pkg hide [pkgid] [--user | --global | --package-db]>Call hc-pkgK to get all the details of all the packages in the given package database.?Call hc-pkgQ to get the source package Id of all the packages in the given package database.(This is much less information than with >L, but also rather quicker. Note in particular that it does not include the t, just the source z3 which is not necessarily unique in any package db.0123456789:;<=> ?@AB CDEFG 0123456789:;<=>?@ABCDEFG0123456789:;<=>?@ABCDEFG0123456789:;<=> ?@AB CDEFG !Duncan Coutts 2009cabal-devel@haskell.orgportableNoneHCall ld -r* to link a bunch of object files together.HHHH"Thomas Tuegel 2011cabal-devel@haskell.orgportableNoneI%Invoke hpc with the given parameters.TPrior to HPC version 0.7 (packaged with GHC 7.8), hpc did not handle multiple .mix paths correctly, so we print a warning, and only pass it the first path in the list. This means that e.g. test suites that import their library as a dependency can still work, but those that include the library modules directly (in other-modules) don't.IPath to .tix filePaths to .mix file directories(Path where html output should be located&List of modules to exclude from report Path to .tix filePaths to .mix file directories)Path where html output should be located'List of modules to exclude from reportJPaths to .tix filesPath to resultant .tix file%List of modules to exclude from union Paths to .tix filesPath to resultant .tix file%List of modules to exclude from unionIJIJI J #Duncan Coutts 2009cabal-devel@haskell.orgportableNoneKoGenerate a system script, either POSIX shell script or Windows batch file as appropriate for the given system.L5Generate a POSIX shell script that invokes a program.M5Generate a Windows batch file that invokes a program.KLMKLMKLMKLM$)Isaac Jones 2006, Duncan Coutts 2007-2009cabal-devel@haskell.orgportableNoneNUThe default list of programs. These programs are typically used internally to Cabal.NOPQRSTUVWXYZ[\]^_`abcdefghiNOPQRSTUVWXYZ[\]^_`abcdefghiNOPQRSTUVYZW]^_[\`abcdefghiXNOPQRSTUVWXYZ[\]^_`abcdefghi%)Isaac Jones 2006, Duncan Coutts 2007-2009cabal-devel@haskell.orgportableNone0jThe 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 C but also any user-provided arguments and location for the program.m>The Read/Show instance does not preserve all the unconfigured Programs because X is not in Read/Show because it contains functions. So to fully restore a deserialised j. use this function to add back all the known s.IIt does not add the default programs, but you probably want them, use N) in addition to any extra you might need.n/Add a known program that we may configure laterrGet the current  used by the j. This is the default list of locations where programs are looked for when configuring them. This can be overridden for specific programs (with uf), and specific known programs can modify or ignore this search path in their own configuration code.sChange the current  used by the j}. This will affect programs that are configured from here on, so you should usually set it before configuring any programs.tModify the current  used by the j. This will affect programs that are configured from here on, so you should usually modify it before configuring any programs.uUser-specify this path. Basically override any path information for this program in the configuration. If it's not a known program ignore it.wUser-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..xLike u) but for a list of progs and their paths.yLike u( but for a list of progs and their args. FGet the path that has been previously specified for a program, if any.zEGet any extra args that have been previously specified for a program.{ Try to find a configured program|,Update a configured program in the database.}List all configured programs.~Try to configure a specific program. If the program is already included in the collection of unconfigured programs then we use any user-supplied location and arguments. If the program gets configured successfully 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 successfully configured use . $Configure a bunch of programs using ~ . Just a  .JTry to configure all the known programs that have not yet been configured.\reconfigure a bunch of programs given new user-specified args. It takes the same inputs as u and w- and for all progs with a new path it calls ~.;Check that a program is configured and available to be run.lIt raises an exception if the program could not be configured, otherwise it returns the configured program.;Check that a program is configured and available to be run.mAdditionally check that the program version number is suitable and return it. For example you could require  AnyVersion or orLaterVersion ( [1,0] [])NIt returns the configured program, its version number and a possibly updated jb. If the program could not be configured or the version is unsuitable, it returns an error value.Like O, but raises an exception in case of error instead of returning 'Left errMsg'.( j kl mnopqrstu Program name"user-specified path to the programvw Program nameuser-specified argsxy z{|}~  jklmnopqrstuvwxyz{|}~jklmnopqrstuxvwyz{|}~$ j kl mnopqrstuvwxy z{|}~  &)Isaac Jones 2006, Duncan Coutts 2007-2009cabal-devel@haskell.orgportableNone"Runs the given configured program.6Runs the given configured program and gets the output.?Looks up the given program in the program database and runs it.?Looks up the given program in the program database and runs it.  VerbosityThe program to runAny extra arguments to add VerbosityThe program to runAny extra arguments to add verbosityThe program to runlook up the program hereAny extra arguments to add verbosityThe program to runlook up the program hereAny extra arguments to addf      !"#$%&'()*+,-NOPQRSTUVWX[\]^_`abcdefghinopqrsuvwxyz{|~g      !"#$%&'()*+,-Nnopqrsuxvwyz{|~OPQRSTUVW]^_[\`abcdefghiX '8Isaac Jones 2003-2004 Duncan Coutts 2007BSD3cabal-devel@haskell.orgportableNone02 Flags to register and  unregister2: (user package, gen-script, in-place, verbosity) Flags to sdist: (snapshot, verbosity) Flags to install: (package db, verbosity) Flags to copy6: (destdir, copy-prefix (backwards compat), verbosity) Flags to  configure command All programs that cabal may runuser specified programs pathsuser specified programs argsExtend the $PATH3The "flavor" of the compiler, such as GHC or JHC.given compiler locationgiven hc-pkg locationEnable vanilla libraryEnable profiling in the libraryBuild shared library+Enable dynamic linking of the executables.%Enable profiling in the executables.Extra arguments to  configureEnable optimization.Installed executable prefix.Installed executable suffix.Installation paths"path to search for extra librariespath to search for header files "dist" prefixverbosity levelThe --user/--global flagWhich package DBs to use!Enable compiling library for GHCi Enable -split-objs with GHC Enable executable stripping Enable library stripping )Additional constraints for dependencies.The packages depended on.Enable test suite compilationEnable benchmark compilationEnable program coverage$Enable program coverage (deprecated)XAll direct dependencies and flags are provided on the command line by the user via the '--dependency' and  '--flags' options.EHalt and show an error message indicating an error in flag assignment Enable relocatable package builtEmit debug info.:Flags that apply at the top level, not to any sub-command.1All flags are monoids, they come in two flavours:  list flags eg !--ghc-option=foo --ghc-option=bar&gives us all the values ["foo", "bar"] singular value flags, eg: --enable-foo --disable-foogives 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 ' and later flags override earlier ones. For each known program PROG in progConf , produce a  with-PROG }.TLike  *, but allows to customise the option name. For each known program PROG in progConf , produce a  PROG-option }.UFor each known program PROG in progConf , produce a  PROG-options }.\Arguments to pass to a  configure script, e.g. generated by autoconf. pHelper function to split a string into a list of arguments. It's supposed to handle quoted things sensibly, eg: \splitArgs "--foo=\"C:\Program Files\Bar\" --baz" = ["--foo=C:\Program Files\Bar", "--baz"]      !"#$ %&'()*+,- ./0123456789:;<=>?@ABCDEFGHIJKLM NOPQRS T UVWXY Z[\]^         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^'%&     /)*(,-201534C@A=>?KHIGLMFDE<9:;867PNOSQR\+]^JB.UT !"#$VWXYZ[o)      !"#$ %&'()*+,- ./0123456789:;<=>?@ABCDEFGHIJKLM NOPQRS T UVWXY Z[\]^   (Martin Sj&#xF6;gren 2004BSD3cabal-devel@haskell.orgportableNone _`a      3QRSTUVWXYZ[\]^_`hijklmnopqrstuvwxyz{|}~_`aQRSTUVWXYZ[\]^_`_`a _`a      )None5c -staticd -dynamice -static -dynamic-toog -O0h -Oi -O2je.g. -Odphl ghc -cm ghcn  ghc --makeoghci / ghc --interactivepghc --abi-hash( | GhcModeDepAnalysis -- ^ ghc -M( | GhcModeEvaluate -- ^ ghc -eq%A structured set of GHC options/flagss&The major mode for the ghc invocation.t_Any extra options to pass directly to ghc. These go at the end and hence override other stuff.upExtra default flags to pass directly to ghc. These go at the beginning and so can be overridden by other stuff.vCThe main input files; could be .hs, .hi, .c, .o, depending on mode.w/The names of input Haskell modules, mainly for --make mode.xLocation for output file; the ghc -o flag.y$Location for dynamic output file in e mode; the  ghc -dyno flag.z?Start with an empty search path for Haskell source files; the ghc -i flag (-i$ on it's own with no path argument).{*Search path for Haskell source files; the ghc -i flag.|0The package key the modules will belong to; the ghc -this-package-key flag.}"GHC package databases to use, the ghc -package-conf flag.~The GHC packages to use. For compatability with old and new ghc, this requires both the short and long form of the package id; the  ghc -package or ghc -package-id flags.$Start with a clean package set; the ghc -hide-all-packages flag/Don't automatically link in Haskell98 etc; the ghc -no-auto-link-packages flag.-What packages are implementing the signatures#Names of libraries to link in; the ghc -l flag.*Search path for libraries to link in; the ghc -L flag.+Options to pass through to the linker; the  ghc -optl flag.%OSX only: frameworks to link in; the ghc -framework flag.1Don't do the link step, useful in make mode; the  ghc -no-link flag.Don't link in the normal RTS main entry point; the ghc -no-hs-main flag./Options to pass through to the C compiler; the  ghc -optc flag.$Options to pass through to CPP; the  ghc -optP flag.4Search path for CPP includes like header files; the ghc -I flag.0Extra header files to include at CPP stage; the ghc -optP-include flag.5Extra header files to include for old-style FFI; the  ghc -#include flag.The base language; the ghc -XHaskell98 or  -XHaskell2010 flag.The language extensions; the ghc -X flag.hA GHC version-dependent mapping of extensions to flags. This must be set to be able to make use of the .$What optimisation level to use; the ghc -O flag.Emit debug info; the ghc -g flag.Compile in profiling mode; the  ghc -prof flag.*Use the "split object files" feature; the ghc -split-objs flag.(Run N jobs simultaneously (if possible).Enable coverage analysis; the ghc -fhpc -hpcdir flags. Extra GHCi startup scripts; the  -ghci-script flagonly in e modeonly in e mode9Get GHC to be quiet or verbose with what it's doing; the ghc -v flag.ZLet GHC know that it is Cabal that's calling it. Modifies some of the GHC error messages.Jbcdefghijklmnopqrstuvwxyz{|}~   Gbcdefghijklmnopqrstuvwxyz{|}~Gqrstuvwxyz{|}~klmnopfghijbcde bcdefghijklmnopq4rstuvwxyz{|}~   *Isaac Jones 2003-2004BSD3cabal-devel@haskell.orgportableNone0&MResolved internal and external package dependencies for this component. The  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.1Data cached after configuration step. See also .dOptions passed to the configuration step. Needed to re-run configuration when .cabal is out of dateuExtra args on the command line for the configuration step. Needed to re-run configuration when .cabal is out of datexThe installation directories for the various different kinds of files TODO: inplaceDirTemplates :: InstallDirs FilePath The compiler we're building withThe platform we're building forWhere to build the package.}All the components to build, ordered by topological sort, and with their dependencies over the intrapackage dependency graphhAll the info about the installed packages that the current package depends on (directly or indirectly).5the filename containing the .cabal file, if availableJThe resolved package description, that does not contain any conditionals.`The package key for the current build, calculated from the package ID and the dependency graph."Location and args for all programs)What package database to use, global/userWhether to build normal libs.,Whether to build profiling versions of libs.)Whether to build shared versions of libs.'Whether to link executables dynamically+Whether to build executables for profiling.2Whether to build with optimization (if available).*Whether to emit debug info (if available).1Whether to build libs suitable for use with GHCi.&Use -split-objs with GHC, if available+Whether to strip executables during install)Whether to strip libraries during install/Prefix to be prepended to installed executables.Suffix to be appended to installed executables_External package dependencies for the package as a whole. This is the union of the individual , less any internal deps.The installed package Id we use for local packages registered in the local package db. This is what is used for intra-package deps between components.?All the components in the package (libs, exes, or test suites).All the components in the package that are buildable and enabled. Thus this excludes non-buildable components and test suites or benchmarks that have been disabled.If the package description has a library section, call the given function with the library build info as argument. Extended version of ]* that also gives corresponding build info.%Perform the action on each buildable 3 in the package description. Extended version of a+ that also gives corresponding build info.%Perform the action on each buildable ' or V (Component) in the PackageDescription, subject to the build order specified by the compBuildOrder field of the given |Determine the directories containing the dynamic libraries of the transitive dependencies of the component we are building.EWhen wanted, and possible, returns paths relative to the installDirs See See UBuilding for inplace?&Generate prefix-relative library pathsComponent that is being built    |}~W$    +9Isaac Jones 2003-2004, Duncan Coutts 2008BSD3cabal-devel@haskell.orgportableNone4The directory in which we put auto-generated modules?The name of the auto-generated module associated with a package+Extension for executable files (typically "" on Unix and "exe" on Windows or OS/2)5Extension for object files. For GHC the extension is "o".CExtension for dynamically linked (or shared) libraries (typically "so" on Unix and "dll" on Windows)  ,bIsaac Jones 2003-2005, Ross Paterson 2006, Duncan Coutts 2007-2008cabal-devel@haskell.orgportableNone[Generates the name of the environment variable controlling the path component of interest.Tpath component; one of "bindir", "libdir", "datadir", "libexecdir", or "sysconfdir"environment variable name      -(c) Duncan Coutts 2012BSD-likeduncan@community.haskell.orgNone A matcher embodies a way to match some input as being some recognised value. In particular it deals with multiple and ambigious matches.&There are various matcher primitives ( matchExactly,  ), ways to combine matchers ( ambigiousWith, shadows;) and finally we can run a matcher against an input using  . expected thing(actually got) (no such thing, actually got)A fully resolved build target.A specific component.A specific module within a specific component.,A specific file within a specific component.4Various ways that a user may specify a build target. OA target specified by a single name. This could be a component module or file. Jcabal build foo cabal build Data.Foo cabal build Data/Foo.hs Data/Foo.hsc A target specified by a qualifier and name. This could be a component name qualified by the component namespace kind, or a module or file qualified by the component name. Pcabal build lib:foo exe:foo cabal build foo:Data.Foo cabal build foo:Data/Foo.hsRGiven a bunch of user-specified targets, try to resolve what it is they refer to. Combine two matchers. Exact matches are used over inexact matches but if we have multiple exact, or inexact then the we collect all the ambigious matches. )Combine two matchers. This is similar to  ambigiousWith with the difference that an exact match from the left matcher shadows any exact match on the right. Inexact matches are still collected however. )Lift a list of matches to an exact match. )Lift a list of matches to an exact match. fGiven a matcher and a key to look up, use the matcher to find all the possible matches. There may be  ! , a single  " match or you may have an  #" match with several possibilities. 6A primitive matcher that looks up a value in a finite Map. It checks for an exact or inexact match. We get an inexact match if the match is not exact, but the canonical forms match. It takes a canonicalisation function for this purpose.So for example if we used string case fold as the canonicalisation function, then we would get case insensitive matching (but it will still report an exact match when the case matches too).s $ ! " # % & ' (  ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = >        ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i   j k l m n o p q r s  t   u v w x y z          R $ ! " # % & ' (  ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = >        ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i   j k l m n o p q r s  t   u v w x y z.None /Logs test suite results, itemized by test case.$\Logs all test results for a package, broken down first by test suite and then by test case.*A $1 with package and platform information specified.+<Count the number of pass, fail, and error test results in a  tree.,From a %, determine if the test suite passed.-From a %, determine if the test suite failed..From a 1, determine if the test suite encountered errors.0Print a summary to the console after all test suites have been run indicating the number of successful test suites and cases. Returns  { if all test suites passed and  | otherwise.1~Print a summary of a single test case's result to the console, supressing output for certain verbosity or test filter levels.2|Print a summary of the test suite's results on the console, suppressing output for certain verbosity or test filter levels. !"#$%&'()*+)Passes, fails, and errors, respectively.,-. }/test suite nametest suite results0123 !"#$%&'()*+,-./0123$%&'() !"#+*0231.-,/ !"#$%&'()*+,-. }/0123/Isaac Jones 2003-2006BSD3cabal-devel@haskell.orgportableNone ~&The flags for the supported extensions6HBuilding a package for JHC. Currently C source files are not supported.7LBuilding an executable for JHC. Currently C source files are not supported. 4  ~567 89456789456789 4  ~567 890Isaac Jones 2003-2007BSD3cabal-devel@haskell.orgportableNone /Adjust the way we find and configure gcc and ld :Get the packages from specific PackageDBs, not cumulative.<Build a library with LHC.=Build an executable with LHC. YFilter the "-threaded" flag when profiling as it does not work with ghc-6.8 and older.@Install executables for GHC.A6Install for ghc, .hi, .a and, if --with-ghci given, .o: ; <= >? @Where to copy the files toBuild locationExecutable (prefix,suffix) Ainstall location&install location for dynamic librariesBuild locationBC :;<=>?@ABC :;<=A@BC?>: ; <= >? @ ABC1Andres Loeh 2009BSD3cabal-devel@haskell.orgportableNone 'The flags for the supported extensions. lHack to add version numbers to UHC-built-in packages. This should sooner or later be fixed on the UHC side. *Name of the installed package config file. Check if a certain dir contains a valid package. Currently, we are looking only for the presence of an installed package configuration. TODO: Actually make use of the information provided in the file. 4Create a trivial package info from a directory name.D E FG H IDEFGHIDEFGHID E FG H I2None JKLMNOPQRinstall location&install location for dynamic librariesBuild locationSTU JKLMNOPQRSTU JKLMNOPQRSTU JKLMNOPQRSTU^Isaac Jones 2003-2007cabal-devel@haskell.orgportableNone /Adjust the way we find and configure gcc and ld IFor GHC 6.6.x and earlier, the mapping from supported extensions to flags .Strip out flags that are not supported in ghci   3Thomas Tuegel 2011BSD3cabal-devel@haskell.orgportableNone\?Path to the .tix file containing a test suite's sum statistics.^Attempt to guess the way the test suites in this package were compiled and linked with the library so the correct module interfaces are found._*Generate the HTML markup for a test suite.`<Generate the HTML markup for all of a package's test suites. VWXY "dist/" prefix/Directory containing component's HPC .mix filesZ"dist/" prefixComponent name,Directory containing test suite's .mix files["dist/" prefixComponent name,Directory containing test suite's .tix files\"dist/" prefixComponent namePath to test suite's .tix file]"dist/" prefixComponent name*Path to test suite's HTML markup directory^_"dist/" prefix Library name`"dist/" prefix Library name VWXYZ[\]^_` VWXY^]Z[\`_ VWXY Z[\]^_`4cabal-devel@haskell.orgportableNone ababba ab5Duncan Coutts 2009cabal-devel@haskell.orgportableNonecCall ar: to create a library archive from a bunch of object files. ar by default includes various metadata for each object file in their respective headers, so the output can differ for the same inputs, making it difficult to avoid re-linking. GNU ar(1) has a deterministic mode (-Dr) flag that always writes zero for the mtime, UID and GID, and 0644 for the file mode. However detecting whether -DJ is supported seems rather harder than just re-implementing this feature.c /cc/c 6Isaac Jones 2003-2007BSD3cabal-devel@haskell.orgportableNone Given something like usrlocalbinghc-6.6.1(.exe) we try and find the corresponding tool; e.g. if the tool is ghc-pkg, we try looking for a versioned or unversioned ghc-pkg in the same dir, that is: f/usr/local/bin/ghc-pkg-ghc-6.6.1(.exe) /usr/local/bin/ghc-pkg-6.6.1(.exe) /usr/local/bin/ghc-pkg(.exe) Given something like usrlocalbinghc-6.6.1(.exe) we try and find a corresponding ghc-pkg, we try looking for both a versioned and unversioned ghc-pkg in the same dir, that is: f/usr/local/bin/ghc-pkg-ghc-6.6.1(.exe) /usr/local/bin/ghc-pkg-6.6.1(.exe) /usr/local/bin/ghc-pkg(.exe) Given something like usrlocalbinghc-6.6.1(.exe) we try and find a corresponding hsc2hs, we try looking for both a versioned and unversioned hsc2hs in the same dir, that is: c/usr/local/bin/hsc2hs-ghc-6.6.1(.exe) /usr/local/bin/hsc2hs-6.6.1(.exe) /usr/local/bin/hsc2hs(.exe)f9Given a single package DB, return all installed packages.g8Given a package DB stack, return all installed packages. Given a list of !(PackageDB, InstalledPackageInfo) pairs, produce a  PackageIndex. Helper function used by f and g.i Return the "$ to the global GHC package database. :Get the packages from specific PackageDBs, not cumulative.jBuild a library with GHC.kBuild a library with GHC.l.Start a REPL without loading any source files.mBuild an executable with GHC.nBuild an executable with GHC. 7Calculate the RPATHs for the component we are building. Calculates relative RPATHs when  is set. YFilter the "-threaded" flag when profiling as it does not work with ghc-6.8 and older.oyExtracts a String representing a hash of the ABI of a built library. It can fail if the library has not yet been built.qInstall executables for GHC.r6Install for ghc, .hi, .a and, if --with-ghci given, .o!d efg h i jk lmn Component we are building opqWhere to copy the files toBuild locationExecutable (prefix,suffix)rinstall location&install location for dynamic librariesBuild locationstuv defghijklmnopqrstuvedgfjmknlrqostphviu!d efg h i jk lmn opqrstuv 7Nonex9Given a single package DB, return all installed packages.y8Given a package DB stack, return all installed packages.{ Return the "$ to the global GHC package database.~.Start a REPL without loading any source files.6Install for ghc, .hi, .a and, if --with-ghci given, .oGet the JavaScript file name and command and arguments to run a program compiled by GHCJS the exe should be the base program name without exe extension&w xy z { |} ~ install location&install location for dynamic librariesBuild locationWhere to copy the files toBuild locationExecutable (prefix,suffix)   wxyz{|}~wyx|}~z{&w xy z { |} ~    8Isaac Jones 2003-2004BSD3cabal-devel@haskell.orgportableNone5Create an empty package DB at the specified location.Run hc-pkg` using a given package DB stack, directly forwarding the provided command-line arguments to it. Construct BF for a library in a package, given a set of installation directories. Construct B3 for a library that is in place in the build tree.:This function knows about the layout of in place packages. Construct B6 for the final install location of a library package.;This function knows about the layout of installed packages.(Install in the user's database?; verbose   8Translate relative include dir paths to absolute paths.top of the build treelocation of the dist tree        9Isaac Jones 2003-2004BSD3cabal-devel@haskell.orgportableNone Perform the "./setup install" and " ./setup copy@" actions. Move files into place based on the prefix argument. &Install the files listed in data-files ,Install the files listed in install-includes information from the .cabal file#information from the configure stepflags sent to copy or install  :Simon Marlow 2008cabal-devel@haskell.orgportableNoneThe contents of the cabal_macros.h" for the given configured package.(Helper function that generates just the  VERSION_pkg and MIN_VERSION_pkgb macros for a list of package ids (usually used with the specific deps of a configured package). (Helper function that generates just the TOOL_VERSION_pkg and MIN_TOOL_VERSION_pkg* macros for a list of configured programs. Common implementation of  and  .  Generate the Cabal_FZ8J6vrHaPAEUl9Sj0iJgIW definition for the package key of the current package, if supported by the compiler  ;Safe <None:The name of the stub executable associated with a library  TestSuite.SThe filename of the source file for the stub executable associated with a library  TestSuite.$Write the source file for a library  TestSuite stub executable.2Source code for library test suite stub executableMain function for test stubs. Once, it was written directly into the stub, but minimizing the amount of code actually in the stub maximizes the number of detectable errors when Cabal is compiled.  The test runner used in library  TestSuite$ stub executables. Runs a list of gs. An executable calling this function is meant to be invoked as the child of a Cabal process during  ./setup test. A  , provided by Cabal, is read from the standard input; it supplies the name of the test suite and the location of the machine-readable test suite log file. Human-readable log information is written to the standard output for capture by the calling Cabal process.From a test stub, write the : to temporary file for the calling Cabal process to read.  library  TestSuite# for which a stub is being created6path to directory where stub source should be located    =+(c) 2003-2005, Isaac Jones, Malcolm WallaceBSD3cabal-devel@haskell.orgportableNonegA preprocessor for turning non-Haskell files with the given extension into plain Haskell source files.The 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: tppTestHandler :: 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 generated 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 generated 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.(Apply preprocessors to the sources from 2 for a given component (lib, exe, or test suite). QFind the first extension of the file that exists, and preprocess it if required.>Convenience function; get the suffixes of these preprocessors.GStandard preprocessors: GreenCard, c2hs, hsc2hs, happy, alex and cpphs. source directoriesbuild directorypreprocess for sdistmodule file name verbositybuiltin suffixespossible preprocessors       >Isaac Jones 2003-2005BSD3cabal-devel@haskell.orgportableNone-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. Used for  ./setup testRead the description file3Custom preprocessors in addition to and overriding knownSuffixHandlers.gThese programs are detected at configure time. Arguments for them are added to the configure command.$Hook to run before configure command?Over-ride this hook to get different behavior during configure.#Hook to run after configure commandHHook to run before build command. Second arg indicates verbosity level.;Over-ride this hook to get different behavior during build.GHook to run after build command. Second arg indicates verbosity level.GHook to run before repl command. Second arg indicates verbosity level.DOver-ride this hook to get different behavior during interpretation.FHook to run after repl command. Second arg indicates verbosity level.HHook to run before clean command. Second arg indicates verbosity level.;Over-ride this hook to get different behavior during clean.GHook to run after clean command. Second arg indicates verbosity level.Hook to run before copy command:Over-ride this hook to get different behavior during copy.Hook to run after copy command"Hook to run before install command=Over-ride this hook to get different behavior during install.dHook to run after install command. postInst should be run on the target, not on the build machine.HHook to run before sdist command. Second arg indicates verbosity level.;Over-ride this hook to get different behavior during sdist.GHook to run after sdist command. Second arg indicates verbosity level.#Hook to run before register commandBOver-ride this hook to get different behavior during registration."Hook to run after register command%Hook to run before unregister commandDOver-ride this hook to get different behavior during unregistration.$Hook to run after unregister commandKHook to run before hscolour command. Second arg indicates verbosity level.>Over-ride this hook to get different behavior during hscolour.JHook to run after hscolour command. Second arg indicates verbosity level.JHook to run before haddock command. Second arg indicates verbosity level.=Over-ride this hook to get different behavior during haddock.IHook to run after haddock command. Second arg indicates verbosity level. Hook to run before test command.:Over-ride this hook to get different behavior during test.Hook to run after test command.!Hook to run before bench command.;Over-ride this hook to get different behavior during bench. Hook to run after bench command.Empty  which do nothing.///,?Johan Tibell 2011BSD3cabal-devel@haskell.orgportableNone Perform the " ./setup bench " action.!positional command-line arguments information from the .cabal file#information from the configure stepflags sent to benchmark  @Simon Marlow 2004BSD3cabal-devel@haskell.orgportableNone #Callback type for use by sdistWith.Create a source distribution.List all source files of a package. Returns a tuple of lists: first component is a list of ordinary files, second one is a list of those files that may be executable. KList those source files that may be executable (e.g. the configure script). HList those source files that should be copied with ordinary permissions.)Prepare a directory tree of source files. )Find the setup script file, if it exists. KCreate a default setup script in the target directory, if it doesn't exist. Find the main executable file. CGiven a list of include paths, try to find the include file named f]. Return the name of the file and the full path, or exit with error if there's no such file. "Remove the auto-generated module ( 'Paths_*') from 'exposed-modules' and 'other-modules'.Prepare 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  or . Modifies a 7A by appending a snapshot number corresponding to the given date. Modifies a A by appending a snapshot number corresponding to the given date.WGiven a date produce a corresponding integer representation. For example given a date 18032008 produce the number 20080318.ECreate an archive from a tree of source files, and clean up the tree. 8Given a buildinfo, return the names of all source files. )The name of the tarball without extension  verbosityinfo from cabal fileinfo from configuresource tree to archivename of archive to createinformation from the tarballInformation from configureverbosity & snapshotbuild prefix (temp dir)'extra preprocessors (includes suffixes) verbosityinfo from the cabal file'extra preprocessors (include suffixes)  verbosityinfo from the cabal filesource tree to populate'extra preprocessors (includes suffixes)  verbosityinfo from the cabal filesource tree to populate(extra preprocessors (includes suffixes)  verbosityinfo from the cabal file source tree Extra preprocessorsExposed modules        AIsaac Jones 2003-2005BSD3cabal-devel@haskell.orgportableNone+Try to read the . Read the . Throw an exception if the file is missing, if the file cannot be read, or if the file was created by an older version of Cabal.Try to read the .$After running configure, output the  to the .MCheck that localBuildInfoFile is up-to-date with respect to the .cabal file. dist/setup-config Perform the "./setup configure" action. Returns the  .setup-config file. GTest for a package dependency and record the version we have installed.Like , but for a single package DB.KThe user interface specifies the package dbs to use with a combination of --global, --user and $--package-db=global|user|clear|$filer. This function combines the global/user flag and interprets the package-db flag into a single package db stack.Makes a " 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)) Given the author-specified re-export declarations from the .cabal file, resolve them to the form that we need for the package database.An invariant of the package database is that we always link the re-export directly to its original defining location (rather than indirectly via a chain of re-exporting packages). =Output package check warnings and errors. Exit if any errors. 0Preform checks if a relocatable build is allowed8      Internally defined packagesInstalled packages:Packages for which we have been given specific deps to use     installed packages       /                  BhIsaac Jones 2003-2005, Ross Paterson 2006, Duncan Coutts 2007-2008, 2012BSD3cabal-devel@haskell.orgportableNone4Build the libraries and executables in this package.7Start an interpreter without loading any package files. Translate a exe-style # component into an exe for building Translate a lib-style ( component into a lib + exe for building Translate a exe-style  # component into an exe for building RInitialize a new package db file for libraries defined internally to the package.!Generate and write out the Paths_ pkg.hs and cabal_macros.h files DCheck that the given build targets are valid in the current context.)Also swizzle into a more convenient form.'Mostly information from the .cabal fileConfiguration information#Flags that the user passed to build%preprocessors to run before compiling'Mostly information from the .cabal fileConfiguration information#Flags that the user passed to build%preprocessors to run before compiling            "dist" prefix'mostly information from the .cabal fileConfiguration informationThe verbosity to use             CIsaac Jones 2003-2005BSD3cabal-devel@haskell.orgportableNone 3The FilePath of a directory, it's a monoid under '( /)'. !TA record that represents the arguments to the haddock executable, a product monoid. "?Path to the interface file, relative to argOutputDir, required. #Package name, required. $!(Hide modules ?, modules to hide) %Ignore export lists in modules? &A(Template for modules, template for symbols, template for lines). 'Optional custom CSS file. (Optional URL to contents page. )%HTML or Hoogle doc or both? Required. * 0(Interface file, URL to the HTML docs for links). +$Where to generate the documentation. ,Page title, required. -Prologue text, required. . Additional flags to pass to GHC. /"To find the correct GHC, required. 0Modules to process. 1*Call haddock with the specified arguments.Given a list of Bps, return a list of interfaces and HTML paths, and an optional warning for packages with missing documentation. 2:The directory where we put build results for an executable3 3 4 5 6 7 8 ! 9 " # $ % & ' ( : ) * + , - . / 0 ; < = > ?template for HTML location @template for HTML location A Btemplate for HTML location C D 1 E F G H ICalled when the  exe is not found. J K L M 2 N O 3 4 5 6  7 8 ! 9 " # $ % & ' ( : ) * + , - . / 0 ; < = > ? @ A B C D 1 E F G H I J K L M 2 N ODNone P   PEThomas Tuegel 2010BSD3cabal-devel@haskell.orgportableNone  Perform the " ./setup test " action. !positional command-line arguments information from the .cabal file#information from the configure stepflags sent to test Q   QFIsaac Jones 2003-2005BSD3cabal-devel@haskell.orgportableNone 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.  A version of  [ that is passed the command line arguments, rather than getting them from the environment. A customizable version of  .A customizable version of  - that also takes the command line arguments.Like  P, but accepts the package description as input rather than using IO to read it. RVCombine the preprocessors in the given hooks with the preprocessors built into cabal.LHooks that correspond to a plain instantiation of the "simple" build systemBasic autoconf : runs  ./configure , if present.the pre-hooks , , , ,  and + read additional build information from package .buildinfo , if present.Thus  configure/ can use local system information to generate package .buildinfo and possibly other files.$    S R T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l mVcdefghijklmnopqrstuvwxyz{|}~      !"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ahijklmnopqrstuvwxyz{|}~   8   $    S R T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n_`a_`b_`c_`c_de_fghijklmlnoopqrstuvwxyz{|}~W                                                     ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d c e e f g h i j k k l m n o p q r s t u v w x y z { | } ~                                                                        !"#$%&&'()*+,-.//0123456789:;<=>?@ABCDEFGHIJKLMNOPQQRSTUVWXYZ[\]^^_`abccdefgghijkklmnopqrrstuvwxyyz{|}~  Y Y    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefZgZgZhZiZjZkZlZmZnZoZpZqZrZsZtuuvwxyyz{|}|~{}~lCD346      !"#$%&'()**+,-./01233456789:;<=>??@ABCDEFGHIJKLM N N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d!e"f"g#h#i#j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' ' ' ' ''''''''''''''''''' '!'"'#'$'%'&'''(')')'*'+''','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_'`'a'b'c'''d'e'f'g'h'i'j(k(l(m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})})~)))))))))))))))))))))))))))))))))))))))))))))))))))))*********************************************************************************+++++++++++ + + , , ----------------..._. .!.".#.#.$.%.&.'.'.z..(..).*.+.,.-.../.0.1.2/3/4/5/6/7/803040506090:08070;0<13141516171;232=2>2?2@2A2425272;2B2C3D3E3F3G3H3I3J3K3L3M3N4O4P5Q636R6S646T6U656V6W666X6Y6Z68676<6;66[737S747T7U757V7W767X77787Y7;7Z7[7<7\8V8]8B8^8;8_8`8a8X9b: :c;d<e<f<g<h<i<j<k=l=m=m=n=o=p=q=r=s=t=u=v=w=x=y=z={=|=}>~>~>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?@@@@@@@@@AAAAAAAAAAAAAAA3A4ASAAAAAAABBBWBBCCCDeEFkFlFFFmFFFG GGGGGGGGTGGGGkHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHK _  _  _  _ _ _ _  ! "#$%&'()&*jh+,-./0123456789:;<=>?@ABCDEFGH_IJ_KL_NM_NOPQRS T_UV W X Y Z [ \ ] ^ _ `_ab c d f e f g h i j k l m n o p q rVsVtVuVvVwVxVyVzV{V|V}V~VVVVRVVsVVVV    _a     f_af_XXXXXXX__YYYYYYY   _  ZZZZZZZZZZZZZZZZZZZ Z!Z"Z#Z$Z%Z&ZnZ'Z(Z)Z*Z+Z,Z-Z.Z/Z0Z1Z2Z3Z4Z5Z6Z7Z8Z9Z:Z;Z<Z=Z>Z?Z@ZAZBZCZDZEZFZGZHZIZJZKZLZMZNZOZPZQZRZSZTZUZVZWZXZYZZZ[Z\Z]Z^Z_Z`ZaZbZcZdZeZfZgZhZijklmnopqrstuvw[|_xy[[[[[[[[[[[[[|[z[{[}[~[[[[[[[[l[[[[[[[C[D[[z[3[4[[6[[[{[|[}[~[\|\|\z\{\}\~\\\\\\\\l\\\\\\C\D\\z\3\4\\6\\\|\oC                               _a   ! " # $ %< & ' (] )  * + , - . / 0 1 2 3 4" 5" 6% 7% 8_ 9 :% ;% <% =%% >% ?% @% A% B% C% D% E' F' G' H' I' J' K' L' M' N' O' P' Q' R' S' T' U' V' W' X' Y' Z' [' \' ]' ^' _' `' a' b' c' d' e( f( g( h( i( j( k( l( m( n( o) 4) p) q* r* s* t* u, v, w, x- y- z- {- |- }- ~- - - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   . / / / / 0 0 0 0A0@0 0 0 0 0 0 0 0 0 0O1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ^ ^ ^ ^ ^A^R^@^ ^Z^ ^ ^ ^ ^ ^ 3 4 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 9 9 !: ": #: $: %< &< '= (= )= *= += ,? -@ .@ /@ 0@ 1@ 2@ 3@ 4@ 5@ 6@ 7@ 8@ 9A :A ;A <A =A >A ?A @A AA BA CA DA EA FA GA HA IA JA KA LA MA NA OA PA QA RA SA TA UA VA WA XA YB ZB [B \B ]B ^B _B `B aB5B6BVBXC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC qC rC sC tC uC vC wC xC yC zC cC {C |C }C ~CZC C C C C C C C C C C C C C C C C D 'E F F fF gF kF F F jF lF hF iF mF F F nF oF F F F F F F F F F F F F Cabal-1.22.1.0Distribution.VersionDistribution.Simple.UtilsDistribution.Compat.ReadPDistribution.TestSuite$Distribution.Simple.PreProcess.Unlit%Distribution.PackageDescription.UtilsDistribution.Simple.CCompilerDistribution.TextLanguage.Haskell.ExtensionDistribution.CompilerDistribution.Simple.CompilerDistribution.LicenseDistribution.ModuleNameDistribution.PackageDistribution.SystemDistribution.PackageDescriptionDistribution.Simple.InstallDirsDistribution.ReadEDistribution.VerbosityDistribution.Compat.Exception%Distribution.PackageDescription.Parse!Distribution.InstalledPackageInfoDistribution.Simple.Command-Distribution.PackageDescription.Configuration%Distribution.PackageDescription.Check+Distribution.PackageDescription.PrettyPrintDistribution.Utils.NubList Distribution.Simple.PackageIndex Distribution.Simple.Program.Find!Distribution.Simple.Program.TypesDistribution.Simple.Program.Run!Distribution.Simple.Program.HcPkgDistribution.Simple.Program.LdDistribution.Simple.Program.Hpc"Distribution.Simple.Program.Script#Distribution.Simple.Program.BuiltinDistribution.Simple.Program.DbDistribution.Simple.ProgramDistribution.Simple.SetupDistribution.MakeDistribution.Simple.Program.GHC"Distribution.Simple.LocalBuildInfoDistribution.Simple.BuildPaths%Distribution.Simple.Build.PathsModuleDistribution.Simple.BuildTargetDistribution.Simple.Test.LogDistribution.Simple.JHCDistribution.Simple.LHCDistribution.Simple.UHC Distribution.Simple.HaskellSuiteDistribution.Simple.Hpc!Distribution.Simple.Program.StripDistribution.Simple.Program.ArDistribution.Simple.GHCDistribution.Simple.GHCJSDistribution.Simple.RegisterDistribution.Simple.Install Distribution.Simple.Build.MacrosDistribution.Compat.CreatePipeDistribution.Simple.Test.LibV09Distribution.Simple.PreProcessDistribution.Simple.UserHooksDistribution.Simple.BenchDistribution.Simple.SrcDistDistribution.Simple.ConfigureDistribution.Simple.BuildDistribution.Simple.HaddockDistribution.Simple.Test.ExeV10Distribution.Simple.TestDistribution.Simple Paths_CabalDistribution.GetOptSystem.EnvironmentgetArgsDistribution.Compat.Binary Data.GenericsData GHC.GenericsGeneric1 Data.FunctorFunctorData.Traversable Traversable Data.FoldableFoldable Distribution.Simple.GHC.ImplInfo simpleParseDistribution.Compat.TempFileDistribution.Compat.CopyFileDistribution.ParseUtilsDistribution.Simple.GHC.IPI642Distribution.Simple.GHC.IPI641Distribution.Compat.Environment Distribution.Simple.GHC.Internalbase Data.Version versionTags versionBranchVersion Data.OldList intercalateText.ParserCombinators.ReadPReadSResultPassFailErrorProgressFinishedOptionsTestGroup groupName concurrently groupTests ExtraOptions OptionType OptionFileoptionFileMustExistoptionFileIsDiroptionFileExtensions OptionStringoptionStringMultiline OptionNumberoptionNumberIsIntoptionNumberBounds OptionBool OptionEnum OptionSet OptionRngSeed OptionDescr optionNameoptionDescription optionType optionDefault TestInstancerunnametagsoptions setOption testGroupplainunlituserBugcabalBugCDialectC ObjectiveC CPlusPlusObjectiveCPlusPluscSourceExtensionscDialectFilenameExtensionfilenameCDialectReadPgetlookpfail+++<++gathersatisfycharstringmunchmunch1choice skipSpacescountbetweenoptionoptionalmanymany1skipMany skipMany1sepBysepBy1endByendBy1chainrchainlchainr1chainl1manyTill readP_to_S readS_to_PTextdispparsedisplayBoundExclusiveBoundInclusiveBound UpperBound NoUpperBound LowerBoundVersionIntervalVersionIntervals VersionRange AnyVersion ThisVersion LaterVersionEarlierVersionWildcardVersionUnionVersionRangesIntersectVersionRangesVersionRangeParens anyVersion noVersion thisVersionnotThisVersion laterVersionorLaterVersionearlierVersionorEarlierVersionunionVersionRangesintersectVersionRanges withinVersionbetweenVersionsInclusiveremoveUpperBoundfoldVersionRangefoldVersionRange' withinRangeasVersionIntervals isAnyVersion isNoVersionisSpecificVersionsimplifyVersionRangeversionIntervalsmkVersionIntervalswithinIntervalstoVersionIntervalsfromVersionIntervalsunionVersionIntervalsintersectVersionIntervalsKnownExtensionOverlappingInstancesUndecidableInstancesIncoherentInstancesDoRec RecursiveDoParallelListCompMultiParamTypeClassesMonomorphismRestrictionFunctionalDependencies Rank2Types RankNTypesPolymorphicComponentsExistentialQuantificationScopedTypeVariablesPatternSignaturesImplicitParamsFlexibleContextsFlexibleInstancesEmptyDataDeclsCPPKindSignatures BangPatternsTypeSynonymInstancesTemplateHaskellForeignFunctionInterfaceArrowsGenericsImplicitPreludeNamedFieldPuns PatternGuardsGeneralizedNewtypeDerivingExtensibleRecordsRestrictedTypeSynonyms HereDocuments MagicHash TypeFamiliesStandaloneDeriving UnicodeSyntaxUnliftedFFITypesInterruptibleFFICApiFFILiberalTypeSynonyms TypeOperatorsRecordWildCards RecordPunsDisambiguateRecordFieldsTraditionalRecordSyntaxOverloadedStringsGADTs GADTSyntax MonoPatBindsRelaxedPolyRecExtendedDefaultRules UnboxedTuplesDeriveDataTypeable DeriveGenericDefaultSignatures InstanceSigsConstrainedClassMethodsPackageImportsImpredicativeTypesNewQualifiedOperatorsPostfixOperators QuasiQuotesTransformListCompMonadComprehensions ViewPatterns XmlSyntaxRegularPatterns TupleSectionsGHCForeignImportPrimNPlusKPatternsDoAndIfThenElse MultiWayIf LambdaCaseRebindableSyntaxExplicitForAllDatatypeContextsMonoLocalBinds DeriveFunctorDeriveTraversableDeriveFoldableNondecreasingIndentation SafeImportsSafe TrustworthyUnsafeConstraintKinds PolyKinds DataKindsParallelArraysRoleAnnotationsOverloadedLists EmptyCaseAutoDeriveTypeableNegativeLiteralsBinaryLiterals NumDecimalsNullaryTypeClassesExplicitNamespacesAllowAmbiguousTypes JavaScriptFFIPatternSynonymsPartialTypeSignaturesNamedWildCardsDeriveAnyClass ExtensionEnableExtensionDisableExtensionUnknownExtensionLanguage Haskell98 Haskell2010UnknownLanguageknownLanguagesknownExtensionsdeprecatedExtensionsAbiTagNoAbiTag CompilerInfocompilerInfoIdcompilerInfoAbiTagcompilerInfoCompatcompilerInfoLanguagescompilerInfoExtensions CompilerIdCompilerFlavorGHCGHCJSNHCYHCHugsHBCHeliumJHCLHCUHC HaskellSuite OtherCompilerparseCompilerFlavorCompatbuildCompilerFlavorbuildCompilerIddefaultCompilerFlavor abiTagStringunknownCompilerInfoFlagDebugInfoLevel NoDebugInfoMinimalDebugInfoNormalDebugInfoMaximalDebugInfoOptimisationLevelNoOptimisationNormalOptimisationMaximumOptimisationPackageDBStack PackageDBGlobalPackageDB UserPackageDBSpecificPackageDBCompiler compilerIdcompilerAbiTagcompilerCompatcompilerLanguagescompilerExtensionscompilerPropertiesshowCompilerIdshowCompilerIdWithAbicompilerFlavorcompilerVersioncompilerCompatVersion compilerInforegistrationPackageDBabsolutePackageDBPathsabsolutePackageDBPathflagToOptimisationLevelflagToDebugInfoLevelunsupportedLanguageslanguageToFlagsunsupportedExtensionsextensionsToFlagsparmakeSupportedreexportedModulesSupportedrenamingPackageFlagsSupportedpackageKeySupportedLicenseGPLAGPLLGPLBSD2BSD3BSD4MITISCMPLApache PublicDomainAllRightsReservedUnspecifiedLicense OtherLicenseUnknownLicense knownLicenses ModuleNamesimple fromStringmain components toFilePathPackageInstalledinstalledPackageIdinstalledDependsPackageFixedDepsdependsPackage packageId Dependency PackageKey OldPackageKeyInstalledPackageIdPackageIdentifierpkgName pkgVersion PackageId PackageName unPackageName mkPackageKeythisPackageVersionnotThisPackageVersionsimplifyDependency packageNamepackageVersionPlatformArchI386X86_64PPCPPC64SparcArmMipsSHIA64S390AlphaHppaRs6000M68kVax JavaScript OtherArchOSLinuxWindowsOSXFreeBSDOpenBSDNetBSD DragonFlySolarisAIXHPUXIRIXHaLVMIOSGhcjsOtherOSbuildOS buildArch buildPlatformplatformFromTripleCondTreeCondNode condTreeDatacondTreeConstraintscondTreeComponents ConditionVarLitCNotCOrCAndConfVarImplFlagAssignmentFlagNameMkFlagflagNameflagDescription flagDefault flagManualGenericPackageDescriptionpackageDescriptiongenPackageFlags condLibrarycondExecutablescondTestSuitescondBenchmarksRepoTypeDarcsGitSVNCVS MercurialGnuArchBazaarMonotone OtherRepoTypeRepoKindRepoHeadRepoThisRepoKindUnknown SourceReporepoKindrepoType repoLocation repoModule repoBranchrepoTag repoSubdirHookedBuildInfo BuildInfo buildable buildTools cppOptions ccOptions ldOptionspkgconfigDepends frameworkscSources jsSources hsSourceDirs otherModulesdefaultLanguageotherLanguagesdefaultExtensionsotherExtensions oldExtensions extraLibs extraGHCiLibs extraLibDirs includeDirsincludesinstallIncludes profOptions sharedOptionscustomFieldsBItargetBuildDependstargetBuildRenaming BenchmarkTypeBenchmarkTypeExeBenchmarkTypeUnknownBenchmarkInterfaceBenchmarkExeV10BenchmarkUnsupported Benchmark benchmarkNamebenchmarkInterfacebenchmarkBuildInfobenchmarkEnabledTestType TestTypeExe TestTypeLibTestTypeUnknownTestSuiteInterfaceTestSuiteExeV10TestSuiteLibV09TestSuiteUnsupported TestSuitetestName testInterface testBuildInfo testEnabled ExecutableexeName modulePath buildInfoModuleReexportmoduleReexportOriginalPackagemoduleReexportOriginalNamemoduleReexportNameLibraryexposedModulesreexportedModulesrequiredSignaturesexposedSignatures libExposed libBuildInfoModuleRenaming BuildTypeSimple ConfigureMakeCustomUnknownBuildTypePackageDescriptionpackagelicense licenseFiles copyright maintainerauthor stability testedWithhomepagepkgUrl bugReports sourceRepossynopsis descriptioncategorycustomFieldsPD buildDependsspecVersionRaw buildTypelibrary executables testSuites benchmarks dataFilesdataDir extraSrcFiles extraTmpFiles extraDocFiles specVersiondescCabalVersionemptyPackageDescriptionknownBuildTypesdefaultRenaminglookupRenaming emptyLibraryhasLibswithLib libModulesemptyExecutablehasExeswithExe exeModulesemptyTestSuitehasTests enabledTestswithTest testModulesknownTestTypestestTypeemptyBenchmark hasBenchmarksenabledBenchmarks withBenchmarkbenchmarkModulesknownBenchmarkTypes benchmarkTypeemptyBuildInfo allBuildInfo allLanguages allExtensionsusedExtensionsemptyHookedBuildInfo hcOptions hcProfOptionshcSharedOptionsknownRepoTypesupdatePackageDescriptionPathTemplateEnvPathTemplateVariable PrefixVar BindirVar LibdirVar LibsubdirVar DatadirVar DatasubdirVar DocdirVar HtmldirVar PkgNameVar PkgVerVarPkgIdVar PkgKeyVar CompilerVarOSVarArchVarAbiVar AbiTagVarExecutableNameVarTestSuiteNameVarTestSuiteResultVarBenchmarkNameVar PathTemplateCopyDest NoCopyDestCopyToInstallDirTemplates InstallDirsprefixbindirlibdir libsubdir dynlibdir libexecdir includedirdatadir datasubdirdocdirmandirhtmldir haddockdir sysconfdircombineInstallDirsdefaultInstallDirssubstituteInstallDirTemplatesabsoluteInstallDirsprefixRelativeInstallDirstoPathTemplatefromPathTemplatesubstPathTemplateinitialPathTemplateEnvpackageTemplateEnvcompilerTemplateEnvplatformTemplateEnvabiTemplateEnvinstallDirsTemplateEnvReadErunReadE succeedReadE failReadE parseReadE readEOrFail readP_to_E Verbositysilentnormalverbose deafening moreVerbose lessVerboseintToVerbosityflagToVerbosity showForCabal showForGHCtryIOcatchIO catchExitsetFileOrdinarysetFileExecutableTempFileOptionsoptKeepTempFilesFileGlobNoGlob cabalVersiondieWithLocationdietopHandlerWith topHandlerwarnnotice setupMessageinfodebug debugNoWrap chattyTrywrapTextwrapLine maybeExitprintRawCommandAndArgsprintRawCommandAndArgsAndEnv rawSystemExitrawSystemExitCoderawSystemExitWithEnvrawSystemIOWithEnvrawSystemStdoutrawSystemStdInOutfindProgramLocationfindProgramVersionxargsfindFilefindFileWithExtensionfindFileWithExtension' findFirstFilefindModuleFilesfindModuleFilegetDirectoryContentsRecursiveisInSearchPathaddLibraryPath parseFileGlob matchFileGlobmatchDirFileGlobmoreRecentFileexistsAndIsMoreRecentThancreateDirectoryIfMissingVerbosecopyFileVerboseinstallOrdinaryFileinstallExecutableFileinstallMaybeExecutableFile copyFileTo copyFilesinstallOrdinaryFilesinstallExecutableFilesinstallMaybeExecutableFilesinstallDirectoryContentscopyDirectoryRecursivedoesExecutableExistsmartCopySourcescopyDirectoryRecursiveVerbosedefaultTempFileOptions withTempFilewithTempFileExwithTempDirectorywithTempDirectoryExwithFileContentswriteFileAtomic rewriteFile currentDirshortRelativePathdefaultPackageDescfindPackageDesctryFindPackageDescdefaultHookedPackageDescfindHookedPackageDescfromUTF8toUTF8 readUTF8FilewithUTF8FileContents writeUTF8FilenormaliseLineEndingsdropWhileEndLEtakeWhileEndLEordNub listUnion ordNubRightlistUnionRightequating comparing isInfixOf lowercase FieldDescr fieldNamefieldGetfieldSet ParseResult ParseFailedParseOkPWarningPErrorAmbiguousParseNoParse TabsError FromStringLineNo ExposedModule exposedNameexposedReexportexposedSignatureOriginalModuleoriginalPackageIdoriginalModuleNameInstalledPackageInfoInstalledPackageInfo_sourcePackageId packageKeyexposedinstantiatedWith hiddenModulestrusted importDirs libraryDirs hsLibrariesextraLibrariesextraGHCiLibraries frameworkDirshaddockInterfaces haddockHTMLspkgRootemptyInstalledPackageInfoparseInstalledPackageInfoshowInstalledPackageInfoshowInstalledPackageInfoField#showSimpleInstalledPackageInfoFieldfieldsInstalledPackageInfoCommand CommandParse CommandHelp CommandList CommandErrorsCommandReadyToGo MkOptDescrArgPlaceHolderOptFlagsLFlagsSFlagsOptDescrReqArgOptArg ChoiceOptBoolOpt OptionField optionDescr DescriptionNameShowOrParseArgsShowArgs ParseArgs CommandUI commandNamecommandSynopsis commandUsagecommandDescription commandNotescommandDefaultFlagscommandOptions multiOptionreqArgoptArgreqArg'optArg'noArgboolOptboolOpt' choiceOptchoiceOptFromEnumviewAsFieldDescr liftOptioncommandShowOptions usageDefaultusageAlternatives mkCommandUIcommandParseArgs hiddenCommandcommandAddAction commandsRun noExtraFlagsgetNormalCommandDescriptions helpCommandUIparseCondition mapCondTreemapTreeConstrs mapTreeConds mapTreeDatafreeVarsfinalizePackageDescriptionflattenPackageDescriptionCheckPackageContentOps doesFileExistdoesDirectoryExist PackageCheckPackageBuildImpossible explanationPackageBuildWarningPackageDistSuspiciousPackageDistInexcusable checkPackagecheckConfiguredPackagecheckPackageFilescheckPackageContentcheckPackageFileNamespkgDescrFieldDescrslibFieldDescrsexecutableFieldDescrstestSuiteFieldDescrsbinfoFieldDescrsflagFieldDescrssourceRepoFieldDescrsreadHookedBuildInforeadPackageDescriptionparsePackageDescriptionparseHookedBuildInfowritePackageDescriptionshowPackageDescriptionwriteHookedBuildInfoshowHookedBuildInfowriteGenericPackageDescriptionshowGenericPackageDescriptionNubListR fromNubListRNubList fromNubList toNubList overNubList toNubListR overNubListR SearchResultNone Unambiguous AmbiguousInstalledPackageIndex PackageIndexFakeMapfromListmergeinsertdeleteInstalledPackageIddeleteSourcePackageIddeletePackageName allPackagesallPackagesByNameallPackagesBySourcePackageIdlookupInstalledPackageIdlookupSourcePackageIdlookupPackageIdlookupPackageNamelookupDependency searchByNamesearchByNameSubstringdependencyCyclesdependencyCycles'brokenPackagesbrokenPackages'fakeLookupInstalledPackageIddependencyClosuredependencyClosure'reverseDependencyClosurereverseDependencyClosure'topologicalOrderreverseTopologicalOrderdependencyGraphdependencyGraph'dependencyInconsistenciesdependencyInconsistencies'moduleNameIndexProgramSearchPathEntryProgramSearchPathDirProgramSearchPathDefaultProgramSearchPathdefaultProgramSearchPathfindProgramOnSearchPathprogramSearchPathAsPATHVarProgramLocation UserSpecified locationPath FoundOnSystemConfiguredProgram programIdprogramVersionprogramDefaultArgsprogramOverrideArgsprogramOverrideEnvprogramPropertiesprogramLocationProgArgProgram programNameprogramFindLocationprogramFindVersionprogramPostConf programPathsuppressOverrideArgs simpleProgramsimpleConfiguredProgram IOEncodingIOEncodingTextIOEncodingUTF8ProgramInvocationprogInvokePathprogInvokeArgs progInvokeEnv progInvokeCwdprogInvokeInputprogInvokeInputEncodingprogInvokeOutputEncodingemptyProgramInvocationsimpleProgramInvocationprogramInvocationrunProgramInvocationgetProgramInvocationOutputgetEffectiveEnvironmentmultiStageProgramInvocation HcPkgInfo hcPkgProgram noPkgDbStack noVerboseFlagflagPackageConfuseSingleFileDbinitinvokeregister reregister unregisterexposehidedumplistinitInvocationregisterInvocationreregisterInvocationunregisterInvocationexposeInvocationhideInvocationdumpInvocationlistInvocationcombineObjectFilesmarkupunioninvocationAsSystemScriptinvocationAsShellScriptinvocationAsBatchFilebuiltinPrograms ghcProgram ghcPkgProgram ghcjsProgramghcjsPkgProgram lhcProgram lhcPkgProgram hmakeProgram jhcProgram uhcProgram hpcProgramhaskellSuiteProgramhaskellSuitePkgProgram happyProgram alexProgram gccProgram arProgram stripProgram hsc2hsProgram c2hsProgram cpphsProgramhscolourProgramhaddockProgramgreencardProgram ldProgram tarProgram cppProgrampkgConfigProgram ProgramDbemptyProgramDbdefaultProgramDbrestoreProgramDbaddKnownProgramaddKnownProgramslookupKnownProgram knownProgramsgetProgramSearchPathsetProgramSearchPathmodifyProgramSearchPathuserSpecifyPathuserMaybeSpecifyPathuserSpecifyArgsuserSpecifyPathsuserSpecifyArgssuserSpecifiedArgs lookupProgram updateProgramconfiguredProgramsconfigureProgramconfigureAllKnownProgramsreconfigureProgramsrequireProgramlookupProgramVersionrequireProgramVersionProgramConfiguration runProgramgetProgramOutput runDbProgramgetDbProgramOutputrawSystemProgramrawSystemProgramStdoutrawSystemProgramConfrawSystemProgramStdoutConfemptyProgramConfigurationdefaultProgramConfigurationrestoreProgramConfigurationfindProgramOnPathBenchmarkFlagsbenchmarkDistPrefbenchmarkVerbositybenchmarkOptions TestFlags testDistPref testVerbosity testHumanLogtestMachineLogtestShowDetails testKeepTix testOptionsTestShowDetailsNeverFailuresAlways Streaming ReplFlagsreplProgramPathsreplProgramArgs replDistPref replVerbosity replReload BuildFlagsbuildProgramPathsbuildProgramArgs buildDistPrefbuildVerbosity buildNumJobs buildArgs CleanFlags cleanSaveConf cleanDistPrefcleanVerbosity HaddockFlagshaddockProgramPathshaddockProgramArgs haddockHoogle haddockHtmlhaddockHtmlLocationhaddockExecutableshaddockTestSuiteshaddockBenchmarkshaddockInternal haddockCsshaddockHscolourhaddockHscolourCsshaddockContentshaddockDistPrefhaddockKeepTempFileshaddockVerbosity HscolourFlags hscolourCSShscolourExecutableshscolourTestSuiteshscolourBenchmarkshscolourDistPrefhscolourVerbosity RegisterFlags regPackageDB regGenScript regGenPkgConf regInPlace regDistPref regPrintId regVerbosity SDistFlags sDistSnapshotsDistDirectory sDistDistPrefsDistListSourcessDistVerbosity InstallFlagsinstallPackageDBinstallDistPrefinstallUseWrapperinstallInPlaceinstallVerbosity CopyFlagscopyDest copyDistPref copyVerbosity ConfigFlagsconfigProgramsconfigProgramPathsconfigProgramArgsconfigProgramPathExtraconfigHcFlavor configHcPath configHcPkgconfigVanillaLib configProfLibconfigSharedLib configDynExe configProfExeconfigConfigureArgsconfigOptimizationconfigProgPrefixconfigProgSuffixconfigInstallDirsconfigScratchDirconfigExtraLibDirsconfigExtraIncludeDirsconfigDistPrefconfigVerbosityconfigUserInstallconfigPackageDBs configGHCiLibconfigSplitObjsconfigStripExesconfigStripLibsconfigConstraintsconfigDependenciesconfigInstantiateWithconfigConfigurationsFlags configTestsconfigBenchmarksconfigCoverageconfigLibCoverageconfigExactConfigurationconfigFlagErrorconfigRelocatableconfigDebugInfo GlobalFlags globalVersionglobalNumericVersionNoFlagdefaultDistPreftoFlagfromFlagfromFlagOrDefault flagToMaybe flagToListdefaultGlobalFlags globalCommandemptyGlobalFlagsconfigAbsolutePathsdefaultConfigFlagsconfigureCommandconfigureOptionsreadPackageDbListshowPackageDbListinstallDirsOptionsemptyConfigFlagsdefaultCopyFlags copyCommandemptyCopyFlagsdefaultInstallFlagsinstallCommandemptyInstallFlagsdefaultSDistFlags sdistCommandemptySDistFlagsdefaultRegisterFlagsregisterCommandunregisterCommandemptyRegisterFlagsemptyHscolourFlagsdefaultHscolourFlagshscolourCommanddefaultHaddockFlagshaddockCommandhaddockOptionsemptyHaddockFlagsdefaultCleanFlags cleanCommandemptyCleanFlags buildVerbosedefaultBuildFlags buildCommand buildOptionsemptyBuildFlagsdefaultReplFlags replCommanddefaultTestFlags testCommandemptyTestFlagsdefaultBenchmarkFlagsbenchmarkCommandemptyBenchmarkFlagsprogramConfigurationPaths'programConfigurationOptionstrueArgfalseArgoptionVerbosity optionNumJobs configureArgsconfigureCCompilerconfigureLinker defaultMaindefaultMainArgsdefaultMainNoReadGhcDynLinkMode GhcStaticOnlyGhcDynamicOnlyGhcStaticAndDynamicGhcOptimisationGhcNoOptimisationGhcNormalOptimisationGhcMaximumOptimisationGhcSpecialOptimisationGhcModeGhcModeCompile GhcModeLink GhcModeMakeGhcModeInteractiveGhcModeAbiHash GhcOptions ghcOptMode ghcOptExtraghcOptExtraDefaultghcOptInputFilesghcOptInputModulesghcOptOutputFileghcOptOutputDynFileghcOptSourcePathClearghcOptSourcePathghcOptPackageKeyghcOptPackageDBsghcOptPackagesghcOptHideAllPackagesghcOptNoAutoLinkPackages ghcOptSigOfghcOptLinkLibsghcOptLinkLibPathghcOptLinkOptionsghcOptLinkFrameworks ghcOptNoLinkghcOptLinkNoHsMainghcOptCcOptionsghcOptCppOptionsghcOptCppIncludePathghcOptCppIncludesghcOptFfiIncludesghcOptLanguageghcOptExtensionsghcOptExtensionMapghcOptOptimisationghcOptDebugInfoghcOptProfilingModeghcOptSplitObjs ghcOptNumJobs ghcOptHPCDirghcOptGHCiScriptsghcOptHiSuffixghcOptObjSuffixghcOptDynHiSuffixghcOptDynObjSuffix ghcOptHiDir ghcOptObjDirghcOptOutputDir ghcOptStubDirghcOptDynLinkMode ghcOptShared ghcOptFPicghcOptDylibName ghcOptRPathsghcOptVerbosity ghcOptCabalrunGHC ghcInvocationrenderGhcOptionsComponentDisabledReasonDisabledComponentDisabledAllTestsDisabledAllBenchmarks LibraryNameComponentLocalBuildInfoLibComponentLocalBuildInfocomponentPackageDepscomponentExposedModulescomponentPackageRenamingcomponentLibrariesExeComponentLocalBuildInfoTestComponentLocalBuildInfoBenchComponentLocalBuildInfo ComponentNameCLibNameCExeName CTestName CBenchName ComponentCLibCExeCTestCBenchLocalBuildInfo configFlagsextraConfigArgsinstallDirTemplatescompiler hostPlatformbuildDircomponentsConfigs installedPkgs pkgDescrFile localPkgDescrpkgKey withPrograms withPackageDBwithVanillaLib withProfLib withSharedLib withDynExe withProfExewithOptimization withDebugInfo withGHCiLib splitObjs stripExes stripLibs progPrefix progSuffix relocatableexternalPackageDepsinplacePackageIdshowComponentName foldComponentcomponentBuildInfo componentName pkgComponentspkgEnabledComponentscomponentEnabledcomponentDisabledReasonlookupComponent getComponentgetComponentLocalBuildInfo withLibLBI withExeLBI withTestLBIwithComponentsLBIwithAllComponentsInBuildOrderwithComponentsInBuildOrderallComponentsInBuildOrdercomponentsInBuildOrdercheckComponentsCyclicdepLibraryPathssrcPref hscolourPref haddockPrefautogenModulesDir cppHeaderNameautogenModuleName haddockName mkLibName mkProfLibNamemkSharedLibName exeExtension objExtension dllExtensiongenerate pkgPathEnvVarBuildTargetProblemBuildTargetExpectedBuildTargetNoSuchBuildTargetAmbigiousUserBuildTargetProblemUserBuildTargetUnrecognised BuildTargetBuildTargetComponentBuildTargetModuleBuildTargetFileUserBuildTargetreadBuildTargetsreadUserBuildTargetsreportUserBuildTargetProblemsresolveBuildTargetsreportBuildTargetProblemsTestLogsTestLogtestOptionsReturned testResult GroupLogs TestSuiteLog testSuiteNametestLogslogFile PackageLogplatformlocalPackageLogcountTestResults suitePassed suiteFailed suiteErrortestSuiteLogPathsummarizePackage summarizeTestsummarizeSuiteFinishsummarizeSuiteStart configuregetInstalledPackagesbuildLibbuildExe installLib installExeghcVerbosityOptions ghcOptionsregisterPackage hcPkgInfo hstoolVersionnumericVersiongetCompilerVersion getExtensions getLanguages initPackageDB packageDbOptWayVanillaProfDynmixDirtixDir tixFilePathhtmlDirguessWay markupTest markupPackagestripExestripLibcreateArLibArchive getGhcInfogetPackageDBContents getLibDirgetGlobalPackageDBreplLibstartInterpreterreplExe libAbiHashcomponentGhcOptions isDynamicrunCmdgenerateRegistrationInfo invokeHcPkggeneralInstalledPackageInfoinplaceInstalledPackageInfoabsoluteInstalledPackageInfoinstallgeneratePackageVersionMacros createPiperunTeststubName stubFilePathwriteSimpleTestStubsimpleTestStubstubMain stubWriteLogPPSuffixHandler PreProcessorplatformIndependentrunPreProcessormkSimplePreProcessorrunSimplePreProcessorpreprocessComponent ppGreenCardppUnlitppCppppCpp'ppHsc2hsppC2hsplatformDefinesppHappyppAlex ppSuffixesknownSuffixHandlers UserHooksrunTestsreadDeschookedPreProcessorshookedProgramspreConfconfHookpostConfpreBuild buildHook postBuildpreReplreplHookpostReplpreClean cleanHook postCleanpreCopycopyHookpostCopypreInstinstHookpostInstpreSDist sDistHook postSDistpreRegregHookpostRegpreUnreg unregHook postUnreg preHscolour hscolourHook postHscolour preHaddock haddockHook postHaddockpreTesttestHookpostTestpreBench benchHook postBenchArgsemptyUserHooksbenchsdistlistPackageSources prepareTreeprepareSnapshotTreesnapshotPackagesnapshotVersiondateToSnapshotNumber createArchiveprintPackageProblemsConfigStateFileErrorConfigStateFileNoHeaderConfigStateFileBadHeaderConfigStateFileNoParseConfigStateFileMissingConfigStateFileBadVersiongetConfigStateFiletryGetConfigStateFiletryGetPersistBuildConfiggetPersistBuildConfigmaybeGetPersistBuildConfigwritePersistBuildConfigcheckPersistBuildConfigOutdatedlocalBuildInfoFileinterpretPackageDbFlagsccLdOptionsBuildInfoconfigCompilerAuxExconfigCompilerExconfigCompilerconfigCompilerAuxcheckForeignDepsbuildreplinitialBuildStepswriteAutogenFileshaddockhaddockPackagePathshscolourtestdefaultMainWithHooksdefaultMainWithHooksArgssimpleUserHooksdefaultUserHooksautoconfUserHooksversion getBinDir getDataDir getLibexecDir getSysconfDirgetDataFileName Classified BirdTrackBlankOrdinaryLine BeginCodeEndCodeCommentclassify unclassify reclassifyinlines internalErrorArgDescrNoArgOptionArgOrder RequireOrderPermute ReturnInOrder usageInfogetOptgetOpt'OptKindOptUnreqOptNonOpt EndOfOptsOptErrfmtOptfmtShortfmtLonggetNextlongOptshortOpterrAmbigerrReqerrUnrecerrNoArg$fMonoidCDialectdecodeOrFailIOghc-prim GHC.TypesWordGHC.WordWord8Word16Word32Word64 byteSwap64 byteSwap32 byteSwap16binar_8WpSY1EWq5j1AwY619xVVw Data.BinarydecodeFileOrFail decodeFile encodeFile decodeOrFaildecodeencodeData.Binary.ClassggetgputGBinaryputBinaryData.Binary.PutputWord8PutData.Binary.GetgetWord8Data.Binary.Get.InternalGetParserRPLookFinalfinal $fMonadParser$fApplicativeParser$fFunctorParser $fMonadPlusP$fAlternativeP$fMonadP$fApplicativeP $fFunctorP $fTextVersion $fTextBooldoesNotIntersectwildcardUpperBoundisWildcardRange minLowerBound isVersion0 invariantcheckInvariant validVersion validIntervalnonEmpty doesNotTouch unionIntervalintersectInterval$fTextVersionRange$fOrdUpperBound$fOrdLowerBound$fBinaryVersion$fBinaryVersionRangeGHC.ListzipWithData.Typeable.InternalTypeableGenericGHC.NumNumInt integer-gmpGHC.Integer.TypeIntegerclassifyKnownExtension Text.ReadreadclassifyLanguageclassifyExtensionknownExtensionTable$fTextKnownExtension$fTextExtension$fBinaryKnownExtension$fBinaryExtension$fTextLanguage$fBinaryLanguageclassifyCompilerFlavorGHC.BaseNothingknownCompilerFlavorsbuildCompilerVersion $fTextAbiTag$fBinaryAbiTag$fBinaryCompilerInfo$fTextCompilerId$fBinaryCompilerId$fTextCompilerFlavor$fBinaryCompilerFlavor ghcSupportedlanguageToFlagextensionToFlag$fBinaryDebugInfoLevel$fBinaryOptimisationLevel$fBinaryPackageDB$fBinaryCompiler GhcImplInfo hasCcOdirBugflagInfoLanguagesfakeRecordPuns flagStubdir flagOutputDirnoExtInSplitSuffixflagFfiIncludesflagBuildingCabalPkg flagPackageIdseparateGccMingwsupportsHaskell2010 reportsNoExtalwaysNondecIndentflagGhciScript flagDebugInfo getImplInfoghcVersionImplInfoghcjsVersionImplInfolhcVersionImplInfodispOptVersion dispVersion $fTextLicense$fBinaryLicenseStringvalidModuleCharvalidModuleComponent$fTextModuleName$fBinaryModuleNamefingerprintPackageKeyword64Base62LentoBase62 fromBase62readBase62Fingerprint$fPackagePackageIdentifier$fTextDependency$fBinaryDependency$fNFDataPackageKey$fTextPackageKey$fBinaryPackageKey$fTextInstalledPackageId$fBinaryInstalledPackageId$fNFDataPackageIdentifier$fTextPackageIdentifier$fBinaryPackageIdentifier$fNFDataPackageName$fTextPackageName$fBinaryPackageNameClassificationStrictnessCompat PermissiveStrictknownOSs osAliases classifyOS knownArches archAliases classifyArchident$fTextPlatform$fBinaryPlatform $fTextArch $fBinaryArch$fTextOS $fBinaryOSBool maybeHasLibsMaybestdParselookupHcOptionsrepoTypeAliasesclassifyRepoType$fBinaryFlagName"$fPackageGenericPackageDescription$fTextRepoType$fTextRepoKind$fBinaryRepoType$fBinaryRepoKind$fBinarySourceRepo$fMonoidBuildInfo$fBinaryBuildInfo$fTextBenchmarkType$fBinaryBenchmarkType$fMonoidBenchmarkInterface$fMonoidBenchmark$fBinaryBenchmarkInterface$fBinaryBenchmark$fTextTestType$fBinaryTestType$fMonoidTestSuiteInterface$fMonoidTestSuite$fBinaryTestSuiteInterface$fBinaryTestSuite$fMonoidExecutable$fBinaryExecutable$fTextModuleReexport$fBinaryModuleReexport$fMonoidLibrary$fBinaryLibrary$fTextModuleRenaming$fMonoidModuleRenaming$fBinaryModuleRenaming$fTextBuildType$fBinaryBuildType$fPackagePackageDescription$fBinaryPackageDescriptionGHC.IOFilePath PathComponentVariable appendSubdirscombinePathTemplategetWindowsProgramFilesDir$fReadPathTemplate$fShowPathTemplate$fReadPathComponent$fShowPathComponent$fReadPathTemplateVariable$fShowPathTemplateVariable$fBinaryPathTemplateVariable$fBinaryPathComponent$fBinaryPathTemplate$fMonoidInstallDirs$fFunctorInstallDirs$fBinaryInstallDirsErrorMsg$fFunctorReadESilentNormalVerbose Deafening$fBinaryVerbosityopenNewBinaryFile pathSeparator std_flags output_flagsrw_flagscreateTempDirectory mkPrivateDir System.IOopenBinaryTempFile openTempFilecopyFilecopyFileChanged filesEqualcopyOrdinaryFilecopyExecutableFile setFileModesetDirOrdinary copyFilesWithdirec_3m6Ew9I164U5MIkATLCdb8System.Directory ignoreBOMreadFilecreateDirectoryVerbose buildInfoExtTokenSpanFSectionIfBlockUnrecFieldParser warnUnrec ignoreUnrec tokeniseLinemkTreelayoutbracesmkFieldifelseparseModuleNameQ showFreeTextlines_ indentWith SyntaxTreeHasTabsIndent OpenBracket CloseBracketField UTFWarning Separator showPWarningcatchParseError parseFailrunPrunE utf8WarningslocatedErrorMsg syntaxError tabsErrorwarningfield liftField simpleFieldcommaListFieldWithSepcommaListFieldcommaNewLineListFieldspaceListFieldlistFieldWithSep listField optsField boolFieldppFieldsppField showFieldsshowSingleNamedFieldshowSimpleSingleNamedField parseFieldsparseFieldsFlat accumFieldslineNofName readFieldsreadFieldsFlat trimLinestokeniseLineFlat trimLeading trimTrailingparseFilePathQ betweenSpacesparseBuildToolparseBuildToolNameQparseBuildToolNameparsePkgconfigDependencyparsePackageNameQparseVersionRangeQparseOptVersionparseTestedWithQ parseLicenseQparseLanguageQparseExtensionQparseHaskellString parseTokenQ parseTokenQ' parseSepListparseSpaceListparseCommaListparseOptCommaList parseQuoted parseFreeText showFilePath showTokenshowTestedWith$fMonadParseResult$fApplicativeParseResult$fFunctorParseResultshowExposedModulesparseExposedModulesparseInstantiatedWithshowInstantiatedWithbasicFieldDescrsinstalledFieldDescrsdeprecatedFieldDescrs$fBinaryExposedModule$fBinaryOriginalModule$fTextExposedModule$fTextOriginalModule'$fPackageInstalledInstalledPackageInfo_$fPackageInstalledPackageInfo_$fBinaryInstalledPackageInfo_GHC.ReadRead hugsOptionsconvertPackageIdmkInstalledPackageIdconvertModuleNameconvertLicense toCurrent CommonFlag commandHelp CommandType NormalCommand HiddenCommandHelpFlagListOptionsFlagcommandGetOpts viewAsGetOptgetChoiceByLongFlaggetCurrentChoice liftOptDescrliftSetcommandListOptions commonFlagsaddCommonFlags$fFunctorCommandParse TargetSet DependencyMap DepTestRsltsimplifyConditionsimplifyWithSysParamsresolveWithFlagsignoreConditionsoverallDependenciesflattenTaggedTargetsPDTaggedLibExeBenchPDNullunDependencyMapBTBTNBTBDepOk MissingDepstoDepMap fromDepMapsimplifyCondTree constrainBylibFillInDefaultsexeFillInDefaultstestFillInDefaultsbenchFillInDefaultsbiFillInDefaults$fMonoidPDTagged$fMonoidDependencyMap$fMonoidDepTestRslt checkSanitycheckCabalVersiondisplayRawVersionRangecheckPackageVersions checkTarPathcheckcheckSpecVersion checkLibrarycheckExecutablecheckTestSuitecheckBenchmark checkFields checkLicensecheckSourceReposcheckGhcOptionscheckCCOptionscheckCPPOptionscheckAlternatives checkPathsdisplayRawDependencycheckConditionalscheckLicensesExistcheckSetupExistscheckConfigureExistscheckLocalPathsExistcheckMissingVcsInforepoTypeDirnamecheckWindowsPathquotecommaSepdupsfileExtensionSupportedLanguage$fShowPackageCheckDependencyWithRenamingBenchmarkStanzaTestSuiteStanzastoreXFieldsPDreadAndParseFilePMStTrunStTbenchmarkStanzaBenchmarkTypebenchmarkStanzaMainIsbenchmarkStanzaBenchmarkModulebenchmarkStanzaBuildInfotestStanzaTestTypetestStanzaMainIstestStanzaTestModuletestStanzaBuildInfostoreXFieldsLibstoreXFieldsExeemptyTestStanzastoreXFieldsTestvalidateTestSuiteemptyBenchmarkStanzabenchmarkFieldDescrsstoreXFieldsBenchmarkvalidateBenchmarkstoreXFieldsBIstanzasisStanzaHeadermapSimpleFieldsconstraintFieldNamesparseConstraint libFieldNamesbuildInfoNamesmodifyliftevalStT peekField skipField parseFielddeprecatedFieldsdeprecatedFieldsPkgDescrdeprecatedFieldsBuildInfo deprecFieldppCustomFields ppCustomFieldfindIndentTabs dependencybuildDependsWithRenamingsetBuildDependsWithRenaming$fTextDependencyWithRenaming $fMonadStT$fApplicativeStT $fFunctorStTsimplifiedPrintingppGenericPackageDescriptionppPackageDescription ppSourceRepos ppSourceRepoppFieldsFiltered binfoDefaults libDefaults flagDefaults ppDiffFieldsppGenPackageFlagsppFlag ppLibrary ppExecutables ppTestSuites ppBenchmarks ppCondition ppConfVar ppFlagName ppCondTree emptyLine readNubList$fBinaryNubList$fMonoidNubListmappend$fReadNubListR$fShowNubListR$fMonoidNubListR $fReadNubList $fShowNubListfakeInstalledDependsmkPackageIndex$fMonoidPackageIndex$fBinaryPackageIndexgetEnvironmentfindExecutable$fBinaryProgramLocation$fBinaryConfiguredProgrammaxCommandLineSizemungePackagePathssetInstalledPackageIdregisterInvocation'packageDbStackOpts packageDbFlag packageDbOpts verbosityOptsmarkupInvocationunionInvocationuserSpecifiedPathconfigurePrograms Control.MonadfoldMConfiguredProgsUnconfiguredProgsUnconfiguredProgramunconfiguredProgsprogSearchPathconfiguredProgsupdateUnconfiguredProgsupdateConfiguredProgs$fBinaryProgramDb$fReadProgramDb$fShowProgramDbprogramConfigurationPathsprogramConfigurationOption splitArgsallFlagsparseDependencyparseHoleMapEntryknownTestShowDetailsprogramFlagsDescription reqArgFlagoptionDistPref configureProg$fMonoidBenchmarkFlags$fMonoidTestFlags$fMonoidTestShowDetails$fTextTestShowDetails$fMonoidReplFlags$fMonoidBuildFlags$fMonoidCleanFlags$fMonoidHaddockFlags$fMonoidHscolourFlags$fMonoidRegisterFlags$fMonoidSDistFlags$fMonoidInstallFlags$fMonoidCopyFlags$fMonoidConfigFlags$fBinaryConfigFlags$fMonoidGlobalFlags $fEnumFlag $fBoundedFlag $fMonoidFlag $fFunctorFlag $fBinaryFlagdefaultMainHelperconfigureAction copyAction installAction haddockAction buildAction cleanAction sdistActionregisterActionunregisterAction packageDbArgs$fMonoidGhcOptions$fBinaryLibraryName$fBinaryComponentLocalBuildInfo$fBinaryComponentName$fBinaryLocalBuildInfoget_prefix_reloc_stuffget_prefix_win32filename_stuffMatchmatchInexactly findMatchUserBuildTargetSingleUserBuildTargetDouble matchPlusmatchPlusShadowing exactMatchesinexactMatchesMaybeAmbigious MatchErrorMatchErrorExpectedMatchErrorNoSuch ConfidenceNoMatch ExactMatch InexactMatch ComponentKindLibKindExeKindTestKind BenchKindComponentStringName ComponentInfo cinfoName cinfoStrName cinfoSrcDirs cinfoModules cinfoHsFiles cinfoCFiles cinfoJsFiles QualLevelQL1QL2QL3UserBuildTargetTriplecheckTargetExistsAsFilereadUserBuildTargetshowUserBuildTargetresolveBuildTargetdisambiguateBuildTargetsrenderBuildTargetmatchBuildTargetmatchBuildTarget1matchBuildTarget2matchBuildTarget3pkgComponentInfocomponentStringNamecomponentModulescomponentHsFiles componentKind cinfoKindmatchComponentKindshowComponentKindshowComponentKindShortmatchComponent1matchComponent2guardComponentNamematchComponentNamematchComponentKindAndName matchModule1 matchModule2 matchModule3guardModuleNamematchModuleName matchFile1 matchFile2 matchFile3matchComponentFilematchFileExistsmatchModuleFileUnrootedmatchModuleFileRootedmatchModuleFileStemmatchOtherFileRootedmatchOtherFileUnrooted matchFilematchDirectoryPrefix matchZeroaddDepth forceInexactmatchErrorExpectedmatchErrorNoSuch expecting orNoSuchThingincreaseConfidenceincreaseConfidenceFor nubMatchesnubMatchErrorstryEachcaseFold $fMonadMatch$fApplicativeMatch$fFunctorMatch$fMonadPlusMatch$fAlternativeMatchTrueFalse resultStringjhcLanguageExtensions jhcLanguagesconstructJHCCmdLine jhcPkgConfconfigureToolchaingetInstalledPackages'hackThreadedFlagcheckPackageDbStack substTopDirgetHaskellObjectsconstructGHCCmdLineghcPackageFlagsghcPackageDbOptionsconstructCcCmdLine ghcCcOptions mkGHCiLibNameuhcLanguageExtensionsaddBuiltinVersionsinstalledPkgConfigisPkgDirmkInstalledPackageInfo uhcLanguagesgetUserPackageDirpackageDbPaths parsePackageconstructUHCCmdLineuhcPackageDbOptions uhcTargetuhcTargetVariant uhcPackageDiruhcPackageSubDiroldLanguageExtensionsfilterGhciFlagstargetPlatformcomponentCcGhcOptionsghcLookupPropertymkGhcOptPackagescheckPackageDbEnvVarhpcDirrunStrip wipeMetadataguessToolFromGhcPathguessGhcPkgFromGhcPathguessHsc2hsFromGhcPathtoPackageIndex getRPaths getLibDir'removeMingwIncludeDirbuildOrReplLibbuildOrReplExesupportsDynamicTooghcjsNativeTooguessGhcjsPkgFromGhcjsPathguessHsc2hsFromGhcjsPathguessC2hsFromGhcjsPathguessHaddockFromGhcjsPathguessToolFromGhcjsPath toJSLibName adjustExtsghcjsProfOptionsghcjsSharedOptionsfindGhcjsGhcVersionfindGhcjsPkgGhcVersionrelocRegistrationInfo withHcPkgwriteHcPkgRegisterScriptregScriptFileNamerelocatableInstalledPackageInfounregScriptFileNameinstallDataFilesinstallIncludeFilesgenerateToolVersionMacrosgenerateMacrosgeneratePackageKeyMacrofixchar stubRunTests testOptionpreprocessFileppGhcCppppCpphs getCppOptions standardPP benchOptionCreateArchiveFun!listPackageSourcesMaybeExecutablelistPackageSourcesOrdinary findSetupFilemaybeCreateDefaultSetupScriptfindMainExeFilefindIncludeFilefilterAutogenModuleallSourcesBuildInfo tarBallNameoverwriteSnapshotPackageDescmapAllBuildInfoselectDependencyresolveModuleReexportscheckPackageProblemscheckRelocatableFailedDependencyDependencyNotExistsDependencyNoVersionResolvedDependencyExternalDependencyInternalDependencycurrentCabalIdcurrentCompilerId parseHeader showHeadermkProgramsConfig reportProgram hackageUrlreportSelectedDependenciesreportFailedDependencies!newPackageDepsBehaviourMinVersionnewPackageDepsBehaviourcombinedConstraintsconfigureInstantiateWithconfigureRequiredProgramsconfigureRequiredProgramconfigurePkgconfigPackagesmkComponentsGraphreportComponentCyclemkComponentsLocalBuildInforeportModuleReexportProblems$fExceptionConfigStateFileError$fShowConfigStateFileErrortestSuiteExeV10AsExetestSuiteLibV09AsLibAndExebenchmarkExeV10asExecreateInternalPackageDBcheckBuildTargetsbuildComponent replComponentaddInternalBuildTools Directory HaddockArgsargInterfaceFileargPackageNameargHideModulesargIgnoreExports argLinkSource argCssFile argContents argOutput argInterfaces argOutputDirargTitle argPrologue argGhcOptions argGhcLibDir argTargets runHaddock exeBuildDirOutputHtmlHoogleTemplateDirunDir' argVerboseunDir fromFlagsfromPackageDescription fromLibraryfromExecutable compToExe getInterfaces getGhcCppOpts getGhcLibDir renderArgsrenderPureArgshaddockPackageFlagshaddockTemplateEnv hscolour'haddockToHscolourgetLibSourceFilesgetExeSourceFilesgetSourceFiles$fMonoidDirectory$fMonoidHaddockArgspackageLogPathallSuffixHandlers replActionhscolourAction testAction benchAction hookedActionhookedActionWithArgssanityCheckHookedBuildInfogetBuildConfigcleanrunConfigureScriptgetHookedBuildInfodefaultTestHookdefaultBenchHookdefaultInstallHookdefaultBuildHookdefaultReplHookdefaultRegHook