QI      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./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.{.|.}.~/////////////////00000011111111122222233333344444455555555555555555555555556666666666666666666777777777777777777777777777777777777777777777 7 7 8 9 99999999::::::;;;;; ;!;";#;$<%=&='=(=)>*>+?,?-?.?/?0?1?2?3?4?5?6?7?8?9?:?;?<?=?>???@?A@B@C@D@E@F@G@H@HA Safe-Inferred IJKLMNOPQRSTUJPQRSTU IJKLMNOPQRSTUportablecabal-devel@haskell.org Safe-Inferred=If true, then children of this group may be run in parallel. 9 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. &$A human-readable description of the & option to guide the user setting it. +Perform the test. ,%A name for the test, unique within a  test suite. -$Users can select groups of tests by  their tags. .'Descriptions of the options recognized  by this test. /ATry to set the named option to the given value. Returns an error B message if the option is not supported or the value could not be  correctly parsed; otherwise, a ) with the option set to  the given value is returned. 0FCreate a named group of tests, which are assumed to be safe to run in  parallel. +  !"#$%&'()*+,-./0+  !"#$%&'()*+,-./0+)*+,-./#$%&'( !"  0     !"#$%&'()*+,-./0portablecabal-devel@haskell.org Safe-Inferred1No unliteration. 22: takes a filename (for error reports), and transforms the K given string, to eliminate the literate comments from the program text. VWXYZ[\]^_1`a2bcd1221V _^]\[ZYXW1`a2bcdBportablelibraries@haskell.org Safe-Inferred e@Describes whether an option takes an argument or not, and if so 3 how the argument is injected into a value of type a. foptional argument goption requires argument hno argument expected iEach i describes a single option. The arguments to j are: ! list of short option characters & list of long option strings (without "--")  argument descriptor  explanation of option for user k.What to do with options following non-options lwrap non-options into options m+freely intersperse options and non-options n,no option processing after first non-option o@Return a string describing the usage of a command, derived from > the header (first argument) and the options described by the  second argument. pEProcess the command-line, and return the list of values that matched (and those that didn't). The arguments are:  The order requirements (see k)  The option descriptions (see i) 8 The actual command line arguments (presumably got from  CD). p= returns a triple consisting of the option arguments, a list .of non-options, and a list of error messages. qThis is almost the same as p, but returns a quadruple Econsisting of the option arguments, a list of non-options, a list of 4unrecognized options, and a list of error messages. rstuvwefghijklmnoxyz{pq|}~ efghijklmnopqrwvutsehgfijknmloxyz{pq|}~portablecabal-devel@haskell.org Safe-Inferred34344334portablecabal-devel@haskell.org Safe-Inferred5CRepresents 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. :JA list of all file extensions which are recognized as possibly containing J some dialect of C code. Note that this list is only for source files,  not for header files. ;GTakes a dialect of C and whether code is intended to be passed through J the preprocessor, and returns a filename extension for containing that  code. <Infers from a filename'0s extension the dialect of C which it contains, E and whether it is intended to be passed through the preprocessor. 56789:;<56789:;<59876:;<59876:;<portablelibraries@haskell.org Safe-Inferred >)Consumes and returns the next character. $ Fails if there is no input left. ?@Look-ahead: returns the part of the input that is left, without  consuming it. @Always fails. ASymmetric choice. B5Local, exclusive, left-biased choice: If left parser < locally produces any result at all, then right parser is  not used. C5Transforms a parser into one that does the same, but 2 in addition returns the exact characters read.  IMPORTANT NOTE: C- gives a runtime error if its first argument 1 is built using any occurrences of readS_to_P. D=Consumes 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. GCParses the first zero or more characters satisfying the predicate. HBParses 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 (). O5Parses zero or more occurrences of the given parser. P4Parses 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 right 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 left 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 end 2 succeeds. Returns a list of values returned by p. \7Converts a parser into a Haskell ReadS-style function. ) This is the main way in which you can "run" a = parser:  the expanded type is  / readP_to_S :: ReadP a -> String -> [(a,String)]  ]7Converts a Haskell ReadS-style function into a parser. @ Warning: This introduces local backtracking in the resulting 2 parser, and therefore a possible inefficiency. 3=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]"=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]"=>?ABC@DEFGHJIKLMNOPQRSTUVWXZY[\]-=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]portablecabal-devel@haskell.org Safe-Inferred^_`ab^_`ab^_`ab^_`abportablecabal-devel@haskell.org Safe-Inferredl$A complementary representation of a m. Instead of a boolean F version predicate it uses an increasing sequence of non-overlapping,  non-empty intervals. KThe key point is that this representation gives a canonical representation  for the semantics of m(s. This makes it easier to check things K like whether a version range is empty, covers all versions, or requires a M certain minimum or maximum version. It also makes it easy to check equality 5 or containment. It also makes it easier to identify 'simple' version G predicates for translation into foreign packaging systems that do not , support complex version range expressions. vThe version range -any*. That is, a version range containing all  versions. ! withinRange v anyVersion = True wIThe empty version range, that is a version range containing no versions. JThis can be constructed using any unsatisfiable version range expression,  for example > 1 && < 1. " withinRange v anyVersion = False xThe version range == v * withinRange v' (thisVersion v) = v' == v yThe version range  v|| v - withinRange v' (notThisVersion v) = v' /= v zThe 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 / withinRange v' (unionVersionRanges vr1 vr2) , = withinRange v' vr1 || withinRange v' vr2 The version range vr1 && vr2 3 withinRange v' (intersectVersionRanges vr1 vr2) , = withinRange v' vr1 && withinRange v' vr2 The 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 J upper (Version lower t) = Version (init lower ++ [last lower + 1]) t The version range >= v1 && <= v2. LIn practice this is not very useful because we normally use inclusive lower $ bounds and exclusive upper bounds. * withinRange v' (laterVersion v) = v' > v -Fold over the basic syntactic structure of a m. LThis provides a syntacic view of the expression defining the version range.  The syntactic sugar ">= v", "<= v" and "== v.*" 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.*" 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 N opposed to the syntax of the expression used to define it. For the syntactic  view use . GEach interval is non-empty. The sequence is in increasing order and no F 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). DOther checks are trivial to implement using this view. For example:  5 isNoVersion vr | [] <- asVersionIntervals vr = True 6 | 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 u. LNote this is a semantic check, not simply a syntactic check. So for example  the following is True (for all v). G isAnyVersion (EarlierVersion v `UnionVersionRanges` orLaterVersion v) This is the converse of #. It check if the version range is J empty, if there is no possible version that satisfies the version range. For example this is True (for all v): H isNoVersion (EarlierVersion v `IntersectVersionRanges` LaterVersion v) 7Is 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 F this produces a canonical form. Empty or inconsistent version ranges 8 are left as-is because that provides more information. !If you need a canonical form use  )fromVersionIntervals . toVersionIntervals 'It satisfies the following properties:  : withinRange v (simplifyVersionRange r) = withinRange v r ( withinRange v r = withinRange v r' 6 ==> simplifyVersionRange r = simplifyVersionRange r'  || isNoVersion r  || isNoVersion r' 'Inspect the list of version intervals. Directly construct a l from a list of intervals. JEach interval must be non-empty. The sequence must be in increasing order K and no invervals may overlap or touch. If any of these conditions are not  satisfied the function returns Nothing. 7Check an upper bound does not intersect a lower bound: --| or ---) or ---] or ---) but not ---] E |--- (--- (--- [--- [--- 6Test if a version falls within the version intervals. JIt exists mostly for completeness and testing. It satisfies the following  properties: > withinIntervals v (toVersionIntervals vr) = withinRange v vr B withinIntervals v ivs = withinRange v (fromVersionIntervals ivs)  Convert a m% to a sequence of version intervals.  Convert a l value back into a m expression % representing the version intervals. ?cdefghijklmnopqrstuvwxyz{|}~"-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 2cdefghijklmnopqrstuvwxyz{|}~2mutsrqponvwxyz|{}~kijfhgcedl1cedfhgijklmutsrqponvwxyz{|}~ portablecabal-devel@haskell.org Safe-InferredLike + but compatible with the old ReadS parser. EIt is compatible in the sense that it accepts only the same strings,  eg GHC but not ghc&. However other strings get mapped to . I The point of this is that we do not allow extra valid values that would L 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. IThe default compiler flavour to pick when compiling stuff. This defaults . to the compiler used to build the Cabal lib.  However if it'#s not a recognised compiler then it's  and the user 0 will have to specify which compiler they want.    portablecabal-devel@haskell.org Safe-Inferred @This datatype indicates the license under which your package is D released. It is also wise to add your license to each source file $ using the license-file field. The  constructor ? is not actually a license, but states that you are not giving E anyone else a license to use or distribute your work. The comments D below are general guidelines. Please read the licenses themselves B and consult a lawyer if you are unsure of your rights to release  the software. Not a recognised license. ; Allows us to deal with future extensions more gracefully. Some other license. DNo rights are granted to others. Undistributable. Most restrictive. ?Holder makes no claim to ownership, least restrictive license. 8The Apache License. Version 2.0 is the current version, . previous versions are considered historical. 9The MIT license, similar to the BSD3. Very free license. A4-clause BSD license, older, with advertising clause. You almost 1 certainly want to use the BSD3 license instead. G3-clause BSD license, newer, no advertising clause. Very free license. =Lesser GPL, Less restrictive than GPL, useful for libraries. "GNU Affero General Public License <GNU Public License. Source code must accompany alterations.    portablecabal-devel@haskell.org Safe-Inferred @Subclass of packages that have specific versioned dependencies. HSo for example a not-yet-configured package has dependencies on version M ranges, not specific versions. A configured or an already installed package E depends on exact versions. Some operations or data structures (like H dependency graphs) only make sense on this subclass of package types. Class of things that have a  ITypes in this class are all notions of a package. This allows us to have H 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  9. In particular, installed packages cannot, there may be 6 many installed instances of the same source package. 1Describes a dependency on a source package (API) FAn InstalledPackageId uniquely identifies an instance of an installed 9 package. There can be at most one package with a given  1 in a package database, or overlay of databases. #The name and version of a package. "The name of this package, eg. foo $the version of this package, eg 1.2 5Type alias so we can use the shorter name PackageId.  Simplify the m expression in a .  See .  portablecabal-devel@haskell.org Safe-InferredA valid Haskell module name.  Construct a  from a valid module name . MThis is just a convenience function intended for valid module strings. It is N an error if it is used with a string that is not a valid module name. If you ! are parsing user input then use E instead. The module name Main. EThe individual components of a hierarchical module name. For example 3 components (fromString "A.B.C") = ["A", "B", "C"] FConvert a module name to a file path, but without any file extension.  For example: + toFilePath (fromString "A.B.C") = "A/B/C"   portablecabal-devel@haskell.org Safe-Inferred3How strict to be when classifying strings into the  and  enums. KThe reason we have multiple ways to do the classification is because there , are two situations where we need to do it. LFor parsing os and arch names in .cabal files we really want everyone to be L 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/5arch different Haskell implementations use different  names for the same or/3arch. 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 L in common use but it allows us to distinguish them from the canonical name 9 which enables us to warn about such deprecated aliases. 3The platform Cabal was compiled on. In most cases,  LocalBuildInfo.hostPlatform( should be used instead (the platform we're  targeting). 4%% portablecabal-devel@haskell.org Safe-Inferred$The name of the benchmark being run +The result of the test suite being run, eg  pass, fail, or error. %The name of the test suite being run ,The executable name; used in shell wrappers The cpu architecture name, eg i386 or x86_64 The operating system name, eg windows or linux "The compiler name and version, eg  ghc-6.6.1 The $pkgid package Id path variable, eg foo-1.0 The $version package version path variable The $pkg package name path variable The $htmldir path variable The $docdir path variable The  $datasubdir path variable The $datadir path variable The  $libsubdir path variable The $libdir path variable The $bindir path variable The $prefix path variable ?An abstract path, posibly 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. HThe defaults for most of the directories are relative to each other, in D particular they are all relative to a single prefix. This makes it H convenient for the user to override the default installation directory D by only having to specify --prefix=... rather than overriding each G individually. This is done by allowing $-style variables in the dirs. 0 These are expanded by textual substituion (see ). KA few of these installation directories are split into two components, the K dir and subdir. The full installation path is formed by combining the two  together with /7. 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 G because by default we want to support installing multiple versions of M packages and building the same package for multiple compilers we append the  libsubdir to get: /usr/lib64/$pkgid/ $compiler. JAn additional complication is the need to support relocatable packages on 2 systems which support such things, like Windows. :The directories where we will install files for packages. IWe have several different directories for different types of files since M many systems have conventions whereby different types of files in a package J are installed in different direcotries. This is particularly the case on  unix style systems. 6Substitute the install dir templates into each other. DTo prevent cyclic substitutions, only some variables are allowed in J particular dir templates. If out of scope vars are present, they are not L 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  in them. Doing this makes it 8 each to check which paths are relative to the $prefix. EConvert from abstract install directories to actual absolute ones by G substituting for all the variables in the abstract paths, to get real  absolute path. CCheck which of the paths are relative to the installation $prefix. JIf 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. 8Convert back to a path, any remaining vars are included  >The initial environment has all the static stuff but no paths F      !"#$7      !"#$7      #"!$      !"#$portablelibraries@haskell.org Safe-Inferredn&VAllow 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#ambiguity '+Enable explicit namespaces in module import/export lists.   ]http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#explicit-namespaces (9Enables support for type classes with no type parameter.   ghttp://www.haskell.org/ghc/docs/latest/html/users_guide/type-class-extensions.html#nullary-type-classes )?Allows 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-decimals *<Desugars negative literals directly (without using negate).   [http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#negative-literals +#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 ,qEnables 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 ->Enable 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-lists .+Enable explicit role annotations, like in (data T a@R).   Bhttp://www.haskell.org/ghc/docs/latest/html/users_guide/roles.html /Enable parallel arrays syntax ([:, :]) for Data Parallel Haskell.   <http://www.haskell.org/haskellwiki/GHC/Data_Parallel_Haskell 0Enable datatype promotion.   Fhttp://www.haskell.org/ghc/docs/latest/html/users_guide/promotion.html 1Enable kind polymorphism.   Nhttp://www.haskell.org/ghc/docs/latest/html/users_guide/kind-polymorphism.html 2Allow type classimplicit parameterequality constraints to be B used as types with the special kind constraint. Also generalise  the  (ctxt => ty)0 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.html 3:Compile a module in the Unsafe, Safe Haskell mode so that 3 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-trust 4=Compile a module in the Trustworthy, Safe Haskell mode -- no C 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-trust 5@Compile a module in the Safe, Safe Haskell mode -- a restricted 5 form of the Haskell language to ensure type safety.   Thttp://www.haskell.org/ghc/docs/latest/html/users_guide/safe-haskell.html#safe-trust 6@Allow imports to be qualified with a safe keyword that requires A 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-imports 7&Enable non-decreasing indentation for do blocks.   fhttp://www.haskell.org/ghc/docs/latest/html/users_guide/bugs-and-infelicities.html#infelicities-syntax 8Enable deriving for the FG class.   Whttp://www.haskell.org/ghc/docs/latest/html/users_guide/deriving.html#deriving-typeable 9Enable deriving for the HI class.   Whttp://www.haskell.org/ghc/docs/latest/html/users_guide/deriving.html#deriving-typeable :Enable deriving for the JK class.   Whttp://www.haskell.org/ghc/docs/latest/html/users_guide/deriving.html#deriving-typeable ;Local (let and where) bindings are monomorphic.   chttp://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#mono-local-binds <0Allow 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-contexts =Make forall3 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-foralls >?Makes much of the Haskell sugar be desugared into calls to the 3 function with a particular name that is in scope.   [http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#rebindable-syntax ?Enable support lambda-case expressions.   Uhttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#lambda-case @Enable support for multi-way if-expressions.   Vhttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#multi-way-if AImprove the layout rule when if expressions are used in a do  block. B!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-patterns CBAllows GHC primops, written in C--, to be imported into a Haskell  file. D(Enables 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-sections E?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. FBAllow concrete XML syntax to be used in expressions and patterns, 5 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. G8Enable 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-patterns H7Enable 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 I>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-comprehensions J>Enable 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 K<Relax 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-operators L (deprecated)2 Change the syntax for qualified infix operators.   ahttp://www.haskell.org/ghc/docs/6.12.3/html/users_guide/syntax-extns.html#new-qualified-operators M (deprecated)/ 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 N@Allow 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 OAllow 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-types P@Allow type signatures to be specified in instance declarations.   `http://www.haskell.org/ghc/docs/latest/html/users_guide/type-class-extensions.html#instance-sigs Q'Enable support for default signatures.   khttp://www.haskell.org/ghc/docs/latest/html/users_guide/type-class-extensions.html#class-default-signatures REnable deriving for LM and LN.   Whttp://www.haskell.org/ghc/docs/latest/html/users_guide/deriving.html#deriving-typeable SEnable deriving for classes  and  OP.   Whttp://www.haskell.org/ghc/docs/latest/html/users_guide/deriving.html#deriving-typeable TEnable unboxed tuples.   Vhttp://www.haskell.org/ghc/docs/latest/html/users_guide/primitives.html#unboxed-tuples U9Allow default instantiation of polymorphic types in more  situations.   jhttp://www.haskell.org/ghc/docs/latest/html/users_guide/interactive-evaluation.html#extended-default-rules V9Relax the requirements on mutually-recursive polymorphic  functions.   _http://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#typing-binds W#Make pattern bindings monomorphic.   Rhttp://www.haskell.org/ghc/docs/latest/html/users_guide/monomorphism.html#id630981 X?Enable GADT syntax for declaring ordinary algebraic datatypes.   \http://www.haskell.org/ghc/docs/latest/html/users_guide/data-type-extensions.html#gadt-style Y7Enable generalized algebraic data types, in which type C variables may be instantiated on a per-constructor basis. Implies  X.   Vhttp://www.haskell.org/ghc/docs/latest/html/users_guide/data-type-extensions.html#gadt Z?Enable 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 traditional record syntax (as supported by Haskell 98)   chttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#traditional-record-syntax \=Allow 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 ]Deprecated, use m instead. ^?Enable syntax for implicitly binding local names corresponding C to the field names of a record. A wildcard binds all unmentioned  names, unlike m.   Zhttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#record-wildcards _:Allow the name of a type constructor, type class, or type # variable to be an infix operator. `<Defer validity checking of types until after expanding type A 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 a*Allow use of CAPI FFI calling convention (foreign import capi).   Ihttp://www.haskell.org/ghc/docs/latest/html/users_guide/ffi.html#ffi-capi bEnable interruptible FFI.   Rhttp://www.haskell.org/ghc/docs/latest/html/users_guide/ffi.html#ffi-interruptible c9Allow 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#id681687 d<Allow certain Unicode characters to stand for certain ASCII 5 character sequences, e.g. keywords and punctuation.   Xhttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#unicode-syntax e<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-deriving f?Allow 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 gAllow the character #' as a postfix modifier on identifiers. 1 Also enables literal syntax for unboxed values.   Thttp://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#magic-hash h0Enable an alternate syntax for string literals,  with string templating.   Ahttp://cvs.haskell.org/Hugs/pages/users_guide/here-documents.html i?Enable type synonyms which are transparent in some definitions 9 and opaque elsewhere, as a way of implementing abstract  datatypes.   Fhttp://cvs.haskell.org/Hugs/pages/users_guide/restricted-synonyms.html j Enable the "Trex" extensible records system.   Ahttp://cvs.haskell.org/Hugs/pages/users_guide/hugs-only.html#TREX kAllow a type declared with newtype to use deriving for any 1 class with an instance for the underlying type.   Vhttp://www.haskell.org/ghc/docs/latest/html/users_guide/deriving.html#newtype-deriving l9Enable 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-guards m?Enable syntax for implicitly binding local names corresponding C 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-puns n,Enable the implicit importing of the module Prelude. When A disabled, when desugaring certain built-in syntax into ordinary 7 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-syntax o (deprecated)@ 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 pEnable arrow notation.   Khttp://www.haskell.org/ghc/docs/latest/html/users_guide/arrow-notation.html q?Enable 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.html r3Enable Template Haskell, a system for compile-time  metaprogramming.   Mhttp://www.haskell.org/ghc/docs/latest/html/users_guide/template-haskell.html s'Allow type synonyms in instance heads.   ihttp://www.haskell.org/ghc/docs/latest/html/users_guide/type-class-extensions.html#flexible-instance-head t;Enable 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 u?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#kinding v/Run the C preprocessor on Haskell source code.   [http://www.haskell.org/ghc/docs/latest/html/users_guide/options-phases.html#c-pre-processor w3Allow data type declarations with no constructors.   _http://www.haskell.org/ghc/docs/latest/html/users_guide/data-type-extensions.html#nullary-types x9Relax 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-rules y=Relax 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-contexts z8Enable implicit function parameters with dynamic scope.   fhttp://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#implicit-parameters {Deprecated, use | instead. |<Cause a type variable in a signature, which has an explicit  forall1 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-variables }2Allow existentially-quantified data constructors.   lhttp://www.haskell.org/ghc/docs/latest/html/users_guide/data-type-extensions.html#existential-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-quantification >Allow 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 Like * but does not allow a higher-rank type to 0 itself appear on the left of a function arrow.   khttp://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#universal-quantification ?Allow a specification attached to a multi-parameter type class A which indicates that some parameters are entirely determined by @ others. The implementation will check that this property holds B 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-dependencies -Enable the dreaded monomorphism restriction.   Ihttp://www.haskell.org/ghc/docs/latest/html/users_guide/monomorphism.html +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 =Provide 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  Allows 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-notation  (deprecated) Allows recursive bindings in do blocks, using the rec  keyword. See also . Implies . 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 >Ignore structural rules guaranteeing the termination of class B 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-instances >Allow 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-overlap 2This represents language extensions beyond a base  definition  (such as 6) that are supported by some implementations, usually  in some special mode. ;Where applicable, references are given to an implementation's  official documentation. 4An unknown extension, identified by the name of its LANGUAGE  pragma. Disable a known extension Enable a known extension ,This represents a Haskell language dialect.  Language 0s are interpreted relative to one of these base  languages. -An unknown language, identified by its name. AThe Haskell 2010 language as defined by the Haskell 2010 report.   /http://www.haskell.org/onlinereport/haskell2010 =The Haskell 98 language as defined by the Haskell 98 report.   http://haskell.org/onlinereport/ CExtensions that have been deprecated, possibly paired with another  extension that replaces it.  for %(s is really really slow so for the Text  instance G 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' 1 pretty densely and the biggest bucket is 7 so it's not too bad. We just do % a linear search within each bucket. EThis gives an order of magnitude improvement in parsing speed, and it'll F also allow us to do case insensitive matches in future if we prefer. w%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~p%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~p%~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('& %d~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&portablecabal-devel@haskell.org Safe-InferredW@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  < 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 2 is the name of a user-defined configuration flag CA flag can represent a feature to be included, or a way of linking L a target against its dependencies, or in fact whatever you can think of. HAn enumeration of common source control systems. The fields used in the  ; depend on the type of repo. The tools and methods used to 4 obtain and track the repo depend on the repo type. 0What this repo info is for, what it represents. EThe repository containing the sources for this exact package version H or release. For this kind of repo a tag should be given to give enough - information to re-create the exact sources. The repository for the "head"( or development version of the project. G This repo is where we should track the latest development activity or 9 the usual repo people should get to contribute patches. DInformation about the source revision control system for a package. LWhen specifying a repo it is useful to know the meaning or intention of the J information as doing so enables automation. There are two obvious common K purposes: one is to find the repo for the latest development version, the : other is to find the repo for this specific release. The ReopKind 6 specifies which one we mean (or another custom one). LA package can specify one or the other kind or both. Most will specify just L 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 H module name in addition to the location to identify a particular repo. D Logically this is part of the location but unfortunately has to be 6 specified separately. This field is required for the   and  should not be given otherwise. BThe name or identifier of the branch, if any. Many source control J 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 C optional but should be used if necessary to identify the sources,  especially for the  repo kind. FThe tag identify a particular state of the repository. This should be  given for the  repo kind and not for  kind. HSome repositories contain multiple projects in different subdirectories J This field specifies the subdirectory where this packages sources can be + found, eg the subdirectory containing the .cabal file. It is interpreted H relative to the root of the repository. This field is optional. If not  given the default is "." ie no subdirectory. component is buildable here tools needed to build this bit (options for pre-processing Haskell code options for C compiler options for linker "pkg-config packages that are used  support frameworks for Mac OS X /where to look for the haskell module hierarchy  non-exposed or non-main modules ,language used when not explicitly specified (other languages used within the package (language extensions used by all modules 2other language extensions used within the package *the old extensions field, treated same as  Lwhat libraries to link with when compiling a program that uses your package 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. 8Dependencies specific to a library or executable target The "benchmark-type" field in the benchmark stanza. !Some unknown benchmark type e.g. " type: foo" "type: exitcode-stdio-x.y" :The benchmark interfaces that are currently defined. Each 5 benchmark must specify which interface it supports. BMore interfaces may be defined in future, either new revisions or  totally new interfaces. 6A benchmark that does not conform to one of the above @ interfaces for the given reason (e.g. unknown benchmark type). 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. A " benchmark" stanza in a cabal file. The " test-type"! field in the test suite stanza. Some unknown test type e.g. " type: foo" "type: detailed-x.y" "type: exitcode-stdio-x.y" KThe test suite interfaces that are currently defined. Each test suite must & specify which interface it supports. JMore interfaces may be defined in future, either new revisions or totally  new interfaces. FA test suite that does not conform to one of the above interfaces for , the given reason (e.g. unknown test type). Test interface " detailed-0.9"%. The test-suite takes the form of a 5 library containing a designated module that exports "tests :: [Test]". Test interface "exitcode-stdio-1.0" . The test-suite takes the form I of an executable. It returns a zero exit code for success, non-zero for D failure. The stdout and stderr channels may be logged. It takes no / command line parameters and nothing on stdin. A " test-suite" stanza in a cabal file.  %Is the lib to be exposed by default?  /The type of build system used by this package. :a package that uses an unknown build type cannot actually 9 be built. Doing it this way rather than just giving a = parse error means we get better error messages and allows 7 you to inspect the rest of the package description. uses user-supplied Setup.hs or  Setup.lhs (default) calls Distribution.Make.defaultMain calls 9Distribution.Simple.defaultMainWithHooks defaultUserHooks,  which invokes  configure to generate additional build # information used by later phases. calls Distribution.Simple.defaultMain :This data type is the internal representation of the file  pkg.cabal. E It contains two kinds of information about the package: information M which is needed for all packages, such as the package name and version, and G information which is needed for the simple build system only, such as ( the compiler options and library name. !#A one-line summary of this package "+A more verbose description of this package $Custom fields starting  with x-, stored in a  simple assoc-list. &BThe version of the Cabal spec that this package description uses. C For historical reasons this is specified with a version range but  only ranges of the form >= v& make sense. We are in the process of A transitioning to specifying just a single version, not a range. 1FThe version of the Cabal spec that this package should be interpreted  against. LHistorically we used a version range but we are switching to using a single K version. Currently we accept either. This function converts into a single 8 version by ignoring upper bounds in the version range. 2JThe range of versions of the Cabal tools that this package is intended to  work with. MThis function is deprecated and should not be used for new purposes, only to ; support old packages that rely on the old interpretation. 6&does this package have any libraries?  version of 6 7AIf the package description has a library section, call the given 4 function with the library build info as argument. 8IGet all the module names from the library (exposed and internal modules) :(does this package have any executables? ;%Perform the action on each buildable  in the package  description. <%Get all the module names from an exe >(Does this package have any test suites? ?0Get all the enabled test suites from a package. @$Perform an action on each buildable  in a package. A,Get all the module names from a test suite. E'Does this package have any benchmarks? F/Get all the enabled benchmarks from a package. G$Perform an action on each buildable  in a package. H+Get all the module names from a benchmark. LThe ( for the library (if there is one and it's buildable), and N all buildable executables, test suites and benchmarks. Useful for gathering  dependencies. MThe s used by this component NThe ,s that are used somewhere by this component OThe  Extensions0 that are used by all modules in this component Q2Select options for a particular Haskell compiler.       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS !"#$%&'()*+,-./0312 4    57689;:<CB=>@A?JIDEGHFKLMNOQPSRM       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSportablecabal-devel@haskell.org Safe-InferredU?Some compilers support optimising. Some have different levels. A For compliers that do not the level is just capped to the level  they do support. YAWe typically get packages from several databases, and stack them J together. This type lets us be explicit about that stacking. For example  typical stacks include:   [GlobalPackageDB] " [GlobalPackageDB, UserPackageDB] = [GlobalPackageDB, SpecificPackageDB "package.conf.inplace"] Note that the ]& is invariably at the bottom since it F contains the rts, base and other special compiler-specific packages. JWe are not restricted to using just the above combinations. In particular I 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. ZBSome compilers have a notion of a database of available packages. C For some there is just one global db of packages, other compilers E support a per-user or an arbitrary db specified at some location in E the file system. This can be used to build isloated environments of A packages, for example to build a collection of related packages # without installing them globally. fKReturn the package that we should register into. This is the package db at  the top of the stack. gMake package paths absolute lCFor the given compiler, return the extensions it does not support. mGFor the given compiler, return the flags for the supported extensions. TUVWXYZ[\]^_`abcdefghijklm+TUVWXYZ[\]^_`abcdefghijklm^_`abcdeZ]\[YfghUXWViTkjmlTUXWVYZ]\[^_`abcdefghijklmportablecabal-devel@haskell.org Safe-Inferredn#Parser with simple error reporting nopqrstunopqrstunopqrstunopqrstuportablecabal-devel@haskell.org Safe-Inferredvwxyz{|}~ vwxyz{|}~ vwxyz{|}~ vwxyz{|}~ Safe-InferredQ Safe-Inferred           RNoneportablecabal-devel@haskell.orgNone6Advanced options for  and . Keep temporary files? dir prefix and extension, like "foo/bar/*.baz" corresponds to   FileGlob "foo/bar" ".baz" &No glob at all, just an ordinary file DNon fatal conditions that may be indicative of an error or problem. We display these at the x verbosity level. Useful status messages. We display these at the x verbosity level. FThis is for the ordinary helpful status messages that users see. Just N 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 y (Detailed internal debugging information 6We display these messages when the verbosity level is z  A variant of  that doesn't perform the automatic line 1 wrapping. Produces better output in some cases. GPerform an IO action, catching any IO exceptions and printing an error  if one occurs. GWraps text to the default line width. Existing newlines are preserved. IWraps a list of words to a list of lines of words of a particular width. %Run a command and return its output. 9The output is assumed to be text in the locale encoding. HRun a command and return its output, errors and exit status. Optionally F 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 K 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 I lines that might overflow an OS limit on command line length and so you A need to invoke a command multiple times to get all the args in. AUse it with either of the rawSystem variants above. For example: B xargs (32*1024) (rawSystemExit verbosity) prog fixedArgs bigArgs KFind a file by looking in a search path. The file path must match exactly. GFind a file by looking in a search path with one of a list of possible J file extensions. The file base name should be given and it will be tried A with each of the extensions in each element of the search path. Like . but returns which element of the search path K the file was found in, and the file path relative to that base directory. AFinds the files corresponding to a list of Haskell module names. As ! but for a list of module names. 6Find the file corresponding to a Haskell module name. This is similar to  but specialised to a module N name. The function fails if the file corresponding to the module is missing. :List all the files in a directory and all subdirectories. GThe order places files in sub-directories after all the files in their L parent directories. The list is generated lazily so is not well defined if A the source directory structure changes before the list is used. -Is this directory in the system search path? ICompare the modification times of two files to see if the first is newer E than the second. The first file must exist but the second need not. M The expected use case is when the second file is generated using the first. N In this use case, if the result is True then the second file is out of date. Same as createDirectoryIfMissing& but logs at higher verbosity levels. KCopies a file without copying file permissions. The target file is created A with default permissions. Any existing target file is replaced. 4At higher verbosity levels it logs an info message. GInstall 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--" L while on Windows it uses the default permissions for the target directory. IInstall 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" L while on Windows it uses the default permissions for the target directory. FInstall a file that may or not be executable, preserving permissions. LGiven a relative path to a file, copy it to the given directory, preserving B the relative path and creating the parent directories if needed. Common implementation of , ,   and . HCopies a bunch of files to a target directory, preserving the directory N structure in the target location. The target directories are created if they  do not exist. LThe files are identified by a pair of base directory and a path relative to B that base. It is only the relative part that is preserved in the  destination.  For example:   copyFiles normal "dist/src" 8 [("", "src/Foo.hs"), ("dist/build/", "src/Bar.hs")] This would copy "src/Foo.hs" to "dist/src/src/Foo.hs" and  copy "dist/build/src/Bar.hs" to "dist/src/src/Bar.hs". LThis operation is not atomic. Any IO failure during the copy (including any N missing source files) leaves the target in an unknown state so it is best to M 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 . AThis installs all the files in a directory to a target location, K preserving the directory layout. All the files are assumed to be ordinary  rather than executable files. #Use a temporary filename that doesn't already exist.  A version of  that additionally takes a   argument. &Create and use a temporary directory. ICreates a new temporary directory inside the given directory, making use H of the template. The temp directory is deleted after use. For example:  @ withTempDirectory verbosity "src" "sdist." $ \tmpDir -> do ... The tmpDir9 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. KThe 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. HThe file is either written sucessfully or an IO exception is raised and & the original file is left unchanged. JOn windows it is not possible to delete a file that is open by a process. N This case will give an IO exception but the atomic property is not affected. KWrite a file but only if it would have new content. If we would be writing N the same as the existing content then leave the file as is so that we do not  update the file's modification time. 5The path name that represents the current directory.  In Unix, it's ".", but this is system-specific. % (E.g. AmigaOS uses the empty string "" for the current directory.) Package description file (pkgname.cabal) CFind a package description file in the given directory. Looks for  .cabal files. -Optional auxiliary package information file (pkgname .buildinfo) ;Find auxiliary package information in the given directory.  Looks for  .buildinfo files. EIgnore a Unicode byte order mark (BOM) at the beginning of the input 3Reads a UTF8 encoded text file as a Unicode String Reads lazily using ordinary . 3Reads a UTF8 encoded text file as a Unicode String Same behaviour as . 5Writes a Unicode String as a UTF8 encoded text file. Uses #, so provides the same guarantees. 4Fix different systems silly line ending conventions U/a description of the action we were attempting the action itself New working dir or inherit New environment or inherit stdin stdout stderr Program location  Arguments New working dir or inherit New environment or inherit input text and binary mode output in binary mode output, errors, exit  version args function to select version  number from program output  location search locations  File Name #build prefix (location of objects) search suffixes modules #build prefix (location of objects) search suffixes module Create its parents too? Temp dir to create the file in File name template. See . Temp dir to create the file in File name template. See . Where to look  pkgname.cabal Directory to search dir/pkgname .buildinfo , if present QQQSportablecabal-devel@haskell.orgNone6We parse generically based on indent level and braces '{' '}' . To do that  we split into lines and then '{' '}'' tokens and other spans within a line. #span in a line, following brackets  The   token is for bits that start a line, eg:   "\n blah blah { blah" tokenises to:  : [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  other 6because 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'5s 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 ok !2A conditional block with an optional else branch:   if  condition {   field*  } else {   field*  } "=A section with a name and possible parameter. The syntactic  structure is:    sectionname  arg {   field*  } # A regular  property: value field $<The type of a function which, given a name-value pair of an > unrecognized field, and the current structure being built, 9 decides whether to incorporate the unrecognized field A (by returning Just x, where x is a possibly modified version A 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 x- Parses the field value from the given input  string str and stores the result in x if the parse was 9 successful. Otherwise, reports an error on line number n. %BA default unrecognized field parser which simply returns Nothing, H 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 3 returning the structure being built unmodified. '%Tokenise a single line, splitting on '{' '}' and the spans inbetween.  Also trims leading &0 trailing space on those spans within the line. (@Parse 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 D This parse state expect to be in a layout context, though possibly J nested within a braces context so we may still encounter closing braces. *IParse the stream of tokens into a tree of them, based on explicit braces 5 This parse state expects to find a closing bracket. +*Convert the parse tree into the Field AST 3 Also check for dodgy uses of tabs in indentation. , Convert ifthenelse "s to !s -parse a module name .GPretty-print free-format text, ensuring that it is vertically aligned, ? and with blank lines replaced by dots for correct re-parsing. //6 breaks a string up into a list of strings at newline = characters. The resulting strings do not contain newlines. g01234 5!"#$6789:;<=>?@ABCDEFGHIJKLMNOPQ%&RSTUV'WXY()indent level of the parent/previous line (accumulating param, trees in this level remaining tokens 2collected trees on this level and trailing tokens * line of the '{', used for error messages (accumulating param, trees in this level remaining tokens 2collected trees on this level and trailing tokens +,-Z[\]^_`abcdefghij(The parser for the stuff between commas k(The parser for the stuff between commas l(The parser for the stuff between commas m(The parser for the stuff between commas nopqr./stuI5!"#$6789:;<>?ABCDEFGHIJKLMNOP%&RSTU-Z\_`abcdefhijlmnopqr.T012 435#"!$7689:;<=>?@ABCDEFGHIJKLMNOPQ%&RSTUV'WXY()*+,-Z[\]^_`abcdefghijklmnopqr./stuportablelibraries@haskell.orgNone,v  wxy1  1   v  wxyTportablecabal-devel@haskell.orgNonezCThis 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 G database used by those ghc versions. It is a little hacky to read the J 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 /|}~z|z|~}zUportablecabal-devel@haskell.orgNoneAThis 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 G database used by those ghc versions. It is a little hacky to read the J 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 portablecabal-devel@haskell.orgNone)Common flags that apply to every command !Long command line option strings "Short command line option strings HAn OptionField takes one or more OptDescrs, describing the command line  interface for the field. CWe usually have a datatype for storing configuration values, where @ every field stores a configuration option, and the user sets D the value either via command line flags or a configuration file. A An individual OptionField models such a field, and we usually C build a list of options associated to a configuration datatype. &DThe name of the command as it would be entered on the command line.  For example "build". 'CA short, one line description of the command to use in help texts. (@A function that maps a program name to a usage summary for this  command. )<Additional explanation of the command to use in help texts. *Initial / empty flags +'All the Option fields for this command ,+Create an option taking a single OptDescr. P No explicit Name is given for the Option, the name is the first LFlag given. -+Create an option taking several OptDescrs. G You will have to give the flags and description individually to the  OptDescr constructor. ./Create a string-valued command line interface. /DCreate a string-valued command line interface with a default value. 0(String -> a) variant of reqArg 1(String -> a) variant of optArg 5create a Choice option 63create a Choice option out of an enumeration type. O As long flags, the Show output is used. As short flags, the first character 8 which does not conflict with a previous one is used. 7Fto view as a FieldDescr, we sort the list of interfaces (Req > Bool > 0 Choice > Opt) and consider only the first one. 9;Show flags in the standard long option command line format EThe help text for this command with descriptions of all the options. :Make a Command from standard GetOpt options. ;(Parse a bunch of command line arguments <+Mark command as hidden. Hidden commands don't show up in the ' progname  help' or 'progname --help' output. ?EUtility function, many commands do not accept additional flags. This K action fails with a helpful error message if the user supplies any extra. G    !"#$%&'()*+,-"MkOptDescr constructors partially # applied to flags and description. ./0123456789:name short description long description initial/ empty flags options ;'Is the command a global or subcommand? <=>?5    !"#$%&'()*+,-./0123456789:;<=>?5$%&'()*+9  ;!#":< =?> ,-87.0/123456.    !#"$%&'()*+,-./0123456789:;<=>?portablecabal-devel@haskell.orgNone 1A set of targets with their package dependencies JA 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. 6Simplify the condition and return its free variables. ISimplify 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. KTry to find a flag assignment that satisfies the constraints of all trees. CReturns either the missing dependencies, or a tuple containing the B resulting data, the associated dependencies, and the chosen flag  assignments. HIn case of failure, the _smallest_ number of of missing dependencies is C returned. [TODO: Could also be specified with a function argument.] MTODO: The current algorithm is rather naive. A better approach would be to: K Rule out possible paths, by taking a look at the associated dependencies. B Infer the required values for the conditions of these paths, and B calculate the required domains for the variables used in these J conditions. Then picking a flag assignment would be linear (I guess). <This would require some sort of SAT solving, though, thus it's not ' implemented unless we really need it. BFlatten a CondTree. This will resolve the CondTree by taking all M possible paths into account. Note that since branches represent exclusive # choices this may not result in a "sane" result. DCombine the target-specific dependencies in a TargetSet to give the * dependencies for the package as a whole. ECollect up the targets in a TargetSet of tagged targets, storing the  dependencies as we go. F?Create a package description with all configurations resolved. This function takes a  and several environment " parameters and tries to generate  by finding a flag 5 assignment that result in satisfiable dependencies. FIt takes as inputs a not necessarily complete specifications of flags L assignments, an optional package index as well as platform parameters. If K some flags are not assigned explicitly, this function will try to pick an H assignment that causes this function to succeed. The package index is J optional since on some platforms we cannot determine which packages have M been installed before. When no package index is supplied, every dependency K is assumed to be satisfiable, therefore all not explicitly assigned flags  will get their default values. JThis function will fail if it cannot find a flag assignment that leads to I satisfiable dependencies. (It will not try alternative assignments for C explicitly specified flags.) In case of failure it will return a minimum J number of dependencies that could not be satisfied. On success, it will E return the package description and the full flag assignment chosen. GJFlatten a generic package description by ignoring all conditions and just I join the field descriptors into on package description. Note, however, G that this may lead to inconsistent field values, since all values are J joined into one field, which may not be possible in the original package E description, due to the use of exclusive choices (if ... else ...). KTODO: One particularly tricky case is defaulting. In the original package J description, e.g., the source directory might either be the default or a L certain, explicitly set path. Since defaults are filled in only after the H package has been resolved and when no explicit value has been set, the L default path will be missing from the package description returned by this  function. +(partial) variable assignment @ABCD4Domain for each flag name, will be tested in order. .OS as returned by Distribution.System.buildOS 2Arch as returned by Distribution.System.buildArch Compiler flavour + version Additional constraints Dependency test function. ;Either the missing dependencies (error case), or a pair of C (set of build targets with dependencies, chosen flag assignments) E Input map Extra constraints F&Explicitly specified flag assignments EIs a given depenency satisfiable from the set of available packages? # If this is unknown then use True. The  and  Compiler + Version Additional constraints 4Either missing dependencies or the resolved package 5 description along with the flag assignments chosen. G@ABCDEFGFG@EADCB@ABCDEFGportablecabal-devel@haskell.orgNoneHAA record of operations needed to check the contents of packages.  Used by U. L.Results of some kind of failed package check. HThere are a range of severities, from merely dubious to totally insane. N All of them come with a human readable explanation. In future we may augment J them with more machine readable explanations, for example to help an IDE  suggest automatic corrections. M!An issue that is ok in the author's environment but is almost D certain to be a portability problem for other environments. We can F quite legitimately refuse to publicly distribute packages with these  problems. N@An issue that might not be a problem for the package author but E might be annoying or determental when the package is distributed to G users. We should encourage distributed packages to be free from these E issues, but occasionally there are justifiable reasons so we cannot  ban them entirely. O?A problem that is likely to affect building the package, or an  issue that we'4d like every package author to be aware of, even if # the package is never distributed. P*This package description is no good. There' s no way it' s going to > build sensibly. This should give an error at configure time. R@Check for common mistakes and problems in package descriptions. FThis is the standard collection of checks covering all apsects except H for checks that require looking at files within the package. For those  see T. It requires the  and optionally a particular , configuration of that package. If you pass  then we just check , a version of the generic description using G. -Check that this package description is sane. 3Check that the package declares the version in the " cabal-version"  field correctly. A variation on the normal Text instance, shows any ()'s in the original 3 textual syntax. We need to show these otherwise it's confusing to users when = we complain of their presense but do not pretty print them! BCheck the build-depends fields for any weirdness or bad practise. TCSanity check things that requires IO. It looks at the files in the L package and expects to find the package unpacked in at the given filepath. UCSanity check things that requires looking at files in the package. " This is a generalised version of T that can work in any ! monad for which you can provide H operations. LThe point of this extra generality is to allow doing checks in some virtual / file system, for example a tarball in memory. VICheck the names of all files in a package for portability problems. This K should be done for example when creating or validating a package tarball. >Check a file name is valid for the portable POSIX tar format. JThe POSIX tar format has a restriction on the length of file names. It is I unfortunately not a simple restriction like a maximum length. The exact L restriction is that either the whole path be 100 characters or less, or it L be possible to split the path on a directory separator such that the first L part is 155 characters or less and the second part 100 characters or less. 0HIJKLMNOPQRS     TUVHIJKLMNOPQRSTUVLPONMQQQQRSTUHIJKV(HIJKLPONMQQQQRS     TUVportablecabal-devel@haskell.orgNoneAAn intermediate type just used for parsing the benchmark stanza. 2 After validation it is converted into the proper  type.  BAn intermediate type just used for parsing the test-suite stanza. 2 After validation it is converted into the proper  type. ! Store any fields beginning with x- in the customFields field of D a PackageDescription. All other fields will generate a warning. "=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 . IIn Cabal 1.2 the syntax for package descriptions was changed to a format < with sections and possibly indented property descriptions. #<Parse a list of fields, given a list of field descriptions, ? a structure to accumulate the parsed fields, and a function 3 that can decide what to do with fields which don' t match any  of the field descriptions. D$%&'()*+, -./01W!X2Y34Z56789:[;\]"^_<=>?@ABCDEFGH`#&descriptions of fields we know how to  parse possibly do something with  unrecognized fields  accumulator fields to be parsed Ilist of parseable fields possibly do something with  unrecognized fields  accumulated result and warnings the field to be parsed JKLMabcNOdePQRSWXYZ[\]^_`abcde_b`c^adeWXY[]Z\8$%&'()*+, -./01W!X2Y34Z56789:[;\]"^_<=>?@ABCDEFGH`#IJKLMabcNOdePQRSNoneT,Recompile with false for regression testing f8Writes a .cabal file from a generic package description g1Writes a generic package description to a string UTfgVWXYZ[\]^_`abcdefghijfgfgUTfgVWXYZ[\]^_`abcdefghijportablecabal-devel@haskell.orgNonel>The collection of information about packages from one or more  PackageDBs. -Packages are uniquely identified in by their  , they can G also be effeciently looked up by package name or by name and version. m+Build an index out of a bunch of packages. If there are duplicates by  then later ones mask earlier  ones. nMerge two indexes. MPackages from the second mask packages from the first if they have the exact  same . "For packages with the same source , 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 . This is the mechanism we 3 use to prefer user packages over global packages. o)Inserts a single package into the index. 8This is equivalent to (but slightly quicker than) using k or  n with a singleton index. p3Removes a single installed package from the index. q&Removes all packages with this source  from the index. rERemoves all packages with this (case-sensitive) name from the index. s%Get all the packages from the index. t%Get all the packages from the index. 5They are grouped by package name (case-sensitively). u%Get all the packages from the index. BThey are grouped by source package id (package name and version). v)Does a lookup by source package id (name & version). .Since multiple package DBs mask each other by , ' then we get back at most one package. w)Does a lookup by source package id (name & version). >There can be multiple installed packages with the same source   but different  . They are returned in order of , preference, with the most preferred first. x&Does a lookup by source package name. y>Does a lookup by source package name and a range of versions. FWe get back any number of versions of the specified package name, all * satisfying the version range constraint. z0Does a case-insensitive search by package name. JIf there is only one package that compares case-insentiviely to this name N then the search is unambiguous and we get back all versions of that package. L If several match case-insentiviely but one matches exactly then it is also  unambiguous. JIf however several match case-insentiviely and none match exactly then we G have an ambiguous result, and we get back all the versions of all the L packages. The list of ambiguous results is split by exact package name. So , it is a non-empty list of non-empty lists. {:Does a case-insensitive substring search by package name. CThat is, all packages that contain the given string in their name. |FFind if there are any cycles in the dependency graph. If there are no  cycles the result is []. KThis actually computes the strongly connected components. So it gives us a L list of groups of packages where within each group they all depend on each  other, directly or indirectly. }IAll packages that have immediate dependencies that are not in the index. ;Returns such packages along with the dependencies that they' re missing. ~BTries to take the transitive closure of the package dependencies. IIf the transitive closure is complete then it returns that subset of the 7 index. Otherwise it returns the broken packages as in }.  Note that if the result is Right [] it is because at least one of  the original given s do not occur in the index. CTakes the transitive closure of the packages reverse dependencies.  The given s must be in the index. ,Builds a graph of the package dependencies. HDependencies on other packages that are not in the index are discarded. 7 You can check if there are any such dependencies with }. FGiven a package index where we assume we want to use all the packages  (use ~2 if you need to get such a index subset) find out H if the dependencies within it use consistent versions of each package. J Return all cases where multiple packages depend on different versions of  some other package. JEach element in the result is a package name along with the packages that H depend on it and the versions they require. These are guaranteed to be  distinct. !hijkllmnmnopqrstuvwxyz{|}~ohijklmnopqrstuvwxyz{|}~lmnopqrvwxyzhkji{stu}~|hkjillmnmnopqrstuvwxyz{|}~oV Safe-Inferredpppportablecabal-devel@haskell.orgNoneThe system default A specific dir BA search path to use when locating executables. This is analogous  to the unix $PATH or win32 %PATH% but with the ability to use 4 the system default method for finding executables (q 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 K either before, after or instead of the default, e.g. here we add an extra % dir to search after the usual ones. : ['ProgramSearchPathDefault', 'ProgramSearchPathDir' dir]  Interpret a  to construct a new $PATH env var. G Note that this is close but not perfect because on Windows the search ' algorithm looks at more than just the %PATH%. portablecabal-devel@haskell.orgNone3Where a program was found. Also tells us whether it's specifed by user or A not. This includes not just the path, but the program as well. %The program was found automatically. (The user gave the path to this program,  eg. --ghc-path=/usr/bin/ghc-6.6 LRepresents 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. C These flags will appear first on the command line, so they can be ! overridden by subsequent flags. -Override command-line args for this program. D These flags will appear last on the command line, so they override  all earlier flags. 1Override 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. 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. ghc =A function to search for the program if its location was not < specified by the user. Usually this will just be a call to  . DIt is supplied with the prevailing search path which will typically ? just be used as-is, but can be extended or ignored as needed. BTry 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 G located the program (and perhaps identified its version). For example ) it could add args, or environment vars. 'The full path of a configured program. 0Suppress 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 C version name. You can override these behaviours if necessary, eg: L simpleProgram "foo" { programFindLocation = ... , programFindVersion ... } Make a simple . 4 simpleConfiguredProgram "foo" (FoundOnSystem path) portablecabal-devel@haskell.orgNone8Represents a specific invocation of a specific program. LThis is used as an intermediate type between deciding how to call a program G and actually doing it. This provides the opportunity to the caller to L adjust how the program will be called. These invocations can either be run 1 directly or turned into shell or batch scripts. BReturn the current environment extended with the given overrides. /Like the unix xargs program. Useful for when we've got very long command I lines that might overflow an OS limit on command line length and so you A need to invoke a command multiple times to get all the args in. IIt takes four template invocations corresponding to the simple, initial, J middle and last invocations. If the number of args given is small enough K that we can get away with just a single invocation then the simple one is  used:   $ simple args KIf the number of args given means that we need to use multiple invocations K then the templates for the initial, middle and last invocations are used:  $ initial args_0  $ middle args_1  $ middle args_2  ...  $ final args_n r rportablecabal-devel@haskell.orgNone Call hc-pkg: to initialise a package database at the location {path}.  hc-pkg init {path} Run hc-pkg9 using a given package DB stack, directly forwarding the ( provided command-line arguments to it. Call hc-pkg to register a package. C hc-pkg register {filename | -} [--user | --global | --package-db] Call hc-pkg to re-register a package. C hc-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. : hc-pkg expose [pkgid] [--user | --global | --package-db] Call hc-pkg to expose a package. : hc-pkg expose [pkgid] [--user | --global | --package-db] Call hc-pkg9 to get all the details of all the packages in the given  package database. Call hc-pkg9 to get the source package Id of all the packages in the  given package database. (This is much less information than with , but also rather quicker. 1 Note in particular that it does not include the , just  the source 4 which is not necessarily unique in any package db. stuvwxyzstuvwxyz portablecabal-devel@haskell.orgNoneCall ar; to create a library archive from a bunch of object files. !portablecabal-devel@haskell.orgNoneCall ld -r+ to link a bunch of object files together. "portablecabal-devel@haskell.orgNone&Invoke hpc with the given parameters. EPrior to HPC version 0.7 (packaged with GHC 7.8), hpc did not handle L multiple .mix paths correctly, so we print a warning, and only pass it the L first path in the list. This means that e.g. test suites that import their L library as a dependency can still work, but those that include the library ( modules directly (in other-modules) don't. Path to .tix file Paths to .mix file directories )Path where html output should be located 'List of modules to exclude from report {Path to .tix file Paths to .mix file directories !Path where html output should be  located  List of modules to exclude from  report Paths to .tix files Path to resultant .tix file &List of modules to exclude from union |Paths to .tix files Path to resultant .tix file &List of modules to exclude from union {|#portablecabal-devel@haskell.orgNoneJGenerate a system script, either POSIX shell script or Windows batch file & as appropriate for the given system. 6Generate a POSIX shell script that invokes a program. 6Generate a Windows batch file that invokes a program. $portablecabal-devel@haskell.orgNoneThe default list of programs. 8 These programs are typically used internally to Cabal. %portablecabal-devel@haskell.orgNoneDThe configuration is a collection of information about programs. It M contains information both about configured programs and also about programs  that we are yet to configure. MThe idea is that we start from a collection of unconfigured programs and one F by one we try to configure them at which point we move them into the I configured collection. For unconfigured programs we record not just the  D but also any user-provided arguments and location for the program. The Read/5Show instance does not preserve all the unconfigured Programs  because  is not in Read/*Show because it contains functions. So to  fully restore a deserialised  use this function to add  back all the known s. G It does not add the default programs, but you probably want them, use  * in addition to any extra you might need. 0Add a known program that we may configure later Get the current  used by the . J This is the default list of locations where programs are looked for when E configuring them. This can be overriden for specific programs (with  9), and specific known programs can modify or ignore this . search path in their own configuration code. Change the current  used by the . D This will affect programs that are configured from here on, so you 8 should usually set it before configuring any programs. AUser-specify this path. Basically override any path information - for this program in the configuration. If it's not a known  program ignore it. AUser-specify the arguments for this program. Basically override B any args information for this program in the configuration. If it's " not a known program, ignore it.. Like * but for a list of progs and their paths. Like ) but for a list of progs and their args. }GGet the path that has been previously specified for a program, if any. FGet any extra args that have been previously specified for a program. !Try to find a configured program -Update a configured program in the database. KTry to configure a specific program. If the program is already included in G the colleciton of unconfigured programs then we use any user-supplied L location and arguments. If the program gets configured sucessfully it gets % added to the configured collection. ENote that it is not a failure if the program cannot be configured. It's only N a failure if the user supplied a location and the program could not be found  at that location. BThe reason for it not being a failure at this stage is that we don' t know up G front all the programs we will need, so we try to configure them all. B To verify that a program was actually sucessfully configured use  . ~$Configure a bunch of programs using  . Just a . KTry to configure all the known programs that have not yet been configured. Hreconfigure a bunch of programs given new user-specified args. It takes  the same inputs as  and  and for all progs  with a new path it calls . <Check that a program is configured and available to be run. IIt 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. JAdditionally check that the version of the program number is suitable and * return it. For example you could require  AnyVersion or  orLaterVersion ( [1,0] []) MIt raises an exception if the program could not be configured or the version L is unsuitable, otherwise it returns the configured program and its version  number. $ Program name #user-specified path to the program  Program name user-specified args }~ }~&portablecabal-devel@haskell.orgNone#Runs the given configured program. 7Runs 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.  Verbosity The program to run Any extra arguments to add  Verbosity The program to run Any extra arguments to add  verbosity The program to run look up the program here Any extra arguments to add  verbosity The program to run look up the program here Any extra arguments to add      f     g          'portablecabal-devel@haskell.orgNone+N Flags to register and  unregister: (user package, gen-script,  in-place, verbosity) V Flags to sdist: (snapshot, verbosity) ] Flags to install: (package db, verbosity) d Flags to copy7: (destdir, copy-prefix (backwards compat), verbosity) i Flags to  configure command kAll programs that cabal may  run luser specifed programs paths muser specifed programs args nExtend the $PATH oThe "flavor" of the  compiler, sugh as GHC or  Hugs. pgiven compiler location qgiven hc-pkg location rEnable vanilla library s Enable profiling in the library tBuild shared library uEnable dynamic linking of the  executables. vEnable profiling in the  executables. wExtra arguments to  configure xEnable optimization. yInstalled executable prefix. zInstalled executable suffix. { Installation  paths }#path to search for extra libraries ~ path to search for header files dist prefix verbosity level  The --user/--global flag Which package DBs to use "Enable compiling library for GHCi Enable -split-objs with GHC Enable executable stripping Additional constraints for  dependencies Enable test suite compilation Enable benchmark compilation #Enable test suite program coverage ;Flags that apply at the top level, not to any sub-command. 2All 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-foo gives us Just False < So this Flag type is for the latter singular kind of flag. C 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  . Like +, but allows to customise the option name. For each known program PROG in progConf , produce a  PROG-option  . For each known program PROG in progConf , produce a  PROG-options  . Arguments to pass to a  configure script, e.g. generated by  autoconf. <Helper function to split a string into a list of arguments.  It'1s supposed to handle quoted things sensibly, eg: 2 splitArgs "--foo=\"C:\Program Files\Bar\" --baz" - = ["--foo=C:\Program Files\Bar", "--baz"]  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ijklmnopqrstuvwxyz{|}~defgh]^_`abc456789:;<=>?@ABCDEFGHIJKLM()*+,-.!"#$%&'/0123NOPQRSTUVWXYZ[\ g  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi!jklmnopqrstuvwxyz{|}~(portablecabal-devel@haskell.orgNone ' )None1 -static -dynamic-too -dynamic -statice.g. -Odph  -O2 -O -O0ghc --abi-hash ' | GhcModeDepAnalysis -- ^ ghc -M ' | GhcModeEvaluate -- ^ ghc -e ghci / ghc --interactive   ghc --make ghc ghc -cA structured set of GHC options/flags 'The major mode for the ghc invocation. IAny extra options to pass directly to ghc. These go at the end and hence  override other stuff. GExtra default flags to pass directly to ghc. These go at the beginning * and so can be overridden by other stuff. DThe main input files; could be .hs, .hi, .c, .o, depending on mode. /The names of input Haskell modules, mainly for --make mode. Location for output file; the ghc -o flag. $Location for dynamic output file in  mode;  the  ghc -dyno flag. :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. 1The package name the modules will belong to; the ghc -package-name flag "GHC package databases to use, the ghc -package-conf flag FThe 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. #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. Don'-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. EA 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. Compile in profiling mode; the  ghc -prof flag. Use the "split object files" feature; the ghc -split-objs flag.  Extra GHCi startup scripts; the  -ghci-script flag only in  mode only in  mode +Get GHC to be quiet or verbose with what it' s doing; the ghc -v flag. "Let GHC know that it is Cabal that's calling it. * Modifies some of the GHC error messages. E     B     B      /     *portablecabal-devel@haskell.orgNone#HResolved internal and external package dependencies for this component.  The 4 specifies a set of build dependencies that must be K satisfied in terms of version ranges. This field fixes those dependencies G to the specific versions available on this machine for this compiler. *0Data cached after configuration step. See also  i. ,*Options passed to the configuration step. ; Needed to re-run configuration when .cabal is out of date -;Extra args on the command line for the configuration step. ; Needed to re-run configuration when .cabal is out of date .6The installation directories for the various differnt  kinds of files 2TODO: inplaceDirTemplates :: InstallDirs FilePath /The compiler we're building with 0The platform we're building for 1Where to build the package. TODO: eliminate hugs's scratchDir, use builddir 2+Where to put the result of the Hugs build. 3VAll the components to build, ordered by topological sort, and with their dependencies ( over the intrapackage dependency graph 43All the info about the installed packages that the 6 current package depends on (directly or indirectly). 56the filename containing the .cabal file, if available 68The resolved package description, that does not contain  any conditionals. 7#Location and args for all programs 8$What package database to use, global/user 9Whether 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. >3Whether to build with optimization (if available). ?2Whether to build libs suitable for use with GHCi. @'Use -split-objs with GHC, if available A,Whether to strip executables during install B0Prefix to be prepended to installed executables C/Suffix to be appended to installed executables DFExternal package dependencies for the package as a whole. This is the  union of the individual , less any internal deps. EKThe installed package Id we use for local packages registered in the local M package db. This is what is used for intra-package deps between components. J@All the components in the package (libs, exes, or test suites). KBAll the components in the package that are buildable and enabled. K Thus this excludes non-buildable components and test suites or benchmarks  that have been disabled. QAIf the package description has a library section, call the given I function with the library build info as argument. Extended version of  7+ that also gives corresponding build info. R%Perform the action on each buildable  in the package # description. Extended version of ; that also gives corresponding  build info. U%Perform the action on each buildable  or  (Component) H in the PackageDescription, subject to the build order specified by the  compBuildOrder field of the given * ZSee  [See  J !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\~      !"#$ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\M*+,-./0123456789:;<=>?@ABCDE%)('& $#"!FGIHLMJKNOPWXYUVTQRSZ[\  $#"!%)('&*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\+portablecabal-devel@haskell.orgNone`5The directory in which we put auto-generated modules b@The name of the auto-generated module associated with a package gExtension for executable files  (typically "" on Unix and "exe" on Windows or OS/2) h=Extension for object files. For GHC and NHC the extension is "o".  Hugs uses either "o" or "obj"# depending on the used C compiler. i7Extension for dynamically linked (or shared) libraries  (typically "so" on Unix and "dll" on Windows) ]^_`abcdefghi]^_`abcdefghi]^_`bacdefghi ]^_`abcdefghi,portablecabal-devel@haskell.orgNonejThe contents of the cabal_macros.h# for the given configured package. k(Helper function that generates just the  VERSION_pkg and MIN_VERSION_pkg J macros for a list of package ids (usually used with the specific deps of  a configured package). jkjkjkjk-portablecabal-devel@haskell.orgNonemDGenerates the name of the environment variable controlling the path  component of interest. lmpath component; one of "bindir", "libdir",  "datadir", " libexecdir", or " sysconfdir" environment variable name lmlmlm.duncan@community.haskell.orgNoneFA matcher embodies a way to match some input as being some recognised D 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 . p (no such thing, actually got) q expected thing (actually got) tA fully resolved build target. u-A specific file within a specific component. v/A specific module within a specific component. wA specific component x5Various ways that a user may specify a build target. FA target specified by a qualifier and name. This could be a component E name qualified by the component namespace kind, or a module or file " qualified by the component name.  cabal build lib:foo exe:foo  cabal build foo:Data.Foo  cabal build foo:Data/Foo.hs ?A target specified by a single name. This could be a component  module or file.  cabal build foo  cabal build Data.Foo ' cabal build Data/Foo.hs Data/Foo.hsc |HGiven a bunch of user-specified targets, try to resolve what it is they  refer to. BCombine two matchers. Exact matches are used over inexact matches G 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 H difference that an exact match from the left matcher shadows any exact B 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 E for an exact or inexact match. We get an inexact match if the match J is not exact, but the canonical forms match. It takes a canonicalisation  function for this purpose. CSo for example if we used string case fold as the canonicalisation J function, then we would get case insensitive matching (but it will still 3 report an exact match when the case matches too). rnopqrstuvwxyz{|}                   nopqrstuvwxyz{|}twvuyxzrs{|nqpo}Rnqporstwvuxyz{|}                   /portablecabal-devel@haskell.orgNone Given something like usrlocalbin ghc-6.6.1(.exe) we try and find E the corresponding tool; e.g. if the tool is ghc-pkg, we try looking B for a versioned or unversioned ghc-pkg in the same dir, that is: ( /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 usrlocalbin"ghc-6.6.1(.exe) we try and find a L corresponding ghc-pkg, we try looking for both a versioned and unversioned # ghc-pkg in the same dir, that is: ( /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 usrlocalbin"ghc-6.6.1(.exe) we try and find a K corresponding hsc2hs, we try looking for both a versioned and unversioned " hsc2hs in the same dir, that is: ' /usr/local/bin/hsc2hs-ghc-6.6.1(.exe) # /usr/local/bin/hsc2hs-6.6.1(.exe)  /usr/local/bin/hsc2hs(.exe) 0Adjust the way we find and configure gcc and ld JFor GHC 6.6.x and earlier, the mapping from supported extensions to flags :Given a single package DB, return all installed packages. 9Given a package DB stack, return all installed packages. Given a list of !(PackageDB, InstalledPackageInfo) pairs, produce a   PackageIndex. Helper function used by  and  . ;Get the packages from specific PackageDBs, not cumulative. Build a library with GHC. Build a library with GHC. Build an executable with GHC. Build an executable with GHC.  Filter the  -threaded$ flag when profiling as it does not  work with ghc-6.8 and older. !/Strip out flags that are not supported in ghci <Extracts a String representing a hash of the ABI of a built > library. It can fail if the library has not yet been built. Install executables for GHC. 7Install for ghc, .hi, .a and, if --with-ghci given, .o "On MacOS X we have to call ranlib' to regenerate the archive index after K copying. This is because the silly MacOS X linker checks that the archive = index is not older than the file itself, which means simply  copying/ installing the file breaks it!! 6Create an empty package DB at the specified location. Run  'ghc-pkg'9 using a given package DB stack, directly forwarding the ( provided command-line arguments to it. *~ #     $ %   & ' ( )  * + , ! - . /Where to copy the files to Build location Executable (prefix,suffix) 0install location &install location for dynamic librarys Build location " 1~~*~ #     $ %   & ' ( )  * + , ! - . / 0 " 10portablecabal-devel@haskell.orgNone 2'The flags for the supported extensions Building a package for JHC. - Currently C source files are not supported.  Building an executable for JHC. - Currently C source files are not supported.  3 2 4 5  3 2 4 51portablecabal-devel@haskell.orgNone 60Adjust the way we find and configure gcc and ld 7;Get the packages from specific PackageDBs, not cumulative. Build a library with LHC. Build an executable with LHC. 8 Filter the  -threaded$ flag when profiling as it does not  work with ghc-6.8 and older. Install executables for GHC. 7Install for ghc, .hi, .a and, if --with-ghci given, .o 9use ranlib or ar -s1 to build an index. This is necessary on systems  like MacOS X. If we can't find those, don't worry too much about it.  6 : ; < 7 = 8 > ? @ A B C DWhere to copy the files to Build location Executable (prefix,suffix) Einstall location &install location for dynamic librarys Build location 9   6 : ; < 7 = 8 > ? @ A B C D E 92portablecabal-devel@haskell.orgNone F'The flags for the supported extensions GKThis is a backup option for existing versions of nhc98 which do not supply K proper installed package info files for the bundled libs. Instead we look @ for the .cabal file and extract the package version from that.  We don'Et know any other details for such packages, in particular we pretend ! that they have no dependencies. ?FIX: For now, the target must contain a main module. Not used  ATM. Re-add later.  Building an executable for NHC. Install executables for NHC. $Install for nhc98: .hi and .a files  H F I J K L G M N O verbosity install location Build location Executable (prefix,suffix)  verbosity install location Build location  H F I J K L G M N O3portablecabal-devel@haskell.orgNone P(The flags for the supported extensions. QKHack to add version numbers to UHC-builtin packages. This should sooner or ! later be fixed on the UHC side. R+Name of the installed package config file. SCCheck if a certain dir contains a valid package. Currently, we are F looking only for the presence of an installed package configuration. B TODO: Actually make use of the information provided in the file. T5Create a trivial package info from a directory name.  U P V W Q R S X T Y Z [ \ ] ^ U P V W Q R S X T Y Z [ \ ] ^4portablecabal-devel@haskell.orgNoneFConditionally enable Haskell Program Coverage by adding the necessary & GHC options to a PackageDescription. ITODO: do this differently in the build stage by constructing local build 9 info, not by modifying the original PackageDescription. -Path to the .tix file containing a test suite's sum statistics. +Generate the HTML markup for a test suite. -Generate the HTML markup for all of a package's test suites. Enable coverage? "dist/" prefix _"dist/" prefix Directory containing component's HPC .mix files `"dist/" prefix Component name Directory containing test suite' s .mix files "dist/" prefix Component name Directory containing test suite' s .tix files "dist/" prefix Component name Path to test suite' s .tix file "dist/" prefix Component name Path to test suite's HTML markup directory "dist/" prefix  Library name "dist/" prefix  Library name  _ `5portablecabal-devel@haskell.orgNone0Logs test suite results, itemized by test case. ILogs all test results for a package, broken down first by test suite and  then by test case. aA 2 with package and platform information specified. b<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 2, determine if the test suite encountered errors. cIRun a test executable, logging the output and generating the appropriate  summary messages.  Perform the "./ setup test" action. dCPrint a summary to the console after all test suites have been run E indicating the number of successful test suites and cases. Returns  e if  all test suites passed and  f otherwise. g%Print a summary of a single test case'$s result to the console, supressing 5 output for certain verbosity or test filter levels. h!Print a summary of the test suite'&s results on the console, suppressing 5 output for certain verbosity or test filter levels. JThe filename of the source file for the stub executable associated with a  library  TestSuite. :The name of the stub executable associated with a library  TestSuite. $Write the source file for a library  TestSuite stub executable. i3Source code for library test suite stub executable KMain function for test stubs. Once, it was written directly into the stub, M but minimizing the amount of code actually in the stub maximizes the number . of detectable errors when Cabal is compiled. j The test runner used in library  TestSuite stub executables. Runs a list  of Bs. An executable calling this function is meant to be invoked as % the child of a Cabal process during ./ setup test. A , M provided by Cabal, is read from the standard input; it supplies the name of N the test suite and the location of the machine-readable test suite log file. N Human-readable log information is written to the standard output for capture  by the calling Cabal process. kFrom a test stub, write the # to temporary file for the calling  Cabal process to read. ' a bPasses, fails, and errors,  respectively.  cflags Cabal was invoked with 1description of package the test suite belongs to $information from the configure step TestSuite being tested +prepare standard input for test executable executable name generator for the TestSuiteLog 0generator for final human-readable log filename !information from the .cabal file $information from the configure step flags sent to test d g h l m n o plibrary  TestSuite for which a stub  is being created $path to directory where stub source  should be located i j k a b c d g h l m n o p i j k6portablecabal-devel@haskell.orgNoneFA preprocessor for turning non-Haskell files with the given extension " into plain Haskell source files. CThe interface to a preprocessor, which may be implemented using an C external program, but need not be. The arguments are the name of D the input file, the name of the output file and a verbosity level. F Here is a simple example that merely prepends a comment to the given  source file:   ppTestHandler :: PreProcessor  ppTestHandler =  PreProcessor { ! platformIndependent = True, K runPreProcessor = mkSimplePreProcessor $ \inFile outFile verbosity -> I do info verbosity (inFile++" has been preprocessed to "++outFile) # stuff <- readFile inFile G writeFile outFile ("-- preprocessed as a test\n\n" ++ stuff)  return ExitSuccess GWe split the input and output file names into a base directory and the M rest of the file name. The input base dir is the path in the list of search N dirs that this file was found in. The output base dir is the build dir where ) all the generated source files are put. GThe reason for splitting it up this way is that some pre-processors don't B simply generate one output .hs file from one input file but have J dependencies on other genereated files (notably c2hs, where building one K .hs file may require reading other .chi files, and then compiling the .hs M file may require reading a generated .h file). In these cases the generated M files need to embed relative path names to each other (eg the generated .hs N file mentions the .h file in the FFI imports). This path must be relative to I the base directory where the genereated files are located, it cannot be J relative to the top level of the build tree because the compilers do not 7 look for .h files relative to there, ie we do not use "-I ." , instead we  use "-I dist/build"1 (or whatever dist dir has been set by the user) GMost pre-processors do not care of course, so mkSimplePreProcessor and 9 runSimplePreProcessor functions handle the simple case. (Apply preprocessors to the sources from  for a given & component (lib, exe, or test suite). qDFind the first extension of the file that exists, and preprocess it  if required. ?Convenience function; get the suffixes of these preprocessors. HStandard preprocessors: GreenCard, c2hs, hsc2hs, happy, alex and cpphs.  qsource directories build directory preprocess for sdist module file name  verbosity builtin suffixes possible preprocessors  r s t u q r s t u7portablecabal-devel@haskell.orgNone-EHooks allow authors to add specific functionality before and after a ? command is run, and also to specify additional preprocessors. I WARNING: The hooks interface is under rather constant flux as we try to G understand users needs. Setup files that depend on this interface may  break in future releases.  Used for ./ setup test Read the description file 3Custom 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 command IHook to run before build command. Second arg indicates verbosity level. =Over-ride this hook to gbet different behavior during build. HHook to run after build command. Second arg indicates verbosity level. HHook to run before repl command. Second arg indicates verbosity level. EOver-ride this hook to get different behavior during interpretation. GHook to run after repl command. Second arg indicates verbosity level. IHook to run before clean command. Second arg indicates verbosity level. <Over-ride this hook to get different behavior during clean. HHook 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. ;Hook to run after install command. postInst should be run * on the target, not on the build machine. IHook to run before sdist command. Second arg indicates verbosity level. <Over-ride this hook to get different behavior during sdist. HHook to run after sdist command. Second arg indicates verbosity level. $Hook to run before register command COver-ride this hook to get different behavior during registration. #Hook to run after register command &Hook to run before unregister command EOver-ride this hook to get different behavior during unregistration. %Hook to run after unregister command LHook to run before hscolour command. Second arg indicates verbosity level. ?Over-ride this hook to get different behavior during hscolour. KHook to run after hscolour command. Second arg indicates verbosity level. KHook to run before haddock command. Second arg indicates verbosity level. >Over-ride this hook to get different behavior during haddock. JHook 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. /  /  /  ,  8portablecabal-devel@haskell.orgNone  Perform the "./ setup bench" action.  "positional command-line arguments !information from the .cabal file $information from the configure step flags sent to benchmark v   v9portablecabal-devel@haskell.orgNone w$Callback type for use by sdistWith.  Create a source distribution.  DList all source files of a package. Returns a tuple of lists: first L component is a list of ordinary files, second one is a list of those files  that may be executable. xLList those source files that may be executable (e.g. the configure script). yIList those source files that should be copied with ordinary permissions. *Prepare a directory tree of source files. z*Find the setup script file, if it exists. {BCreate a default setup script in the target directory, if it doesn' t exist. |Find the main executable file. }BGiven a list of include paths, try to find the include file named  fG. 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'. APrepare a directory tree of source files for a snapshot version. K It is expected that the appropriate snapshot version has already been set & in the package description, eg using  or .  Modifies a  by appending a snapshot number " corresponding to the given date.  Modifies a . by appending a snapshot number corresponding  to the given date. =Given a date produce a corresponding integer representation.  For example given a date 18032008 produce the number 20080318. FCreate an archive from a tree of source files, and clean up the tree. 9Given a buildinfo, return the names of all source files. *The name of the tarball without extension  w verbosity info from cabal file info from configure source tree to archive name of archive to create  information from the tarball Information from configure  verbosity & snapshot build prefix (temp dir) (extra preprocessors (includes suffixes)   verbosity info from the cabal file extra preprocessors (include  suffixes) x y verbosity info from the cabal file source tree to populate (extra preprocessors (includes suffixes) z { | } ~ verbosity info from the cabal file source tree to populate extra preprocessors (includes  suffixes)  verbosity info from the cabal file  source tree  Extra preprocessors Exposed modules        w  x y z { | } ~   :portablecabal-devel@haskell.orgNone 'The flags for the supported extensions JThis is a backup option for existing versions of Hugs which do not supply K proper installed package info files for the bundled libs. Instead we look J for the Paths_pkgname.hs file and extract the package version from that.  We don'Et know any other details for such packages, in particular we pretend ! that they have no dependencies. Building a package for Hugs. !Building an executable for Hugs. ARead the initial part of a source file, before any Haskell code, G and return the contents of any LANGUAGE, OPTIONS and INCLUDE pragmas. $Strip comments from Haskell source. Install for Hugs. 5 For install, copy-prefix = prefix, but for copy they're different.  The library goes in < copy-prefix>/lib/hugs/packages/< pkgname>  (i.e. <prefix>/lib/hugs/packages/< pkgname> on the target system).  Each executable goes in < copy-prefix>/lib/hugs/programs/< exename>  (i.e. <prefix>/lib/hugs/programs/<exename> on the target system)  with a script < copy-prefix>/bin/<exename> pointing at  <prefix>/lib/hugs/programs/< exename>. <Filename used by Hugs for the main module of an executable. E This is a simple filename, so that Hugs will look for any auxiliary - modules it uses relative to the directory it's in.    output directory &library source dirs, if building exes Modules preserve pragmas? input source text  verbosity Library install location Program install location Executable install location "Program location on target system Build location Executable (prefix,suffix)     ;portablecabal-devel@haskell.orgNone6Create an empty package DB at the specified location. Run hc-pkg9 using a given package DB stack, directly forwarding the ( provided command-line arguments to it.   Construct ) for a library in a package, given a set  of installation directories. ! Construct & for a library that is inplace in the  build tree. :This function knows about the layout of inplace packages. " Construct % 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   (Translate relative include dir paths to  absolute paths. !top of the build tree location of the dist tree "#  !"# #!"   !"# <portablecabal-devel@haskell.orgNone$ Perform the "./ setup install" and "./ setup copy" E actions. Move files into place based on the prefix argument. FIX:  nhc isn't implemented yet. 'Install the files listed in data-files -Install the files listed in install-includes $!information from the .cabal file $information from the configure step flags sent to copy or install $$$ =portablecabal-devel@haskell.orgNone%5Build the libraries and executables in this package. 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 7Initialize 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 ECheck that the given build targets are valid in the current context. *Also swizzle into a more convenient form. %(Mostly information from the .cabal file Configuration information $Flags that the user passed to build &preprocessors to run before compiling &(Mostly information from the .cabal file Configuration information $Flags that the user passed to build &preprocessors to run before compiling 'dist prefix (mostly information from the .cabal file Configuration information The verbosity to use ( %&'(%&'(%& '( >portablecabal-devel@haskell.orgNone the FilePath of a directory, it's a monoid under ( /) Rrecord that represents the arguments to the haddock executable, a product monoid. @path of the interface file, relative to argOutputDir, required. @package name, required. "(hide modules ?, modules to hide)  ingore export lists in modules? -(template for modules, template for symbols) optinal custom css file. optional url to contents page HHtml or Hoogle doc or both? required. 0(interface file, URL to the html docs for links) %where to generate the documentation. page';s title, required. @prologue text, required.  additional flags to pass to ghc @to find the correct ghc, required. modules to process. +Call haddock with the specified arguments. ;The directory where we put build results for an executable 1 ) template for html location template for html location template for html location * )*)*    ) * ?portablecabal-devel@haskell.orgNone 1Try to read the 6. 2 Read the 6. Error if it doesn't exist. Also E fail if the file containing LocalBuildInfo is older than the .cabal 3 file, indicating that a re-configure is required. 3Try to read the 6. 4$After running configure, output the * to the  6. 5@Check that localBuildInfoFile is up-to-date with respect to the  .cabal file. 6 dist/ setup-config7 Perform the "./setup configure" action.  Returns the  .setup-config file. HTest for a package dependency and record the version we have installed. 9Like 8, but for a single package DB. :JThe user interface specifies the package dbs to use with a combination of  --global, --user and $--package-db=global|user|clear|$file. " 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. MThis can be used with the output from configuration programs like pkg-config O and similar package-specific programs like mysql-config, freealut-config etc.  For example: H ccflags <- rawSystemProgramStdoutConf verbosity prog conf ["--cflags"] F ldflags <- rawSystemProgramStdoutConf verbosity prog conf ["--libs"] ? return (ccldOptionsBuildInfo (words ccflags) (words ldflags)) >Output package check warnings and errors. Exit if any errors. . +,-./01234 567 Internally defined packages Installed packages 89: ;<=>? @ +,-./0123456789:;<=>?@742513689>?=<;@:,/.-+0'   +,/.-01234 567 89: ;<=>? @ @portablecabal-devel@haskell.orgNoneAA simple implementation of main for a Cabal setup script. B It reads the package description file using IO, and performs the ' action specified on the command line. B A version of A! that is passed the command line ; arguments, rather than getting them from the environment. CA customizable version of A. DA customizable version of A that also takes the command  line arguments. ELike A/, but accepts the package description as input " rather than using IO to read it. 6Combine the preprocessors in the given hooks with the ! preprocessors built into cabal. F6Hooks that correspond to a plain instantiation of the  "simple" build system GBasic 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. $ABCDE      FGH   %cdefghijklmnopqrstuvwxyz{|}~%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~UVWXYZ[\]^_`abcdefghijklm  ABCDEFGH8AEB CDFHG $ABCDE      FGH    WXYWXZWX[WX[W\]W^_`abcddefghijklgmnopqrstuvwxyz{{|}~E                                                                ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 :;<=>?@ABCDEFGHIJKLMNOPQRSTTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~)       !"#$%&'()*+,-./01233456789:;<=>?@@ABCDEEFGHIIJKLMNOPQRSSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~RR     SSSSSSSSSSSSSSSUWXYZ\]`ab J!"#$%&'&'()*+,-./0123456789:;<=>?@ABB|CDEFGHIIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkklmnopqrstuvwxyz{|}~ !""###$$$$$$$$$$$$$$$$$$$$$$$$$$$$% % % % % %%%%%%%%%%%%%%%%%%& &!&"&#&$&%&&&'&(&)&*&+&,'-'-'.'/'0'1'1'2'3'4'5'6'7'8'9':';'<'='>'>'?'@'A'B'C'D'D'E'F'G'H'I'J'J'K'L'M'N'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_'_'`'a'b'c'd'e'f'f'g'h'i'j'k'l'm'm'n'o'p'q'r's's't'u'v'w'x'y'y'z'{'|'}'}'~'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''V'W''''''((()))))))))))))))))))))))))))))))))))))))))))) ) ) ) ) ))))))))))))))))))* *!*"*#*$*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*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*g*h*k+e+f+g+h+i+j+k+l+m+n+o+p+q,r,s-r-t.u.v.w.x.y.z.{.|.}.~....../////////////////0000001111111112222223333334444445555A5555555555T5:55i555555556666666666666666666777777777777777777777777777777777777777777777778999999999::::::;;;;;;;;;<====>>???? ? ? ? ? ??????????????@@@@@@@@AAAVAWA]AZAcAA A!A"A#A$%&a'()*+,-./01B2B@BAB3B=B4B5B6B7B8B9B:B;B<B=B>B?B@BABBBCBDBBEBFBGBHBIBJBKLMNOP`bQRSTUVWXYZ[\]^_`abcdefghijklm nWop q r  s t u v w x y z { | }W~                   W*OWWWWWo QQQQQQQWWRRRRRWSSS)SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS S S S S SSSSSSSSSSSSSSSSSSS S!S"S#S$S%S&S'S(S)S*S+S,S-S.S/S0S1S2S3S4S5S6S7S8S9S:S;S<S=>?@TWABTTTTTTTTTTTT TTTTUTWTXTYTZT\T]TaTbT TJT!T#T$T%T&T'T&T'TT(TTT)TT*T+TCTDTETFTGUUUTUUUWUXUYUZU\U]UaUbU UJU!U#U$U%U&U&U'UU(UUU)UU*U+UDUGHI2JKLMNOPQRSTUVWXYZ[\]^_`abcdgefYZghijklmnopqrstuvwxyz{|}~WcV""%%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.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.{.|.}.~......../////////////////////////0000111111111111111122222222223333333333333334455555555555555666668999999999999::::::::::::::::::::::::;;;<<====== = = ====> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > !> "> #> $> %> &> '> (> )> *> +> ,> -> .> /> 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 [Cabal-1.18.1.4Distribution.VersionDistribution.Simple.UtilsDistribution.Compat.ReadPDistribution.TestSuite$Distribution.Simple.PreProcess.Unlit%Distribution.PackageDescription.UtilsDistribution.Simple.CCompilerDistribution.TextDistribution.CompilerDistribution.LicenseDistribution.PackageDistribution.ModuleNameDistribution.SystemDistribution.Simple.InstallDirsLanguage.Haskell.ExtensionDistribution.PackageDescriptionDistribution.Simple.CompilerDistribution.ReadEDistribution.VerbosityDistribution.Compat.Exception%Distribution.PackageDescription.Parse!Distribution.InstalledPackageInfoDistribution.Simple.Command-Distribution.PackageDescription.Configuration%Distribution.PackageDescription.Check+Distribution.PackageDescription.PrettyPrint Distribution.Simple.PackageIndex Distribution.Simple.Program.Find!Distribution.Simple.Program.TypesDistribution.Simple.Program.Run!Distribution.Simple.Program.HcPkgDistribution.Simple.Program.ArDistribution.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.Macros%Distribution.Simple.Build.PathsModuleDistribution.Simple.BuildTargetDistribution.Simple.GHCDistribution.Simple.JHCDistribution.Simple.LHCDistribution.Simple.NHCDistribution.Simple.UHCDistribution.Simple.HpcDistribution.Simple.TestDistribution.Simple.PreProcessDistribution.Simple.UserHooksDistribution.Simple.BenchDistribution.Simple.SrcDistDistribution.Simple.HugsDistribution.Simple.RegisterDistribution.Simple.InstallDistribution.Simple.BuildDistribution.Simple.HaddockDistribution.Simple.ConfigureDistribution.Simple Paths_CabalDistribution.GetOptSystem.EnvironmentgetArgs simpleParse Data.FoldableFoldableData.Traversable Traversable Data.FunctorFunctor GHC.GenericsGenericGeneric1 Data.GenericsDataDistribution.Compat.TempFileDistribution.Compat.CopyFileDistribution.ParseUtilsDistribution.Simple.GHC.IPI642Distribution.Simple.GHC.IPI641Distribution.Compat.Environmentbase Data.Version versionTags versionBranchVersion Data.List intercalateText.ParserCombinators.ReadPReadSResultErrorFailPassProgressFinishedOptionsTest ExtraOptionsGroup groupName concurrently groupTests OptionType OptionRngSeed OptionSet OptionEnum OptionBool OptionNumberoptionNumberIsIntoptionNumberBounds OptionStringoptionStringMultiline OptionFileoptionFileMustExistoptionFileIsDiroptionFileExtensions OptionDescr optionNameoptionDescription optionType optionDefault TestInstancerunnametagsoptions setOption testGroupplainunlituserBugcabalBugCDialectObjectiveCPlusPlus CPlusPlus ObjectiveCCcSourceExtensionscDialectFilenameExtensionfilenameCDialectReadPgetlookpfail+++<++gathersatisfycharstringmunchmunch1choice skipSpacescountbetweenoptionoptionalmanymany1skipMany skipMany1sepBysepBy1endByendBy1chainrchainlchainr1chainl1manyTill readP_to_S readS_to_PTextdispparsedisplayBoundInclusiveBoundExclusiveBound UpperBound NoUpperBound LowerBoundVersionIntervalVersionIntervals VersionRangeVersionRangeParensIntersectVersionRangesUnionVersionRangesWildcardVersionEarlierVersion LaterVersion ThisVersion AnyVersion anyVersion noVersion thisVersionnotThisVersion laterVersionorLaterVersionearlierVersionorEarlierVersionunionVersionRangesintersectVersionRanges withinVersionbetweenVersionsInclusivefoldVersionRangefoldVersionRange' withinRangeasVersionIntervals isAnyVersion isNoVersionisSpecificVersionsimplifyVersionRangeversionIntervalsmkVersionIntervalswithinIntervalstoVersionIntervalsfromVersionIntervalsunionVersionIntervalsintersectVersionIntervals CompilerIdCompilerFlavor OtherCompilerUHCLHCJHCHeliumHBCHugsYHCNHCGHCparseCompilerFlavorCompatbuildCompilerFlavorbuildCompilerIddefaultCompilerFlavorLicenseUnknownLicense OtherLicenseAllRightsReserved PublicDomainApacheMITBSD4BSD3LGPLAGPLGPL knownLicensesPackageFixedDepsdependsPackage packageId DependencyInstalledPackageIdPackageIdentifierpkgName pkgVersion PackageId PackageNamethisPackageVersionnotThisPackageVersionsimplifyDependency packageNamepackageVersion ModuleNamesimple fromStringmain components toFilePathPlatformArch OtherArchVaxM68kRs6000HppaAlphaS390IA64SHMipsArmSparcPPC64PPCX86_64I386OSOtherOSIOSHaLVMIRIXHPUXAIXSolarisNetBSDOpenBSDFreeBSDOSXWindowsLinuxbuildOS buildArch buildPlatformplatformFromTriplePathTemplateEnvPathTemplateVariableBenchmarkNameVarTestSuiteResultVarTestSuiteNameVarExecutableNameVarArchVarOSVar CompilerVarPkgIdVar PkgVerVar PkgNameVar HtmldirVar DocdirVar DatasubdirVar DatadirVar LibsubdirVar LibdirVar BindirVar PrefixVar PathTemplateCopyDestCopyTo NoCopyDestInstallDirTemplates InstallDirsprefixbindirlibdir libsubdir dynlibdir libexecdirprogdir includedirdatadir datasubdirdocdirmandirhtmldir haddockdir sysconfdircombineInstallDirsdefaultInstallDirssubstituteInstallDirTemplatesabsoluteInstallDirsprefixRelativeInstallDirstoPathTemplatefromPathTemplatesubstPathTemplateinitialPathTemplateEnvpackageTemplateEnvcompilerTemplateEnvplatformTemplateEnvinstallDirsTemplateEnvKnownExtensionAllowAmbiguousTypesExplicitNamespacesNullaryTypeClasses NumDecimalsNegativeLiteralsAutoDeriveTypeable EmptyCaseOverloadedListsRoleAnnotationsParallelArrays DataKinds PolyKindsConstraintKindsUnsafe TrustworthySafe SafeImportsNondecreasingIndentationDeriveFoldableDeriveTraversable DeriveFunctorMonoLocalBindsDatatypeContextsExplicitForAllRebindableSyntax LambdaCase MultiWayIfDoAndIfThenElseNPlusKPatternsGHCForeignImportPrim TupleSectionsRegularPatterns XmlSyntax ViewPatternsMonadComprehensionsTransformListComp QuasiQuotesPostfixOperatorsNewQualifiedOperatorsImpredicativeTypesPackageImportsConstrainedClassMethods InstanceSigsDefaultSignatures DeriveGenericDeriveDataTypeable UnboxedTuplesExtendedDefaultRulesRelaxedPolyRec MonoPatBinds GADTSyntaxGADTsOverloadedStringsTraditionalRecordSyntaxDisambiguateRecordFields RecordPunsRecordWildCards TypeOperatorsLiberalTypeSynonymsCApiFFIInterruptibleFFIUnliftedFFITypes UnicodeSyntaxStandaloneDeriving TypeFamilies MagicHash HereDocumentsRestrictedTypeSynonymsExtensibleRecordsGeneralizedNewtypeDeriving PatternGuardsNamedFieldPunsImplicitPreludeGenericsArrowsForeignFunctionInterfaceTemplateHaskellTypeSynonymInstances BangPatternsKindSignaturesCPPEmptyDataDeclsFlexibleInstancesFlexibleContextsImplicitParamsPatternSignaturesScopedTypeVariablesExistentialQuantificationPolymorphicComponents RankNTypes Rank2TypesFunctionalDependenciesMonomorphismRestrictionMultiParamTypeClassesParallelListComp RecursiveDoDoRecIncoherentInstancesUndecidableInstancesOverlappingInstances ExtensionUnknownExtensionDisableExtensionEnableExtensionLanguageUnknownLanguage Haskell2010 Haskell98knownLanguagesknownExtensionsdeprecatedExtensionsCondTreeCondNode condTreeDatacondTreeConstraintscondTreeComponents ConditionCAndCOrCNotLitVarConfVarImplFlagFlagAssignmentFlagNameMkFlagflagNameflagDescription flagDefault flagManualGenericPackageDescriptionpackageDescriptiongenPackageFlags condLibrarycondExecutablescondTestSuitescondBenchmarksRepoType OtherRepoTypeMonotoneBazaarGnuArch MercurialCVSSVNGitDarcsRepoKindRepoKindUnknownRepoThisRepoHead SourceReporepoKindrepoType repoLocation repoModule repoBranchrepoTag repoSubdirHookedBuildInfo BuildInfo buildable buildTools cppOptions ccOptions ldOptionspkgconfigDepends frameworkscSources hsSourceDirs otherModulesdefaultLanguageotherLanguagesdefaultExtensionsotherExtensions oldExtensions extraLibs extraLibDirs includeDirsincludesinstallIncludesghcProfOptionsghcSharedOptionscustomFieldsBItargetBuildDepends BenchmarkTypeBenchmarkTypeUnknownBenchmarkTypeExeBenchmarkInterfaceBenchmarkUnsupportedBenchmarkExeV10 Benchmark benchmarkNamebenchmarkInterfacebenchmarkBuildInfobenchmarkEnabledTestTypeTestTypeUnknown TestTypeLib TestTypeExeTestSuiteInterfaceTestSuiteUnsupportedTestSuiteLibV09TestSuiteExeV10 TestSuitetestName testInterface testBuildInfo testEnabled ExecutableexeName modulePath buildInfoLibraryexposedModules libExposed libBuildInfo BuildTypeUnknownBuildTypeCustomMake ConfigureSimplePackageDescriptionpackagelicense licenseFile copyright maintainerauthor stability testedWithhomepagepkgUrl bugReports sourceRepossynopsis descriptioncategorycustomFieldsPD buildDependsspecVersionRaw buildTypelibrary executables testSuites benchmarks dataFilesdataDir extraSrcFiles extraTmpFiles extraDocFiles specVersiondescCabalVersionemptyPackageDescriptionknownBuildTypes emptyLibraryhasLibswithLib libModulesemptyExecutablehasExeswithExe exeModulesemptyTestSuitehasTests enabledTestswithTest testModulesknownTestTypestestTypeemptyBenchmark hasBenchmarksenabledBenchmarks withBenchmarkbenchmarkModulesknownBenchmarkTypes benchmarkTypeemptyBuildInfo allBuildInfo allLanguages allExtensionsusedExtensionsemptyHookedBuildInfo hcOptionsknownRepoTypesupdatePackageDescriptionOptimisationLevelMaximumOptimisationNormalOptimisationNoOptimisationPackageDBStack PackageDBSpecificPackageDB UserPackageDBGlobalPackageDBCompiler compilerIdcompilerLanguagescompilerExtensionsshowCompilerIdcompilerFlavorcompilerVersionregistrationPackageDBabsolutePackageDBPathsabsolutePackageDBPathflagToOptimisationLevelunsupportedLanguageslanguageToFlagsunsupportedExtensionsextensionsToFlagsReadErunReadE succeedReadE failReadE parseReadE readEOrFail readP_to_E Verbositysilentnormalverbose deafening moreVerbose lessVerboseintToVerbosityflagToVerbosity showForCabal showForGHCtryIOcatchIO catchExitsetFileOrdinarysetFileExecutableTempFileOptionsoptKeepTempFilesFileGlobNoGlob cabalVersiondieWithLocationdietopHandlerWith topHandlerwarnnotice setupMessageinfodebug debugNoWrap chattyTrywrapTextwrapLine maybeExit rawSystemExitrawSystemExitCoderawSystemExitWithEnvrawSystemIOWithEnvrawSystemStdoutrawSystemStdInOutfindProgramLocationfindProgramVersionxargsfindFilefindFileWithExtensionfindFileWithExtension' findFirstFilefindModuleFilesfindModuleFilegetDirectoryContentsRecursiveisInSearchPath parseFileGlob matchFileGlobmatchDirFileGlobmoreRecentFilecreateDirectoryIfMissingVerbosecopyFileVerboseinstallOrdinaryFileinstallExecutableFileinstallMaybeExecutableFile copyFileTo copyFilesinstallOrdinaryFilesinstallExecutableFilesinstallMaybeExecutableFilesinstallDirectoryContentssmartCopySourcescopyDirectoryRecursiveVerbosedefaultTempFileOptions withTempFilewithTempFileExwithTempDirectorywithTempDirectoryExwithFileContentswriteFileAtomic rewriteFile currentDirdefaultPackageDescfindPackageDescdefaultHookedPackageDescfindHookedPackageDescfromUTF8toUTF8 readUTF8FilewithUTF8FileContents writeUTF8FilenormaliseLineEndingsequating comparing isInfixOf lowercase FieldDescr fieldNamefieldGetfieldSet ParseResultParseOk ParseFailedPWarningPError FromString TabsErrorNoParseAmbiguousParseLineNoInstalledPackageInfoInstalledPackageInfo_installedPackageIdsourcePackageIdexposed hiddenModulestrusted importDirs libraryDirs hsLibrariesextraLibrariesextraGHCiLibraries hugsOptions frameworkDirshaddockInterfaces haddockHTMLsemptyInstalledPackageInfoparseInstalledPackageInfoshowInstalledPackageInfoshowInstalledPackageInfoField#showSimpleInstalledPackageInfoFieldfieldsInstalledPackageInfoCommand CommandParseCommandReadyToGo CommandErrors CommandList CommandHelp MkOptDescrArgPlaceHolderOptFlagsLFlagsSFlagsOptDescrBoolOpt ChoiceOptOptArgReqArg OptionField optionDescr DescriptionNameShowOrParseArgs ParseArgsShowArgs CommandUI commandNamecommandSynopsis commandUsagecommandDescriptioncommandDefaultFlagscommandOptions multiOptionreqArgoptArgreqArg'optArg'noArgboolOptboolOpt' choiceOptchoiceOptFromEnumviewAsFieldDescr liftOptioncommandShowOptions makeCommandcommandParseArgs hiddenCommandcommandAddAction commandsRun noExtraFlagsparseCondition mapCondTreemapTreeConstrs mapTreeConds mapTreeDatafreeVarsfinalizePackageDescriptionflattenPackageDescriptionCheckPackageContentOps doesFileExistdoesDirectoryExist PackageCheckPackageDistInexcusablePackageDistSuspiciousPackageBuildWarningPackageBuildImpossible explanation checkPackagecheckConfiguredPackagecheckPackageFilescheckPackageContentcheckPackageFileNamespkgDescrFieldDescrslibFieldDescrsexecutableFieldDescrstestSuiteFieldDescrsbinfoFieldDescrsflagFieldDescrssourceRepoFieldDescrsreadHookedBuildInforeadPackageDescriptionparsePackageDescriptionparseHookedBuildInfowritePackageDescriptionshowPackageDescriptionwriteHookedBuildInfoshowHookedBuildInfowriteGenericPackageDescriptionshowGenericPackageDescription SearchResult Ambiguous UnambiguousNone PackageIndexfromListmergeinsertdeleteInstalledPackageIddeleteSourcePackageIddeletePackageName allPackagesallPackagesByNameallPackagesBySourcePackageIdlookupInstalledPackageIdlookupSourcePackageIdlookupPackageNamelookupDependency searchByNamesearchByNameSubstringdependencyCyclesbrokenPackagesdependencyClosurereverseDependencyClosuretopologicalOrderreverseTopologicalOrderdependencyGraphdependencyInconsistenciesmoduleNameIndexProgramSearchPathEntryProgramSearchPathDefaultProgramSearchPathDirProgramSearchPathdefaultProgramSearchPathfindProgramOnSearchPathprogramSearchPathAsPATHVarProgramLocation FoundOnSystem UserSpecified locationPathConfiguredProgram programIdprogramVersionprogramDefaultArgsprogramOverrideArgsprogramOverrideEnvprogramLocationProgArgProgram programNameprogramFindLocationprogramFindVersionprogramPostConf programPathsuppressOverrideArgs simpleProgramsimpleConfiguredProgram IOEncodingIOEncodingUTF8IOEncodingTextProgramInvocationprogInvokePathprogInvokeArgs progInvokeEnv progInvokeCwdprogInvokeInputprogInvokeInputEncodingprogInvokeOutputEncodingemptyProgramInvocationsimpleProgramInvocationprogramInvocationrunProgramInvocationgetProgramInvocationOutputgetEffectiveEnvironmentmultiStageProgramInvocationinitinvokeregister reregister unregisterexposehidedumplistinitInvocationregisterInvocationreregisterInvocationunregisterInvocationexposeInvocationhideInvocationdumpInvocationlistInvocationcreateArLibArchivecombineObjectFilesmarkupunioninvocationAsSystemScriptinvocationAsShellScriptinvocationAsBatchFilebuiltinPrograms ghcProgram ghcPkgProgram lhcProgram lhcPkgProgram nhcProgram hmakeProgram jhcProgram uhcProgram hpcProgram hugsProgramffihugsProgram happyProgram alexProgram gccProgram ranlibProgram arProgram stripProgram hsc2hsProgram c2hsProgram cpphsProgramhscolourProgramhaddockProgramgreencardProgram ldProgram tarProgram cppProgrampkgConfigProgram ProgramDbemptyProgramDbdefaultProgramDbrestoreProgramDbaddKnownProgramaddKnownProgramslookupKnownProgram knownProgramsgetProgramSearchPathsetProgramSearchPathuserSpecifyPathuserMaybeSpecifyPathuserSpecifyArgsuserSpecifyPathsuserSpecifyArgssuserSpecifiedArgs lookupProgram updateProgramconfigureProgramconfigureAllKnownProgramsreconfigureProgramsrequireProgramrequireProgramVersionProgramConfiguration runProgramgetProgramOutput runDbProgramgetDbProgramOutputrawSystemProgramrawSystemProgramStdoutrawSystemProgramConfrawSystemProgramStdoutConfemptyProgramConfigurationdefaultProgramConfigurationrestoreProgramConfigurationfindProgramOnPathBenchmarkFlagsbenchmarkDistPrefbenchmarkVerbositybenchmarkOptions TestFlags testDistPref testVerbosity testHumanLogtestMachineLogtestShowDetails testKeepTixtestList testOptionsTestShowDetailsAlwaysFailuresNever ReplFlagsreplProgramPathsreplProgramArgs replDistPref replVerbosity replReload BuildFlagsbuildProgramPathsbuildProgramArgs buildDistPrefbuildVerbosity buildArgs CleanFlags cleanSaveConf cleanDistPrefcleanVerbosity HaddockFlagshaddockProgramPathshaddockProgramArgs haddockHoogle haddockHtmlhaddockHtmlLocationhaddockExecutableshaddockTestSuiteshaddockBenchmarkshaddockInternal haddockCsshaddockHscolourhaddockHscolourCsshaddockContentshaddockDistPrefhaddockKeepTempFileshaddockVerbosity HscolourFlags hscolourCSShscolourExecutableshscolourTestSuiteshscolourBenchmarkshscolourDistPrefhscolourVerbosity RegisterFlags regPackageDB regGenScript regGenPkgConf regInPlace regDistPref regVerbosity SDistFlags sDistSnapshotsDistDirectory sDistDistPrefsDistListSourcessDistVerbosity InstallFlagsinstallPackageDBinstallDistPrefinstallUseWrapperinstallInPlaceinstallVerbosity CopyFlagscopyDest copyDistPref copyVerbosity ConfigFlagsconfigProgramsconfigProgramPathsconfigProgramArgsconfigProgramPathExtraconfigHcFlavor configHcPath configHcPkgconfigVanillaLib configProfLibconfigSharedLib configDynExe configProfExeconfigConfigureArgsconfigOptimizationconfigProgPrefixconfigProgSuffixconfigInstallDirsconfigScratchDirconfigExtraLibDirsconfigExtraIncludeDirsconfigDistPrefconfigVerbosityconfigUserInstallconfigPackageDBs configGHCiLibconfigSplitObjsconfigStripExesconfigConstraintsconfigConfigurationsFlags configTestsconfigBenchmarksconfigLibCoverage GlobalFlags globalVersionglobalNumericVersionNoFlagdefaultDistPreftoFlagfromFlagfromFlagOrDefault flagToMaybe flagToListdefaultGlobalFlags globalCommandemptyGlobalFlagsconfigAbsolutePathsdefaultConfigFlagsconfigureCommandconfigureOptionsinstallDirsOptionsemptyConfigFlagsdefaultCopyFlags copyCommandemptyCopyFlagsdefaultInstallFlagsinstallCommandemptyInstallFlagsdefaultSDistFlags sdistCommandemptySDistFlagsdefaultRegisterFlagsregisterCommandunregisterCommandemptyRegisterFlagsemptyHscolourFlagsdefaultHscolourFlagshscolourCommanddefaultHaddockFlagshaddockCommandemptyHaddockFlagsdefaultCleanFlags cleanCommandemptyCleanFlags buildVerbosedefaultBuildFlags buildCommand buildOptionsemptyBuildFlagsdefaultReplFlags replCommanddefaultTestFlags testCommandemptyTestFlagsdefaultBenchmarkFlagsbenchmarkCommandemptyBenchmarkFlagsprogramConfigurationPaths'programConfigurationOptionstrueArgfalseArgoptionVerbosity configureArgsconfigureCCompilerconfigureLinker defaultMaindefaultMainArgsdefaultMainNoReadGhcDynLinkModeGhcStaticAndDynamicGhcDynamicOnly GhcStaticOnlyGhcOptimisationGhcSpecialOptimisationGhcMaximumOptimisationGhcNormalOptimisationGhcNoOptimisationGhcModeGhcModeAbiHashGhcModeInteractive GhcModeMake GhcModeLinkGhcModeCompile GhcOptions ghcOptMode ghcOptExtraghcOptExtraDefaultghcOptInputFilesghcOptInputModulesghcOptOutputFileghcOptOutputDynFileghcOptSourcePathClearghcOptSourcePathghcOptPackageNameghcOptPackageDBsghcOptPackagesghcOptHideAllPackagesghcOptNoAutoLinkPackagesghcOptLinkLibsghcOptLinkLibPathghcOptLinkOptionsghcOptLinkFrameworks ghcOptNoLinkghcOptLinkNoHsMainghcOptCcOptionsghcOptCppOptionsghcOptCppIncludePathghcOptCppIncludesghcOptFfiIncludesghcOptLanguageghcOptExtensionsghcOptExtensionMapghcOptOptimisationghcOptProfilingModeghcOptSplitObjsghcOptGHCiScriptsghcOptHiSuffixghcOptObjSuffixghcOptDynHiSuffixghcOptDynObjSuffix ghcOptHiDir ghcOptObjDirghcOptOutputDir ghcOptStubDirghcOptDynLinkMode ghcOptShared ghcOptFPicghcOptDylibNameghcOptVerbosity ghcOptCabalrunGHC ghcInvocationrenderGhcOptionsComponentDisabledReasonDisabledAllBenchmarksDisabledAllTestsDisabledComponent LibraryNameComponentLocalBuildInfoBenchComponentLocalBuildInfoTestComponentLocalBuildInfoExeComponentLocalBuildInfoLibComponentLocalBuildInfocomponentPackageDepscomponentLibraries ComponentName CBenchName CTestNameCExeNameCLibName ComponentCBenchCTestCExeCLibLocalBuildInfo configFlagsextraConfigArgsinstallDirTemplatescompiler hostPlatformbuildDir scratchDircomponentsConfigs installedPkgs pkgDescrFile localPkgDescr withPrograms withPackageDBwithVanillaLib withProfLib withSharedLib withDynExe withProfExewithOptimization withGHCiLib splitObjs stripExes progPrefix progSuffixexternalPackageDepsinplacePackageIdshowComponentName foldComponentcomponentBuildInfo componentName pkgComponentspkgEnabledComponentscomponentEnabledcomponentDisabledReasonlookupComponent getComponentgetComponentLocalBuildInfo withLibLBI withExeLBI withTestLBIwithComponentsLBIwithAllComponentsInBuildOrderwithComponentsInBuildOrderallComponentsInBuildOrdercomponentsInBuildOrdercheckComponentsCyclicsrcPref hscolourPref haddockPrefautogenModulesDir cppHeaderNameautogenModuleName haddockName mkLibName mkProfLibNamemkSharedLibName exeExtension objExtension dllExtensiongenerategeneratePackageVersionMacros pkgPathEnvVarBuildTargetProblemBuildTargetAmbigiousBuildTargetNoSuchBuildTargetExpectedUserBuildTargetProblemUserBuildTargetUnrecognised BuildTargetBuildTargetFileBuildTargetModuleBuildTargetComponentUserBuildTargetreadBuildTargetsreadUserBuildTargetsreportUserBuildTargetProblemsresolveBuildTargetsreportBuildTargetProblems configure getGhcInfogetPackageDBContentsgetInstalledPackages ghcLibDirbuildLibreplLibbuildExereplExe libAbiHashcomponentGhcOptions installExe installLib initPackageDB invokeHcPkgregisterPackage ghcDynamicghcVerbosityOptions ghcOptionsenableCoveragetixDir tixFilePathhtmlDir markupTest markupPackageTestLogs GroupLogsTestLogtestOptionsReturned testResult TestSuiteLog testSuiteNametestLogslogFile PackageLogplatform suitePassed suiteFailed suiteErrortest stubFilePathstubNamewriteSimpleTestStubstubMainPPSuffixHandler PreProcessorplatformIndependentrunPreProcessormkSimplePreProcessorrunSimplePreProcessorpreprocessComponent ppGreenCardppUnlitppCppppCpp'ppHsc2hsppC2hsplatformDefinesppHappyppAlex ppSuffixesknownSuffixHandlers UserHooksrunTestsreadDeschookedPreProcessorshookedProgramspreConfconfHookpostConfpreBuild buildHook postBuildpreReplreplHookpostReplpreClean cleanHook postCleanpreCopycopyHookpostCopypreInstinstHookpostInstpreSDist sDistHook postSDistpreRegregHookpostRegpreUnreg unregHook postUnreg preHscolour hscolourHook postHscolour preHaddock haddockHook postHaddockpreTesttestHookpostTestpreBench benchHook postBenchArgsemptyUserHooksbenchsdistlistPackageSources prepareTreeprepareSnapshotTreesnapshotPackagesnapshotVersiondateToSnapshotNumber createArchiveprintPackageProblemsinstallgenerateRegistrationInfogeneralInstalledPackageInfoinplaceInstalledPackageInfoabsoluteInstalledPackageInfobuildreplinitialBuildStepswriteAutogenFileshaddockhscolourConfigStateFileErrorConfigStateFileErrorTypeConfigStateFileBadVersionConfigStateFileMissingConfigStateFileCantParsetryGetConfigStateFiletryGetPersistBuildConfiggetPersistBuildConfigmaybeGetPersistBuildConfigwritePersistBuildConfigcheckPersistBuildConfigOutdatedlocalBuildInfoFileinterpretPackageDbFlagsccLdOptionsBuildInfoconfigCompilerAuxExconfigCompilerExconfigCompilerconfigCompilerAuxcheckForeignDepsdefaultMainWithHooksdefaultMainWithHooksArgssimpleUserHooksdefaultUserHooksautoconfUserHooksversion getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName ClassifiedCommentEndCode BeginCodeLineOrdinaryBlank BirdTrackclassify unclassify reclassifyinlines internalErrorArgDescrNoArgOptionArgOrder ReturnInOrderPermute RequireOrder usageInfogetOptgetOpt'OptKindOptErr EndOfOptsNonOptUnreqOptOptfmtOptfmtShortfmtLonggetNextlongOptshortOpterrAmbigerrReqerrUnrecerrNoArg$fMonoidCDialectParserRPFinalLookGetfinal $fMonadParser$fApplicativeParser$fFunctorParser $fMonadPlusP$fAlternativeP$fMonadP$fApplicativeP $fFunctorP $fTextVersion $fTextBooldoesNotIntersectwildcardUpperBoundisWildcardRange minLowerBound isVersion0 invariantcheckInvariant validVersion validIntervalnonEmpty doesNotTouch unionIntervalintersectInterval$fTextVersionRange$fOrdUpperBound$fOrdLowerBoundclassifyCompilerFlavor Data.MaybeNothingknownCompilerFlavorsbuildCompilerVersion$fTextCompilerId$fTextCompilerFlavordispOptVersion $fTextLicense$fPackagePackageIdentifier$fTextDependency$fTextInstalledPackageId$fNFDataPackageIdentifier$fTextPackageIdentifier$fNFDataPackageName$fTextPackageNameGHC.BaseStringvalidModuleCharvalidModuleComponent$fTextModuleNameClassificationStrictnessCompatStrict PermissiveknownOSs osAliases classifyOS knownArches archAliases classifyArchident$fTextPlatform $fTextArch$fTextOSGHC.IOFilePath PathComponentVariable appendSubdirscombinePathTemplategetWindowsProgramFilesDir$fReadPathTemplate$fShowPathTemplate$fReadPathComponent$fShowPathComponent$fReadPathTemplateVariable$fShowPathTemplateVariable$fMonoidInstallDirs$fFunctorInstallDirsGHC.NumNumghc-prim GHC.TypesInt integer-gmpGHC.Integer.TypeIntegerData.Typeable.InternalTypeableGHC.ListzipWithclassifyKnownExtension Text.ReadreadclassifyLanguageclassifyExtensionknownExtensionTable$fTextKnownExtension$fTextExtension$fTextLanguageBool maybeHasLibsMaybestdParserepoTypeAliasesclassifyRepoType"$fPackageGenericPackageDescription$fTextRepoType$fTextRepoKind$fMonoidBuildInfo$fTextBenchmarkType$fMonoidBenchmarkInterface$fMonoidBenchmark$fTextTestType$fMonoidTestSuiteInterface$fMonoidTestSuite$fMonoidExecutable$fMonoidLibrary$fTextBuildType$fPackagePackageDescriptionlanguageToFlagextensionToFlagErrorMsg$fFunctorReadE DeafeningVerboseNormalSilentopenNewBinaryFile pathSeparator std_flags output_flagsrw_flagscreateTempDirectory mkPrivateDir System.IOopenBinaryTempFile openTempFilecopyOrdinaryFilecopyExecutableFile setFileModesetDirOrdinarycopyFile copyFilesWith ignoreBOMreadFileprintRawCommandAndArgsprintRawCommandAndArgsAndEnv syncProcesscreateDirectoryVerbose buildInfoExtTokenSpanIfBlockSectionFUnrecFieldParser warnUnrec ignoreUnrec tokeniseLinemkTreelayoutbracesmkFieldifelseparseModuleNameQ showFreeTextlines_ SyntaxTreeHasTabsIndent CloseBracket OpenBracketField UTFWarning showPWarningcatchParseError parseFailrunPrunE utf8WarningslocatedErrorMsg syntaxError tabsErrorwarningfield liftField simpleFieldcommaListFieldspaceListField listField optsField boolFieldppFieldsppField showFieldsshowSingleNamedFieldshowSimpleSingleNamedField parseFieldsparseFieldsFlat accumFieldslineNofName readFieldsreadFieldsFlat trimLinestokeniseLineFlat trimLeading trimTrailingparseFilePathQ betweenSpacesparseBuildToolparseBuildToolNameQparseBuildToolNameparsePkgconfigDependencyparsePackageNameQparseVersionRangeQparseOptVersionparseTestedWithQ parseLicenseQparseLanguageQparseExtensionQparseHaskellString parseTokenQ parseTokenQ' parseSepListparseSpaceListparseCommaListparseOptCommaList parseQuoted parseFreeText showFilePath showTokenshowTestedWith$fMonadParseResult$fApplicativeParseResult$fFunctorParseResultbasicFieldDescrsinstalledFieldDescrs$fPackageInstalledPackageInfo_GHC.ReadReadconvertPackageIdmkInstalledPackageIdconvertModuleNameconvertLicense toCurrent CommonFlag commandHelp CommandType HiddenCommand NormalCommandListOptionsFlagHelpFlagcommandGetOpts viewAsGetOptgetChoiceByLongFlaggetCurrentChoice liftOptDescrliftSetcommandListOptions commonFlagsaddCommonFlags$fFunctorCommandParse TargetSet DependencyMap DepTestRsltsimplifyConditionsimplifyWithSysParamsresolveWithFlagsignoreConditionsoverallDependenciesflattenTaggedTargetsPDTaggedPDNullBenchExeLibunDependencyMapBTBTBBTN MissingDepsDepOktoDepMap fromDepMapsimplifyCondTree constrainBylibFillInDefaultsexeFillInDefaultstestFillInDefaultsbenchFillInDefaultsbiFillInDefaults$fMonoidPDTagged$fMonoidDependencyMap$fMonoidDepTestRslt checkSanitycheckCabalVersiondisplayRawVersionRangecheckPackageVersions checkTarPathcheckcheckSpecVersion checkLibrarycheckExecutablecheckTestSuitecheckBenchmark checkFields checkLicensecheckSourceReposcheckGhcOptionscheckCCOptionscheckCPPOptionscheckAlternatives checkPathsdisplayRawDependencycheckConditionalscheckLicenseExistscheckSetupExistscheckConfigureExistscheckLocalPathsExistcheckMissingVcsInforepoTypeDirnamecheckWindowsPathquotecommaSepdupsfileExtensionSupportedLanguage$fShowPackageCheckBenchmarkStanzaTestSuiteStanzastoreXFieldsPDreadAndParseFilePMStTrunStTbenchmarkStanzaBenchmarkTypebenchmarkStanzaMainIsbenchmarkStanzaBenchmarkModulebenchmarkStanzaBuildInfotestStanzaTestTypetestStanzaMainIstestStanzaTestModuletestStanzaBuildInfostoreXFieldsLibstoreXFieldsExeemptyTestStanzastoreXFieldsTestvalidateTestSuiteemptyBenchmarkStanzabenchmarkFieldDescrsstoreXFieldsBenchmarkvalidateBenchmarkstoreXFieldsBIstanzasisStanzaHeadermapSimpleFieldsconstraintFieldNamesparseConstraint libFieldNamesbuildInfoNamesmodifyliftevalStT peekField skipField parseFielddeprecatedFieldsdeprecatedFieldsPkgDescrdeprecatedFieldsBuildInfo deprecFieldppCustomFields ppCustomFieldfindIndentTabs $fMonadStT$fApplicativeStT $fFunctorStTsimplifiedPrinting indentWithppGenericPackageDescriptionppPackageDescription ppSourceRepos ppSourceRepo ppDiffFieldsppGenPackageFlagsppFlag ppLibrary ppExecutables ppTestSuites ppBenchmarks ppCondition ppConfVar ppFlagName ppCondTreeppDeps emptyLine Data.MonoidmappendmkPackageIndex$fMonoidPackageIndexgetEnvironmentdirectory-1.2.0.1System.DirectoryfindExecutablemaxCommandLineSizemungePackagePathssetInstalledPackageIdregisterInvocation'packageDbStackOpts packageDbFlag packageDbOpts verbosityOpts legacyVersionmarkupInvocationunionInvocationuserSpecifiedPathconfigurePrograms Control.MonadfoldMConfiguredProgsUnconfiguredProgsUnconfiguredProgramunconfiguredProgsprogSearchPathconfiguredProgsupdateUnconfiguredProgsupdateConfiguredProgs$fReadProgramDb$fShowProgramDbprogramConfigurationPathsprogramConfigurationOption splitArgsallFlagsknownTestShowDetailsprogramFlagsDescription reqArgFlagoptionDistPref configureProg$fMonoidBenchmarkFlags$fMonoidTestFlags$fMonoidTestShowDetails$fTextTestShowDetails$fMonoidReplFlags$fMonoidBuildFlags$fMonoidCleanFlags$fMonoidHaddockFlags$fMonoidHscolourFlags$fMonoidRegisterFlags$fMonoidSDistFlags$fMonoidInstallFlags$fMonoidCopyFlags$fMonoidConfigFlags$fMonoidGlobalFlags $fEnumFlag $fBoundedFlag $fMonoidFlag $fFunctorFlagdefaultMainHelperconfigureAction copyAction installAction haddockAction buildAction cleanAction sdistActionregisterActionunregisterAction packageDbArgs$fMonoidGhcOptionsget_prefix_win32get_prefix_hugsfilename_stuffMatchmatchInexactly findMatchUserBuildTargetDoubleUserBuildTargetSingle matchPlusmatchPlusShadowing exactMatchesinexactMatchesMaybeAmbigious MatchErrorMatchErrorNoSuchMatchErrorExpected Confidence InexactMatch ExactMatchNoMatch ComponentKind BenchKindTestKindExeKindLibKindComponentStringName ComponentInfo cinfoName cinfoStrName cinfoSrcDirs cinfoModules cinfoHsFiles cinfoCFiles QualLevelQL3QL2QL1UserBuildTargetTriplecheckTargetExistsAsFilereadUserBuildTargetshowUserBuildTargetresolveBuildTargetdisambiguateBuildTargetsrenderBuildTargetmatchBuildTargetmatchBuildTarget1matchBuildTarget2matchBuildTarget3pkgComponentInfocomponentStringNamecomponentModulescomponentHsFiles componentKind cinfoKindmatchComponentKindshowComponentKindshowComponentKindShortmatchComponent1matchComponent2guardComponentNamematchComponentNamematchComponentKindAndName matchModule1 matchModule2 matchModule3guardModuleNamematchModuleName matchFile1 matchFile2 matchFile3matchComponentFilematchFileExistsmatchModuleFileUnrootedmatchModuleFileRootedmatchModuleFileStemmatchOtherFileRootedmatchOtherFileUnrooted matchFilematchDirectoryPrefix matchZeroaddDepth forceInexactmatchErrorExpectedmatchErrorNoSuch expecting orNoSuchThingincreaseConfidenceincreaseConfidenceFor nubMatchesnubMatchErrorstryEachcaseFold $fMonadMatch$fApplicativeMatch$fFunctorMatch$fMonadPlusMatch$fAlternativeMatchguessToolFromGhcPathguessGhcPkgFromGhcPathguessHsc2hsFromGhcPathconfigureToolchainoldLanguageExtensionstoPackageIndexgetInstalledPackages'hackThreadedFlagfilterGhciFlagsupdateLibArchivetargetPlatform getLanguages getExtensions ghcLibDir'checkPackageDbEnvVarcheckPackageDbStackremoveMingwIncludeDir substTopDirbuildOrReplLibbuildOrReplExegetHaskellObjectscomponentCcGhcOptions mkGHCiLibNamestripExeghcSupportsDynamicToojhcLanguageExtensions jhcLanguagesconstructJHCCmdLine jhcPkgConfconstructGHCCmdLineghcPackageFlagsghcPackageDbOptionsconstructCcCmdLine ghcCcOptionsnhcLanguageExtensionsgetPhonyInstalledPackageInfo nhcLanguagespackageDbPathsgetPackageDbDirsgetInstalledPackagegetFullInstalledPackageInfonhcVerbosityOptionsgetModulePathsuhcLanguageExtensionsaddBuiltinVersionsinstalledPkgConfigisPkgDirmkInstalledPackageInfo uhcLanguagesgetUserPackageDir parsePackageconstructUHCCmdLineuhcPackageDbOptions uhcTargetuhcTargetVariant uhcPackageDiruhcPackageSubDirhpcDirmixDirlocalPackageLogcountTestResultstestControllersummarizePackageTrueFalse summarizeTestsummarizeSuiteFinishsimpleTestStub stubRunTests stubWriteLogsummarizeSuiteStart resultStringtestSuiteLogPath testOptionpackageLogPathpreprocessFileppGhcCppppCpphs getCppOptions standardPP benchOptionCreateArchiveFun!listPackageSourcesMaybeExecutablelistPackageSourcesOrdinary findSetupFilemaybeCreateDefaultSetupScriptfindMainExeFilefindIncludeFilefilterAutogenModuleallSourcesBuildInfo tarBallNameoverwriteSnapshotPackageDescmapAllBuildInfohugsLanguageExtensionsgetOptionsFromSource stripCommentshugsMainFilename getVersion hugsLanguagescompileBuildInfosuffixes copyModule compileFilestestFFI compileFFI includeOpts getCFilessymbolswithHaskellFile takeWhileJusthugsInstallSuffixeswriteHcPkgRegisterScriptregScriptFileNameunregScriptFileNameinstallDataFilesinstallIncludeFilestestSuiteExeV10AsExetestSuiteLibV09AsLibAndExebenchmarkExeV10asExecreateInternalPackageDBcheckBuildTargetsbuildComponent replComponentaddInternalBuildTools Directory HaddockArgsargInterfaceFileargPackageNameargHideModulesargIgnoreExports argLinkSource argCssFile argContents argOutput argInterfaces argOutputDirargTitle argPrologue argGhcOptions argGhcLibDir argTargets runHaddock exeBuildDirOutputHoogleHtmlTemplateDirunDir' argVerboseunDir fromFlagsfromPackageDescription fromLibraryfromExecutable compToExe getInterfaces getGhcCppOpts getGhcLibDir renderArgsrenderPureArgshaddockPackageFlagshaddockTemplateEnv hscolour'haddockToHscolourgetLibSourceFilesgetExeSourceFilesgetSourceFiles$fMonoidDirectory$fMonoidHaddockArgsselectDependencycheckPackageProblemsFailedDependencyDependencyNoVersionDependencyNotExistsResolvedDependencyInternalDependencyExternalDependency showHeadercurrentCabalIdcurrentCompilerId parseHeadermkProgramsConfig reportProgram hackageUrlreportSelectedDependenciesreportFailedDependencies!newPackageDepsBehaviourMinVersionnewPackageDepsBehaviourconfigureRequiredProgramsconfigureRequiredProgramconfigurePkgconfigPackagesmkComponentsLocalBuildInforeportComponentCycleallSuffixHandlers replActionhscolourAction testAction benchAction hookedActionhookedActionWithArgssanityCheckHookedBuildInfogetBuildConfigcleanrunConfigureScriptgetHookedBuildInfodefaultTestHookdefaultBenchHookdefaultInstallHookdefaultBuildHookdefaultReplHookdefaultRegHook