Distribution.PackageDescription

Cabal-1.24.2.0: A framework for packaging Haskell software

Copyright | Isaac Jones 2003-2005
License | BSD3
Maintainer | cabal-devel@haskell.org
Portability | portable
Safe Haskell | None
Language | Haskell98

Distribution.PackageDescription

Contents

- Package descriptions
  - Renaming
  - Libraries
  - Executables
- Tests
- Benchmarks
- Build information
  - Supplementary build information
- package configuration
- Source repositories
- Custom setup build information

Description

This defines the data structure for the `.cabal` file format. There are several parts to this structure. It has top level info and then `Library`, `Executable`, `TestSuite`, and `Benchmark` sections each of which have associated `BuildInfo` data that's used to build the library, exe, test, or benchmark. To further complicate things there is both a `PackageDescription` and a `GenericPackageDescription`. This distinction relates to cabal configurations. When we initially read a `.cabal` file we get a `GenericPackageDescription` which has all the conditional sections. Before actually building a package we have to decide on each conditional. Once we've done that we get a `PackageDescription`. It was done this way initially to avoid breaking too much stuff when the feature was introduced. It could probably do with being rationalised at some point to make it simpler.

Synopsis

- data PackageDescription = PackageDescription {
  - package :: PackageIdentifier
  - license :: License
  - licenseFiles :: [FilePath]
  - copyright :: String
  - maintainer :: String
  - author :: String
  - stability :: String
  - testedWith :: [(CompilerFlavor, VersionRange)]
  - homepage :: String
  - pkgUrl :: String
  - bugReports :: String
  - sourceRepos :: [SourceRepo]
  - synopsis :: String
  - description :: String
  - category :: String
  - customFieldsPD :: [(String, String)]
  - buildDepends :: [Dependency]
  - specVersionRaw :: Either Version VersionRange
  - buildType :: Maybe BuildType
  - setupBuildInfo :: Maybe SetupBuildInfo
  - library :: Maybe Library
  - executables :: [Executable]
  - testSuites :: [TestSuite]
  - benchmarks :: [Benchmark]
  - dataFiles :: [FilePath]
  - dataDir :: FilePath
  - extraSrcFiles :: [FilePath]
  - extraTmpFiles :: [FilePath]
  - extraDocFiles :: [FilePath]
  }
- emptyPackageDescription :: PackageDescription
- specVersion :: PackageDescription -> Version
- descCabalVersion :: PackageDescription -> VersionRange
- data BuildType
  - = Simple
  - | Configure
  - | Make
  - | Custom
  - | UnknownBuildType String
- knownBuildTypes :: [BuildType]
- data ModuleRenaming = ModuleRenaming Bool [(ModuleName, ModuleName)]
- defaultRenaming :: ModuleRenaming
- lookupRenaming :: Package pkg => pkg -> Map PackageName ModuleRenaming -> ModuleRenaming
- data Library = Library {
  - exposedModules :: [ModuleName]
  - reexportedModules :: [ModuleReexport]
  - requiredSignatures :: [ModuleName]
  - exposedSignatures :: [ModuleName]
  - libExposed :: Bool
  - libBuildInfo :: BuildInfo
  }
- data ModuleReexport = ModuleReexport {
  - moduleReexportOriginalPackage :: Maybe PackageName
  - moduleReexportOriginalName :: ModuleName
  - moduleReexportName :: ModuleName
  }
- emptyLibrary :: Library
- withLib :: PackageDescription -> (Library -> IO ()) -> IO ()
- hasLibs :: PackageDescription -> Bool
- libModules :: Library -> [ModuleName]
- data Executable = Executable {
  - exeName :: String
  - modulePath :: FilePath
  - buildInfo :: BuildInfo
  }
- emptyExecutable :: Executable
- withExe :: PackageDescription -> (Executable -> IO ()) -> IO ()
- hasExes :: PackageDescription -> Bool
- exeModules :: Executable -> [ModuleName]
- data TestSuite = TestSuite {
  - testName :: String
  - testInterface :: TestSuiteInterface
  - testBuildInfo :: BuildInfo
  - testEnabled :: Bool
  }
- data TestSuiteInterface
  - = TestSuiteExeV10 Version FilePath
  - | TestSuiteLibV09 Version ModuleName
  - | TestSuiteUnsupported TestType
- data TestType
  - = TestTypeExe Version
  - | TestTypeLib Version
  - | TestTypeUnknown String Version
- testType :: TestSuite -> TestType
- knownTestTypes :: [TestType]
- emptyTestSuite :: TestSuite
- hasTests :: PackageDescription -> Bool
- withTest :: PackageDescription -> (TestSuite -> IO ()) -> IO ()
- testModules :: TestSuite -> [ModuleName]
- enabledTests :: PackageDescription -> [TestSuite]
- data Benchmark = Benchmark {
  - benchmarkName :: String
  - benchmarkInterface :: BenchmarkInterface
  - benchmarkBuildInfo :: BuildInfo
  - benchmarkEnabled :: Bool
  }
- data BenchmarkInterface
  - = BenchmarkExeV10 Version FilePath
  - | BenchmarkUnsupported BenchmarkType
- data BenchmarkType
  - = BenchmarkTypeExe Version
  - | BenchmarkTypeUnknown String Version
- benchmarkType :: Benchmark -> BenchmarkType
- knownBenchmarkTypes :: [BenchmarkType]
- emptyBenchmark :: Benchmark
- hasBenchmarks :: PackageDescription -> Bool
- withBenchmark :: PackageDescription -> (Benchmark -> IO ()) -> IO ()
- benchmarkModules :: Benchmark -> [ModuleName]
- enabledBenchmarks :: PackageDescription -> [Benchmark]
- data BuildInfo = BuildInfo {
  - buildable :: Bool
  - buildTools :: [Dependency]
  - cppOptions :: [String]
  - ccOptions :: [String]
  - ldOptions :: [String]
  - pkgconfigDepends :: [Dependency]
  - frameworks :: [String]
  - extraFrameworkDirs :: [String]
  - cSources :: [FilePath]
  - jsSources :: [FilePath]
  - hsSourceDirs :: [FilePath]
  - otherModules :: [ModuleName]
  - defaultLanguage :: Maybe Language
  - otherLanguages :: [Language]
  - defaultExtensions :: [Extension]
  - otherExtensions :: [Extension]
  - oldExtensions :: [Extension]
  - extraLibs :: [String]
  - extraGHCiLibs :: [String]
  - extraLibDirs :: [String]
  - includeDirs :: [FilePath]
  - includes :: [FilePath]
  - installIncludes :: [FilePath]
  - options :: [(CompilerFlavor, [String])]
  - profOptions :: [(CompilerFlavor, [String])]
  - sharedOptions :: [(CompilerFlavor, [String])]
  - customFieldsBI :: [(String, String)]
  - targetBuildDepends :: [Dependency]
  - targetBuildRenaming :: Map PackageName ModuleRenaming
  }
- emptyBuildInfo :: BuildInfo
- allBuildInfo :: PackageDescription -> [BuildInfo]
- allLanguages :: BuildInfo -> [Language]
- allExtensions :: BuildInfo -> [Extension]
- usedExtensions :: BuildInfo -> [Extension]
- hcOptions :: CompilerFlavor -> BuildInfo -> [String]
- hcProfOptions :: CompilerFlavor -> BuildInfo -> [String]
- hcSharedOptions :: CompilerFlavor -> BuildInfo -> [String]
- type HookedBuildInfo = (Maybe BuildInfo, [(String, BuildInfo)])
- emptyHookedBuildInfo :: HookedBuildInfo
- updatePackageDescription :: HookedBuildInfo -> PackageDescription -> PackageDescription
- data GenericPackageDescription = GenericPackageDescription {
  - packageDescription :: PackageDescription
  - genPackageFlags :: [Flag]
  - condLibrary :: Maybe (CondTree ConfVar [Dependency] Library)
  - condExecutables :: [(String, CondTree ConfVar [Dependency] Executable)]
  - condTestSuites :: [(String, CondTree ConfVar [Dependency] TestSuite)]
  - condBenchmarks :: [(String, CondTree ConfVar [Dependency] Benchmark)]
  }
- data Flag = MkFlag {
  - flagName :: FlagName
  - flagDescription :: String
  - flagDefault :: Bool
  - flagManual :: Bool
  }
- newtype FlagName = FlagName String
- type FlagAssignment = [(FlagName, Bool)]
- data CondTree v c a = CondNode {
  - condTreeData :: a
  - condTreeConstraints :: c
  - condTreeComponents :: [(Condition v, CondTree v c a, Maybe (CondTree v c a))]
  }
- data ConfVar
  - = OS OS
  - | Arch Arch
  - | Flag FlagName
  - | Impl CompilerFlavor VersionRange
- data Condition c
  - = Var c
  - | Lit Bool
  - | CNot (Condition c)
  - | COr (Condition c) (Condition c)
  - | CAnd (Condition c) (Condition c)
- cNot :: Condition a -> Condition a
- cAnd :: Condition a -> Condition a -> Condition a
- cOr :: Eq v => Condition v -> Condition v -> Condition v
- data SourceRepo = SourceRepo {
  - repoKind :: RepoKind
  - repoType :: Maybe RepoType
  - repoLocation :: Maybe String
  - repoModule :: Maybe String
  - repoBranch :: Maybe String
  - repoTag :: Maybe String
  - repoSubdir :: Maybe FilePath
  }
- data RepoKind
  - = RepoHead
  - | RepoThis
  - | RepoKindUnknown String
- data RepoType
  - = Darcs
  - | Git
  - | SVN
  - | CVS
  - | Mercurial
  - | GnuArch
  - | Bazaar
  - | Monotone
  - | OtherRepoType String
- knownRepoTypes :: [RepoType]
- data SetupBuildInfo = SetupBuildInfo {
  - setupDepends :: [Dependency]
  - defaultSetupDepends :: Bool
  }

# Package descriptions

data PackageDescription Source #

This data type is the internal representation of the file `pkg.cabal`. It contains two kinds of information about the package: information which is needed for all packages, such as the package name and version, and information which is needed for the simple build system only, such as the compiler options and library name.

Constructors

