| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Distribution.Simple.SetupHooks
Description
This module defines the interface for the Hooks build-type.
To write a package that implements build-type: Hooks, you should define
a module SetupHooks.hs which exports a value setupHooks :: .
This is a record that declares actions that should be hooked into the
cabal build process.SetupHooks
See SetupHooks for more details.
Synopsis
- data SetupHooks = SetupHooks {}
- noSetupHooks :: SetupHooks
- data ConfigureHooks = ConfigureHooks {}
- noConfigureHooks :: ConfigureHooks
- data PreConfPackageInputs = PreConfPackageInputs {}
- data PreConfPackageOutputs = PreConfPackageOutputs {}
- noPreConfPackageOutputs :: PreConfPackageInputs -> PreConfPackageOutputs
- type PreConfPackageHook = PreConfPackageInputs -> IO PreConfPackageOutputs
- data PostConfPackageInputs = PostConfPackageInputs {}
- type PostConfPackageHook = PostConfPackageInputs -> IO ()
- data PreConfComponentInputs = PreConfComponentInputs {}
- data PreConfComponentOutputs = PreConfComponentOutputs {}
- noPreConfComponentOutputs :: PreConfComponentInputs -> PreConfComponentOutputs
- type PreConfComponentHook = PreConfComponentInputs -> IO PreConfComponentOutputs
- newtype ComponentDiff = ComponentDiff {}
- emptyComponentDiff :: ComponentName -> ComponentDiff
- buildInfoComponentDiff :: ComponentName -> BuildInfo -> ComponentDiff
- type LibraryDiff = Library
- type ForeignLibDiff = ForeignLib
- type ExecutableDiff = Executable
- type TestSuiteDiff = TestSuite
- type BenchmarkDiff = Benchmark
- type BuildInfoDiff = BuildInfo
- data BuildHooks = BuildHooks {}
- noBuildHooks :: BuildHooks
- data BuildingWhat
- buildingWhatVerbosity :: BuildingWhat -> Verbosity
- buildingWhatDistPref :: BuildingWhat -> SymbolicPath Pkg ('Dir Dist)
- data PreBuildComponentInputs = PreBuildComponentInputs {}
- type PreBuildComponentRules = Rules PreBuildComponentInputs
- data PostBuildComponentInputs = PostBuildComponentInputs {}
- type PostBuildComponentHook = PostBuildComponentInputs -> IO ()
- data Rules env
- rules :: StaticPtr label -> (env -> RulesM ()) -> Rules env
- noRules :: RulesM ()
- type Rule = RuleData 'User
- data Dependency
- data RuleOutput = RuleOutput {
- outputOfRule :: !RuleId
- outputIndex :: !Word
- data RuleId
- staticRule :: Typeable arg => Command arg (IO ()) -> [Dependency] -> NonEmpty Location -> Rule
- dynamicRule :: (Typeable depsArg, Typeable depsRes, Typeable arg) => StaticPtr (Dict (Binary depsRes, Show depsRes, Eq depsRes)) -> Command depsArg (IO ([Dependency], depsRes)) -> Command arg (depsRes -> IO ()) -> [Dependency] -> NonEmpty Location -> Rule
- data Location where
- location :: Location -> SymbolicPath Pkg 'File
- autogenComponentModulesDir :: LocalBuildInfo -> ComponentLocalBuildInfo -> SymbolicPath Pkg ('Dir Source)
- componentBuildDir :: LocalBuildInfo -> ComponentLocalBuildInfo -> SymbolicPath Pkg ('Dir Build)
- data RuleCommands (scope :: Scope) (deps :: Scope -> Type -> Type -> Type) (ruleCmd :: Scope -> Type -> Type -> Type) where
- StaticRuleCommand :: forall arg (deps :: Scope -> Type -> Type -> Type) (ruleCmd :: Scope -> Type -> Type -> Type) (scope :: Scope). If (scope == 'System) (arg ~ ByteString) () => {..} -> RuleCommands scope deps ruleCmd
- DynamicRuleCommands :: forall depsArg depsRes arg (deps :: Scope -> Type -> Type -> Type) (ruleCmd :: Scope -> Type -> Type -> Type) (scope :: Scope). If (scope == 'System) (depsArg ~ ByteString, depsRes ~ ByteString, arg ~ ByteString) () => {..} -> RuleCommands scope deps ruleCmd
- type Command = CommandData 'User
- mkCommand :: StaticPtr (Dict (Binary arg, Show arg)) -> StaticPtr (arg -> res) -> arg -> Command arg res
- data Dict c where
- type RulesM a = RulesT IO a
- registerRule :: ShortText -> Rule -> RulesM RuleId
- registerRule_ :: ShortText -> Rule -> RulesT IO ()
- addRuleMonitors :: Monad m => [MonitorFilePath] -> RulesT m ()
- module Distribution.Simple.FileMonitor.Types
- data InstallHooks = InstallHooks {}
- noInstallHooks :: InstallHooks
- data InstallComponentInputs = InstallComponentInputs {}
- type InstallComponentHook = InstallComponentInputs -> IO ()
- data ConfigFlags where
- ConfigFlags {
- configCommonFlags :: !CommonSetupFlags
- configPrograms_ :: Option' (Last' ProgramDb)
- configProgramPaths :: [(String, FilePath)]
- configProgramArgs :: [(String, [String])]
- configProgramPathExtra :: NubList FilePath
- configHcFlavor :: Flag CompilerFlavor
- configHcPath :: Flag FilePath
- configHcPkg :: Flag FilePath
- configVanillaLib :: Flag Bool
- configProfLib :: Flag Bool
- configSharedLib :: Flag Bool
- configStaticLib :: Flag Bool
- configDynExe :: Flag Bool
- configFullyStaticExe :: Flag Bool
- configProfExe :: Flag Bool
- configProf :: Flag Bool
- configProfDetail :: Flag ProfDetailLevel
- configProfLibDetail :: Flag ProfDetailLevel
- configConfigureArgs :: [String]
- configOptimization :: Flag OptimisationLevel
- configProgPrefix :: Flag PathTemplate
- configProgSuffix :: Flag PathTemplate
- configInstallDirs :: InstallDirs (Flag PathTemplate)
- configScratchDir :: Flag FilePath
- configExtraLibDirs :: [SymbolicPath Pkg ('Dir Lib)]
- configExtraLibDirsStatic :: [SymbolicPath Pkg ('Dir Lib)]
- configExtraFrameworkDirs :: [SymbolicPath Pkg ('Dir Framework)]
- configExtraIncludeDirs :: [SymbolicPath Pkg ('Dir Include)]
- configIPID :: Flag String
- configCID :: Flag ComponentId
- configDeterministic :: Flag Bool
- configUserInstall :: Flag Bool
- configPackageDBs :: [Maybe PackageDB]
- configGHCiLib :: Flag Bool
- configSplitSections :: Flag Bool
- configSplitObjs :: Flag Bool
- configStripExes :: Flag Bool
- configStripLibs :: Flag Bool
- configConstraints :: [PackageVersionConstraint]
- configDependencies :: [GivenComponent]
- configPromisedDependencies :: [GivenComponent]
- configInstantiateWith :: [(ModuleName, Module)]
- configConfigurationsFlags :: FlagAssignment
- configTests :: Flag Bool
- configBenchmarks :: Flag Bool
- configCoverage :: Flag Bool
- configLibCoverage :: Flag Bool
- configExactConfiguration :: Flag Bool
- configFlagError :: Flag String
- configRelocatable :: Flag Bool
- configDebugInfo :: Flag DebugInfoLevel
- configDumpBuildInfo :: Flag DumpBuildInfo
- configUseResponseFiles :: Flag Bool
- configAllowDependingOnPrivateLibs :: Flag Bool
- configCoverageFor :: Flag [UnitId]
- pattern ConfigCommonFlags :: Flag Verbosity -> Flag (SymbolicPath Pkg ('Dir Dist)) -> Flag (SymbolicPath CWD ('Dir Pkg)) -> Flag (SymbolicPath Pkg 'File) -> [String] -> ConfigFlags
- ConfigFlags {
- data BuildFlags where
- BuildFlags {
- buildCommonFlags :: !CommonSetupFlags
- buildProgramPaths :: [(String, FilePath)]
- buildProgramArgs :: [(String, [String])]
- buildNumJobs :: Flag (Maybe Int)
- buildUseSemaphore :: Flag String
- pattern BuildCommonFlags :: Flag Verbosity -> Flag (SymbolicPath Pkg ('Dir Dist)) -> Flag (SymbolicPath CWD ('Dir Pkg)) -> Flag (SymbolicPath Pkg 'File) -> [String] -> BuildFlags
- BuildFlags {
- data ReplFlags where
- ReplFlags {
- replCommonFlags :: !CommonSetupFlags
- replProgramPaths :: [(String, FilePath)]
- replProgramArgs :: [(String, [String])]
- replReload :: Flag Bool
- replReplOptions :: ReplOptions
- pattern ReplCommonFlags :: Flag Verbosity -> Flag (SymbolicPath Pkg ('Dir Dist)) -> Flag (SymbolicPath CWD ('Dir Pkg)) -> Flag (SymbolicPath Pkg 'File) -> [String] -> ReplFlags
- ReplFlags {
- data HaddockFlags where
- HaddockFlags {
- haddockCommonFlags :: !CommonSetupFlags
- haddockProgramPaths :: [(String, FilePath)]
- haddockProgramArgs :: [(String, [String])]
- haddockHoogle :: Flag Bool
- haddockHtml :: Flag Bool
- haddockHtmlLocation :: Flag String
- haddockForHackage :: Flag HaddockTarget
- haddockExecutables :: Flag Bool
- haddockTestSuites :: Flag Bool
- haddockBenchmarks :: Flag Bool
- haddockForeignLibs :: Flag Bool
- haddockInternal :: Flag Bool
- haddockCss :: Flag FilePath
- haddockLinkedSource :: Flag Bool
- haddockQuickJump :: Flag Bool
- haddockHscolourCss :: Flag FilePath
- haddockContents :: Flag PathTemplate
- haddockIndex :: Flag PathTemplate
- haddockKeepTempFiles :: Flag Bool
- haddockBaseUrl :: Flag String
- haddockLib :: Flag String
- haddockOutputDir :: Flag FilePath
- pattern HaddockCommonFlags :: Flag Verbosity -> Flag (SymbolicPath Pkg ('Dir Dist)) -> Flag (SymbolicPath CWD ('Dir Pkg)) -> Flag (SymbolicPath Pkg 'File) -> [String] -> HaddockFlags
- HaddockFlags {
- data HscolourFlags where
- HscolourFlags { }
- pattern HscolourCommonFlags :: Flag Verbosity -> Flag (SymbolicPath Pkg ('Dir Dist)) -> Flag (SymbolicPath CWD ('Dir Pkg)) -> Flag (SymbolicPath Pkg 'File) -> [String] -> HscolourFlags
- data CopyFlags where
- CopyFlags { }
- pattern CopyCommonFlags :: Flag Verbosity -> Flag (SymbolicPath Pkg ('Dir Dist)) -> Flag (SymbolicPath CWD ('Dir Pkg)) -> Flag (SymbolicPath Pkg 'File) -> [String] -> CopyFlags
- installFileGlob :: Verbosity -> CabalSpecVersion -> Maybe (SymbolicPath CWD ('Dir Pkg)) -> (Maybe (SymbolicPath CWD ('Dir DataDir)), SymbolicPath Pkg ('Dir DataDir)) -> RelativePath DataDir 'File -> IO ()
- data Program = Program {
- programName :: String
- programFindLocation :: Verbosity -> ProgramSearchPath -> IO (Maybe (FilePath, [FilePath]))
- programFindVersion :: Verbosity -> FilePath -> IO (Maybe Version)
- programPostConf :: Verbosity -> ConfiguredProgram -> IO ConfiguredProgram
- programNormaliseArgs :: Maybe Version -> PackageDescription -> [String] -> [String]
- data ConfiguredProgram = ConfiguredProgram {}
- type ProgArg = String
- data ProgramLocation
- = UserSpecified { }
- | FoundOnSystem { }
- data ProgramDb
- addKnownPrograms :: [Program] -> ProgramDb -> ProgramDb
- configureUnconfiguredProgram :: Verbosity -> Program -> ProgramDb -> IO (Maybe ConfiguredProgram)
- simpleProgram :: String -> Program
- data Verbosity
- data Compiler = Compiler {}
- data Platform = Platform Arch OS
- newtype Suffix = Suffix String
- data LocalBuildConfig
- data LocalBuildInfo
- data PackageBuildDescr
- data PackageDescription = PackageDescription {
- specVersion :: CabalSpecVersion
- package :: PackageIdentifier
- licenseRaw :: Either License License
- licenseFiles :: [RelativePath Pkg 'File]
- copyright :: !ShortText
- maintainer :: !ShortText
- author :: !ShortText
- stability :: !ShortText
- testedWith :: [(CompilerFlavor, VersionRange)]
- homepage :: !ShortText
- pkgUrl :: !ShortText
- bugReports :: !ShortText
- sourceRepos :: [SourceRepo]
- synopsis :: !ShortText
- description :: !ShortText
- category :: !ShortText
- customFieldsPD :: [(String, String)]
- buildTypeRaw :: Maybe BuildType
- setupBuildInfo :: Maybe SetupBuildInfo
- library :: Maybe Library
- subLibraries :: [Library]
- executables :: [Executable]
- foreignLibs :: [ForeignLib]
- testSuites :: [TestSuite]
- benchmarks :: [Benchmark]
- dataFiles :: [RelativePath DataDir 'File]
- dataDir :: SymbolicPath Pkg ('Dir DataDir)
- extraSrcFiles :: [RelativePath Pkg 'File]
- extraTmpFiles :: [RelativePath Pkg 'File]
- extraDocFiles :: [RelativePath Pkg 'File]
- data Component
- data ComponentName where
- CLibName LibraryName
- CNotLibName NotLibComponentName
- pattern CBenchName :: UnqualComponentName -> ComponentName
- pattern CTestName :: UnqualComponentName -> ComponentName
- pattern CExeName :: UnqualComponentName -> ComponentName
- pattern CFLibName :: UnqualComponentName -> ComponentName
- componentName :: Component -> ComponentName
- data BuildInfo = BuildInfo {
- buildable :: Bool
- buildTools :: [LegacyExeDependency]
- buildToolDepends :: [ExeDependency]
- cppOptions :: [String]
- asmOptions :: [String]
- cmmOptions :: [String]
- ccOptions :: [String]
- cxxOptions :: [String]
- ldOptions :: [String]
- hsc2hsOptions :: [String]
- pkgconfigDepends :: [PkgconfigDependency]
- frameworks :: [RelativePath Framework 'File]
- extraFrameworkDirs :: [SymbolicPath Pkg ('Dir Framework)]
- asmSources :: [SymbolicPath Pkg 'File]
- cmmSources :: [SymbolicPath Pkg 'File]
- cSources :: [SymbolicPath Pkg 'File]
- cxxSources :: [SymbolicPath Pkg 'File]
- jsSources :: [SymbolicPath Pkg 'File]
- hsSourceDirs :: [SymbolicPath Pkg ('Dir Source)]
- otherModules :: [ModuleName]
- virtualModules :: [ModuleName]
- autogenModules :: [ModuleName]
- defaultLanguage :: Maybe Language
- otherLanguages :: [Language]
- defaultExtensions :: [Extension]
- otherExtensions :: [Extension]
- oldExtensions :: [Extension]
- extraLibs :: [String]
- extraLibsStatic :: [String]
- extraGHCiLibs :: [String]
- extraBundledLibs :: [String]
- extraLibFlavours :: [String]
- extraDynLibFlavours :: [String]
- extraLibDirs :: [SymbolicPath Pkg ('Dir Lib)]
- extraLibDirsStatic :: [SymbolicPath Pkg ('Dir Lib)]
- includeDirs :: [SymbolicPath Pkg ('Dir Include)]
- includes :: [SymbolicPath Include 'File]
- autogenIncludes :: [RelativePath Include 'File]
- installIncludes :: [RelativePath Include 'File]
- options :: PerCompilerFlavor [String]
- profOptions :: PerCompilerFlavor [String]
- sharedOptions :: PerCompilerFlavor [String]
- staticOptions :: PerCompilerFlavor [String]
- customFieldsBI :: [(String, String)]
- targetBuildDepends :: [Dependency]
- mixins :: [Mixin]
- emptyBuildInfo :: BuildInfo
- data TargetInfo = TargetInfo {}
- data ComponentLocalBuildInfo
- = LibComponentLocalBuildInfo {
- componentLocalName :: ComponentName
- componentComponentId :: ComponentId
- componentUnitId :: UnitId
- componentIsIndefinite_ :: Bool
- componentInstantiatedWith :: [(ModuleName, OpenModule)]
- componentPackageDeps :: [(UnitId, MungedPackageId)]
- componentIncludes :: [(OpenUnitId, ModuleRenaming)]
- componentExeDeps :: [UnitId]
- componentInternalDeps :: [UnitId]
- componentCompatPackageKey :: String
- componentCompatPackageName :: MungedPackageName
- componentExposedModules :: [ExposedModule]
- componentIsPublic :: Bool
- | FLibComponentLocalBuildInfo { }
- | ExeComponentLocalBuildInfo { }
- | TestComponentLocalBuildInfo { }
- | BenchComponentLocalBuildInfo { }
- = LibComponentLocalBuildInfo {
- data Library = Library {}
- data ForeignLib = ForeignLib {}
- data Executable = Executable {}
- data TestSuite = TestSuite {}
- data Benchmark = Benchmark {}
- data LibraryName
- emptyLibrary :: Library
- emptyForeignLib :: ForeignLib
- emptyExecutable :: Executable
- emptyTestSuite :: TestSuite
- emptyBenchmark :: Benchmark
Hooks
A Cabal package with Hooks build-type must define the Haskell module
SetupHooks which defines a value setupHooks :: .SetupHooks
These *setup hooks* allow package authors to customise the configuration and
building of a package by providing certain hooks that get folded into the
general package configuration and building logic within Cabal.
This mechanism replaces the Custom build-type, providing better
integration with the rest of the Haskell ecosystem.
Usage example:
-- In your .cabal file
build-type: Hooks
custom-setup
setup-depends:
base >= 4.18 && < 5,
Cabal-hooks >= 0.1 && < 0.2
The declared Cabal version should also be at least 3.14.-- In SetupHooks.hs, next to your .cabal file
module SetupHooks where
import Distribution.Simple.SetupHooks ( SetupHooks, noSetupHooks )
setupHooks :: SetupHooks
setupHooks =
noSetupHooks
{ configureHooks = myConfigureHooks
, buildHooks = myBuildHooks }Note that SetupHooks can be monoidally combined, e.g.:
module SetupHooks where import Distribution.Simple.SetupHooks import qualified SomeOtherLibrary ( setupHooks ) setupHooks :: SetupHooks setupHooks = SomeOtherLibrary.setupHooks <> mySetupHooks mySetupHooks :: SetupHooks mySetupHooks = ...
data SetupHooks Source #
Hooks into the cabal build phases.
Usage:
- In your
.cabalfile, declarebuild-type: Hooks(with acabal-versiongreater than or equal to3.14), - In your
.cabalfile, include acustom-setupstanza which declares the dependencies of yourSetupHooksmodule; this will usually contain a dependency on theCabal-hookspackage. - Provide a
SetupHooks.hsmodule next to your.cabalfile; it must exportsetupHooks :: SetupHooks.
Constructors
| SetupHooks | |
Fields
| |
Instances
| Monoid SetupHooks | |
Defined in Distribution.Simple.SetupHooks.Internal Methods mempty :: SetupHooks # mappend :: SetupHooks -> SetupHooks -> SetupHooks # mconcat :: [SetupHooks] -> SetupHooks # | |
| Semigroup SetupHooks |
Warning: this |
Defined in Distribution.Simple.SetupHooks.Internal Methods (<>) :: SetupHooks -> SetupHooks -> SetupHooks # sconcat :: NonEmpty SetupHooks -> SetupHooks stimes :: Integral b => b -> SetupHooks -> SetupHooks | |
noSetupHooks :: SetupHooks Source #
Empty hooks.
Configure hooks
Configure hooks can be used to augment the Cabal configure logic with
package-specific logic. The main principle is that the configure hooks can
feed into updating the PackageDescription of a cabal package. From then on,
this package configuration is set in stone, and later hooks (e.g. hooks into
the build phase) can no longer modify this configuration; instead they will
receive this configuration in their inputs, and must honour it.
Configuration happens at two levels:
- global configuration covers the entire package,
- local configuration covers a single component.
Once the global package configuration is done, all hooks work on a per-component level. The configuration hooks thus follow a simple philosophy:
- All modifications to global package options must use
$sel:preConfPackageHook:ConfigureHooks. - All modifications to component configuration options must use
$sel:preConfComponentHook:ConfigureHooks.
For example, to generate modules inside a given component, you should:
- In the per-component configure hook, declare the modules you are going to
generate by adding them to the
autogenModulesfield for that component (unless you know them ahead of time, in which case they can be listed textually in the.cabalfile of the project). - In the build hooks, describe the actions that will generate these modules.
data ConfigureHooks Source #
Configure-time hooks.
Order of execution:
$sel:preConfPackageHook:ConfigureHooks,- configure the package,
$sel:postConfPackageHook:ConfigureHooks,$sel:preConfComponentHook:ConfigureHooks,- configure the components.
Constructors
| ConfigureHooks | |
Fields
| |
Instances
| Monoid ConfigureHooks | |
Defined in Distribution.Simple.SetupHooks.Internal Methods mappend :: ConfigureHooks -> ConfigureHooks -> ConfigureHooks # mconcat :: [ConfigureHooks] -> ConfigureHooks # | |
| Semigroup ConfigureHooks | |
Defined in Distribution.Simple.SetupHooks.Internal Methods (<>) :: ConfigureHooks -> ConfigureHooks -> ConfigureHooks # sconcat :: NonEmpty ConfigureHooks -> ConfigureHooks stimes :: Integral b => b -> ConfigureHooks -> ConfigureHooks | |
noConfigureHooks :: ConfigureHooks Source #
Empty configure phase hooks.
Per-package configure hooks
data PreConfPackageInputs Source #
Inputs to the package-wide pre-configure step.
Constructors
| PreConfPackageInputs | |
Fields
| |
Instances
| Structured PreConfPackageInputs | |
Defined in Distribution.Simple.SetupHooks.Internal Methods structure :: Proxy PreConfPackageInputs -> Structure Source # structureHash' :: Tagged PreConfPackageInputs MD5 | |
| Generic PreConfPackageInputs | |
Defined in Distribution.Simple.SetupHooks.Internal Associated Types type Rep PreConfPackageInputs :: Type -> Type Methods from :: PreConfPackageInputs -> Rep PreConfPackageInputs x to :: Rep PreConfPackageInputs x -> PreConfPackageInputs | |
| Show PreConfPackageInputs | |
Defined in Distribution.Simple.SetupHooks.Internal Methods showsPrec :: Int -> PreConfPackageInputs -> ShowS # show :: PreConfPackageInputs -> String # showList :: [PreConfPackageInputs] -> ShowS # | |
| Binary PreConfPackageInputs | |
Defined in Distribution.Simple.SetupHooks.Internal Methods put :: PreConfPackageInputs -> Put # get :: Get PreConfPackageInputs # putList :: [PreConfPackageInputs] -> Put # | |
| type Rep PreConfPackageInputs | |
Defined in Distribution.Simple.SetupHooks.Internal type Rep PreConfPackageInputs = D1 ('MetaData "PreConfPackageInputs" "Distribution.Simple.SetupHooks.Internal" "Cabal-3.13.0.0-inplace" 'False) (C1 ('MetaCons "PreConfPackageInputs" 'PrefixI 'True) ((S1 ('MetaSel ('Just "configFlags") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ConfigFlags) :*: S1 ('MetaSel ('Just "localBuildConfig") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 LocalBuildConfig)) :*: (S1 ('MetaSel ('Just "compiler") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Compiler) :*: S1 ('MetaSel ('Just "platform") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Platform)))) | |
data PreConfPackageOutputs Source #
Outputs of the package-wide pre-configure step.
Prefer using noPreConfPackageOutputs and overriding the fields
you care about, to avoid depending on implementation details
of this datatype.
Constructors
| PreConfPackageOutputs | |
Fields | |
Instances
noPreConfPackageOutputs :: PreConfPackageInputs -> PreConfPackageOutputs Source #
Use this smart constructor to declare an empty set of changes by the package-wide pre-configure hook, and override the fields you care about.
Use this rather than PreConfPackageOutputs to avoid relying on
internal implementation details of the latter.
data PostConfPackageInputs Source #
Inputs to the package-wide post-configure step.
Constructors
| PostConfPackageInputs | |
Instances
type PostConfPackageHook = PostConfPackageInputs -> IO () Source #
Package-wide post-configure step.
Perform side effects. Last opportunity for any package-wide logic; any subsequent hooks work per-component.
Per-component configure hooks
data PreConfComponentInputs Source #
Inputs to the per-component pre-configure step.
Constructors
| PreConfComponentInputs | |
Instances
data PreConfComponentOutputs Source #
Outputs of the per-component pre-configure step.
Prefer using noPreComponentOutputs and overriding the fields
you care about, to avoid depending on implementation details
of this datatype.
Constructors
| PreConfComponentOutputs | |
Fields | |
Instances
noPreConfComponentOutputs :: PreConfComponentInputs -> PreConfComponentOutputs Source #
Use this smart constructor to declare an empty set of changes by a per-component pre-configure hook, and override the fields you care about.
Use this rather than PreConfComponentOutputs to avoid relying on
internal implementation details of the latter.
type PreConfComponentHook = PreConfComponentInputs -> IO PreConfComponentOutputs Source #
Per-component pre-configure step.
For each component of the package, this hook can perform side effects, and return a diff to the passed in component, e.g. to declare additional autogenerated modules.
newtype ComponentDiff Source #
Constructors
| ComponentDiff | |
Fields | |
Instances
| Structured ComponentDiff | |
Defined in Distribution.Simple.SetupHooks.Internal Methods structure :: Proxy ComponentDiff -> Structure Source # structureHash' :: Tagged ComponentDiff MD5 | |
| Semigroup ComponentDiff | |
Defined in Distribution.Simple.SetupHooks.Internal Methods (<>) :: ComponentDiff -> ComponentDiff -> ComponentDiff # sconcat :: NonEmpty ComponentDiff -> ComponentDiff stimes :: Integral b => b -> ComponentDiff -> ComponentDiff | |
| Show ComponentDiff | |
Defined in Distribution.Simple.SetupHooks.Internal Methods showsPrec :: Int -> ComponentDiff -> ShowS # show :: ComponentDiff -> String # showList :: [ComponentDiff] -> ShowS # | |
| Binary ComponentDiff | |
Defined in Distribution.Simple.SetupHooks.Internal | |
type LibraryDiff = Library Source #
type ForeignLibDiff = ForeignLib Source #
type ExecutableDiff = Executable Source #
type TestSuiteDiff = TestSuite Source #
type BenchmarkDiff = Benchmark Source #
type BuildInfoDiff = BuildInfo Source #
Build hooks
data BuildHooks Source #
Build-time hooks.
Constructors
| BuildHooks | |
Fields
| |
Instances
| Monoid BuildHooks | |
Defined in Distribution.Simple.SetupHooks.Internal Methods mempty :: BuildHooks # mappend :: BuildHooks -> BuildHooks -> BuildHooks # mconcat :: [BuildHooks] -> BuildHooks # | |
| Semigroup BuildHooks | |
Defined in Distribution.Simple.SetupHooks.Internal Methods (<>) :: BuildHooks -> BuildHooks -> BuildHooks # sconcat :: NonEmpty BuildHooks -> BuildHooks stimes :: Integral b => b -> BuildHooks -> BuildHooks | |
noBuildHooks :: BuildHooks Source #
Empty build hooks.
data BuildingWhat Source #
What kind of build phase are we doing/hooking into?
Is this a normal build, or is it perhaps for running an interactive session or Haddock?
Constructors
| BuildNormal BuildFlags | A normal build. |
| BuildRepl ReplFlags | Build steps for an interactive session. |
| BuildHaddock HaddockFlags | Build steps for generating documentation. |
| BuildHscolour HscolourFlags | Build steps for Hscolour. |
Instances
| Structured BuildingWhat | |
Defined in Distribution.Simple.Setup Methods structure :: Proxy BuildingWhat -> Structure Source # structureHash' :: Tagged BuildingWhat MD5 | |
| Generic BuildingWhat | |
Defined in Distribution.Simple.Setup Associated Types type Rep BuildingWhat :: Type -> Type | |
| Show BuildingWhat | |
Defined in Distribution.Simple.Setup Methods showsPrec :: Int -> BuildingWhat -> ShowS # show :: BuildingWhat -> String # showList :: [BuildingWhat] -> ShowS # | |
| Binary BuildingWhat | |
Defined in Distribution.Simple.Setup | |
| type Rep BuildingWhat | |
Defined in Distribution.Simple.Setup type Rep BuildingWhat = D1 ('MetaData "BuildingWhat" "Distribution.Simple.Setup" "Cabal-3.13.0.0-inplace" 'False) ((C1 ('MetaCons "BuildNormal" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 BuildFlags)) :+: C1 ('MetaCons "BuildRepl" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ReplFlags))) :+: (C1 ('MetaCons "BuildHaddock" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 HaddockFlags)) :+: C1 ('MetaCons "BuildHscolour" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 HscolourFlags)))) | |
buildingWhatDistPref :: BuildingWhat -> SymbolicPath Pkg ('Dir Dist) Source #
Pre-build rules
Pre-build hooks are specified as a collection of pre-build Rules.
Each Rule consists of:
- a specification of its static dependencies and outputs,
- the commands that execute the rule.
Rules are constructed using either one of the staticRule or dynamicRule
smart constructors. Directly constructing a Rule using the constructors of
that data type is not advised, as this relies on internal implementation details
which are subject to change in between versions of the `Cabal-hooks` library.
Note that:
- To declare the dependency on the output of a rule, one must refer to the
rule directly, and not to the path to the output executing that rule will
eventually produce.
To do so, registering a
Rulewith the API returns a unique identifier for that rule, in the form of aRuleId. - File dependencies and outputs are not specified directly by
FilePath, but rather use theLocationtype (which is more convenient when working with preprocessors). - Rules refer to the actions that execute them using static pointers, in order to enable serialisation/deserialisation of rules.
- Rules can additionally monitor files or directories, which determines when to re-compute the entire set of rules.
data PreBuildComponentInputs Source #
Constructors
| PreBuildComponentInputs | |
Fields
| |
Instances
Post-build hooks
data PostBuildComponentInputs Source #
Constructors
| PostBuildComponentInputs | |
Fields | |
Instances
type PostBuildComponentHook = PostBuildComponentInputs -> IO () Source #
Rules
A collection of Rules.
Use the rules smart constructor instead of directly using the Rules
constructor.
- Rules are registered using
registerRule, - Monitored files or directories are declared using
addRuleMonitors; a change in these will trigger the recomputation of all rules.
The env type parameter represents an extra argument, which usually
consists of information known to Cabal such as LocalBuildInfo and
ComponentLocalBuildInfo.
Arguments
| :: StaticPtr label | unique label for this collection of rules |
| -> (env -> RulesM ()) | the computation of rules |
| -> Rules env |
Construct a collection of rules with a given label.
A label for the rules can be constructed using the static keyword,
using the StaticPointers extension.
NB: separate calls to rules should have different labels.
Example usage:
myRules :: Rules env
myRules = rules (static ()) $ \ env -> do { .. } -- use the monadic API heredata Dependency Source #
A dependency of a rule.
Constructors
| RuleDependency !RuleOutput | A dependency on an output of another rule. |
| FileDependency !Location | A direct dependency on a file at a particular location on disk. This should not be used for files that are generated by other rules;
use |
Instances
data RuleOutput Source #
A reference to an output of another rule.
Constructors
| RuleOutput | |
Fields
| |
Instances
A unique identifier for a Rule.
Instances
| Structured RuleId | |
Defined in Distribution.Simple.SetupHooks.Rule | |
| Generic RuleId | |
| Show RuleId | |
| Binary RuleId | |
| Eq RuleId | |
| Ord RuleId | |
| type Rep RuleId | |
Defined in Distribution.Simple.SetupHooks.Rule type Rep RuleId = D1 ('MetaData "RuleId" "Distribution.Simple.SetupHooks.Rule" "Cabal-3.13.0.0-inplace" 'False) (C1 ('MetaCons "RuleId" 'PrefixI 'True) (S1 ('MetaSel ('Just "ruleNameSpace") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 RulesNameSpace) :*: S1 ('MetaSel ('Just "ruleName") 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 ShortText))) | |
staticRule :: Typeable arg => Command arg (IO ()) -> [Dependency] -> NonEmpty Location -> Rule Source #
A rule with static dependencies.
Prefer using this smart constructor instead of Rule whenever possible.
dynamicRule :: (Typeable depsArg, Typeable depsRes, Typeable arg) => StaticPtr (Dict (Binary depsRes, Show depsRes, Eq depsRes)) -> Command depsArg (IO ([Dependency], depsRes)) -> Command arg (depsRes -> IO ()) -> [Dependency] -> NonEmpty Location -> Rule Source #
A rule with dynamic dependencies.
Prefer using this smart constructor instead of Rule whenever possible.
Rule inputs/outputs
Rules can declare various kinds of dependencies:
staticDependencies: files or other rules that a rule statically depends on,- extra dynamic dependencies, using the
DynamicRuleCommandsconstructor, MonitorFilePath: additional files and directories to monitor.
Rules are considered out-of-date precisely when any of the following conditions apply:
- O1
- there has been a (relevant) change in the files and directories monitored by the rules,
- O2
- the environment passed to the computation of rules has changed.
If the rules are out-of-date, the build system is expected to re-run the computation that computes all rules.
After this re-computation of the set of all rules, we match up new rules
with old rules, by RuleId. A rule is then considered stale if any of
following conditions apply:
- N
- the rule is new, or
- S
- the rule matches with an old rule, and either:
- S1
- a file dependency of the rule has been modifiedcreateddeleted, or a (transitive) rule dependency of the rule is itself stale, or
- S2
- the rule is different from the old rule, e.g. the argument stored in
the rule command has changed, or the pointer to the action to run the
rule has changed. (This is determined using the
Eq Ruleinstance.)
A stale rule becomes no longer stale once we run its associated action. The build system is responsible for re-running the actions associated with each stale rule, in dependency order. This means the build system is expected to behave as follows:
- Any time the rules are out-of-date, query the rules to obtain up-to-date rules.
- Re-run stale rules.
A (fully resolved) location of a dependency or result of a rule, consisting of a base directory and of a file path relative to that base directory path.
In practice, this will be something like ,
where:Location dir (moduleNameSymbolicPath mod . "hs")
- for a file dependency,
diris one of the Cabal search directories, - for an output,
diris a directory such asautogenComponentModulesDirorcomponentBuildDir.
Constructors
| Location | |
Fields
| |
Instances
location :: Location -> SymbolicPath Pkg 'File Source #
Get a (relative or absolute) un-interpreted path to a Location.
autogenComponentModulesDir :: LocalBuildInfo -> ComponentLocalBuildInfo -> SymbolicPath Pkg ('Dir Source) Source #
The directory in which we put auto-generated modules for a particular component.
componentBuildDir :: LocalBuildInfo -> ComponentLocalBuildInfo -> SymbolicPath Pkg ('Dir Build) Source #
Actions
data RuleCommands (scope :: Scope) (deps :: Scope -> Type -> Type -> Type) (ruleCmd :: Scope -> Type -> Type -> Type) where Source #
Commands to execute a rule:
- for a rule with static dependencies, a single command,
- for a rule with dynamic dependencies, a command for computing dynamic dependencies, and a command for executing the rule.
Constructors
| StaticRuleCommand | A rule with statically-known dependencies. |
Fields
| |
| DynamicRuleCommands | |
Fields
| |
Instances
| (Typeable scope, Typeable ruleCmd, Typeable deps) => Structured (RuleCommands scope deps ruleCmd) | |
Defined in Distribution.Simple.SetupHooks.Rule Methods structure :: Proxy (RuleCommands scope deps ruleCmd) -> Structure Source # structureHash' :: Tagged (RuleCommands scope deps ruleCmd) MD5 | |
| (forall arg res. Show (ruleCmd 'User arg res), forall depsArg depsRes. Show depsRes => Show (deps 'User depsArg depsRes)) => Show (RuleCommands 'User deps ruleCmd) | |
Defined in Distribution.Simple.SetupHooks.Rule | |
| (forall res. Binary (ruleCmd 'System ByteString res), Binary (deps 'System ByteString ByteString)) => Binary (RuleCommands 'System deps ruleCmd) | |
Defined in Distribution.Simple.SetupHooks.Rule Methods put :: RuleCommands 'System deps ruleCmd -> Put # get :: Get (RuleCommands 'System deps ruleCmd) # putList :: [RuleCommands 'System deps ruleCmd] -> Put # | |
| (forall arg res. Binary (ruleCmd 'User arg res), forall depsArg depsRes. Binary depsRes => Binary (deps 'User depsArg depsRes)) => Binary (RuleCommands 'User deps ruleCmd) | |
Defined in Distribution.Simple.SetupHooks.Rule Methods put :: RuleCommands 'User deps ruleCmd -> Put # get :: Get (RuleCommands 'User deps ruleCmd) # putList :: [RuleCommands 'User deps ruleCmd] -> Put # | |
| (forall res. Eq (ruleCmd 'System ByteString res), Eq (deps 'System ByteString ByteString)) => Eq (RuleCommands 'System deps ruleCmd) | |
Defined in Distribution.Simple.SetupHooks.Rule Methods (==) :: RuleCommands 'System deps ruleCmd -> RuleCommands 'System deps ruleCmd -> Bool # (/=) :: RuleCommands 'System deps ruleCmd -> RuleCommands 'System deps ruleCmd -> Bool # | |
| (forall arg res. Eq (ruleCmd 'User arg res), forall depsArg depsRes. Eq depsRes => Eq (deps 'User depsArg depsRes)) => Eq (RuleCommands 'User deps ruleCmd) | |
Defined in Distribution.Simple.SetupHooks.Rule Methods (==) :: RuleCommands 'User deps ruleCmd -> RuleCommands 'User deps ruleCmd -> Bool # (/=) :: RuleCommands 'User deps ruleCmd -> RuleCommands 'User deps ruleCmd -> Bool # | |
type Command = CommandData 'User Source #
A command consists of a statically-known action together with a (possibly dynamic) argument to that action.
For example, the action can consist of running an executable
(such as happy or c2hs), while the argument consists of the variable
component of the command, e.g. the specific file to run happy on.
mkCommand :: StaticPtr (Dict (Binary arg, Show arg)) -> StaticPtr (arg -> res) -> arg -> Command arg res Source #
Construct a command.
Prefer using this smart constructor instead of Command whenever possible.
A wrapper used to pass evidence of a constraint as an explicit value.
Rules API
Defining pre-build rules can be done in the following style:
{-# LANGUAGE BlockArguments, StaticPointers #-}
myPreBuildRules :: PreBuildComponentRules
myPreBuildRules = rules (static ()) $ \ preBuildEnvironment -> do
let cmd1 = mkCommand (static Dict) $ static \ arg -> do { .. }
cmd2 = mkCommand (static Dict) $ static \ arg -> do { .. }
myData <- liftIO someIOAction
addRuleMonitors [ monitorDirectory "someSearchDir" ]
registerRule_ "rule_1_1" $ staticRule (cmd1 arg1) deps1 outs1
registerRule_ "rule_1_2" $ staticRule (cmd1 arg2) deps2 outs2
registerRule_ "rule_1_3" $ staticRule (cmd1 arg3) deps3 outs3
registerRule_ "rule_2_4" $ staticRule (cmd2 arg4) deps4 outs4Here we use the rules, staticRule and mkCommand smart constructors,
rather than directly using the Rules, Rule and Command constructors,
which insulates us from internal changes to the Rules, Rule and Command
datatypes, respectively.
We use addRuleMonitors to declare a monitored directory that the collection
of rules as a whole depends on. In this case, we declare that they depend on the
contents of the "searchDir" directory. This means that the rules will be
computed anew whenever the contents of this directory change.
Arguments
| :: ShortText | user-given rule name; these should be unique on a per-package level |
| -> Rule | the rule to register |
| -> RulesM RuleId |
Register a rule. Returns an identifier for that rule.
Arguments
| :: ShortText | user-given rule name; these should be unique on a per-package level |
| -> Rule | the rule to register |
| -> RulesT IO () |
Register a rule, discarding the produced RuleId.
Using this function means that you don't expect any other rules to ever
depend on any outputs of this rule. Use registerRule to retain the
RuleId instead.
File/directory monitoring
addRuleMonitors :: Monad m => [MonitorFilePath] -> RulesT m () Source #
Declare additional monitored objects for the collection of all rules.
When these monitored objects change, the rules are re-computed.
Install hooks
data InstallHooks Source #
Copy/install hooks.
Constructors
| InstallHooks | |
Fields
| |
Instances
| Monoid InstallHooks | |
Defined in Distribution.Simple.SetupHooks.Internal Methods mempty :: InstallHooks # mappend :: InstallHooks -> InstallHooks -> InstallHooks # mconcat :: [InstallHooks] -> InstallHooks # | |
| Semigroup InstallHooks | |
Defined in Distribution.Simple.SetupHooks.Internal Methods (<>) :: InstallHooks -> InstallHooks -> InstallHooks # sconcat :: NonEmpty InstallHooks -> InstallHooks stimes :: Integral b => b -> InstallHooks -> InstallHooks | |
noInstallHooks :: InstallHooks Source #
Empty copy/install hooks.
data InstallComponentInputs Source #
Constructors
| InstallComponentInputs | |
Fields | |
Instances
type InstallComponentHook = InstallComponentInputs -> IO () Source #
A per-component install hook, which can only perform side effects (e.g. copying files).
Re-exports
Hooks
Configure hooks
data ConfigFlags Source #
Flags to configure command.
IMPORTANT: every time a new flag is added, filterConfigureFlags
should be updated.
IMPORTANT: every time a new flag is added, it should be added to the Eq instance
Constructors
| ConfigFlags | |
Fields
| |
Bundled Patterns
| pattern ConfigCommonFlags :: Flag Verbosity -> Flag (SymbolicPath Pkg ('Dir Dist)) -> Flag (SymbolicPath CWD ('Dir Pkg)) -> Flag (SymbolicPath Pkg 'File) -> [String] -> ConfigFlags |
Instances
| Structured ConfigFlags | |
Defined in Distribution.Simple.Setup.Config | |
| Monoid ConfigFlags | |
Defined in Distribution.Simple.Setup.Config Methods mempty :: ConfigFlags # mappend :: ConfigFlags -> ConfigFlags -> ConfigFlags # mconcat :: [ConfigFlags] -> ConfigFlags # | |
| Semigroup ConfigFlags | |
Defined in Distribution.Simple.Setup.Config Methods (<>) :: ConfigFlags -> ConfigFlags -> ConfigFlags # sconcat :: NonEmpty ConfigFlags -> ConfigFlags stimes :: Integral b => b -> ConfigFlags -> ConfigFlags | |
| Generic ConfigFlags | |
Defined in Distribution.Simple.Setup.Config Associated Types type Rep ConfigFlags :: Type -> Type | |
| Read ConfigFlags | |
Defined in Distribution.Simple.Setup.Config Methods readsPrec :: Int -> ReadS ConfigFlags # readList :: ReadS [ConfigFlags] # readPrec :: ReadPrec ConfigFlags readListPrec :: ReadPrec [ConfigFlags] | |
| Show ConfigFlags | |
Defined in Distribution.Simple.Setup.Config Methods showsPrec :: Int -> ConfigFlags -> ShowS # show :: ConfigFlags -> String # showList :: [ConfigFlags] -> ShowS # | |
| Binary ConfigFlags | |
Defined in Distribution.Simple.Setup.Config | |
| Eq ConfigFlags | |
Defined in Distribution.Simple.Setup.Config | |
| type Rep ConfigFlags | |
Defined in Distribution.Simple.Setup.Config type Rep ConfigFlags = D1 ('MetaData "ConfigFlags" "Distribution.Simple.Setup.Config" "Cabal-3.13.0.0-inplace" 'False) (C1 ('MetaCons "ConfigFlags" 'PrefixI 'True) (((((S1 ('MetaSel ('Just "configCommonFlags") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 CommonSetupFlags) :*: (S1 ('MetaSel ('Just "configPrograms_") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Option' (Last' ProgramDb))) :*: S1 ('MetaSel ('Just "configProgramPaths") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(String, FilePath)]))) :*: (S1 ('MetaSel ('Just "configProgramArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(String, [String])]) :*: (S1 ('MetaSel ('Just "configProgramPathExtra") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NubList FilePath)) :*: S1 ('MetaSel ('Just "configHcFlavor") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag CompilerFlavor))))) :*: ((S1 ('MetaSel ('Just "configHcPath") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: (S1 ('MetaSel ('Just "configHcPkg") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: S1 ('MetaSel ('Just "configVanillaLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))) :*: ((S1 ('MetaSel ('Just "configProfLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "configSharedLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "configStaticLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "configDynExe") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))))) :*: (((S1 ('MetaSel ('Just "configFullyStaticExe") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: (S1 ('MetaSel ('Just "configProfExe") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "configProf") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))) :*: ((S1 ('MetaSel ('Just "configProfDetail") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag ProfDetailLevel)) :*: S1 ('MetaSel ('Just "configProfLibDetail") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag ProfDetailLevel))) :*: (S1 ('MetaSel ('Just "configConfigureArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]) :*: S1 ('MetaSel ('Just "configOptimization") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag OptimisationLevel))))) :*: ((S1 ('MetaSel ('Just "configProgPrefix") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag PathTemplate)) :*: (S1 ('MetaSel ('Just "configProgSuffix") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag PathTemplate)) :*: S1 ('MetaSel ('Just "configInstallDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (InstallDirs (Flag PathTemplate))))) :*: ((S1 ('MetaSel ('Just "configScratchDir") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: S1 ('MetaSel ('Just "configExtraLibDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SymbolicPath Pkg ('Dir Lib)])) :*: (S1 ('MetaSel ('Just "configExtraLibDirsStatic") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SymbolicPath Pkg ('Dir Lib)]) :*: S1 ('MetaSel ('Just "configExtraFrameworkDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SymbolicPath Pkg ('Dir Framework)])))))) :*: ((((S1 ('MetaSel ('Just "configExtraIncludeDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SymbolicPath Pkg ('Dir Include)]) :*: (S1 ('MetaSel ('Just "configIPID") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag String)) :*: S1 ('MetaSel ('Just "configCID") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag ComponentId)))) :*: ((S1 ('MetaSel ('Just "configDeterministic") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "configUserInstall") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "configPackageDBs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Maybe PackageDB]) :*: S1 ('MetaSel ('Just "configGHCiLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))))) :*: ((S1 ('MetaSel ('Just "configSplitSections") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: (S1 ('MetaSel ('Just "configSplitObjs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "configStripExes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))) :*: ((S1 ('MetaSel ('Just "configStripLibs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "configConstraints") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [PackageVersionConstraint])) :*: (S1 ('MetaSel ('Just "configDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GivenComponent]) :*: S1 ('MetaSel ('Just "configPromisedDependencies") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [GivenComponent]))))) :*: (((S1 ('MetaSel ('Just "configInstantiateWith") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(ModuleName, Module)]) :*: (S1 ('MetaSel ('Just "configConfigurationsFlags") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FlagAssignment) :*: S1 ('MetaSel ('Just "configTests") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))) :*: ((S1 ('MetaSel ('Just "configBenchmarks") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "configCoverage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "configLibCoverage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "configExactConfiguration") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))))) :*: ((S1 ('MetaSel ('Just "configFlagError") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag String)) :*: (S1 ('MetaSel ('Just "configRelocatable") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "configDebugInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag DebugInfoLevel)))) :*: ((S1 ('MetaSel ('Just "configDumpBuildInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag DumpBuildInfo)) :*: S1 ('MetaSel ('Just "configUseResponseFiles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "configAllowDependingOnPrivateLibs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "configCoverageFor") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag [UnitId]))))))))) | |
Build hooks
data BuildFlags Source #
Constructors
| BuildFlags | |
Fields
| |
Bundled Patterns
| pattern BuildCommonFlags :: Flag Verbosity -> Flag (SymbolicPath Pkg ('Dir Dist)) -> Flag (SymbolicPath CWD ('Dir Pkg)) -> Flag (SymbolicPath Pkg 'File) -> [String] -> BuildFlags |
Instances
| Structured BuildFlags | |
Defined in Distribution.Simple.Setup.Build | |
| Monoid BuildFlags | |
Defined in Distribution.Simple.Setup.Build Methods mempty :: BuildFlags # mappend :: BuildFlags -> BuildFlags -> BuildFlags # mconcat :: [BuildFlags] -> BuildFlags # | |
| Semigroup BuildFlags | |
Defined in Distribution.Simple.Setup.Build Methods (<>) :: BuildFlags -> BuildFlags -> BuildFlags # sconcat :: NonEmpty BuildFlags -> BuildFlags stimes :: Integral b => b -> BuildFlags -> BuildFlags | |
| Generic BuildFlags | |
Defined in Distribution.Simple.Setup.Build Associated Types type Rep BuildFlags :: Type -> Type | |
| Read BuildFlags | |
Defined in Distribution.Simple.Setup.Build Methods readsPrec :: Int -> ReadS BuildFlags # readList :: ReadS [BuildFlags] # readPrec :: ReadPrec BuildFlags readListPrec :: ReadPrec [BuildFlags] | |
| Show BuildFlags | |
Defined in Distribution.Simple.Setup.Build Methods showsPrec :: Int -> BuildFlags -> ShowS # show :: BuildFlags -> String # showList :: [BuildFlags] -> ShowS # | |
| Binary BuildFlags | |
Defined in Distribution.Simple.Setup.Build | |
| type Rep BuildFlags | |
Defined in Distribution.Simple.Setup.Build type Rep BuildFlags = D1 ('MetaData "BuildFlags" "Distribution.Simple.Setup.Build" "Cabal-3.13.0.0-inplace" 'False) (C1 ('MetaCons "BuildFlags" 'PrefixI 'True) ((S1 ('MetaSel ('Just "buildCommonFlags") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 CommonSetupFlags) :*: S1 ('MetaSel ('Just "buildProgramPaths") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(String, FilePath)])) :*: (S1 ('MetaSel ('Just "buildProgramArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(String, [String])]) :*: (S1 ('MetaSel ('Just "buildNumJobs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag (Maybe Int))) :*: S1 ('MetaSel ('Just "buildUseSemaphore") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag String)))))) | |
Constructors
| ReplFlags | |
Fields
| |
Bundled Patterns
| pattern ReplCommonFlags :: Flag Verbosity -> Flag (SymbolicPath Pkg ('Dir Dist)) -> Flag (SymbolicPath CWD ('Dir Pkg)) -> Flag (SymbolicPath Pkg 'File) -> [String] -> ReplFlags |
Instances
| Structured ReplFlags | |
Defined in Distribution.Simple.Setup.Repl | |
| Monoid ReplFlags | |
| Semigroup ReplFlags | |
| Generic ReplFlags | |
| Show ReplFlags | |
| Binary ReplFlags | |
| type Rep ReplFlags | |
Defined in Distribution.Simple.Setup.Repl type Rep ReplFlags = D1 ('MetaData "ReplFlags" "Distribution.Simple.Setup.Repl" "Cabal-3.13.0.0-inplace" 'False) (C1 ('MetaCons "ReplFlags" 'PrefixI 'True) ((S1 ('MetaSel ('Just "replCommonFlags") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 CommonSetupFlags) :*: S1 ('MetaSel ('Just "replProgramPaths") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(String, FilePath)])) :*: (S1 ('MetaSel ('Just "replProgramArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(String, [String])]) :*: (S1 ('MetaSel ('Just "replReload") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "replReplOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ReplOptions))))) | |
data HaddockFlags Source #
Constructors
| HaddockFlags | |
Fields
| |
Bundled Patterns
| pattern HaddockCommonFlags :: Flag Verbosity -> Flag (SymbolicPath Pkg ('Dir Dist)) -> Flag (SymbolicPath CWD ('Dir Pkg)) -> Flag (SymbolicPath Pkg 'File) -> [String] -> HaddockFlags |
Instances
| Structured HaddockFlags | |
Defined in Distribution.Simple.Setup.Haddock Methods structure :: Proxy HaddockFlags -> Structure Source # structureHash' :: Tagged HaddockFlags MD5 | |
| Monoid HaddockFlags | |
Defined in Distribution.Simple.Setup.Haddock Methods mempty :: HaddockFlags # mappend :: HaddockFlags -> HaddockFlags -> HaddockFlags # mconcat :: [HaddockFlags] -> HaddockFlags # | |
| Semigroup HaddockFlags | |
Defined in Distribution.Simple.Setup.Haddock Methods (<>) :: HaddockFlags -> HaddockFlags -> HaddockFlags # sconcat :: NonEmpty HaddockFlags -> HaddockFlags stimes :: Integral b => b -> HaddockFlags -> HaddockFlags | |
| Generic HaddockFlags | |
Defined in Distribution.Simple.Setup.Haddock Associated Types type Rep HaddockFlags :: Type -> Type | |
| Show HaddockFlags | |
Defined in Distribution.Simple.Setup.Haddock Methods showsPrec :: Int -> HaddockFlags -> ShowS # show :: HaddockFlags -> String # showList :: [HaddockFlags] -> ShowS # | |
| Binary HaddockFlags | |
Defined in Distribution.Simple.Setup.Haddock | |
| type Rep HaddockFlags | |
Defined in Distribution.Simple.Setup.Haddock type Rep HaddockFlags = D1 ('MetaData "HaddockFlags" "Distribution.Simple.Setup.Haddock" "Cabal-3.13.0.0-inplace" 'False) (C1 ('MetaCons "HaddockFlags" 'PrefixI 'True) ((((S1 ('MetaSel ('Just "haddockCommonFlags") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 CommonSetupFlags) :*: S1 ('MetaSel ('Just "haddockProgramPaths") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(String, FilePath)])) :*: (S1 ('MetaSel ('Just "haddockProgramArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(String, [String])]) :*: (S1 ('MetaSel ('Just "haddockHoogle") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "haddockHtml") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))))) :*: ((S1 ('MetaSel ('Just "haddockHtmlLocation") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag String)) :*: (S1 ('MetaSel ('Just "haddockForHackage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag HaddockTarget)) :*: S1 ('MetaSel ('Just "haddockExecutables") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))) :*: (S1 ('MetaSel ('Just "haddockTestSuites") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: (S1 ('MetaSel ('Just "haddockBenchmarks") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "haddockForeignLibs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))))) :*: (((S1 ('MetaSel ('Just "haddockInternal") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "haddockCss") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath))) :*: (S1 ('MetaSel ('Just "haddockLinkedSource") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: (S1 ('MetaSel ('Just "haddockQuickJump") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "haddockHscolourCss") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath))))) :*: ((S1 ('MetaSel ('Just "haddockContents") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag PathTemplate)) :*: (S1 ('MetaSel ('Just "haddockIndex") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag PathTemplate)) :*: S1 ('MetaSel ('Just "haddockKeepTempFiles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))) :*: (S1 ('MetaSel ('Just "haddockBaseUrl") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag String)) :*: (S1 ('MetaSel ('Just "haddockLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag String)) :*: S1 ('MetaSel ('Just "haddockOutputDir") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)))))))) | |
data HscolourFlags Source #
Constructors
| HscolourFlags | |
Fields | |
Bundled Patterns
| pattern HscolourCommonFlags :: Flag Verbosity -> Flag (SymbolicPath Pkg ('Dir Dist)) -> Flag (SymbolicPath CWD ('Dir Pkg)) -> Flag (SymbolicPath Pkg 'File) -> [String] -> HscolourFlags |
Instances
| Structured HscolourFlags | |
Defined in Distribution.Simple.Setup.Hscolour Methods structure :: Proxy HscolourFlags -> Structure Source # structureHash' :: Tagged HscolourFlags MD5 | |
| Monoid HscolourFlags | |
Defined in Distribution.Simple.Setup.Hscolour Methods mempty :: HscolourFlags # mappend :: HscolourFlags -> HscolourFlags -> HscolourFlags # mconcat :: [HscolourFlags] -> HscolourFlags # | |
| Semigroup HscolourFlags | |
Defined in Distribution.Simple.Setup.Hscolour Methods (<>) :: HscolourFlags -> HscolourFlags -> HscolourFlags # sconcat :: NonEmpty HscolourFlags -> HscolourFlags stimes :: Integral b => b -> HscolourFlags -> HscolourFlags | |
| Generic HscolourFlags | |
Defined in Distribution.Simple.Setup.Hscolour Associated Types type Rep HscolourFlags :: Type -> Type | |
| Show HscolourFlags | |
Defined in Distribution.Simple.Setup.Hscolour Methods showsPrec :: Int -> HscolourFlags -> ShowS # show :: HscolourFlags -> String # showList :: [HscolourFlags] -> ShowS # | |
| Binary HscolourFlags | |
Defined in Distribution.Simple.Setup.Hscolour | |
| type Rep HscolourFlags | |
Defined in Distribution.Simple.Setup.Hscolour type Rep HscolourFlags = D1 ('MetaData "HscolourFlags" "Distribution.Simple.Setup.Hscolour" "Cabal-3.13.0.0-inplace" 'False) (C1 ('MetaCons "HscolourFlags" 'PrefixI 'True) ((S1 ('MetaSel ('Just "hscolourCommonFlags") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 CommonSetupFlags) :*: (S1 ('MetaSel ('Just "hscolourCSS") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: S1 ('MetaSel ('Just "hscolourExecutables") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))) :*: (S1 ('MetaSel ('Just "hscolourTestSuites") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: (S1 ('MetaSel ('Just "hscolourBenchmarks") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "hscolourForeignLibs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))))) | |
Install hooks
Flags to copy: (destdir, copy-prefix (backwards compat), verbosity)
Constructors
| CopyFlags | |
Fields | |
Bundled Patterns
| pattern CopyCommonFlags :: Flag Verbosity -> Flag (SymbolicPath Pkg ('Dir Dist)) -> Flag (SymbolicPath CWD ('Dir Pkg)) -> Flag (SymbolicPath Pkg 'File) -> [String] -> CopyFlags |
Instances
| Structured CopyFlags | |
Defined in Distribution.Simple.Setup.Copy | |
| Monoid CopyFlags | |
| Semigroup CopyFlags | |
| Generic CopyFlags | |
| Show CopyFlags | |
| Binary CopyFlags | |
| type Rep CopyFlags | |
Defined in Distribution.Simple.Setup.Copy type Rep CopyFlags = D1 ('MetaData "CopyFlags" "Distribution.Simple.Setup.Copy" "Cabal-3.13.0.0-inplace" 'False) (C1 ('MetaCons "CopyFlags" 'PrefixI 'True) (S1 ('MetaSel ('Just "copyCommonFlags") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 CommonSetupFlags) :*: S1 ('MetaSel ('Just "copyDest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag CopyDest)))) | |
Hooks API
These are functions provided as part of the Hooks API.
It is recommended to import them from this module as opposed to
manually importing them from inside the Cabal module hierarchy.
Copy/install functions
Arguments
| :: Verbosity | |
| -> CabalSpecVersion | |
| -> Maybe (SymbolicPath CWD ('Dir Pkg)) | |
| -> (Maybe (SymbolicPath CWD ('Dir DataDir)), SymbolicPath Pkg ('Dir DataDir)) | (src_dir, dest_dir) |
| -> RelativePath DataDir 'File | file glob pattern |
| -> IO () |
Install the files specified by the given glob pattern.
Interacting with the program database
Represents a program which can be configured.
Note: rather than constructing this directly, start with simpleProgram and
override any extra fields.
Constructors
| Program | |
Fields
| |
data ConfiguredProgram Source #
Represents a program which has been configured and is thus ready to be run.
These are usually made by configuring a Program, but if you have to
construct one directly then start with simpleConfiguredProgram and
override any extra fields.
Constructors
| ConfiguredProgram | |
Fields
| |
Instances
| Structured ConfiguredProgram | |
Defined in Distribution.Simple.Program.Types Methods structure :: Proxy ConfiguredProgram -> Structure Source # structureHash' :: Tagged ConfiguredProgram MD5 | |
| Generic ConfiguredProgram | |
Defined in Distribution.Simple.Program.Types Associated Types type Rep ConfiguredProgram :: Type -> Type Methods from :: ConfiguredProgram -> Rep ConfiguredProgram x to :: Rep ConfiguredProgram x -> ConfiguredProgram | |
| Read ConfiguredProgram | |
Defined in Distribution.Simple.Program.Types Methods readsPrec :: Int -> ReadS ConfiguredProgram # readList :: ReadS [ConfiguredProgram] # readPrec :: ReadPrec ConfiguredProgram readListPrec :: ReadPrec [ConfiguredProgram] | |
| Show ConfiguredProgram | |
Defined in Distribution.Simple.Program.Types Methods showsPrec :: Int -> ConfiguredProgram -> ShowS # show :: ConfiguredProgram -> String # showList :: [ConfiguredProgram] -> ShowS # | |
| Binary ConfiguredProgram | |
Defined in Distribution.Simple.Program.Types Methods put :: ConfiguredProgram -> Put # get :: Get ConfiguredProgram # putList :: [ConfiguredProgram] -> Put # | |
| Eq ConfiguredProgram | |
Defined in Distribution.Simple.Program.Types Methods (==) :: ConfiguredProgram -> ConfiguredProgram -> Bool # (/=) :: ConfiguredProgram -> ConfiguredProgram -> Bool # | |
| type Rep ConfiguredProgram | |
Defined in Distribution.Simple.Program.Types type Rep ConfiguredProgram = D1 ('MetaData "ConfiguredProgram" "Distribution.Simple.Program.Types" "Cabal-3.13.0.0-inplace" 'False) (C1 ('MetaCons "ConfiguredProgram" 'PrefixI 'True) (((S1 ('MetaSel ('Just "programId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Just "programVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Version))) :*: (S1 ('MetaSel ('Just "programDefaultArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]) :*: S1 ('MetaSel ('Just "programOverrideArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]))) :*: ((S1 ('MetaSel ('Just "programOverrideEnv") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(String, Maybe String)]) :*: S1 ('MetaSel ('Just "programProperties") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map String String))) :*: (S1 ('MetaSel ('Just "programLocation") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ProgramLocation) :*: S1 ('MetaSel ('Just "programMonitorFiles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath]))))) | |
data ProgramLocation Source #
Where a program was found. Also tells us whether it's specified by user or not. This includes not just the path, but the program as well.
Constructors
| UserSpecified | The user gave the path to this program, eg. --ghc-path=/usr/bin/ghc-6.6 |
Fields | |
| FoundOnSystem | The program was found automatically. |
Fields | |
Instances
The configuration is a collection of information about programs. It contains information both about configured programs and also about programs that we are yet to configure.
The idea is that we start from a collection of unconfigured programs and one
by one we try to configure them at which point we move them into the
configured collection. For unconfigured programs we record not just the
Program but also any user-provided arguments and location for the program.
Instances
| Structured ProgramDb | |
Defined in Distribution.Simple.Program.Db | |
| Read ProgramDb | Note that this instance does not preserve the known |
| Show ProgramDb | Note that this instance does not preserve the known |
| Binary ProgramDb | Note that this instance does not preserve the known |
configureUnconfiguredProgram :: Verbosity -> Program -> ProgramDb -> IO (Maybe ConfiguredProgram) Source #
Try to configure a specific program. If the program is already included in the collection of unconfigured programs then we use any user-supplied location and arguments.
simpleProgram :: String -> Program Source #
Make a simple named program.
By default we'll just search for it in the path and not try to find the version name. You can override these behaviours if necessary, eg:
(simpleProgram "foo") { programFindLocation = ... , programFindVersion ... }General Cabal datatypes
Instances
| Parsec Verbosity | Parser verbosity
Note: this parser will eat trailing spaces. |
Defined in Distribution.Verbosity Methods parsec :: CabalParsing m => m Verbosity Source # | |
| Pretty Verbosity | |
Defined in Distribution.Verbosity Methods pretty :: Verbosity -> Doc Source # prettyVersioned :: CabalSpecVersion -> Verbosity -> Doc Source # | |
| Structured Verbosity | |
Defined in Distribution.Verbosity | |
| Bounded Verbosity | |
| Enum Verbosity | |
Defined in Distribution.Verbosity Methods succ :: Verbosity -> Verbosity # pred :: Verbosity -> Verbosity # fromEnum :: Verbosity -> Int # enumFrom :: Verbosity -> [Verbosity] # enumFromThen :: Verbosity -> Verbosity -> [Verbosity] # enumFromTo :: Verbosity -> Verbosity -> [Verbosity] # enumFromThenTo :: Verbosity -> Verbosity -> Verbosity -> [Verbosity] # | |
| Generic Verbosity | |
| Read Verbosity | |
| Show Verbosity | |
| Binary Verbosity | |
| Eq Verbosity | |
| Ord Verbosity | |
| type Rep Verbosity | |
Defined in Distribution.Verbosity type Rep Verbosity = D1 ('MetaData "Verbosity" "Distribution.Verbosity" "Cabal-3.13.0.0-inplace" 'False) (C1 ('MetaCons "Verbosity" 'PrefixI 'True) (S1 ('MetaSel ('Just "vLevel") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 VerbosityLevel) :*: (S1 ('MetaSel ('Just "vFlags") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Set VerbosityFlag)) :*: S1 ('MetaSel ('Just "vQuiet") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))) | |
Constructors
| Compiler | |
Fields
| |
Instances
| Structured Compiler | |
Defined in Distribution.Simple.Compiler | |
| Generic Compiler | |
| Read Compiler | |
| Show Compiler | |
| Binary Compiler | |
| Eq Compiler | |
| type Rep Compiler | |
Defined in Distribution.Simple.Compiler type Rep Compiler = D1 ('MetaData "Compiler" "Distribution.Simple.Compiler" "Cabal-3.13.0.0-inplace" 'False) (C1 ('MetaCons "Compiler" 'PrefixI 'True) ((S1 ('MetaSel ('Just "compilerId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CompilerId) :*: (S1 ('MetaSel ('Just "compilerAbiTag") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 AbiTag) :*: S1 ('MetaSel ('Just "compilerCompat") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [CompilerId]))) :*: (S1 ('MetaSel ('Just "compilerLanguages") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Language, CompilerFlag)]) :*: (S1 ('MetaSel ('Just "compilerExtensions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Extension, Maybe CompilerFlag)]) :*: S1 ('MetaSel ('Just "compilerProperties") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map String String)))))) | |
Instances
| Parsec Platform | |
Defined in Distribution.System Methods parsec :: CabalParsing m => m Platform Source # | |
| Pretty Platform | |
Defined in Distribution.System Methods pretty :: Platform -> Doc Source # prettyVersioned :: CabalSpecVersion -> Platform -> Doc Source # | |
| Structured Platform | |
Defined in Distribution.System | |
| Data Platform | |
Defined in Distribution.System Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Platform -> c Platform gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Platform toConstr :: Platform -> Constr dataTypeOf :: Platform -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Platform) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Platform) gmapT :: (forall b. Data b => b -> b) -> Platform -> Platform gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Platform -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Platform -> r gmapQ :: (forall d. Data d => d -> u) -> Platform -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> Platform -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> Platform -> m Platform gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Platform -> m Platform gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Platform -> m Platform | |
| Generic Platform | |
| Read Platform | |
| Show Platform | |
| Binary Platform | |
| NFData Platform | |
Defined in Distribution.System | |
| Eq Platform | |
| Ord Platform | |
Defined in Distribution.System | |
| type Rep Platform | |
Defined in Distribution.System type Rep Platform = D1 ('MetaData "Platform" "Distribution.System" "Cabal-syntax-3.13.0.0-inplace" 'False) (C1 ('MetaCons "Platform" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Arch) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 OS))) | |
A suffix (or file extension).
Mostly used to decide which preprocessor to use, e.g. files with suffix "y"
are usually processed by the "happy" build tool.
Instances
| Pretty Suffix | |
Defined in Distribution.Simple.PreProcess.Types Methods pretty :: Suffix -> Doc Source # prettyVersioned :: CabalSpecVersion -> Suffix -> Doc Source # | |
| Structured Suffix | |
Defined in Distribution.Simple.PreProcess.Types | |
| IsString Suffix | |
Defined in Distribution.Simple.PreProcess.Types Methods fromString :: String -> Suffix # | |
| Generic Suffix | |
| Show Suffix | |
| Binary Suffix | |
| Eq Suffix | |
| Ord Suffix | |
Defined in Distribution.Simple.PreProcess.Types | |
| type Rep Suffix | |
Defined in Distribution.Simple.PreProcess.Types | |
Package information
data LocalBuildConfig Source #
LocalBuildConfig contains options that can be controlled
by the user and serve as inputs to the configuration of a package.
Instances
data LocalBuildInfo Source #
Data cached after configuration step. See also
ConfigFlags.
Instances
data PackageBuildDescr Source #
PackageBuildDescr contains the information Cabal determines after
performing package-wide configuration of a package, before doing any
per-component configuration.
Instances
| Structured PackageBuildDescr | |
Defined in Distribution.Types.LocalBuildConfig Methods structure :: Proxy PackageBuildDescr -> Structure Source # structureHash' :: Tagged PackageBuildDescr MD5 | |
| Generic PackageBuildDescr | |
Defined in Distribution.Types.LocalBuildConfig Associated Types type Rep PackageBuildDescr :: Type -> Type Methods from :: PackageBuildDescr -> Rep PackageBuildDescr x to :: Rep PackageBuildDescr x -> PackageBuildDescr | |
| Read PackageBuildDescr | |
Defined in Distribution.Types.LocalBuildConfig Methods readsPrec :: Int -> ReadS PackageBuildDescr # readList :: ReadS [PackageBuildDescr] # readPrec :: ReadPrec PackageBuildDescr readListPrec :: ReadPrec [PackageBuildDescr] | |
| Show PackageBuildDescr | |
Defined in Distribution.Types.LocalBuildConfig Methods showsPrec :: Int -> PackageBuildDescr -> ShowS # show :: PackageBuildDescr -> String # showList :: [PackageBuildDescr] -> ShowS # | |
| Binary PackageBuildDescr | |
Defined in Distribution.Types.LocalBuildConfig Methods put :: PackageBuildDescr -> Put # get :: Get PackageBuildDescr # putList :: [PackageBuildDescr] -> Put # | |
| type Rep PackageBuildDescr | |
Defined in Distribution.Types.LocalBuildConfig type Rep PackageBuildDescr = D1 ('MetaData "PackageBuildDescr" "Distribution.Types.LocalBuildConfig" "Cabal-3.13.0.0-inplace" 'False) (C1 ('MetaCons "PackageBuildDescr" 'PrefixI 'True) (((S1 ('MetaSel ('Just "configFlags") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ConfigFlags) :*: S1 ('MetaSel ('Just "flagAssignment") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FlagAssignment)) :*: (S1 ('MetaSel ('Just "componentEnabledSpec") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentRequestedSpec) :*: (S1 ('MetaSel ('Just "compiler") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Compiler) :*: S1 ('MetaSel ('Just "hostPlatform") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Platform)))) :*: ((S1 ('MetaSel ('Just "pkgDescrFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (SymbolicPath Pkg 'File))) :*: S1 ('MetaSel ('Just "localPkgDescr") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageDescription)) :*: (S1 ('MetaSel ('Just "installDirTemplates") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 InstallDirTemplates) :*: (S1 ('MetaSel ('Just "withPackageDB") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageDBStack) :*: S1 ('MetaSel ('Just "extraCoverageFor") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId])))))) | |
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
Instances
| Package PackageDescription | |
Defined in Distribution.Types.PackageDescription Methods packageId :: PackageDescription -> PackageIdentifier Source # | |
| HasBuildInfos PackageDescription | |
Defined in Distribution.Types.PackageDescription | |
| Structured PackageDescription | |
Defined in Distribution.Types.PackageDescription Methods structure :: Proxy PackageDescription -> Structure Source # structureHash' :: Tagged PackageDescription MD5 | |
| Data PackageDescription | |
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 | |
| Generic PackageDescription | |
Defined in Distribution.Types.PackageDescription Associated Types type Rep PackageDescription :: Type -> Type Methods from :: PackageDescription -> Rep PackageDescription x to :: Rep PackageDescription x -> PackageDescription | |
| Read PackageDescription | |
Defined in Distribution.Types.PackageDescription Methods readsPrec :: Int -> ReadS PackageDescription # readList :: ReadS [PackageDescription] # readPrec :: ReadPrec PackageDescription readListPrec :: ReadPrec [PackageDescription] | |
| Show PackageDescription | |
Defined in Distribution.Types.PackageDescription Methods showsPrec :: Int -> PackageDescription -> ShowS # show :: PackageDescription -> String # showList :: [PackageDescription] -> ShowS # | |
| Binary PackageDescription | |
Defined in Distribution.Types.PackageDescription Methods put :: PackageDescription -> Put # get :: Get PackageDescription # putList :: [PackageDescription] -> Put # | |
| NFData PackageDescription | |
Defined in Distribution.Types.PackageDescription Methods rnf :: PackageDescription -> () # | |
| Eq PackageDescription | |
Defined in Distribution.Types.PackageDescription Methods (==) :: PackageDescription -> PackageDescription -> Bool # (/=) :: PackageDescription -> PackageDescription -> Bool # | |
| Ord PackageDescription | |
Defined in Distribution.Types.PackageDescription Methods compare :: PackageDescription -> PackageDescription -> Ordering # (<) :: PackageDescription -> PackageDescription -> Bool # (<=) :: PackageDescription -> PackageDescription -> Bool # (>) :: PackageDescription -> PackageDescription -> Bool # (>=) :: PackageDescription -> PackageDescription -> Bool # max :: PackageDescription -> PackageDescription -> PackageDescription # min :: PackageDescription -> PackageDescription -> PackageDescription # | |
| type Rep PackageDescription | |
Defined in Distribution.Types.PackageDescription type Rep PackageDescription = D1 ('MetaData "PackageDescription" "Distribution.Types.PackageDescription" "Cabal-syntax-3.13.0.0-inplace" '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 [RelativePath Pkg 'File]) :*: S1 ('MetaSel ('Just "copyright") 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 ShortText)) :*: (S1 ('MetaSel ('Just "maintainer") 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 ShortText) :*: S1 ('MetaSel ('Just "author") 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 ShortText)))) :*: (((S1 ('MetaSel ('Just "stability") 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 ShortText) :*: S1 ('MetaSel ('Just "testedWith") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(CompilerFlavor, VersionRange)])) :*: (S1 ('MetaSel ('Just "homepage") 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 ShortText) :*: S1 ('MetaSel ('Just "pkgUrl") 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 ShortText))) :*: ((S1 ('MetaSel ('Just "bugReports") 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 ShortText) :*: S1 ('MetaSel ('Just "sourceRepos") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SourceRepo])) :*: (S1 ('MetaSel ('Just "synopsis") 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 ShortText) :*: S1 ('MetaSel ('Just "description") 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (Rec0 ShortText))))) :*: (((S1 ('MetaSel ('Just "category") 'NoSourceUnpackedness 'SourceStrict 'DecidedUnpack) (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 [RelativePath DataDir 'File]))) :*: ((S1 ('MetaSel ('Just "dataDir") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (SymbolicPath Pkg ('Dir DataDir))) :*: S1 ('MetaSel ('Just "extraSrcFiles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [RelativePath Pkg 'File])) :*: (S1 ('MetaSel ('Just "extraTmpFiles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [RelativePath Pkg 'File]) :*: S1 ('MetaSel ('Just "extraDocFiles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [RelativePath Pkg 'File]))))))) | |
Component information
Constructors
| CLib Library | |
| CFLib ForeignLib | |
| CExe Executable | |
| CTest TestSuite | |
| CBench Benchmark |
Instances
data ComponentName Source #
Constructors
| CLibName LibraryName | |
| CNotLibName NotLibComponentName |
Bundled Patterns
| pattern CBenchName :: UnqualComponentName -> ComponentName | |
| pattern CTestName :: UnqualComponentName -> ComponentName | |
| pattern CExeName :: UnqualComponentName -> ComponentName | |
| pattern CFLibName :: UnqualComponentName -> ComponentName |
Instances
Constructors
| BuildInfo | |
Fields
| |
Instances
| Structured BuildInfo | |
Defined in Distribution.Types.BuildInfo | |
| Data BuildInfo | |
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 | |
| Monoid BuildInfo | |
| Semigroup BuildInfo | |
| Generic BuildInfo | |
| Read BuildInfo | |
| Show BuildInfo | |
| Binary BuildInfo | |
| NFData BuildInfo | |
Defined in Distribution.Types.BuildInfo | |
| Eq BuildInfo | |
| Ord BuildInfo | |
| type Rep BuildInfo | |
Defined in Distribution.Types.BuildInfo type Rep BuildInfo = D1 ('MetaData "BuildInfo" "Distribution.Types.BuildInfo" "Cabal-syntax-3.13.0.0-inplace" 'False) (C1 ('MetaCons "BuildInfo" 'PrefixI 'True) (((((S1 ('MetaSel ('Just "buildable") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "buildTools") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LegacyExeDependency])) :*: (S1 ('MetaSel ('Just "buildToolDepends") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ExeDependency]) :*: (S1 ('MetaSel ('Just "cppOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]) :*: S1 ('MetaSel ('Just "asmOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String])))) :*: ((S1 ('MetaSel ('Just "cmmOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]) :*: (S1 ('MetaSel ('Just "ccOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]) :*: S1 ('MetaSel ('Just "cxxOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]))) :*: (S1 ('MetaSel ('Just "ldOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]) :*: (S1 ('MetaSel ('Just "hsc2hsOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]) :*: S1 ('MetaSel ('Just "pkgconfigDepends") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [PkgconfigDependency]))))) :*: (((S1 ('MetaSel ('Just "frameworks") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [RelativePath Framework 'File]) :*: (S1 ('MetaSel ('Just "extraFrameworkDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SymbolicPath Pkg ('Dir Framework)]) :*: S1 ('MetaSel ('Just "asmSources") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SymbolicPath Pkg 'File]))) :*: (S1 ('MetaSel ('Just "cmmSources") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SymbolicPath Pkg 'File]) :*: (S1 ('MetaSel ('Just "cSources") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SymbolicPath Pkg 'File]) :*: S1 ('MetaSel ('Just "cxxSources") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SymbolicPath Pkg 'File])))) :*: ((S1 ('MetaSel ('Just "jsSources") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SymbolicPath Pkg 'File]) :*: (S1 ('MetaSel ('Just "hsSourceDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SymbolicPath Pkg ('Dir Source)]) :*: S1 ('MetaSel ('Just "otherModules") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ModuleName]))) :*: (S1 ('MetaSel ('Just "virtualModules") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ModuleName]) :*: (S1 ('MetaSel ('Just "autogenModules") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ModuleName]) :*: S1 ('MetaSel ('Just "defaultLanguage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Language))))))) :*: ((((S1 ('MetaSel ('Just "otherLanguages") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Language]) :*: S1 ('MetaSel ('Just "defaultExtensions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Extension])) :*: (S1 ('MetaSel ('Just "otherExtensions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Extension]) :*: (S1 ('MetaSel ('Just "oldExtensions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Extension]) :*: S1 ('MetaSel ('Just "extraLibs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String])))) :*: ((S1 ('MetaSel ('Just "extraLibsStatic") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]) :*: (S1 ('MetaSel ('Just "extraGHCiLibs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]) :*: S1 ('MetaSel ('Just "extraBundledLibs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]))) :*: (S1 ('MetaSel ('Just "extraLibFlavours") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]) :*: (S1 ('MetaSel ('Just "extraDynLibFlavours") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]) :*: S1 ('MetaSel ('Just "extraLibDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SymbolicPath Pkg ('Dir Lib)]))))) :*: (((S1 ('MetaSel ('Just "extraLibDirsStatic") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SymbolicPath Pkg ('Dir Lib)]) :*: (S1 ('MetaSel ('Just "includeDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SymbolicPath Pkg ('Dir Include)]) :*: S1 ('MetaSel ('Just "includes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SymbolicPath Include 'File]))) :*: (S1 ('MetaSel ('Just "autogenIncludes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [RelativePath Include 'File]) :*: (S1 ('MetaSel ('Just "installIncludes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [RelativePath Include 'File]) :*: S1 ('MetaSel ('Just "options") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (PerCompilerFlavor [String]))))) :*: ((S1 ('MetaSel ('Just "profOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (PerCompilerFlavor [String])) :*: (S1 ('MetaSel ('Just "sharedOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (PerCompilerFlavor [String])) :*: S1 ('MetaSel ('Just "staticOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (PerCompilerFlavor [String])))) :*: (S1 ('MetaSel ('Just "customFieldsBI") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(String, String)]) :*: (S1 ('MetaSel ('Just "targetBuildDepends") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Dependency]) :*: S1 ('MetaSel ('Just "mixins") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Mixin])))))))) | |
data TargetInfo Source #
The TargetInfo contains all the information necessary to build a
specific target (e.g., componentmodulefile) in a package. In
principle, one can get the Component from a
ComponentLocalBuildInfo and LocalBuildInfo, but it is much more
convenient to have the component in hand.
Constructors
| TargetInfo | |
Fields | |
Instances
| IsNode TargetInfo | |
Defined in Distribution.Types.TargetInfo Associated Types type Key TargetInfo Source # Methods nodeKey :: TargetInfo -> Key TargetInfo Source # nodeNeighbors :: TargetInfo -> [Key TargetInfo] Source # | |
| Structured TargetInfo | |
Defined in Distribution.Types.TargetInfo | |
| Generic TargetInfo | |
Defined in Distribution.Types.TargetInfo Associated Types type Rep TargetInfo :: Type -> Type | |
| Show TargetInfo | |
Defined in Distribution.Types.TargetInfo Methods showsPrec :: Int -> TargetInfo -> ShowS # show :: TargetInfo -> String # showList :: [TargetInfo] -> ShowS # | |
| Binary TargetInfo | |
Defined in Distribution.Types.TargetInfo | |
| type Key TargetInfo | |
Defined in Distribution.Types.TargetInfo | |
| type Rep TargetInfo | |
Defined in Distribution.Types.TargetInfo type Rep TargetInfo = D1 ('MetaData "TargetInfo" "Distribution.Types.TargetInfo" "Cabal-3.13.0.0-inplace" 'False) (C1 ('MetaCons "TargetInfo" 'PrefixI 'True) (S1 ('MetaSel ('Just "targetCLBI") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentLocalBuildInfo) :*: S1 ('MetaSel ('Just "targetComponent") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Component))) | |
data ComponentLocalBuildInfo Source #
The first five fields are common across all algebraic variants.
Constructors
| LibComponentLocalBuildInfo | |
Fields
| |
| FLibComponentLocalBuildInfo | |
Fields
| |
| ExeComponentLocalBuildInfo | |
Fields
| |
| TestComponentLocalBuildInfo | |
Fields
| |
| BenchComponentLocalBuildInfo | |
Fields
| |
Instances
| IsNode ComponentLocalBuildInfo | |
Defined in Distribution.Types.ComponentLocalBuildInfo Associated Types | |
| Structured ComponentLocalBuildInfo | |
Defined in Distribution.Types.ComponentLocalBuildInfo Methods structure :: Proxy ComponentLocalBuildInfo -> Structure Source # structureHash' :: Tagged ComponentLocalBuildInfo MD5 | |
| Generic ComponentLocalBuildInfo | |
Defined in Distribution.Types.ComponentLocalBuildInfo Associated Types type Rep ComponentLocalBuildInfo :: Type -> Type Methods from :: ComponentLocalBuildInfo -> Rep ComponentLocalBuildInfo x to :: Rep ComponentLocalBuildInfo x -> ComponentLocalBuildInfo | |
| Read ComponentLocalBuildInfo | |
Defined in Distribution.Types.ComponentLocalBuildInfo Methods readsPrec :: Int -> ReadS ComponentLocalBuildInfo # readList :: ReadS [ComponentLocalBuildInfo] # readPrec :: ReadPrec ComponentLocalBuildInfo readListPrec :: ReadPrec [ComponentLocalBuildInfo] | |
| Show ComponentLocalBuildInfo | |
Defined in Distribution.Types.ComponentLocalBuildInfo Methods showsPrec :: Int -> ComponentLocalBuildInfo -> ShowS # show :: ComponentLocalBuildInfo -> String # showList :: [ComponentLocalBuildInfo] -> ShowS # | |
| Binary ComponentLocalBuildInfo | |
Defined in Distribution.Types.ComponentLocalBuildInfo Methods put :: ComponentLocalBuildInfo -> Put # get :: Get ComponentLocalBuildInfo # putList :: [ComponentLocalBuildInfo] -> Put # | |
| type Key ComponentLocalBuildInfo | |
Defined in Distribution.Types.ComponentLocalBuildInfo | |
| type Rep ComponentLocalBuildInfo | |
Defined in Distribution.Types.ComponentLocalBuildInfo type Rep ComponentLocalBuildInfo = D1 ('MetaData "ComponentLocalBuildInfo" "Distribution.Types.ComponentLocalBuildInfo" "Cabal-3.13.0.0-inplace" 'False) ((C1 ('MetaCons "LibComponentLocalBuildInfo" 'PrefixI 'True) (((S1 ('MetaSel ('Just "componentLocalName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentName) :*: (S1 ('MetaSel ('Just "componentComponentId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentId) :*: S1 ('MetaSel ('Just "componentUnitId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnitId))) :*: (S1 ('MetaSel ('Just "componentIsIndefinite_") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: (S1 ('MetaSel ('Just "componentInstantiatedWith") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(ModuleName, OpenModule)]) :*: S1 ('MetaSel ('Just "componentPackageDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(UnitId, MungedPackageId)])))) :*: ((S1 ('MetaSel ('Just "componentIncludes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(OpenUnitId, ModuleRenaming)]) :*: (S1 ('MetaSel ('Just "componentExeDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId]) :*: S1 ('MetaSel ('Just "componentInternalDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId]))) :*: ((S1 ('MetaSel ('Just "componentCompatPackageKey") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String) :*: S1 ('MetaSel ('Just "componentCompatPackageName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 MungedPackageName)) :*: (S1 ('MetaSel ('Just "componentExposedModules") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [ExposedModule]) :*: S1 ('MetaSel ('Just "componentIsPublic") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool))))) :+: C1 ('MetaCons "FLibComponentLocalBuildInfo" 'PrefixI 'True) ((S1 ('MetaSel ('Just "componentLocalName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentName) :*: (S1 ('MetaSel ('Just "componentComponentId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentId) :*: S1 ('MetaSel ('Just "componentUnitId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnitId))) :*: ((S1 ('MetaSel ('Just "componentPackageDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(UnitId, MungedPackageId)]) :*: S1 ('MetaSel ('Just "componentIncludes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(OpenUnitId, ModuleRenaming)])) :*: (S1 ('MetaSel ('Just "componentExeDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId]) :*: S1 ('MetaSel ('Just "componentInternalDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId]))))) :+: (C1 ('MetaCons "ExeComponentLocalBuildInfo" 'PrefixI 'True) ((S1 ('MetaSel ('Just "componentLocalName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentName) :*: (S1 ('MetaSel ('Just "componentComponentId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentId) :*: S1 ('MetaSel ('Just "componentUnitId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnitId))) :*: ((S1 ('MetaSel ('Just "componentPackageDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(UnitId, MungedPackageId)]) :*: S1 ('MetaSel ('Just "componentIncludes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(OpenUnitId, ModuleRenaming)])) :*: (S1 ('MetaSel ('Just "componentExeDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId]) :*: S1 ('MetaSel ('Just "componentInternalDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId])))) :+: (C1 ('MetaCons "TestComponentLocalBuildInfo" 'PrefixI 'True) ((S1 ('MetaSel ('Just "componentLocalName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentName) :*: (S1 ('MetaSel ('Just "componentComponentId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentId) :*: S1 ('MetaSel ('Just "componentUnitId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnitId))) :*: ((S1 ('MetaSel ('Just "componentPackageDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(UnitId, MungedPackageId)]) :*: S1 ('MetaSel ('Just "componentIncludes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(OpenUnitId, ModuleRenaming)])) :*: (S1 ('MetaSel ('Just "componentExeDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId]) :*: S1 ('MetaSel ('Just "componentInternalDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId])))) :+: C1 ('MetaCons "BenchComponentLocalBuildInfo" 'PrefixI 'True) ((S1 ('MetaSel ('Just "componentLocalName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentName) :*: (S1 ('MetaSel ('Just "componentComponentId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ComponentId) :*: S1 ('MetaSel ('Just "componentUnitId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnitId))) :*: ((S1 ('MetaSel ('Just "componentPackageDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(UnitId, MungedPackageId)]) :*: S1 ('MetaSel ('Just "componentIncludes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(OpenUnitId, ModuleRenaming)])) :*: (S1 ('MetaSel ('Just "componentExeDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId]) :*: S1 ('MetaSel ('Just "componentInternalDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [UnitId]))))))) | |
Components
Constructors
| Library | |
Fields
| |
Instances
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
data Executable Source #
Constructors
| Executable | |
Fields | |
Instances
A "test-suite" stanza in a cabal file.
Constructors
| TestSuite | |
Fields | |
Instances
A "benchmark" stanza in a cabal file.
Constructors
| Benchmark | |
Instances
data LibraryName Source #
Constructors
| LMainLibName | |
| LSubLibName UnqualComponentName |
Instances
| Structured LibraryName | |
Defined in Distribution.Types.LibraryName | |
| Data LibraryName | |
Defined in Distribution.Types.LibraryName Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> LibraryName -> c LibraryName gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c LibraryName toConstr :: LibraryName -> Constr dataTypeOf :: LibraryName -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c LibraryName) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c LibraryName) gmapT :: (forall b. Data b => b -> b) -> LibraryName -> LibraryName gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> LibraryName -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> LibraryName -> r gmapQ :: (forall d. Data d => d -> u) -> LibraryName -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> LibraryName -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> LibraryName -> m LibraryName gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> LibraryName -> m LibraryName gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> LibraryName -> m LibraryName | |
| Generic LibraryName | |
Defined in Distribution.Types.LibraryName Associated Types type Rep LibraryName :: Type -> Type | |
| Read LibraryName | |
Defined in Distribution.Types.LibraryName Methods readsPrec :: Int -> ReadS LibraryName # readList :: ReadS [LibraryName] # readPrec :: ReadPrec LibraryName readListPrec :: ReadPrec [LibraryName] | |
| Show LibraryName | |
Defined in Distribution.Types.LibraryName Methods showsPrec :: Int -> LibraryName -> ShowS # show :: LibraryName -> String # showList :: [LibraryName] -> ShowS # | |
| Binary LibraryName | |
Defined in Distribution.Types.LibraryName | |
| NFData LibraryName | |
Defined in Distribution.Types.LibraryName Methods rnf :: LibraryName -> () # | |
| Eq LibraryName | |
Defined in Distribution.Types.LibraryName | |
| Ord LibraryName | |
Defined in Distribution.Types.LibraryName Methods compare :: LibraryName -> LibraryName -> Ordering # (<) :: LibraryName -> LibraryName -> Bool # (<=) :: LibraryName -> LibraryName -> Bool # (>) :: LibraryName -> LibraryName -> Bool # (>=) :: LibraryName -> LibraryName -> Bool # max :: LibraryName -> LibraryName -> LibraryName # min :: LibraryName -> LibraryName -> LibraryName # | |
| type Rep LibraryName | |
Defined in Distribution.Types.LibraryName type Rep LibraryName = D1 ('MetaData "LibraryName" "Distribution.Types.LibraryName" "Cabal-syntax-3.13.0.0-inplace" 'False) (C1 ('MetaCons "LMainLibName" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LSubLibName" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UnqualComponentName))) | |
emptyForeignLib :: ForeignLib Source #
An empty foreign library.