cabal-install-3.10.1.0: The command-line interface for Cabal and Hackage.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Distribution.Client.ProjectConfig

Description

Handling project configuration.

Synopsis

Types for project config

data ProjectConfig Source #

This type corresponds directly to what can be written in the cabal.project file. Other sources of configuration can also be injected into this type, such as the user-wide config file and the command line of cabal configure or cabal build.

Since it corresponds to the external project file it is an instance of Monoid and all the fields can be empty. This also means there has to be a step where we resolve configuration. At a minimum resolving means applying defaults but it can also mean merging information from multiple sources. For example for package-specific configuration the project file can specify configuration that applies to all local packages, and then additional configuration for a specific package.

Future directions: multiple profiles, conditionals. If we add these features then the gap between configuration as written in the config file and resolved settings we actually use will become even bigger.

Constructors

ProjectConfig 

Fields

Instances

Instances details
Structured ProjectConfig Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Monoid ProjectConfig Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Semigroup ProjectConfig Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Generic ProjectConfig Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Associated Types

type Rep ProjectConfig :: Type -> Type #

Show ProjectConfig Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Binary ProjectConfig Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Eq ProjectConfig Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

type Rep ProjectConfig Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

type Rep ProjectConfig = D1 ('MetaData "ProjectConfig" "Distribution.Client.ProjectConfig.Types" "cabal-install-3.10.1.0-FbhGUvZ0l0XIx7QbOQfSVh" 'False) (C1 ('MetaCons "ProjectConfig" 'PrefixI 'True) (((S1 ('MetaSel ('Just "projectPackages") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]) :*: S1 ('MetaSel ('Just "projectPackagesOptional") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String])) :*: (S1 ('MetaSel ('Just "projectPackagesRepo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [SourceRepoList]) :*: (S1 ('MetaSel ('Just "projectPackagesNamed") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [PackageVersionConstraint]) :*: S1 ('MetaSel ('Just "projectConfigBuildOnly") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ProjectConfigBuildOnly)))) :*: ((S1 ('MetaSel ('Just "projectConfigShared") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ProjectConfigShared) :*: S1 ('MetaSel ('Just "projectConfigProvenance") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Set ProjectConfigProvenance))) :*: (S1 ('MetaSel ('Just "projectConfigAllPackages") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageConfig) :*: (S1 ('MetaSel ('Just "projectConfigLocalPackages") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageConfig) :*: S1 ('MetaSel ('Just "projectConfigSpecificPackage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (MapMappend PackageName PackageConfig)))))))

data ProjectConfigBuildOnly Source #

That part of the project configuration that only affects how we build and not the value of the things we build. This means this information does not need to be tracked for changes since it does not affect the outcome.

Instances

Instances details
Structured ProjectConfigBuildOnly Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Monoid ProjectConfigBuildOnly Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Semigroup ProjectConfigBuildOnly Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Generic ProjectConfigBuildOnly Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Associated Types

type Rep ProjectConfigBuildOnly :: Type -> Type #

Show ProjectConfigBuildOnly Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Binary ProjectConfigBuildOnly Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Eq ProjectConfigBuildOnly Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

type Rep ProjectConfigBuildOnly Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

type Rep ProjectConfigBuildOnly = D1 ('MetaData "ProjectConfigBuildOnly" "Distribution.Client.ProjectConfig.Types" "cabal-install-3.10.1.0-FbhGUvZ0l0XIx7QbOQfSVh" 'False) (C1 ('MetaCons "ProjectConfigBuildOnly" 'PrefixI 'True) ((((S1 ('MetaSel ('Just "projectConfigVerbosity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Verbosity)) :*: S1 ('MetaSel ('Just "projectConfigDryRun") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "projectConfigOnlyDeps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "projectConfigOnlyDownload") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))) :*: ((S1 ('MetaSel ('Just "projectConfigSummaryFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NubList PathTemplate)) :*: S1 ('MetaSel ('Just "projectConfigLogFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag PathTemplate))) :*: (S1 ('MetaSel ('Just "projectConfigBuildReports") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag ReportLevel)) :*: (S1 ('MetaSel ('Just "projectConfigReportPlanningFailure") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "projectConfigSymlinkBinDir") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)))))) :*: (((S1 ('MetaSel ('Just "projectConfigNumJobs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag (Maybe Int))) :*: S1 ('MetaSel ('Just "projectConfigKeepGoing") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "projectConfigOfflineMode") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "projectConfigKeepTempFiles") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))) :*: ((S1 ('MetaSel ('Just "projectConfigHttpTransport") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag String)) :*: S1 ('MetaSel ('Just "projectConfigIgnoreExpiry") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "projectConfigCacheDir") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: (S1 ('MetaSel ('Just "projectConfigLogsDir") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: S1 ('MetaSel ('Just "projectConfigClientInstallFlags") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ClientInstallFlags)))))))

data ProjectConfigShared Source #

Project configuration that is shared between all packages in the project. In particular this includes configuration that affects the solver.

Constructors

ProjectConfigShared 

Fields

Instances

Instances details
Structured ProjectConfigShared Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Monoid ProjectConfigShared Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Semigroup ProjectConfigShared Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Generic ProjectConfigShared Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Associated Types

type Rep ProjectConfigShared :: Type -> Type #

Show ProjectConfigShared Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Binary ProjectConfigShared Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Eq ProjectConfigShared Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

type Rep ProjectConfigShared Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

type Rep ProjectConfigShared = D1 ('MetaData "ProjectConfigShared" "Distribution.Client.ProjectConfig.Types" "cabal-install-3.10.1.0-FbhGUvZ0l0XIx7QbOQfSVh" 'False) (C1 ('MetaCons "ProjectConfigShared" 'PrefixI 'True) (((((S1 ('MetaSel ('Just "projectConfigDistDir") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: S1 ('MetaSel ('Just "projectConfigConfigFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath))) :*: (S1 ('MetaSel ('Just "projectConfigProjectFile") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: S1 ('MetaSel ('Just "projectConfigIgnoreProject") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))) :*: ((S1 ('MetaSel ('Just "projectConfigHcFlavor") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag CompilerFlavor)) :*: S1 ('MetaSel ('Just "projectConfigHcPath") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath))) :*: (S1 ('MetaSel ('Just "projectConfigHcPkg") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: S1 ('MetaSel ('Just "projectConfigHaddockIndex") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag PathTemplate))))) :*: (((S1 ('MetaSel ('Just "projectConfigInstallDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (InstallDirs (Flag PathTemplate))) :*: S1 ('MetaSel ('Just "projectConfigPackageDBs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Maybe PackageDB])) :*: (S1 ('MetaSel ('Just "projectConfigRemoteRepos") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NubList RemoteRepo)) :*: S1 ('MetaSel ('Just "projectConfigLocalNoIndexRepos") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NubList LocalRepo)))) :*: ((S1 ('MetaSel ('Just "projectConfigActiveRepos") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag ActiveRepos)) :*: S1 ('MetaSel ('Just "projectConfigIndexState") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag TotalIndexState))) :*: (S1 ('MetaSel ('Just "projectConfigStoreDir") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: (S1 ('MetaSel ('Just "projectConfigConstraints") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(UserConstraint, ConstraintSource)]) :*: S1 ('MetaSel ('Just "projectConfigPreferences") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [PackageVersionConstraint])))))) :*: ((((S1 ('MetaSel ('Just "projectConfigCabalVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Version)) :*: S1 ('MetaSel ('Just "projectConfigSolver") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag PreSolver))) :*: (S1 ('MetaSel ('Just "projectConfigAllowOlder") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe AllowOlder)) :*: S1 ('MetaSel ('Just "projectConfigAllowNewer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe AllowNewer)))) :*: ((S1 ('MetaSel ('Just "projectConfigWriteGhcEnvironmentFilesPolicy") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag WriteGhcEnvironmentFilesPolicy)) :*: S1 ('MetaSel ('Just "projectConfigMaxBackjumps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Int))) :*: (S1 ('MetaSel ('Just "projectConfigReorderGoals") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag ReorderGoals)) :*: S1 ('MetaSel ('Just "projectConfigCountConflicts") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag CountConflicts))))) :*: (((S1 ('MetaSel ('Just "projectConfigFineGrainedConflicts") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FineGrainedConflicts)) :*: S1 ('MetaSel ('Just "projectConfigMinimizeConflictSet") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag MinimizeConflictSet))) :*: (S1 ('MetaSel ('Just "projectConfigStrongFlags") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag StrongFlags)) :*: S1 ('MetaSel ('Just "projectConfigAllowBootLibInstalls") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag AllowBootLibInstalls)))) :*: ((S1 ('MetaSel ('Just "projectConfigOnlyConstrained") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag OnlyConstrained)) :*: S1 ('MetaSel ('Just "projectConfigPerComponent") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "projectConfigIndependentGoals") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag IndependentGoals)) :*: (S1 ('MetaSel ('Just "projectConfigPreferOldest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag PreferOldest)) :*: S1 ('MetaSel ('Just "projectConfigProgPathExtra") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NubList FilePath)))))))))

data ProjectConfigProvenance Source #

Specifies the provenance of project configuration, whether defaults were used or if the configuration was read from an explicit file path.

Constructors

Implicit

The configuration is implicit due to no explicit configuration being found. See readProjectConfig for how implicit configuration is determined.

Explicit FilePath

The path the project configuration was explicitly read from. | The configuration was explicitly read from the specified FilePath.

Instances

Instances details
Structured ProjectConfigProvenance Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Generic ProjectConfigProvenance Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Associated Types

type Rep ProjectConfigProvenance :: Type -> Type #

Show ProjectConfigProvenance Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Binary ProjectConfigProvenance Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Eq ProjectConfigProvenance Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Ord ProjectConfigProvenance Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

type Rep ProjectConfigProvenance Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

type Rep ProjectConfigProvenance = D1 ('MetaData "ProjectConfigProvenance" "Distribution.Client.ProjectConfig.Types" "cabal-install-3.10.1.0-FbhGUvZ0l0XIx7QbOQfSVh" 'False) (C1 ('MetaCons "Implicit" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Explicit" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath)))

data PackageConfig Source #

Project configuration that is specific to each package, that is where we can in principle have different values for different packages in the same project.

Constructors

PackageConfig 

Fields

Instances

Instances details
Structured PackageConfig Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Monoid PackageConfig Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Semigroup PackageConfig Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Generic PackageConfig Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Associated Types

type Rep PackageConfig :: Type -> Type #

Show PackageConfig Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Binary PackageConfig Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Eq PackageConfig Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

type Rep PackageConfig Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

type Rep PackageConfig = D1 ('MetaData "PackageConfig" "Distribution.Client.ProjectConfig.Types" "cabal-install-3.10.1.0-FbhGUvZ0l0XIx7QbOQfSVh" 'False) (C1 ('MetaCons "PackageConfig" 'PrefixI 'True) (((((S1 ('MetaSel ('Just "packageConfigProgramPaths") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (MapLast String FilePath)) :*: (S1 ('MetaSel ('Just "packageConfigProgramArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (MapMappend String [String])) :*: S1 ('MetaSel ('Just "packageConfigProgramPathExtra") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NubList FilePath)))) :*: ((S1 ('MetaSel ('Just "packageConfigFlagAssignment") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FlagAssignment) :*: S1 ('MetaSel ('Just "packageConfigVanillaLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "packageConfigSharedLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "packageConfigStaticLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))))) :*: (((S1 ('MetaSel ('Just "packageConfigDynExe") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "packageConfigFullyStaticExe") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "packageConfigProf") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "packageConfigProfLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))) :*: ((S1 ('MetaSel ('Just "packageConfigProfExe") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "packageConfigProfDetail") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag ProfDetailLevel))) :*: (S1 ('MetaSel ('Just "packageConfigProfLibDetail") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag ProfDetailLevel)) :*: S1 ('MetaSel ('Just "packageConfigConfigureArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [String]))))) :*: (((S1 ('MetaSel ('Just "packageConfigOptimization") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag OptimisationLevel)) :*: (S1 ('MetaSel ('Just "packageConfigProgPrefix") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag PathTemplate)) :*: S1 ('MetaSel ('Just "packageConfigProgSuffix") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag PathTemplate)))) :*: ((S1 ('MetaSel ('Just "packageConfigExtraLibDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath]) :*: S1 ('MetaSel ('Just "packageConfigExtraLibDirsStatic") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath])) :*: (S1 ('MetaSel ('Just "packageConfigExtraFrameworkDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath]) :*: S1 ('MetaSel ('Just "packageConfigExtraIncludeDirs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [FilePath])))) :*: (((S1 ('MetaSel ('Just "packageConfigGHCiLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "packageConfigSplitSections") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "packageConfigSplitObjs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "packageConfigStripExes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))) :*: ((S1 ('MetaSel ('Just "packageConfigStripLibs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "packageConfigTests") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "packageConfigBenchmarks") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "packageConfigCoverage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))))))) :*: ((((S1 ('MetaSel ('Just "packageConfigRelocatable") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: (S1 ('MetaSel ('Just "packageConfigDebugInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag DebugInfoLevel)) :*: S1 ('MetaSel ('Just "packageConfigDumpBuildInfo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag DumpBuildInfo)))) :*: ((S1 ('MetaSel ('Just "packageConfigRunTests") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "packageConfigDocumentation") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "packageConfigHaddockHoogle") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "packageConfigHaddockHtml") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))))) :*: (((S1 ('MetaSel ('Just "packageConfigHaddockHtmlLocation") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag String)) :*: S1 ('MetaSel ('Just "packageConfigHaddockForeignLibs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "packageConfigHaddockExecutables") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "packageConfigHaddockTestSuites") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))) :*: ((S1 ('MetaSel ('Just "packageConfigHaddockBenchmarks") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: S1 ('MetaSel ('Just "packageConfigHaddockInternal") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "packageConfigHaddockCss") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: S1 ('MetaSel ('Just "packageConfigHaddockLinkedSource") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))))) :*: (((S1 ('MetaSel ('Just "packageConfigHaddockQuickJump") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)) :*: (S1 ('MetaSel ('Just "packageConfigHaddockHscolourCss") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: S1 ('MetaSel ('Just "packageConfigHaddockContents") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag PathTemplate)))) :*: ((S1 ('MetaSel ('Just "packageConfigHaddockIndex") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag PathTemplate)) :*: S1 ('MetaSel ('Just "packageConfigHaddockBaseUrl") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag String))) :*: (S1 ('MetaSel ('Just "packageConfigHaddockLib") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag String)) :*: S1 ('MetaSel ('Just "packageConfigHaddockForHackage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag HaddockTarget))))) :*: (((S1 ('MetaSel ('Just "packageConfigTestHumanLog") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag PathTemplate)) :*: S1 ('MetaSel ('Just "packageConfigTestMachineLog") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag PathTemplate))) :*: (S1 ('MetaSel ('Just "packageConfigTestShowDetails") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag TestShowDetails)) :*: S1 ('MetaSel ('Just "packageConfigTestKeepTix") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool)))) :*: ((S1 ('MetaSel ('Just "packageConfigTestWrapper") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag FilePath)) :*: S1 ('MetaSel ('Just "packageConfigTestFailWhenNoTestSuites") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Flag Bool))) :*: (S1 ('MetaSel ('Just "packageConfigTestTestOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [PathTemplate]) :*: S1 ('MetaSel ('Just "packageConfigBenchmarkOptions") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [PathTemplate]))))))))

newtype MapLast k v Source #

Newtype wrapper for Map that provides a Monoid instance that takes the last value rather than the first value for overlapping keys.

Constructors

MapLast 

Fields

Instances

Instances details
Functor (MapLast k) Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Methods

fmap :: (a -> b) -> MapLast k a -> MapLast k b #

(<$) :: a -> MapLast k b -> MapLast k a #

(Structured k, Structured v) => Structured (MapLast k v) Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Methods

structure :: Proxy (MapLast k v) -> Structure #

structureHash' :: Tagged (MapLast k v) MD5

Ord k => Monoid (MapLast k v) Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Methods

mempty :: MapLast k v #

mappend :: MapLast k v -> MapLast k v -> MapLast k v #

mconcat :: [MapLast k v] -> MapLast k v #

Ord k => Semigroup (MapLast k v) Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Methods

(<>) :: MapLast k v -> MapLast k v -> MapLast k v #

sconcat :: NonEmpty (MapLast k v) -> MapLast k v #

stimes :: Integral b => b -> MapLast k v -> MapLast k v #

Generic (MapLast k v) Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Associated Types

type Rep (MapLast k v) :: Type -> Type #

Methods

from :: MapLast k v -> Rep (MapLast k v) x #

to :: Rep (MapLast k v) x -> MapLast k v #

(Show k, Show v) => Show (MapLast k v) Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Methods

showsPrec :: Int -> MapLast k v -> ShowS #

show :: MapLast k v -> String #

showList :: [MapLast k v] -> ShowS #

(Binary k, Binary v) => Binary (MapLast k v) Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Methods

put :: MapLast k v -> Put #

get :: Get (MapLast k v) #

putList :: [MapLast k v] -> Put #

(Eq k, Eq v) => Eq (MapLast k v) Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Methods

(==) :: MapLast k v -> MapLast k v -> Bool #

(/=) :: MapLast k v -> MapLast k v -> Bool #

type Rep (MapLast k v) Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

type Rep (MapLast k v) = D1 ('MetaData "MapLast" "Distribution.Client.ProjectConfig.Types" "cabal-install-3.10.1.0-FbhGUvZ0l0XIx7QbOQfSVh" 'True) (C1 ('MetaCons "MapLast" 'PrefixI 'True) (S1 ('MetaSel ('Just "getMapLast") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map k v))))

newtype MapMappend k v Source #

Newtype wrapper for Map that provides a Monoid instance that mappends values of overlapping keys rather than taking the first.

Constructors

MapMappend 

Fields

Instances

Instances details
Functor (MapMappend k) Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Methods

fmap :: (a -> b) -> MapMappend k a -> MapMappend k b #

(<$) :: a -> MapMappend k b -> MapMappend k a #

(Structured k, Structured v) => Structured (MapMappend k v) Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Methods

structure :: Proxy (MapMappend k v) -> Structure #

structureHash' :: Tagged (MapMappend k v) MD5

(Semigroup v, Ord k) => Monoid (MapMappend k v) Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Methods

mempty :: MapMappend k v #

mappend :: MapMappend k v -> MapMappend k v -> MapMappend k v #

mconcat :: [MapMappend k v] -> MapMappend k v #

(Semigroup v, Ord k) => Semigroup (MapMappend k v) Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Methods

(<>) :: MapMappend k v -> MapMappend k v -> MapMappend k v #

sconcat :: NonEmpty (MapMappend k v) -> MapMappend k v #

stimes :: Integral b => b -> MapMappend k v -> MapMappend k v #

Generic (MapMappend k v) Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Associated Types

type Rep (MapMappend k v) :: Type -> Type #

Methods

from :: MapMappend k v -> Rep (MapMappend k v) x #

to :: Rep (MapMappend k v) x -> MapMappend k v #

(Show k, Show v) => Show (MapMappend k v) Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Methods

showsPrec :: Int -> MapMappend k v -> ShowS #

show :: MapMappend k v -> String #

showList :: [MapMappend k v] -> ShowS #

(Binary k, Binary v) => Binary (MapMappend k v) Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Methods

put :: MapMappend k v -> Put #

get :: Get (MapMappend k v) #

putList :: [MapMappend k v] -> Put #

(Eq k, Eq v) => Eq (MapMappend k v) Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Methods

(==) :: MapMappend k v -> MapMappend k v -> Bool #

(/=) :: MapMappend k v -> MapMappend k v -> Bool #

type Rep (MapMappend k v) Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

type Rep (MapMappend k v) = D1 ('MetaData "MapMappend" "Distribution.Client.ProjectConfig.Types" "cabal-install-3.10.1.0-FbhGUvZ0l0XIx7QbOQfSVh" 'True) (C1 ('MetaCons "MapMappend" 'PrefixI 'True) (S1 ('MetaSel ('Just "getMapMappend") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map k v))))

Project root

findProjectRoot Source #

Arguments

:: Maybe FilePath

starting directory, or current directory

-> Maybe FilePath

cabal.project file name override

-> IO (Either BadProjectRoot ProjectRoot) 

Find the root of this project.

Searches for an explicit cabal.project file, in the current directory or parent directories. If no project file is found then the current dir is the project root (and the project will use an implicit config).

data ProjectRoot Source #

Information about the root directory of the project.

It can either be an implicit project root in the current dir if no cabal.project file is found, or an explicit root if the file is found.

Constructors

ProjectRootImplicit FilePath
  • - ^ An implicit project root. It contains the absolute project root dir.
ProjectRootExplicit FilePath FilePath
  • - ^ An explicit project root. It contains the absolute project root dir and the relative cabal.project file (or explicit override)

Instances

Instances details
Show ProjectRoot Source # 
Instance details

Defined in Distribution.Client.DistDirLayout

Eq ProjectRoot Source # 
Instance details

Defined in Distribution.Client.DistDirLayout

Project config files

readProjectConfig Source #

Arguments

:: Verbosity 
-> HttpTransport 
-> Flag Bool
--ignore-project
-> Flag FilePath 
-> DistDirLayout 
-> Rebuild ProjectConfigSkeleton 

Read all the config relevant for a project. This includes the project file if any, plus other global config.

readGlobalConfig :: Verbosity -> Flag FilePath -> Rebuild ProjectConfig Source #

Read the user's cabal-install config file.

readProjectLocalExtraConfig :: Verbosity -> HttpTransport -> DistDirLayout -> Rebuild ProjectConfigSkeleton Source #

Reads a cabal.project.local file in the given project root dir, or returns empty. This file gets written by cabal configure, or in principle can be edited manually or by other tools.

readProjectLocalFreezeConfig :: Verbosity -> HttpTransport -> DistDirLayout -> Rebuild ProjectConfigSkeleton Source #

Reads a cabal.project.freeze file in the given project root dir, or returns empty. This file gets written by cabal freeze, or in principle can be edited manually or by other tools.

showProjectConfig :: ProjectConfig -> String Source #

Render the ProjectConfig format.

For the moment this is implemented in terms of a pretty printer for the legacy configuration types, plus a conversion.

withProjectOrGlobalConfig Source #

Arguments

:: Verbosity

verbosity

-> Flag Bool

whether to ignore local project (--ignore-project flag)

-> Flag FilePath
--cabal-config
-> IO a

with project

-> (ProjectConfig -> IO a)

without project

-> IO a 

writeProjectLocalExtraConfig :: DistDirLayout -> ProjectConfig -> IO () Source #

Write a cabal.project.local file in the given project root dir.

writeProjectLocalFreezeConfig :: DistDirLayout -> ProjectConfig -> IO () Source #

Write a cabal.project.freeze file in the given project root dir.

writeProjectConfigFile :: FilePath -> ProjectConfig -> IO () Source #

Write in the cabal.project format to the given file.

commandLineFlagsToProjectConfig :: GlobalFlags -> NixStyleFlags a -> ClientInstallFlags -> ProjectConfig Source #

Convert configuration from the cabal configure or cabal build command line into a ProjectConfig value that can combined with configuration from other sources.

At the moment this uses the legacy command line flag types. See LegacyProjectConfig for an explanation.

Packages within projects

data ProjectPackageLocation Source #

The location of a package as part of a project. Local file paths are either absolute (if the user specified it as such) or they are relative to the project root.

fetchAndReadSourcePackages :: Verbosity -> DistDirLayout -> ProjectConfigShared -> ProjectConfigBuildOnly -> [ProjectPackageLocation] -> Rebuild [PackageSpecifier (SourcePackage UnresolvedPkgLoc)] Source #

Read the .cabal files for a set of packages. For remote tarballs and VCS source repos this also fetches them if needed.

Note here is where we convert from project-root relative paths to absolute paths.

Resolving configuration

lookupLocalPackageConfig :: (Semigroup a, Monoid a) => (PackageConfig -> a) -> ProjectConfig -> PackageName -> a Source #

Look up a PackageConfig field in the ProjectConfig for a specific PackageName. This returns the configuration that applies to all local packages plus any package-specific configuration for this package.

projectConfigWithSolverRepoContext :: Verbosity -> ProjectConfigShared -> ProjectConfigBuildOnly -> (RepoContext -> IO a) -> IO a Source #

Use a RepoContext, but only for the solver. The solver does not use the full facilities of the RepoContext so we can get away with making one that doesn't have an http transport. And that avoids having to have access to the BuildTimeSettings

data SolverSettings Source #

Resolved configuration for the solver. The idea is that this is easier to use than the raw configuration because in the raw configuration everything is optional (monoidial). In the BuildTimeSettings every field is filled in, if only with the defaults.

Use resolveSolverSettings to make one from the project config (by applying defaults etc).

Instances

Instances details
Structured SolverSettings Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Generic SolverSettings Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Associated Types

type Rep SolverSettings :: Type -> Type #

Show SolverSettings Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Binary SolverSettings Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

Eq SolverSettings Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

type Rep SolverSettings Source # 
Instance details

Defined in Distribution.Client.ProjectConfig.Types

type Rep SolverSettings = D1 ('MetaData "SolverSettings" "Distribution.Client.ProjectConfig.Types" "cabal-install-3.10.1.0-FbhGUvZ0l0XIx7QbOQfSVh" 'False) (C1 ('MetaCons "SolverSettings" 'PrefixI 'True) ((((S1 ('MetaSel ('Just "solverSettingRemoteRepos") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [RemoteRepo]) :*: S1 ('MetaSel ('Just "solverSettingLocalNoIndexRepos") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [LocalRepo])) :*: (S1 ('MetaSel ('Just "solverSettingConstraints") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(UserConstraint, ConstraintSource)]) :*: (S1 ('MetaSel ('Just "solverSettingPreferences") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [PackageVersionConstraint]) :*: S1 ('MetaSel ('Just "solverSettingFlagAssignment") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FlagAssignment)))) :*: ((S1 ('MetaSel ('Just "solverSettingFlagAssignments") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map PackageName FlagAssignment)) :*: (S1 ('MetaSel ('Just "solverSettingCabalVersion") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Version)) :*: S1 ('MetaSel ('Just "solverSettingSolver") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PreSolver))) :*: (S1 ('MetaSel ('Just "solverSettingAllowOlder") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 AllowOlder) :*: (S1 ('MetaSel ('Just "solverSettingAllowNewer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 AllowNewer) :*: S1 ('MetaSel ('Just "solverSettingMaxBackjumps") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Int)))))) :*: (((S1 ('MetaSel ('Just "solverSettingReorderGoals") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ReorderGoals) :*: S1 ('MetaSel ('Just "solverSettingCountConflicts") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 CountConflicts)) :*: (S1 ('MetaSel ('Just "solverSettingFineGrainedConflicts") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FineGrainedConflicts) :*: (S1 ('MetaSel ('Just "solverSettingMinimizeConflictSet") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 MinimizeConflictSet) :*: S1 ('MetaSel ('Just "solverSettingStrongFlags") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 StrongFlags)))) :*: ((S1 ('MetaSel ('Just "solverSettingAllowBootLibInstalls") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 AllowBootLibInstalls) :*: (S1 ('MetaSel ('Just "solverSettingOnlyConstrained") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 OnlyConstrained) :*: S1 ('MetaSel ('Just "solverSettingIndexState") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe TotalIndexState)))) :*: (S1 ('MetaSel ('Just "solverSettingActiveRepos") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe ActiveRepos)) :*: (S1 ('MetaSel ('Just "solverSettingIndependentGoals") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 IndependentGoals) :*: S1 ('MetaSel ('Just "solverSettingPreferOldest") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PreferOldest)))))))

resolveSolverSettings :: ProjectConfig -> SolverSettings Source #

Resolve the project configuration, with all its optional fields, into SolverSettings with no optional fields (by applying defaults).

data BuildTimeSettings Source #

Resolved configuration for things that affect how we build and not the value of the things we build. The idea is that this is easier to use than the raw configuration because in the raw configuration everything is optional (monoidial). In the BuildTimeSettings every field is filled in, if only with the defaults.

Use resolveBuildTimeSettings to make one from the project config (by applying defaults etc).

resolveBuildTimeSettings :: Verbosity -> CabalDirLayout -> ProjectConfig -> BuildTimeSettings Source #

Resolve the project configuration, with all its optional fields, into BuildTimeSettings with no optional fields (by applying defaults).

Checking configuration

checkBadPerPackageCompilerPaths :: [ConfiguredProgram] -> Map PackageName PackageConfig -> IO () Source #

The project configuration is not allowed to specify program locations for programs used by the compiler as these have to be the same for each set of packages.

We cannot check this until we know which programs the compiler uses, which in principle is not until we've configured the compiler.

Throws BadPerPackageCompilerPaths