PackageDescription |
Fields package :: PackageIdentifier license :: License licenseFiles :: [FilePath] copyright :: String maintainer :: String author :: String stability :: String testedWith :: [(CompilerFlavor, VersionRange)] homepage :: String pkgUrl :: String bugReports :: String sourceRepos :: [SourceRepo] synopsis :: String A one-line summary of this package description :: String A more verbose description of this package category :: String customFieldsPD :: [(String, String)] Custom fields starting with x-, stored in a simple assoc-list. buildDepends :: [Dependency] YOU PROBABLY DON'T WANT TO USE THIS FIELD. This field is special! Depending on how far along processing the PackageDescription we are, the contents of this field are either nonsense, or the collected dependencies of *all* the components in this package. buildDepends is initialized by `finalizePackageDescription` and `flattenPackageDescription`; prior to that, dependency info is stored in the `CondTree` built around a `GenericPackageDescription`. When this resolution is done, dependency info is written to the inner `BuildInfo` and this field. This is all horrible, and #2066 tracks progress to get rid of this field. specVersionRaw :: Either Version VersionRange The version of the Cabal spec that this package description uses. For historical reasons this is specified with a version range but only ranges of the form `>= v` make sense. We are in the process of transitioning to specifying just a single version, not a range. buildType :: Maybe BuildType setupBuildInfo :: Maybe SetupBuildInfo library :: Maybe Library executables :: [Executable] testSuites :: [TestSuite] benchmarks :: [Benchmark] dataFiles :: [FilePath] dataDir :: FilePath extraSrcFiles :: [FilePath] extraTmpFiles :: [FilePath] extraDocFiles :: [FilePath]

Instances

Eq PackageDescription # |
Methods (==) :: PackageDescription -> PackageDescription -> Bool # (/=) :: PackageDescription -> PackageDescription -> Bool #
Data PackageDescription # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PackageDescription -> c PackageDescription Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PackageDescription Source # toConstr :: PackageDescription -> Constr Source # dataTypeOf :: PackageDescription -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c PackageDescription) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PackageDescription) Source # gmapT :: (forall b. Data b => b -> b) -> PackageDescription -> PackageDescription Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PackageDescription -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PackageDescription -> r Source # gmapQ :: (forall d. Data d => d -> u) -> PackageDescription -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> PackageDescription -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> PackageDescription -> m PackageDescription Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PackageDescription -> m PackageDescription Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PackageDescription -> m PackageDescription Source #
Read PackageDescription # |
Methods readsPrec :: Int -> ReadS PackageDescription Source # readList :: ReadS [PackageDescription] Source # readPrec :: ReadPrec PackageDescription Source # readListPrec :: ReadPrec [PackageDescription] Source #
Show PackageDescription # |
Methods showsPrec :: Int -> PackageDescription -> ShowS Source # show :: PackageDescription -> String Source # showList :: [PackageDescription] -> ShowS Source #
Generic PackageDescription # |
Associated Types type Rep PackageDescription :: * -> * Source # Methods from :: PackageDescription -> Rep PackageDescription x Source # to :: Rep PackageDescription x -> PackageDescription Source #
Binary PackageDescription # |
Methods put :: PackageDescription -> Put Source # get :: Get PackageDescription Source # putList :: [PackageDescription] -> Put Source #
Package PackageDescription # |
Methods packageId :: PackageDescription -> PackageIdentifier Source #
type Rep PackageDescription # |
type Rep PackageDescription = D1 (MetaData "PackageDescription" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) (C1 (MetaCons "PackageDescription" PrefixI True) ((:*:) ((:*:) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "package") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 PackageIdentifier)) ((:*:) (S1 (MetaSel (Just Symbol "license") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 License)) (S1 (MetaSel (Just Symbol "licenseFiles") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [FilePath])))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "copyright") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)) (S1 (MetaSel (Just Symbol "maintainer") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String))) ((:*:) (S1 (MetaSel (Just Symbol "author") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)) (S1 (MetaSel (Just Symbol "stability") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String))))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "testedWith") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(CompilerFlavor, VersionRange)])) ((:*:) (S1 (MetaSel (Just Symbol "homepage") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)) (S1 (MetaSel (Just Symbol "pkgUrl") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "bugReports") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)) (S1 (MetaSel (Just Symbol "sourceRepos") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [SourceRepo]))) ((:*:) (S1 (MetaSel (Just Symbol "synopsis") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)) (S1 (MetaSel (Just Symbol "description") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)))))) ((:*:) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "category") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)) ((:*:) (S1 (MetaSel (Just Symbol "customFieldsPD") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(String, String)])) (S1 (MetaSel (Just Symbol "buildDepends") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Dependency])))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "specVersionRaw") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Either Version VersionRange))) (S1 (MetaSel (Just Symbol "buildType") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe BuildType)))) ((:*:) (S1 (MetaSel (Just Symbol "setupBuildInfo") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe SetupBuildInfo))) (S1 (MetaSel (Just Symbol "library") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Library)))))) ((:*:) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "executables") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Executable])) (S1 (MetaSel (Just Symbol "testSuites") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [TestSuite]))) ((:*:) (S1 (MetaSel (Just Symbol "benchmarks") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Benchmark])) (S1 (MetaSel (Just Symbol "dataFiles") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [FilePath])))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "dataDir") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 FilePath)) (S1 (MetaSel (Just Symbol "extraSrcFiles") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [FilePath]))) ((:*:) (S1 (MetaSel (Just Symbol "extraTmpFiles") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [FilePath])) (S1 (MetaSel (Just Symbol "extraDocFiles") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [FilePath]))))))))

emptyPackageDescription :: PackageDescription Source #

specVersion :: PackageDescription -> Version Source #

The version of the Cabal spec that this package should be interpreted against.

Historically we used a version range but we are switching to using a single version. Currently we accept either. This function converts into a single version by ignoring upper bounds in the version range.

descCabalVersion :: PackageDescription -> VersionRange Source #

Deprecated: Use specVersion instead

The range of versions of the Cabal tools that this package is intended to work with.

This function is deprecated and should not be used for new purposes, only to support old packages that rely on the old interpretation.

data BuildType Source #

The type of build system used by this package.

Constructors

Simple | calls `Distribution.Simple.defaultMain`
Configure | calls `Distribution.Simple.defaultMainWithHooks defaultUserHooks`, which invokes `configure` to generate additional build information used by later phases.
Make | calls `Distribution.Make.defaultMain`
Custom | uses user-supplied `Setup.hs` or `Setup.lhs` (default)
UnknownBuildType String | a package that uses an unknown build type cannot actually be built. Doing it this way rather than just giving a parse error means we get better error messages and allows you to inspect the rest of the package description.

Instances

Eq BuildType # |
Methods (==) :: BuildType -> BuildType -> Bool # (/=) :: BuildType -> BuildType -> Bool #
Data BuildType # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> BuildType -> c BuildType Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c BuildType Source # toConstr :: BuildType -> Constr Source # dataTypeOf :: BuildType -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c BuildType) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BuildType) Source # gmapT :: (forall b. Data b => b -> b) -> BuildType -> BuildType Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> BuildType -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> BuildType -> r Source # gmapQ :: (forall d. Data d => d -> u) -> BuildType -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> BuildType -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> BuildType -> m BuildType Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> BuildType -> m BuildType Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> BuildType -> m BuildType Source #
Read BuildType # |
Methods readsPrec :: Int -> ReadS BuildType Source # readList :: ReadS [BuildType] Source # readPrec :: ReadPrec BuildType Source # readListPrec :: ReadPrec [BuildType] Source #
Show BuildType # |
Methods showsPrec :: Int -> BuildType -> ShowS Source # show :: BuildType -> String Source # showList :: [BuildType] -> ShowS Source #
Generic BuildType # |
Associated Types type Rep BuildType :: * -> * Source # Methods from :: BuildType -> Rep BuildType x Source # to :: Rep BuildType x -> BuildType Source #
Binary BuildType # |
Methods put :: BuildType -> Put Source # get :: Get BuildType Source # putList :: [BuildType] -> Put Source #
Text BuildType # |
Methods disp :: BuildType -> Doc Source # parse :: ReadP r BuildType Source #
type Rep BuildType # |
type Rep BuildType = D1 (MetaData "BuildType" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) ((:+:) ((:+:) (C1 (MetaCons "Simple" PrefixI False) U1) (C1 (MetaCons "Configure" PrefixI False) U1)) ((:+:) (C1 (MetaCons "Make" PrefixI False) U1) ((:+:) (C1 (MetaCons "Custom" PrefixI False) U1) (C1 (MetaCons "UnknownBuildType" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String))))))

knownBuildTypes :: [BuildType] Source #

## Renaming

data ModuleRenaming Source #

Renaming applied to the modules provided by a package. The boolean indicates whether or not to also include all of the original names of modules. Thus, `ModuleRenaming False []` is "don't expose any modules, and `ModuleRenaming True [(Data.Bool, Bool)]` is, "expose all modules, but also expose `Data.Bool` as `Bool`".

Constructors

ModuleRenaming Bool [(ModuleName, ModuleName)] |

Instances

Eq ModuleRenaming # |
Methods (==) :: ModuleRenaming -> ModuleRenaming -> Bool # (/=) :: ModuleRenaming -> ModuleRenaming -> Bool #
Data ModuleRenaming # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ModuleRenaming -> c ModuleRenaming Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ModuleRenaming Source # toConstr :: ModuleRenaming -> Constr Source # dataTypeOf :: ModuleRenaming -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c ModuleRenaming) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ModuleRenaming) Source # gmapT :: (forall b. Data b => b -> b) -> ModuleRenaming -> ModuleRenaming Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ModuleRenaming -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ModuleRenaming -> r Source # gmapQ :: (forall d. Data d => d -> u) -> ModuleRenaming -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> ModuleRenaming -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ModuleRenaming -> m ModuleRenaming Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ModuleRenaming -> m ModuleRenaming Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ModuleRenaming -> m ModuleRenaming Source #
Ord ModuleRenaming # |
Methods compare :: ModuleRenaming -> ModuleRenaming -> Ordering # (<) :: ModuleRenaming -> ModuleRenaming -> Bool # (<=) :: ModuleRenaming -> ModuleRenaming -> Bool # (>) :: ModuleRenaming -> ModuleRenaming -> Bool # (>=) :: ModuleRenaming -> ModuleRenaming -> Bool # max :: ModuleRenaming -> ModuleRenaming -> ModuleRenaming # min :: ModuleRenaming -> ModuleRenaming -> ModuleRenaming #
Read ModuleRenaming # |
Methods readsPrec :: Int -> ReadS ModuleRenaming Source # readList :: ReadS [ModuleRenaming] Source # readPrec :: ReadPrec ModuleRenaming Source # readListPrec :: ReadPrec [ModuleRenaming] Source #
Show ModuleRenaming # |
Methods showsPrec :: Int -> ModuleRenaming -> ShowS Source # show :: ModuleRenaming -> String Source # showList :: [ModuleRenaming] -> ShowS Source #
Generic ModuleRenaming # |
Associated Types type Rep ModuleRenaming :: * -> * Source # Methods from :: ModuleRenaming -> Rep ModuleRenaming x Source # to :: Rep ModuleRenaming x -> ModuleRenaming Source #
Semigroup ModuleRenaming # |
Methods (<>) :: ModuleRenaming -> ModuleRenaming -> ModuleRenaming Source # sconcat :: NonEmpty ModuleRenaming -> ModuleRenaming Source # stimes :: Integral b => b -> ModuleRenaming -> ModuleRenaming Source #
Monoid ModuleRenaming # |
Methods mempty :: ModuleRenaming Source # mappend :: ModuleRenaming -> ModuleRenaming -> ModuleRenaming Source # mconcat :: [ModuleRenaming] -> ModuleRenaming Source #
Binary ModuleRenaming # |
Methods put :: ModuleRenaming -> Put Source # get :: Get ModuleRenaming Source # putList :: [ModuleRenaming] -> Put Source #
Text ModuleRenaming # |
Methods disp :: ModuleRenaming -> Doc Source # parse :: ReadP r ModuleRenaming Source #
type Rep ModuleRenaming # |
type Rep ModuleRenaming = D1 (MetaData "ModuleRenaming" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) (C1 (MetaCons "ModuleRenaming" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(ModuleName, ModuleName)]))))

defaultRenaming :: ModuleRenaming Source #

lookupRenaming :: Package pkg => pkg -> Map PackageName ModuleRenaming -> ModuleRenaming Source #

## Libraries

data Library Source #

Constructors

Library |
Fields exposedModules :: [ModuleName] reexportedModules :: [ModuleReexport] requiredSignatures :: [ModuleName] What sigs need implementations? exposedSignatures :: [ModuleName] What sigs are visible to users? libExposed :: Bool Is the lib to be exposed by default? libBuildInfo :: BuildInfo

Instances

Eq Library # |
Methods (==) :: Library -> Library -> Bool # (/=) :: Library -> Library -> Bool #
Data Library # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Library -> c Library Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Library Source # toConstr :: Library -> Constr Source # dataTypeOf :: Library -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Library) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Library) Source # gmapT :: (forall b. Data b => b -> b) -> Library -> Library Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Library -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Library -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Library -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Library -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Library -> m Library Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Library -> m Library Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Library -> m Library Source #
Read Library # |
Methods readsPrec :: Int -> ReadS Library Source # readList :: ReadS [Library] Source # readPrec :: ReadPrec Library Source # readListPrec :: ReadPrec [Library] Source #
Show Library # |
Methods showsPrec :: Int -> Library -> ShowS Source # show :: Library -> String Source # showList :: [Library] -> ShowS Source #
Generic Library # |
Associated Types type Rep Library :: * -> * Source # Methods from :: Library -> Rep Library x Source # to :: Rep Library x -> Library Source #
Semigroup Library # |
Methods (<>) :: Library -> Library -> Library Source # sconcat :: NonEmpty Library -> Library Source # stimes :: Integral b => b -> Library -> Library Source #
Monoid Library # |
Methods mempty :: Library Source # mappend :: Library -> Library -> Library Source # mconcat :: [Library] -> Library Source #
Binary Library # |
Methods put :: Library -> Put Source # get :: Get Library Source # putList :: [Library] -> Put Source #
type Rep Library # |
type Rep Library = D1 (MetaData "Library" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) (C1 (MetaCons "Library" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "exposedModules") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [ModuleName])) ((:*:) (S1 (MetaSel (Just Symbol "reexportedModules") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [ModuleReexport])) (S1 (MetaSel (Just Symbol "requiredSignatures") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [ModuleName])))) ((:*:) (S1 (MetaSel (Just Symbol "exposedSignatures") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [ModuleName])) ((:*:) (S1 (MetaSel (Just Symbol "libExposed") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)) (S1 (MetaSel (Just Symbol "libBuildInfo") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 BuildInfo))))))

data ModuleReexport Source #

Constructors

ModuleReexport |
Fields moduleReexportOriginalPackage :: Maybe PackageName moduleReexportOriginalName :: ModuleName moduleReexportName :: ModuleName

Instances

Eq ModuleReexport # |
Methods (==) :: ModuleReexport -> ModuleReexport -> Bool # (/=) :: ModuleReexport -> ModuleReexport -> Bool #
Data ModuleReexport # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ModuleReexport -> c ModuleReexport Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ModuleReexport Source # toConstr :: ModuleReexport -> Constr Source # dataTypeOf :: ModuleReexport -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c ModuleReexport) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ModuleReexport) Source # gmapT :: (forall b. Data b => b -> b) -> ModuleReexport -> ModuleReexport Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ModuleReexport -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ModuleReexport -> r Source # gmapQ :: (forall d. Data d => d -> u) -> ModuleReexport -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> ModuleReexport -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ModuleReexport -> m ModuleReexport Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ModuleReexport -> m ModuleReexport Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ModuleReexport -> m ModuleReexport Source #
Read ModuleReexport # |
Methods readsPrec :: Int -> ReadS ModuleReexport Source # readList :: ReadS [ModuleReexport] Source # readPrec :: ReadPrec ModuleReexport Source # readListPrec :: ReadPrec [ModuleReexport] Source #
Show ModuleReexport # |
Methods showsPrec :: Int -> ModuleReexport -> ShowS Source # show :: ModuleReexport -> String Source # showList :: [ModuleReexport] -> ShowS Source #
Generic ModuleReexport # |
Associated Types type Rep ModuleReexport :: * -> * Source # Methods from :: ModuleReexport -> Rep ModuleReexport x Source # to :: Rep ModuleReexport x -> ModuleReexport Source #
Binary ModuleReexport # |
Methods put :: ModuleReexport -> Put Source # get :: Get ModuleReexport Source # putList :: [ModuleReexport] -> Put Source #
Text ModuleReexport # |
Methods disp :: ModuleReexport -> Doc Source # parse :: ReadP r ModuleReexport Source #
type Rep ModuleReexport # |
type Rep ModuleReexport = D1 (MetaData "ModuleReexport" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) (C1 (MetaCons "ModuleReexport" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "moduleReexportOriginalPackage") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe PackageName))) ((:*:) (S1 (MetaSel (Just Symbol "moduleReexportOriginalName") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 ModuleName)) (S1 (MetaSel (Just Symbol "moduleReexportName") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 ModuleName)))))

emptyLibrary :: Library Source #

withLib :: PackageDescription -> (Library -> IO ()) -> IO () Source #

If the package description has a library section, call the given function with the library build info as argument.

hasLibs :: PackageDescription -> Bool Source #

does this package have any libraries?

libModules :: Library -> [ModuleName] Source #

Get all the module names from the library (exposed and internal modules) which need to be compiled. (This does not include reexports, which do not need to be compiled.)

## Executables

data Executable Source #

Constructors

Executable |
Fields exeName :: String modulePath :: FilePath buildInfo :: BuildInfo

Instances

Eq Executable # |
Methods (==) :: Executable -> Executable -> Bool # (/=) :: Executable -> Executable -> Bool #
Data Executable # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Executable -> c Executable Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Executable Source # toConstr :: Executable -> Constr Source # dataTypeOf :: Executable -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Executable) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Executable) Source # gmapT :: (forall b. Data b => b -> b) -> Executable -> Executable Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Executable -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Executable -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Executable -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Executable -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Executable -> m Executable Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Executable -> m Executable Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Executable -> m Executable Source #
Read Executable # |
Methods readsPrec :: Int -> ReadS Executable Source # readList :: ReadS [Executable] Source # readPrec :: ReadPrec Executable Source # readListPrec :: ReadPrec [Executable] Source #
Show Executable # |
Methods showsPrec :: Int -> Executable -> ShowS Source # show :: Executable -> String Source # showList :: [Executable] -> ShowS Source #
Generic Executable # |
Associated Types type Rep Executable :: * -> * Source # Methods from :: Executable -> Rep Executable x Source # to :: Rep Executable x -> Executable Source #
Semigroup Executable # |
Methods (<>) :: Executable -> Executable -> Executable Source # sconcat :: NonEmpty Executable -> Executable Source # stimes :: Integral b => b -> Executable -> Executable Source #
Monoid Executable # |
Methods mempty :: Executable Source # mappend :: Executable -> Executable -> Executable Source # mconcat :: [Executable] -> Executable Source #
Binary Executable # |
Methods put :: Executable -> Put Source # get :: Get Executable Source # putList :: [Executable] -> Put Source #
type Rep Executable # |
type Rep Executable = D1 (MetaData "Executable" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) (C1 (MetaCons "Executable" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "exeName") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)) ((:*:) (S1 (MetaSel (Just Symbol "modulePath") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 FilePath)) (S1 (MetaSel (Just Symbol "buildInfo") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 BuildInfo)))))

emptyExecutable :: Executable Source #

withExe :: PackageDescription -> (Executable -> IO ()) -> IO () Source #

Perform the action on each buildable `Executable` in the package description.

hasExes :: PackageDescription -> Bool Source #

does this package have any executables?

exeModules :: Executable -> [ModuleName] Source #

Get all the module names from an exe

# Tests

data TestSuite Source #

A "test-suite" stanza in a cabal file.

Constructors

TestSuite |
Fields testName :: String testInterface :: TestSuiteInterface testBuildInfo :: BuildInfo testEnabled :: Bool

Instances

Eq TestSuite # |
Methods (==) :: TestSuite -> TestSuite -> Bool # (/=) :: TestSuite -> TestSuite -> Bool #
Data TestSuite # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TestSuite -> c TestSuite Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TestSuite Source # toConstr :: TestSuite -> Constr Source # dataTypeOf :: TestSuite -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c TestSuite) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TestSuite) Source # gmapT :: (forall b. Data b => b -> b) -> TestSuite -> TestSuite Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TestSuite -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TestSuite -> r Source # gmapQ :: (forall d. Data d => d -> u) -> TestSuite -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> TestSuite -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> TestSuite -> m TestSuite Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TestSuite -> m TestSuite Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TestSuite -> m TestSuite Source #
Read TestSuite # |
Methods readsPrec :: Int -> ReadS TestSuite Source # readList :: ReadS [TestSuite] Source # readPrec :: ReadPrec TestSuite Source # readListPrec :: ReadPrec [TestSuite] Source #
Show TestSuite # |
Methods showsPrec :: Int -> TestSuite -> ShowS Source # show :: TestSuite -> String Source # showList :: [TestSuite] -> ShowS Source #
Generic TestSuite # |
Associated Types type Rep TestSuite :: * -> * Source # Methods from :: TestSuite -> Rep TestSuite x Source # to :: Rep TestSuite x -> TestSuite Source #
Semigroup TestSuite # |
Methods (<>) :: TestSuite -> TestSuite -> TestSuite Source # sconcat :: NonEmpty TestSuite -> TestSuite Source # stimes :: Integral b => b -> TestSuite -> TestSuite Source #
Monoid TestSuite # |
Methods mempty :: TestSuite Source # mappend :: TestSuite -> TestSuite -> TestSuite Source # mconcat :: [TestSuite] -> TestSuite Source #
Binary TestSuite # |
Methods put :: TestSuite -> Put Source # get :: Get TestSuite Source # putList :: [TestSuite] -> Put Source #
type Rep TestSuite # |
type Rep TestSuite = D1 (MetaData "TestSuite" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) (C1 (MetaCons "TestSuite" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "testName") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)) (S1 (MetaSel (Just Symbol "testInterface") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 TestSuiteInterface))) ((:*:) (S1 (MetaSel (Just Symbol "testBuildInfo") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 BuildInfo)) (S1 (MetaSel (Just Symbol "testEnabled") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)))))

data TestSuiteInterface Source #

The test suite interfaces that are currently defined. Each test suite must specify which interface it supports.

More interfaces may be defined in future, either new revisions or totally new interfaces.

Constructors

TestSuiteExeV10 Version FilePath | Test interface "exitcode-stdio-1.0". The test-suite takes the form of an executable. It returns a zero exit code for success, non-zero for failure. The stdout and stderr channels may be logged. It takes no command line parameters and nothing on stdin.
TestSuiteLibV09 Version ModuleName | Test interface "detailed-0.9". The test-suite takes the form of a library containing a designated module that exports "tests :: [Test]".
TestSuiteUnsupported TestType | A test suite that does not conform to one of the above interfaces for the given reason (e.g. unknown test type).

Instances

Eq TestSuiteInterface # |
Methods (==) :: TestSuiteInterface -> TestSuiteInterface -> Bool # (/=) :: TestSuiteInterface -> TestSuiteInterface -> Bool #
Data TestSuiteInterface # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TestSuiteInterface -> c TestSuiteInterface Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TestSuiteInterface Source # toConstr :: TestSuiteInterface -> Constr Source # dataTypeOf :: TestSuiteInterface -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c TestSuiteInterface) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TestSuiteInterface) Source # gmapT :: (forall b. Data b => b -> b) -> TestSuiteInterface -> TestSuiteInterface Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TestSuiteInterface -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TestSuiteInterface -> r Source # gmapQ :: (forall d. Data d => d -> u) -> TestSuiteInterface -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> TestSuiteInterface -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> TestSuiteInterface -> m TestSuiteInterface Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TestSuiteInterface -> m TestSuiteInterface Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TestSuiteInterface -> m TestSuiteInterface Source #
Read TestSuiteInterface # |
Methods readsPrec :: Int -> ReadS TestSuiteInterface Source # readList :: ReadS [TestSuiteInterface] Source # readPrec :: ReadPrec TestSuiteInterface Source # readListPrec :: ReadPrec [TestSuiteInterface] Source #
Show TestSuiteInterface # |
Methods showsPrec :: Int -> TestSuiteInterface -> ShowS Source # show :: TestSuiteInterface -> String Source # showList :: [TestSuiteInterface] -> ShowS Source #
Generic TestSuiteInterface # |
Associated Types type Rep TestSuiteInterface :: * -> * Source # Methods from :: TestSuiteInterface -> Rep TestSuiteInterface x Source # to :: Rep TestSuiteInterface x -> TestSuiteInterface Source #
Semigroup TestSuiteInterface # |
Methods (<>) :: TestSuiteInterface -> TestSuiteInterface -> TestSuiteInterface Source # sconcat :: NonEmpty TestSuiteInterface -> TestSuiteInterface Source # stimes :: Integral b => b -> TestSuiteInterface -> TestSuiteInterface Source #
Monoid TestSuiteInterface # |
Methods mempty :: TestSuiteInterface Source # mappend :: TestSuiteInterface -> TestSuiteInterface -> TestSuiteInterface Source # mconcat :: [TestSuiteInterface] -> TestSuiteInterface Source #
Binary TestSuiteInterface # |
Methods put :: TestSuiteInterface -> Put Source # get :: Get TestSuiteInterface Source # putList :: [TestSuiteInterface] -> Put Source #
type Rep TestSuiteInterface # |
type Rep TestSuiteInterface = D1 (MetaData "TestSuiteInterface" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) ((:+:) (C1 (MetaCons "TestSuiteExeV10" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Version)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 FilePath)))) ((:+:) (C1 (MetaCons "TestSuiteLibV09" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Version)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 ModuleName)))) (C1 (MetaCons "TestSuiteUnsupported" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 TestType)))))

data TestType Source #

The "test-type" field in the test suite stanza.

Constructors

TestTypeExe Version | "type: exitcode-stdio-x.y"
TestTypeLib Version | "type: detailed-x.y"
TestTypeUnknown String Version | Some unknown test type e.g. "type: foo"

Instances

Eq TestType # |
Methods (==) :: TestType -> TestType -> Bool # (/=) :: TestType -> TestType -> Bool #
Data TestType # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TestType -> c TestType Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TestType Source # toConstr :: TestType -> Constr Source # dataTypeOf :: TestType -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c TestType) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TestType) Source # gmapT :: (forall b. Data b => b -> b) -> TestType -> TestType Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TestType -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TestType -> r Source # gmapQ :: (forall d. Data d => d -> u) -> TestType -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> TestType -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> TestType -> m TestType Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TestType -> m TestType Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TestType -> m TestType Source #
Read TestType # |
Methods readsPrec :: Int -> ReadS TestType Source # readList :: ReadS [TestType] Source # readPrec :: ReadPrec TestType Source # readListPrec :: ReadPrec [TestType] Source #
Show TestType # |
Methods showsPrec :: Int -> TestType -> ShowS Source # show :: TestType -> String Source # showList :: [TestType] -> ShowS Source #
Generic TestType # |
Associated Types type Rep TestType :: * -> * Source # Methods from :: TestType -> Rep TestType x Source # to :: Rep TestType x -> TestType Source #
Binary TestType # |
Methods put :: TestType -> Put Source # get :: Get TestType Source # putList :: [TestType] -> Put Source #
Text TestType # |
Methods disp :: TestType -> Doc Source # parse :: ReadP r TestType Source #
type Rep TestType # |
type Rep TestType = D1 (MetaData "TestType" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) ((:+:) (C1 (MetaCons "TestTypeExe" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Version))) ((:+:) (C1 (MetaCons "TestTypeLib" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Version))) (C1 (MetaCons "TestTypeUnknown" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Version))))))

testType :: TestSuite -> TestType Source #

knownTestTypes :: [TestType] Source #

emptyTestSuite :: TestSuite Source #

hasTests :: PackageDescription -> Bool Source #

Does this package have any test suites?

withTest :: PackageDescription -> (TestSuite -> IO ()) -> IO () Source #

Perform an action on each buildable `TestSuite` in a package.

testModules :: TestSuite -> [ModuleName] Source #

Get all the module names from a test suite.

enabledTests :: PackageDescription -> [TestSuite] Source #

Get all the enabled test suites from a package.

# Benchmarks

data Benchmark Source #

A "benchmark" stanza in a cabal file.

Constructors

Benchmark |
Fields benchmarkName :: String benchmarkInterface :: BenchmarkInterface benchmarkBuildInfo :: BuildInfo benchmarkEnabled :: Bool

Instances

Eq Benchmark # |
Methods (==) :: Benchmark -> Benchmark -> Bool # (/=) :: Benchmark -> Benchmark -> Bool #
Data Benchmark # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Benchmark -> c Benchmark Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Benchmark Source # toConstr :: Benchmark -> Constr Source # dataTypeOf :: Benchmark -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Benchmark) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Benchmark) Source # gmapT :: (forall b. Data b => b -> b) -> Benchmark -> Benchmark Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Benchmark -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Benchmark -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Benchmark -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Benchmark -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Benchmark -> m Benchmark Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Benchmark -> m Benchmark Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Benchmark -> m Benchmark Source #
Read Benchmark # |
Methods readsPrec :: Int -> ReadS Benchmark Source # readList :: ReadS [Benchmark] Source # readPrec :: ReadPrec Benchmark Source # readListPrec :: ReadPrec [Benchmark] Source #
Show Benchmark # |
Methods showsPrec :: Int -> Benchmark -> ShowS Source # show :: Benchmark -> String Source # showList :: [Benchmark] -> ShowS Source #
Generic Benchmark # |
Associated Types type Rep Benchmark :: * -> * Source # Methods from :: Benchmark -> Rep Benchmark x Source # to :: Rep Benchmark x -> Benchmark Source #
Semigroup Benchmark # |
Methods (<>) :: Benchmark -> Benchmark -> Benchmark Source # sconcat :: NonEmpty Benchmark -> Benchmark Source # stimes :: Integral b => b -> Benchmark -> Benchmark Source #
Monoid Benchmark # |
Methods mempty :: Benchmark Source # mappend :: Benchmark -> Benchmark -> Benchmark Source # mconcat :: [Benchmark] -> Benchmark Source #
Binary Benchmark # |
Methods put :: Benchmark -> Put Source # get :: Get Benchmark Source # putList :: [Benchmark] -> Put Source #
type Rep Benchmark # |
type Rep Benchmark = D1 (MetaData "Benchmark" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) (C1 (MetaCons "Benchmark" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "benchmarkName") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)) (S1 (MetaSel (Just Symbol "benchmarkInterface") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 BenchmarkInterface))) ((:*:) (S1 (MetaSel (Just Symbol "benchmarkBuildInfo") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 BuildInfo)) (S1 (MetaSel (Just Symbol "benchmarkEnabled") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)))))

data BenchmarkInterface Source #

The benchmark interfaces that are currently defined. Each benchmark must specify which interface it supports.

More interfaces may be defined in future, either new revisions or totally new interfaces.

Constructors

BenchmarkExeV10 Version FilePath | 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.
BenchmarkUnsupported BenchmarkType | A benchmark that does not conform to one of the above interfaces for the given reason (e.g. unknown benchmark type).

Instances

Eq BenchmarkInterface # |
Methods (==) :: BenchmarkInterface -> BenchmarkInterface -> Bool # (/=) :: BenchmarkInterface -> BenchmarkInterface -> Bool #
Data BenchmarkInterface # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> BenchmarkInterface -> c BenchmarkInterface Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c BenchmarkInterface Source # toConstr :: BenchmarkInterface -> Constr Source # dataTypeOf :: BenchmarkInterface -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c BenchmarkInterface) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BenchmarkInterface) Source # gmapT :: (forall b. Data b => b -> b) -> BenchmarkInterface -> BenchmarkInterface Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> BenchmarkInterface -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> BenchmarkInterface -> r Source # gmapQ :: (forall d. Data d => d -> u) -> BenchmarkInterface -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> BenchmarkInterface -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> BenchmarkInterface -> m BenchmarkInterface Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> BenchmarkInterface -> m BenchmarkInterface Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> BenchmarkInterface -> m BenchmarkInterface Source #
Read BenchmarkInterface # |
Methods readsPrec :: Int -> ReadS BenchmarkInterface Source # readList :: ReadS [BenchmarkInterface] Source # readPrec :: ReadPrec BenchmarkInterface Source # readListPrec :: ReadPrec [BenchmarkInterface] Source #
Show BenchmarkInterface # |
Methods showsPrec :: Int -> BenchmarkInterface -> ShowS Source # show :: BenchmarkInterface -> String Source # showList :: [BenchmarkInterface] -> ShowS Source #
Generic BenchmarkInterface # |
Associated Types type Rep BenchmarkInterface :: * -> * Source # Methods from :: BenchmarkInterface -> Rep BenchmarkInterface x Source # to :: Rep BenchmarkInterface x -> BenchmarkInterface Source #
Semigroup BenchmarkInterface # |
Methods (<>) :: BenchmarkInterface -> BenchmarkInterface -> BenchmarkInterface Source # sconcat :: NonEmpty BenchmarkInterface -> BenchmarkInterface Source # stimes :: Integral b => b -> BenchmarkInterface -> BenchmarkInterface Source #
Monoid BenchmarkInterface # |
Methods mempty :: BenchmarkInterface Source # mappend :: BenchmarkInterface -> BenchmarkInterface -> BenchmarkInterface Source # mconcat :: [BenchmarkInterface] -> BenchmarkInterface Source #
Binary BenchmarkInterface # |
Methods put :: BenchmarkInterface -> Put Source # get :: Get BenchmarkInterface Source # putList :: [BenchmarkInterface] -> Put Source #
type Rep BenchmarkInterface # |
type Rep BenchmarkInterface = D1 (MetaData "BenchmarkInterface" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) ((:+:) (C1 (MetaCons "BenchmarkExeV10" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Version)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 FilePath)))) (C1 (MetaCons "BenchmarkUnsupported" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 BenchmarkType))))

data BenchmarkType Source #

The "benchmark-type" field in the benchmark stanza.

Constructors

BenchmarkTypeExe Version | "type: exitcode-stdio-x.y"
BenchmarkTypeUnknown String Version | Some unknown benchmark type e.g. "type: foo"

Instances

Eq BenchmarkType # |
Methods (==) :: BenchmarkType -> BenchmarkType -> Bool # (/=) :: BenchmarkType -> BenchmarkType -> Bool #
Data BenchmarkType # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> BenchmarkType -> c BenchmarkType Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c BenchmarkType Source # toConstr :: BenchmarkType -> Constr Source # dataTypeOf :: BenchmarkType -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c BenchmarkType) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BenchmarkType) Source # gmapT :: (forall b. Data b => b -> b) -> BenchmarkType -> BenchmarkType Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> BenchmarkType -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> BenchmarkType -> r Source # gmapQ :: (forall d. Data d => d -> u) -> BenchmarkType -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> BenchmarkType -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> BenchmarkType -> m BenchmarkType Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> BenchmarkType -> m BenchmarkType Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> BenchmarkType -> m BenchmarkType Source #
Read BenchmarkType # |
Methods readsPrec :: Int -> ReadS BenchmarkType Source # readList :: ReadS [BenchmarkType] Source # readPrec :: ReadPrec BenchmarkType Source # readListPrec :: ReadPrec [BenchmarkType] Source #
Show BenchmarkType # |
Methods showsPrec :: Int -> BenchmarkType -> ShowS Source # show :: BenchmarkType -> String Source # showList :: [BenchmarkType] -> ShowS Source #
Generic BenchmarkType # |
Associated Types type Rep BenchmarkType :: * -> * Source # Methods from :: BenchmarkType -> Rep BenchmarkType x Source # to :: Rep BenchmarkType x -> BenchmarkType Source #
Binary BenchmarkType # |
Methods put :: BenchmarkType -> Put Source # get :: Get BenchmarkType Source # putList :: [BenchmarkType] -> Put Source #
Text BenchmarkType # |
Methods disp :: BenchmarkType -> Doc Source # parse :: ReadP r BenchmarkType Source #
type Rep BenchmarkType # |
type Rep BenchmarkType = D1 (MetaData "BenchmarkType" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) ((:+:) (C1 (MetaCons "BenchmarkTypeExe" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Version))) (C1 (MetaCons "BenchmarkTypeUnknown" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Version)))))

benchmarkType :: Benchmark -> BenchmarkType Source #

knownBenchmarkTypes :: [BenchmarkType] Source #

emptyBenchmark :: Benchmark Source #

hasBenchmarks :: PackageDescription -> Bool Source #

Does this package have any benchmarks?

withBenchmark :: PackageDescription -> (Benchmark -> IO ()) -> IO () Source #

Perform an action on each buildable `Benchmark` in a package.

benchmarkModules :: Benchmark -> [ModuleName] Source #

Get all the module names from a benchmark.

enabledBenchmarks :: PackageDescription -> [Benchmark] Source #

Get all the enabled benchmarks from a package.

# Build information

data BuildInfo Source #

Constructors

BuildInfo |
Fields buildable :: Bool component is buildable here buildTools :: [Dependency] tools needed to build this bit cppOptions :: [String] options for pre-processing Haskell code ccOptions :: [String] options for C compiler ldOptions :: [String] options for linker pkgconfigDepends :: [Dependency] pkg-config packages that are used frameworks :: [String] support frameworks for Mac OS X extraFrameworkDirs :: [String] extra locations to find frameworks. cSources :: [FilePath] jsSources :: [FilePath] hsSourceDirs :: [FilePath] where to look for the Haskell module hierarchy otherModules :: [ModuleName] non-exposed or non-main modules defaultLanguage :: Maybe Language language used when not explicitly specified otherLanguages :: [Language] other languages used within the package defaultExtensions :: [Extension] language extensions used by all modules otherExtensions :: [Extension] other language extensions used within the package oldExtensions :: [Extension] the old extensions field, treated same as `defaultExtensions` extraLibs :: [String] what libraries to link with when compiling a program that uses your package extraGHCiLibs :: [String] if present, overrides extraLibs when package is loaded with GHCi. extraLibDirs :: [String] includeDirs :: [FilePath] directories to find .h files includes :: [FilePath] The .h files to be found in includeDirs installIncludes :: [FilePath] .h files to install with the package options :: [(CompilerFlavor, [String])] profOptions :: [(CompilerFlavor, [String])] sharedOptions :: [(CompilerFlavor, [String])] customFieldsBI :: [(String, String)] Custom fields starting with x-, stored in a simple assoc-list. targetBuildDepends :: [Dependency] Dependencies specific to a library or executable target targetBuildRenaming :: Map PackageName ModuleRenaming

Instances

Eq BuildInfo # |
Methods (==) :: BuildInfo -> BuildInfo -> Bool # (/=) :: BuildInfo -> BuildInfo -> Bool #
Data BuildInfo # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> BuildInfo -> c BuildInfo Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c BuildInfo Source # toConstr :: BuildInfo -> Constr Source # dataTypeOf :: BuildInfo -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c BuildInfo) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BuildInfo) Source # gmapT :: (forall b. Data b => b -> b) -> BuildInfo -> BuildInfo Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> BuildInfo -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> BuildInfo -> r Source # gmapQ :: (forall d. Data d => d -> u) -> BuildInfo -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> BuildInfo -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> BuildInfo -> m BuildInfo Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> BuildInfo -> m BuildInfo Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> BuildInfo -> m BuildInfo Source #
Read BuildInfo # |
Methods readsPrec :: Int -> ReadS BuildInfo Source # readList :: ReadS [BuildInfo] Source # readPrec :: ReadPrec BuildInfo Source # readListPrec :: ReadPrec [BuildInfo] Source #
Show BuildInfo # |
Methods showsPrec :: Int -> BuildInfo -> ShowS Source # show :: BuildInfo -> String Source # showList :: [BuildInfo] -> ShowS Source #
Generic BuildInfo # |
Associated Types type Rep BuildInfo :: * -> * Source # Methods from :: BuildInfo -> Rep BuildInfo x Source # to :: Rep BuildInfo x -> BuildInfo Source #
Semigroup BuildInfo # |
Methods (<>) :: BuildInfo -> BuildInfo -> BuildInfo Source # sconcat :: NonEmpty BuildInfo -> BuildInfo Source # stimes :: Integral b => b -> BuildInfo -> BuildInfo Source #
Monoid BuildInfo # |
Methods mempty :: BuildInfo Source # mappend :: BuildInfo -> BuildInfo -> BuildInfo Source # mconcat :: [BuildInfo] -> BuildInfo Source #
Binary BuildInfo # |
Methods put :: BuildInfo -> Put Source # get :: Get BuildInfo Source # putList :: [BuildInfo] -> Put Source #
type Rep BuildInfo # |
type Rep BuildInfo = D1 (MetaData "BuildInfo" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) (C1 (MetaCons "BuildInfo" PrefixI True) ((:*:) ((:*:) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "buildable") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)) ((:*:) (S1 (MetaSel (Just Symbol "buildTools") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Dependency])) (S1 (MetaSel (Just Symbol "cppOptions") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [String])))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "ccOptions") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [String])) (S1 (MetaSel (Just Symbol "ldOptions") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [String]))) ((:*:) (S1 (MetaSel (Just Symbol "pkgconfigDepends") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Dependency])) (S1 (MetaSel (Just Symbol "frameworks") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [String]))))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "extraFrameworkDirs") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [String])) ((:*:) (S1 (MetaSel (Just Symbol "cSources") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [FilePath])) (S1 (MetaSel (Just Symbol "jsSources") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [FilePath])))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "hsSourceDirs") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [FilePath])) (S1 (MetaSel (Just Symbol "otherModules") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [ModuleName]))) ((:*:) (S1 (MetaSel (Just Symbol "defaultLanguage") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Language))) (S1 (MetaSel (Just Symbol "otherLanguages") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Language])))))) ((:*:) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "defaultExtensions") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Extension])) ((:*:) (S1 (MetaSel (Just Symbol "otherExtensions") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Extension])) (S1 (MetaSel (Just Symbol "oldExtensions") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Extension])))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "extraLibs") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [String])) (S1 (MetaSel (Just Symbol "extraGHCiLibs") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [String]))) ((:*:) (S1 (MetaSel (Just Symbol "extraLibDirs") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [String])) (S1 (MetaSel (Just Symbol "includeDirs") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [FilePath]))))) ((:*:) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "includes") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [FilePath])) (S1 (MetaSel (Just Symbol "installIncludes") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [FilePath]))) ((:*:) (S1 (MetaSel (Just Symbol "options") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(CompilerFlavor, [String])])) (S1 (MetaSel (Just Symbol "profOptions") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(CompilerFlavor, [String])])))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "sharedOptions") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(CompilerFlavor, [String])])) (S1 (MetaSel (Just Symbol "customFieldsBI") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(String, String)]))) ((:*:) (S1 (MetaSel (Just Symbol "targetBuildDepends") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Dependency])) (S1 (MetaSel (Just Symbol "targetBuildRenaming") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Map PackageName ModuleRenaming)))))))))

emptyBuildInfo :: BuildInfo Source #

allBuildInfo :: PackageDescription -> [BuildInfo] Source #

The `BuildInfo` for the library (if there is one and it's buildable), and all buildable executables, test suites and benchmarks. Useful for gathering dependencies.

allLanguages :: BuildInfo -> [Language] Source #

The `Language`s used by this component

allExtensions :: BuildInfo -> [Extension] Source #

The `Extension`s that are used somewhere by this component

usedExtensions :: BuildInfo -> [Extension] Source #

The `Extensions` that are used by all modules in this component

hcOptions :: CompilerFlavor -> BuildInfo -> [String] Source #

Select options for a particular Haskell compiler.

hcProfOptions :: CompilerFlavor -> BuildInfo -> [String] Source #

hcSharedOptions :: CompilerFlavor -> BuildInfo -> [String] Source #

## Supplementary build information

type HookedBuildInfo = (Maybe BuildInfo, [(String, BuildInfo)]) Source #

emptyHookedBuildInfo :: HookedBuildInfo Source #

updatePackageDescription :: HookedBuildInfo -> PackageDescription -> PackageDescription Source #

# package configuration

data GenericPackageDescription Source #

Constructors

GenericPackageDescription |
Fields packageDescription :: PackageDescription genPackageFlags :: [Flag] condLibrary :: Maybe (CondTree ConfVar [Dependency] Library) condExecutables :: [(String, CondTree ConfVar [Dependency] Executable)] condTestSuites :: [(String, CondTree ConfVar [Dependency] TestSuite)] condBenchmarks :: [(String, CondTree ConfVar [Dependency] Benchmark)]

Instances

Eq GenericPackageDescription # |
Methods (==) :: GenericPackageDescription -> GenericPackageDescription -> Bool # (/=) :: GenericPackageDescription -> GenericPackageDescription -> Bool #
Data GenericPackageDescription # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> GenericPackageDescription -> c GenericPackageDescription Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c GenericPackageDescription Source # toConstr :: GenericPackageDescription -> Constr Source # dataTypeOf :: GenericPackageDescription -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c GenericPackageDescription) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c GenericPackageDescription) Source # gmapT :: (forall b. Data b => b -> b) -> GenericPackageDescription -> GenericPackageDescription Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> GenericPackageDescription -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> GenericPackageDescription -> r Source # gmapQ :: (forall d. Data d => d -> u) -> GenericPackageDescription -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> GenericPackageDescription -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> GenericPackageDescription -> m GenericPackageDescription Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> GenericPackageDescription -> m GenericPackageDescription Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> GenericPackageDescription -> m GenericPackageDescription Source #
Show GenericPackageDescription # |
Methods showsPrec :: Int -> GenericPackageDescription -> ShowS Source # show :: GenericPackageDescription -> String Source # showList :: [GenericPackageDescription] -> ShowS Source #
Generic GenericPackageDescription # |
Associated Types type Rep GenericPackageDescription :: * -> * Source # Methods from :: GenericPackageDescription -> Rep GenericPackageDescription x Source # to :: Rep GenericPackageDescription x -> GenericPackageDescription Source #
Binary GenericPackageDescription # |
Methods put :: GenericPackageDescription -> Put Source # get :: Get GenericPackageDescription Source # putList :: [GenericPackageDescription] -> Put Source #
Package GenericPackageDescription # |
Methods packageId :: GenericPackageDescription -> PackageIdentifier Source #
type Rep GenericPackageDescription # |
type Rep GenericPackageDescription = D1 (MetaData "GenericPackageDescription" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) (C1 (MetaCons "GenericPackageDescription" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "packageDescription") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 PackageDescription)) ((:*:) (S1 (MetaSel (Just Symbol "genPackageFlags") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Flag])) (S1 (MetaSel (Just Symbol "condLibrary") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe (CondTree ConfVar [Dependency] Library)))))) ((:*:) (S1 (MetaSel (Just Symbol "condExecutables") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(String, CondTree ConfVar [Dependency] Executable)])) ((:*:) (S1 (MetaSel (Just Symbol "condTestSuites") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(String, CondTree ConfVar [Dependency] TestSuite)])) (S1 (MetaSel (Just Symbol "condBenchmarks") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(String, CondTree ConfVar [Dependency] Benchmark)]))))))

data Flag Source #

A flag can represent a feature to be included, or a way of linking a target against its dependencies, or in fact whatever you can think of.

Constructors

MkFlag |
Fields flagName :: FlagName flagDescription :: String flagDefault :: Bool flagManual :: Bool

Instances

Eq Flag # |
Methods (==) :: Flag -> Flag -> Bool # (/=) :: Flag -> Flag -> Bool #
Data Flag # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Flag -> c Flag Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Flag Source # toConstr :: Flag -> Constr Source # dataTypeOf :: Flag -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Flag) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Flag) Source # gmapT :: (forall b. Data b => b -> b) -> Flag -> Flag Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Flag -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Flag -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Flag -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Flag -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Flag -> m Flag Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Flag -> m Flag Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Flag -> m Flag Source #
Show Flag # |
Methods showsPrec :: Int -> Flag -> ShowS Source # show :: Flag -> String Source # showList :: [Flag] -> ShowS Source #
Generic Flag # |
Associated Types type Rep Flag :: * -> * Source # Methods from :: Flag -> Rep Flag x Source # to :: Rep Flag x -> Flag Source #
Binary Flag # |
Methods put :: Flag -> Put Source # get :: Get Flag Source # putList :: [Flag] -> Put Source #
type Rep Flag # |
type Rep Flag = D1 (MetaData "Flag" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) (C1 (MetaCons "MkFlag" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "flagName") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 FlagName)) (S1 (MetaSel (Just Symbol "flagDescription") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String))) ((:*:) (S1 (MetaSel (Just Symbol "flagDefault") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)) (S1 (MetaSel (Just Symbol "flagManual") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)))))

newtype FlagName Source #

A `FlagName` is the name of a user-defined configuration flag

Constructors

FlagName String |

Instances

Eq FlagName # |
Methods (==) :: FlagName -> FlagName -> Bool # (/=) :: FlagName -> FlagName -> Bool #
Data FlagName # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> FlagName -> c FlagName Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c FlagName Source # toConstr :: FlagName -> Constr Source # dataTypeOf :: FlagName -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c FlagName) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c FlagName) Source # gmapT :: (forall b. Data b => b -> b) -> FlagName -> FlagName Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> FlagName -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> FlagName -> r Source # gmapQ :: (forall d. Data d => d -> u) -> FlagName -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> FlagName -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> FlagName -> m FlagName Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> FlagName -> m FlagName Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> FlagName -> m FlagName Source #
Ord FlagName # |
Methods compare :: FlagName -> FlagName -> Ordering # (<) :: FlagName -> FlagName -> Bool # (<=) :: FlagName -> FlagName -> Bool # (>) :: FlagName -> FlagName -> Bool # (>=) :: FlagName -> FlagName -> Bool # max :: FlagName -> FlagName -> FlagName # min :: FlagName -> FlagName -> FlagName #
Read FlagName # |
Methods readsPrec :: Int -> ReadS FlagName Source # readList :: ReadS [FlagName] Source # readPrec :: ReadPrec FlagName Source # readListPrec :: ReadPrec [FlagName] Source #
Show FlagName # |
Methods showsPrec :: Int -> FlagName -> ShowS Source # show :: FlagName -> String Source # showList :: [FlagName] -> ShowS Source #
Generic FlagName # |
Associated Types type Rep FlagName :: * -> * Source # Methods from :: FlagName -> Rep FlagName x Source # to :: Rep FlagName x -> FlagName Source #
Binary FlagName # |
Methods put :: FlagName -> Put Source # get :: Get FlagName Source # putList :: [FlagName] -> Put Source #
type Rep FlagName # |
type Rep FlagName = D1 (MetaData "FlagName" "Distribution.PackageDescription" "Cabal-1.24.2.0" True) (C1 (MetaCons "FlagName" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)))

type FlagAssignment = [(FlagName, Bool)] Source #

A `FlagAssignment` is a total or partial mapping of `FlagName`s to `Bool` flag values. It represents the flags chosen by the user or discovered during configuration. For example `--flags=foo --flags=-bar` becomes `[("foo", True), ("bar", False)]`

data CondTree v c a Source #

Constructors

CondNode |
Fields condTreeData :: a condTreeConstraints :: c condTreeComponents :: [(Condition v, CondTree v c a, Maybe (CondTree v c a))]

Instances

(Eq v, Eq c, Eq a) => Eq (CondTree v c a) # |
Methods (==) :: CondTree v c a -> CondTree v c a -> Bool # (/=) :: CondTree v c a -> CondTree v c a -> Bool #
(Data a, Data c, Data v) => Data (CondTree v c a) # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CondTree v c a -> c (CondTree v c a) Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (CondTree v c a) Source # toConstr :: CondTree v c a -> Constr Source # dataTypeOf :: CondTree v c a -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (CondTree v c a)) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (CondTree v c a)) Source # gmapT :: (forall b. Data b => b -> b) -> CondTree v c a -> CondTree v c a Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CondTree v c a -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CondTree v c a -> r Source # gmapQ :: (forall d. Data d => d -> u) -> CondTree v c a -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> CondTree v c a -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> CondTree v c a -> m (CondTree v c a) Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CondTree v c a -> m (CondTree v c a) Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CondTree v c a -> m (CondTree v c a) Source #
(Show v, Show c, Show a) => Show (CondTree v c a) # |
Methods showsPrec :: Int -> CondTree v c a -> ShowS Source # show :: CondTree v c a -> String Source # showList :: [CondTree v c a] -> ShowS Source #
Generic (CondTree v c a) # |
Associated Types type Rep (CondTree v c a) :: * -> * Source # Methods from :: CondTree v c a -> Rep (CondTree v c a) x Source # to :: Rep (CondTree v c a) x -> CondTree v c a Source #
(Binary v, Binary c, Binary a) => Binary (CondTree v c a) # |
Methods put :: CondTree v c a -> Put Source # get :: Get (CondTree v c a) Source # putList :: [CondTree v c a] -> Put Source #
type Rep (CondTree v c a) # |
type Rep (CondTree v c a) = D1 (MetaData "CondTree" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) (C1 (MetaCons "CondNode" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "condTreeData") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)) ((:*:) (S1 (MetaSel (Just Symbol "condTreeConstraints") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 c)) (S1 (MetaSel (Just Symbol "condTreeComponents") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [(Condition v, CondTree v c a, Maybe (CondTree v c a))])))))

data ConfVar Source #

A `ConfVar` represents the variable type used.

Constructors

OS OS |
Arch Arch |
Flag FlagName |
Impl CompilerFlavor VersionRange |

Instances

Eq ConfVar # |
Methods (==) :: ConfVar -> ConfVar -> Bool # (/=) :: ConfVar -> ConfVar -> Bool #
Data ConfVar # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ConfVar -> c ConfVar Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ConfVar Source # toConstr :: ConfVar -> Constr Source # dataTypeOf :: ConfVar -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c ConfVar) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ConfVar) Source # gmapT :: (forall b. Data b => b -> b) -> ConfVar -> ConfVar Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ConfVar -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ConfVar -> r Source # gmapQ :: (forall d. Data d => d -> u) -> ConfVar -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> ConfVar -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ConfVar -> m ConfVar Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ConfVar -> m ConfVar Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ConfVar -> m ConfVar Source #
Show ConfVar # |
Methods showsPrec :: Int -> ConfVar -> ShowS Source # show :: ConfVar -> String Source # showList :: [ConfVar] -> ShowS Source #
Generic ConfVar # |
Associated Types type Rep ConfVar :: * -> * Source # Methods from :: ConfVar -> Rep ConfVar x Source # to :: Rep ConfVar x -> ConfVar Source #
Binary ConfVar # |
Methods put :: ConfVar -> Put Source # get :: Get ConfVar Source # putList :: [ConfVar] -> Put Source #
type Rep ConfVar # |
type Rep ConfVar = D1 (MetaData "ConfVar" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) ((:+:) ((:+:) (C1 (MetaCons "OS" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 OS))) (C1 (MetaCons "Arch" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Arch)))) ((:+:) (C1 (MetaCons "Flag" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 FlagName))) (C1 (MetaCons "Impl" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 CompilerFlavor)) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 VersionRange))))))

data Condition c Source #

A boolean expression parameterized over the variable type used.

Constructors

Var c |
Lit Bool |
CNot (Condition c) |
COr (Condition c) (Condition c) |
CAnd (Condition c) (Condition c) |

Instances

Monad Condition # |
Methods (>>=) :: Condition a -> (a -> Condition b) -> Condition b Source # (>>) :: Condition a -> Condition b -> Condition b Source # return :: a -> Condition a Source # fail :: String -> Condition a Source #
Functor Condition # |
Methods fmap :: (a -> b) -> Condition a -> Condition b Source # (<$) :: a -> Condition b -> Condition a Source #
Applicative Condition # |
Methods pure :: a -> Condition a Source # (<*>) :: Condition (a -> b) -> Condition a -> Condition b Source # (*>) :: Condition a -> Condition b -> Condition b Source # (<*) :: Condition a -> Condition b -> Condition a Source #
Foldable Condition # |
Methods fold :: Monoid m => Condition m -> m Source # foldMap :: Monoid m => (a -> m) -> Condition a -> m Source # foldr :: (a -> b -> b) -> b -> Condition a -> b Source # foldr' :: (a -> b -> b) -> b -> Condition a -> b Source # foldl :: (b -> a -> b) -> b -> Condition a -> b Source # foldl' :: (b -> a -> b) -> b -> Condition a -> b Source # foldr1 :: (a -> a -> a) -> Condition a -> a Source # foldl1 :: (a -> a -> a) -> Condition a -> a Source # toList :: Condition a -> [a] Source # null :: Condition a -> Bool Source # length :: Condition a -> Int Source # elem :: Eq a => a -> Condition a -> Bool Source # maximum :: Ord a => Condition a -> a Source # minimum :: Ord a => Condition a -> a Source # sum :: Num a => Condition a -> a Source # product :: Num a => Condition a -> a Source #
Traversable Condition # |
Methods traverse :: Applicative f => (a -> f b) -> Condition a -> f (Condition b) Source # sequenceA :: Applicative f => Condition (f a) -> f (Condition a) Source # mapM :: Monad m => (a -> m b) -> Condition a -> m (Condition b) Source # sequence :: Monad m => Condition (m a) -> m (Condition a) Source #
Alternative Condition # |
Methods empty :: Condition a Source # (<|>) :: Condition a -> Condition a -> Condition a Source # some :: Condition a -> Condition [a] Source # many :: Condition a -> Condition [a] Source #
MonadPlus Condition # |
Methods mzero :: Condition a Source # mplus :: Condition a -> Condition a -> Condition a Source #
Eq c => Eq (Condition c) # |
Methods (==) :: Condition c -> Condition c -> Bool # (/=) :: Condition c -> Condition c -> Bool #
Data c => Data (Condition c) # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Condition c -> c (Condition c) Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Condition c) Source # toConstr :: Condition c -> Constr Source # dataTypeOf :: Condition c -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (Condition c)) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Condition c)) Source # gmapT :: (forall b. Data b => b -> b) -> Condition c -> Condition c Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Condition c -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Condition c -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Condition c -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Condition c -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Condition c -> m (Condition c) Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Condition c -> m (Condition c) Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Condition c -> m (Condition c) Source #
Show c => Show (Condition c) # |
Methods showsPrec :: Int -> Condition c -> ShowS Source # show :: Condition c -> String Source # showList :: [Condition c] -> ShowS Source #
Generic (Condition c) # |
Associated Types type Rep (Condition c) :: * -> * Source # Methods from :: Condition c -> Rep (Condition c) x Source # to :: Rep (Condition c) x -> Condition c Source #
Semigroup (Condition a) # |
Methods (<>) :: Condition a -> Condition a -> Condition a Source # sconcat :: NonEmpty (Condition a) -> Condition a Source # stimes :: Integral b => b -> Condition a -> Condition a Source #
Monoid (Condition a) # |
Methods mempty :: Condition a Source # mappend :: Condition a -> Condition a -> Condition a Source # mconcat :: [Condition a] -> Condition a Source #
Binary c => Binary (Condition c) # |
Methods put :: Condition c -> Put Source # get :: Get (Condition c) Source # putList :: [Condition c] -> Put Source #
type Rep (Condition c) # |
type Rep (Condition c) = D1 (MetaData "Condition" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) ((:+:) ((:+:) (C1 (MetaCons "Var" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 c))) (C1 (MetaCons "Lit" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool)))) ((:+:) (C1 (MetaCons "CNot" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Condition c)))) ((:+:) (C1 (MetaCons "COr" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Condition c))) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Condition c))))) (C1 (MetaCons "CAnd" PrefixI False) ((:*:) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Condition c))) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Condition c))))))))

cNot :: Condition a -> Condition a Source #

Boolean negation of a `Condition` value.

cAnd :: Condition a -> Condition a -> Condition a Source #

Boolean AND of two `Condtion` values.

cOr :: Eq v => Condition v -> Condition v -> Condition v Source #

Boolean OR of two `Condition` values.

# Source repositories

data SourceRepo Source #

Information about the source revision control system for a package.

When specifying a repo it is useful to know the meaning or intention of the information as doing so enables automation. There are two obvious common purposes: one is to find the repo for the latest development version, the other is to find the repo for this specific release. The `ReopKind` specifies which one we mean (or another custom one).

A package can specify one or the other kind or both. Most will specify just a head repo but some may want to specify a repo to reconstruct the sources for this package release.

The required information is the `RepoType` which tells us if it's using `Darcs`, `Git` for example. The `repoLocation` and other details are interpreted according to the repo type.

Constructors

SourceRepo |
Fields repoKind :: RepoKind The kind of repo. This field is required. repoType :: Maybe RepoType The type of the source repository system for this repo, eg `Darcs` or `Git`. This field is required. repoLocation :: Maybe String The location of the repository. For most `RepoType`s this is a URL. This field is required. repoModule :: Maybe String `CVS` can put multiple "modules" on one server and requires a module name in addition to the location to identify a particular repo. Logically this is part of the location but unfortunately has to be specified separately. This field is required for the `CVS` `RepoType` and should not be given otherwise. repoBranch :: Maybe String The name or identifier of the branch, if any. Many source control systems have the notion of multiple branches in a repo that exist in the same location. For example `Git` and `CVS` use this while systems like `Darcs` use different locations for different branches. This field is optional but should be used if necessary to identify the sources, especially for the `RepoThis` repo kind. repoTag :: Maybe String The tag identify a particular state of the repository. This should be given for the `RepoThis` repo kind and not for `RepoHead` kind. repoSubdir :: Maybe FilePath Some repositories contain multiple projects in different subdirectories This field specifies the subdirectory where this packages sources can be found, eg the subdirectory containing the `.cabal` file. It is interpreted relative to the root of the repository. This field is optional. If not given the default is "." ie no subdirectory.

Instances

Eq SourceRepo # |
Methods (==) :: SourceRepo -> SourceRepo -> Bool # (/=) :: SourceRepo -> SourceRepo -> Bool #
Data SourceRepo # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SourceRepo -> c SourceRepo Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SourceRepo Source # toConstr :: SourceRepo -> Constr Source # dataTypeOf :: SourceRepo -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c SourceRepo) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SourceRepo) Source # gmapT :: (forall b. Data b => b -> b) -> SourceRepo -> SourceRepo Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SourceRepo -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SourceRepo -> r Source # gmapQ :: (forall d. Data d => d -> u) -> SourceRepo -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> SourceRepo -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> SourceRepo -> m SourceRepo Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SourceRepo -> m SourceRepo Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SourceRepo -> m SourceRepo Source #
Read SourceRepo # |
Methods readsPrec :: Int -> ReadS SourceRepo Source # readList :: ReadS [SourceRepo] Source # readPrec :: ReadPrec SourceRepo Source # readListPrec :: ReadPrec [SourceRepo] Source #
Show SourceRepo # |
Methods showsPrec :: Int -> SourceRepo -> ShowS Source # show :: SourceRepo -> String Source # showList :: [SourceRepo] -> ShowS Source #
Generic SourceRepo # |
Associated Types type Rep SourceRepo :: * -> * Source # Methods from :: SourceRepo -> Rep SourceRepo x Source # to :: Rep SourceRepo x -> SourceRepo Source #
Binary SourceRepo # |
Methods put :: SourceRepo -> Put Source # get :: Get SourceRepo Source # putList :: [SourceRepo] -> Put Source #
type Rep SourceRepo # |
type Rep SourceRepo = D1 (MetaData "SourceRepo" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) (C1 (MetaCons "SourceRepo" PrefixI True) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "repoKind") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 RepoKind)) ((:*:) (S1 (MetaSel (Just Symbol "repoType") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe RepoType))) (S1 (MetaSel (Just Symbol "repoLocation") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe String))))) ((:*:) ((:*:) (S1 (MetaSel (Just Symbol "repoModule") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe String))) (S1 (MetaSel (Just Symbol "repoBranch") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe String)))) ((:*:) (S1 (MetaSel (Just Symbol "repoTag") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe String))) (S1 (MetaSel (Just Symbol "repoSubdir") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe FilePath)))))))

data RepoKind Source #

What this repo info is for, what it represents.

Constructors

RepoHead | The repository for the "head" or development version of the project. This repo is where we should track the latest development activity or the usual repo people should get to contribute patches.
RepoThis | The repository containing the sources for this exact package version or release. For this kind of repo a tag should be given to give enough information to re-create the exact sources.
RepoKindUnknown String |

Instances

Eq RepoKind # |
Methods (==) :: RepoKind -> RepoKind -> Bool # (/=) :: RepoKind -> RepoKind -> Bool #
Data RepoKind # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RepoKind -> c RepoKind Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RepoKind Source # toConstr :: RepoKind -> Constr Source # dataTypeOf :: RepoKind -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c RepoKind) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RepoKind) Source # gmapT :: (forall b. Data b => b -> b) -> RepoKind -> RepoKind Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RepoKind -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RepoKind -> r Source # gmapQ :: (forall d. Data d => d -> u) -> RepoKind -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> RepoKind -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> RepoKind -> m RepoKind Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RepoKind -> m RepoKind Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RepoKind -> m RepoKind Source #
Ord RepoKind # |
Methods compare :: RepoKind -> RepoKind -> Ordering # (<) :: RepoKind -> RepoKind -> Bool # (<=) :: RepoKind -> RepoKind -> Bool # (>) :: RepoKind -> RepoKind -> Bool # (>=) :: RepoKind -> RepoKind -> Bool # max :: RepoKind -> RepoKind -> RepoKind # min :: RepoKind -> RepoKind -> RepoKind #
Read RepoKind # |
Methods readsPrec :: Int -> ReadS RepoKind Source # readList :: ReadS [RepoKind] Source # readPrec :: ReadPrec RepoKind Source # readListPrec :: ReadPrec [RepoKind] Source #
Show RepoKind # |
Methods showsPrec :: Int -> RepoKind -> ShowS Source # show :: RepoKind -> String Source # showList :: [RepoKind] -> ShowS Source #
Generic RepoKind # |
Associated Types type Rep RepoKind :: * -> * Source # Methods from :: RepoKind -> Rep RepoKind x Source # to :: Rep RepoKind x -> RepoKind Source #
Binary RepoKind # |
Methods put :: RepoKind -> Put Source # get :: Get RepoKind Source # putList :: [RepoKind] -> Put Source #
Text RepoKind # |
Methods disp :: RepoKind -> Doc Source # parse :: ReadP r RepoKind Source #
type Rep RepoKind # |
type Rep RepoKind = D1 (MetaData "RepoKind" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) ((:+:) (C1 (MetaCons "RepoHead" PrefixI False) U1) ((:+:) (C1 (MetaCons "RepoThis" PrefixI False) U1) (C1 (MetaCons "RepoKindUnknown" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)))))

data RepoType Source #

An enumeration of common source control systems. The fields used in the `SourceRepo` depend on the type of repo. The tools and methods used to obtain and track the repo depend on the repo type.

Constructors

Darcs |
Git |
SVN |
CVS |
Mercurial |
GnuArch |
Bazaar |
Monotone |
OtherRepoType String |

Instances

Eq RepoType # |
Methods (==) :: RepoType -> RepoType -> Bool # (/=) :: RepoType -> RepoType -> Bool #
Data RepoType # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RepoType -> c RepoType Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RepoType Source # toConstr :: RepoType -> Constr Source # dataTypeOf :: RepoType -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c RepoType) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RepoType) Source # gmapT :: (forall b. Data b => b -> b) -> RepoType -> RepoType Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RepoType -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RepoType -> r Source # gmapQ :: (forall d. Data d => d -> u) -> RepoType -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> RepoType -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> RepoType -> m RepoType Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RepoType -> m RepoType Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RepoType -> m RepoType Source #
Ord RepoType # |
Methods compare :: RepoType -> RepoType -> Ordering # (<) :: RepoType -> RepoType -> Bool # (<=) :: RepoType -> RepoType -> Bool # (>) :: RepoType -> RepoType -> Bool # (>=) :: RepoType -> RepoType -> Bool # max :: RepoType -> RepoType -> RepoType # min :: RepoType -> RepoType -> RepoType #
Read RepoType # |
Methods readsPrec :: Int -> ReadS RepoType Source # readList :: ReadS [RepoType] Source # readPrec :: ReadPrec RepoType Source # readListPrec :: ReadPrec [RepoType] Source #
Show RepoType # |
Methods showsPrec :: Int -> RepoType -> ShowS Source # show :: RepoType -> String Source # showList :: [RepoType] -> ShowS Source #
Generic RepoType # |
Associated Types type Rep RepoType :: * -> * Source # Methods from :: RepoType -> Rep RepoType x Source # to :: Rep RepoType x -> RepoType Source #
Binary RepoType # |
Methods put :: RepoType -> Put Source # get :: Get RepoType Source # putList :: [RepoType] -> Put Source #
Text RepoType # |
Methods disp :: RepoType -> Doc Source # parse :: ReadP r RepoType Source #
type Rep RepoType # |
type Rep RepoType = D1 (MetaData "RepoType" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "Darcs" PrefixI False) U1) (C1 (MetaCons "Git" PrefixI False) U1)) ((:+:) (C1 (MetaCons "SVN" PrefixI False) U1) (C1 (MetaCons "CVS" PrefixI False) U1))) ((:+:) ((:+:) (C1 (MetaCons "Mercurial" PrefixI False) U1) (C1 (MetaCons "GnuArch" PrefixI False) U1)) ((:+:) (C1 (MetaCons "Bazaar" PrefixI False) U1) ((:+:) (C1 (MetaCons "Monotone" PrefixI False) U1) (C1 (MetaCons "OtherRepoType" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)))))))

knownRepoTypes :: [RepoType] Source #

# Custom setup build information

data SetupBuildInfo Source #

Constructors

SetupBuildInfo |
Fields setupDepends :: [Dependency] defaultSetupDepends :: Bool Is this a default 'custom-setup' section added by the cabal-install code (as opposed to user-provided)? This field is only used internally, and doesn't correspond to anything in the .cabal file. See #3199.

Instances

Eq SetupBuildInfo # |
Methods (==) :: SetupBuildInfo -> SetupBuildInfo -> Bool # (/=) :: SetupBuildInfo -> SetupBuildInfo -> Bool #
Data SetupBuildInfo # |
Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SetupBuildInfo -> c SetupBuildInfo Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SetupBuildInfo Source # toConstr :: SetupBuildInfo -> Constr Source # dataTypeOf :: SetupBuildInfo -> DataType Source # dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c SetupBuildInfo) Source # dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SetupBuildInfo) Source # gmapT :: (forall b. Data b => b -> b) -> SetupBuildInfo -> SetupBuildInfo Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SetupBuildInfo -> r Source # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SetupBuildInfo -> r Source # gmapQ :: (forall d. Data d => d -> u) -> SetupBuildInfo -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> SetupBuildInfo -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> SetupBuildInfo -> m SetupBuildInfo Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SetupBuildInfo -> m SetupBuildInfo Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SetupBuildInfo -> m SetupBuildInfo Source #
Read SetupBuildInfo # |
Methods readsPrec :: Int -> ReadS SetupBuildInfo Source # readList :: ReadS [SetupBuildInfo] Source # readPrec :: ReadPrec SetupBuildInfo Source # readListPrec :: ReadPrec [SetupBuildInfo] Source #
Show SetupBuildInfo # |
Methods showsPrec :: Int -> SetupBuildInfo -> ShowS Source # show :: SetupBuildInfo -> String Source # showList :: [SetupBuildInfo] -> ShowS Source #
Generic SetupBuildInfo # |
Associated Types type Rep SetupBuildInfo :: * -> * Source # Methods from :: SetupBuildInfo -> Rep SetupBuildInfo x Source # to :: Rep SetupBuildInfo x -> SetupBuildInfo Source #
Semigroup SetupBuildInfo # |
Methods (<>) :: SetupBuildInfo -> SetupBuildInfo -> SetupBuildInfo Source # sconcat :: NonEmpty SetupBuildInfo -> SetupBuildInfo Source # stimes :: Integral b => b -> SetupBuildInfo -> SetupBuildInfo Source #
Monoid SetupBuildInfo # |
Methods mempty :: SetupBuildInfo Source # mappend :: SetupBuildInfo -> SetupBuildInfo -> SetupBuildInfo Source # mconcat :: [SetupBuildInfo] -> SetupBuildInfo Source #
Binary SetupBuildInfo # |
Methods put :: SetupBuildInfo -> Put Source # get :: Get SetupBuildInfo Source # putList :: [SetupBuildInfo] -> Put Source #
type Rep SetupBuildInfo # |
type Rep SetupBuildInfo = D1 (MetaData "SetupBuildInfo" "Distribution.PackageDescription" "Cabal-1.24.2.0" False) (C1 (MetaCons "SetupBuildInfo" PrefixI True) ((:*:) (S1 (MetaSel (Just Symbol "setupDepends") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Dependency])) (S1 (MetaSel (Just Symbol "defaultSetupDepends") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Bool))))