diff --git a/cabal-install/Distribution/Client/Config.hs b/cabal-install/Distribution/Client/Config.hs index 1c66e8d622f1692fa8cbc24c5ed659f9aa6252e5..6c2bfac1d5f5f032c90295644b49f33db26e32e2 100644 --- a/cabal-install/Distribution/Client/Config.hs +++ b/cabal-install/Distribution/Client/Config.hs @@ -48,8 +48,6 @@ import Distribution.Client.Types ( RemoteRepo(..), Username(..), Password(..), emptyRemoteRepo ) import Distribution.Client.BuildReports.Types ( ReportLevel(..) ) -import Distribution.Client.Dependency.Types - ( ConstraintSource(..) ) import Distribution.Client.Setup ( GlobalFlags(..), globalCommand, defaultGlobalFlags , ConfigExFlags(..), configureExOptions, defaultConfigExFlags @@ -99,6 +97,8 @@ import Distribution.Compiler import Distribution.Verbosity ( Verbosity, normal ) +import Distribution.Solver.Types.ConstraintSource + import Data.List ( partition, find, foldl' ) import Data.Maybe diff --git a/cabal-install/Distribution/Client/Configure.hs b/cabal-install/Distribution/Client/Configure.hs index 31f90f737af1d8ed5a557610038277cc7a6fab55..243be2467700b5913be31b5951896eb7cbb83593 100644 --- a/cabal-install/Distribution/Client/Configure.hs +++ b/cabal-install/Distribution/Client/Configure.hs @@ -20,8 +20,7 @@ module Distribution.Client.Configure ( import Distribution.Client.Dependency import Distribution.Client.Dependency.Types - ( ConstraintSource(..) - , LabeledPackageConstraint(..), showConstraintSource ) + ( LabeledPackageConstraint(..) ) import qualified Distribution.Client.InstallPlan as InstallPlan import Distribution.Client.InstallPlan (SolverInstallPlan) import Distribution.Client.IndexUtils as IndexUtils @@ -38,6 +37,7 @@ import Distribution.Package (PackageId) import Distribution.Client.JobControl (Lock) import qualified Distribution.Solver.Types.ComponentDeps as CD +import Distribution.Solver.Types.ConstraintSource import Distribution.Solver.Types.OptionalStanza import Distribution.Solver.Types.PackageIndex ( PackageIndex, elemByPackageName ) diff --git a/cabal-install/Distribution/Client/Dependency.hs b/cabal-install/Distribution/Client/Dependency.hs index 18aa86d5042c27924ebbf91473d729a6ec13c79c..848595aa84ab07b34725484a68ed48f79516df6a 100644 --- a/cabal-install/Distribution/Client/Dependency.hs +++ b/cabal-install/Distribution/Client/Dependency.hs @@ -77,7 +77,6 @@ import Distribution.Client.Dependency.Types ( PreSolver(..), Solver(..), DependencyResolver, ResolverPackage(..) , PackageConstraint(..), showPackageConstraint , LabeledPackageConstraint(..), unlabelPackageConstraint - , ConstraintSource(..), showConstraintSource , PackagePreferences(..), InstalledPreference(..) , PackagesPreferenceDefault(..) ) import Distribution.Client.Sandbox.Types @@ -116,6 +115,7 @@ import Distribution.Verbosity import Distribution.Solver.Types.ComponentDeps (ComponentDeps) import qualified Distribution.Solver.Types.ComponentDeps as CD +import Distribution.Solver.Types.ConstraintSource import Distribution.Solver.Types.OptionalStanza import qualified Distribution.Solver.Types.PackageIndex as PackageIndex import Distribution.Solver.Types.PkgConfigDb (PkgConfigDb) diff --git a/cabal-install/Distribution/Client/Dependency/Types.hs b/cabal-install/Distribution/Client/Dependency/Types.hs index 9d84997677e3ffe010d9fc0ae962741ab1bb308f..3588fb07609520d4d0a5ba259fafabaabf09a891 100644 --- a/cabal-install/Distribution/Client/Dependency/Types.hs +++ b/cabal-install/Distribution/Client/Dependency/Types.hs @@ -27,15 +27,14 @@ module Distribution.Client.Dependency.Types ( PackagesPreferenceDefault(..), LabeledPackageConstraint(..), - ConstraintSource(..), - unlabelPackageConstraint, - showConstraintSource + unlabelPackageConstraint ) where import Data.Char ( isAlpha, toLower ) +import Distribution.Solver.Types.ConstraintSource import Distribution.Solver.Types.OptionalStanza import Distribution.Solver.Types.PkgConfigDb ( PkgConfigDb ) import Distribution.Solver.Types.PackageIndex ( PackageIndex ) @@ -206,65 +205,3 @@ data LabeledPackageConstraint unlabelPackageConstraint :: LabeledPackageConstraint -> PackageConstraint unlabelPackageConstraint (LabeledPackageConstraint pc _) = pc - --- | Source of a 'PackageConstraint'. -data ConstraintSource = - - -- | Main config file, which is ~/.cabal/config by default. - ConstraintSourceMainConfig FilePath - - -- | Local cabal.project file - | ConstraintSourceProjectConfig FilePath - - -- | Sandbox config file, which is ./cabal.sandbox.config by default. - | ConstraintSourceSandboxConfig FilePath - - -- | User config file, which is ./cabal.config by default. - | ConstraintSourceUserConfig FilePath - - -- | Flag specified on the command line. - | ConstraintSourceCommandlineFlag - - -- | Target specified by the user, e.g., @cabal install package-0.1.0.0@ - -- implies @package==0.1.0.0@. - | ConstraintSourceUserTarget - - -- | Internal requirement to use installed versions of packages like ghc-prim. - | ConstraintSourceNonUpgradeablePackage - - -- | Internal requirement to use the add-source version of a package when that - -- version is installed and the source is modified. - | ConstraintSourceModifiedAddSourceDep - - -- | Internal constraint used by @cabal freeze@. - | ConstraintSourceFreeze - - -- | Constraint specified by a config file, a command line flag, or a user - -- target, when a more specific source is not known. - | ConstraintSourceConfigFlagOrTarget - - -- | The source of the constraint is not specified. - | ConstraintSourceUnknown - deriving (Eq, Show, Generic) - -instance Binary ConstraintSource - --- | Description of a 'ConstraintSource'. -showConstraintSource :: ConstraintSource -> String -showConstraintSource (ConstraintSourceMainConfig path) = - "main config " ++ path -showConstraintSource (ConstraintSourceProjectConfig path) = - "project config " ++ path -showConstraintSource (ConstraintSourceSandboxConfig path) = - "sandbox config " ++ path -showConstraintSource (ConstraintSourceUserConfig path)= "user config " ++ path -showConstraintSource ConstraintSourceCommandlineFlag = "command line flag" -showConstraintSource ConstraintSourceUserTarget = "user target" -showConstraintSource ConstraintSourceNonUpgradeablePackage = - "non-upgradeable package" -showConstraintSource ConstraintSourceModifiedAddSourceDep = - "modified add-source dependency" -showConstraintSource ConstraintSourceFreeze = "cabal freeze" -showConstraintSource ConstraintSourceConfigFlagOrTarget = - "config file, command line flag, or user target" -showConstraintSource ConstraintSourceUnknown = "unknown source" diff --git a/cabal-install/Distribution/Client/Freeze.hs b/cabal-install/Distribution/Client/Freeze.hs index bd63d325509349f0d79c3fbd878f57f264c2ee03..fb308aad654ac6de7c33858d02d768c4479779fb 100644 --- a/cabal-install/Distribution/Client/Freeze.hs +++ b/cabal-install/Distribution/Client/Freeze.hs @@ -21,7 +21,7 @@ import Distribution.Client.Types import Distribution.Client.Targets import Distribution.Client.Dependency import Distribution.Client.Dependency.Types - ( ConstraintSource(..), LabeledPackageConstraint(..) ) + ( LabeledPackageConstraint(..) ) import Distribution.Client.IndexUtils as IndexUtils ( getSourcePackages, getInstalledPackages ) import Distribution.Client.InstallPlan @@ -36,6 +36,7 @@ import Distribution.Client.Sandbox.PackageEnvironment import Distribution.Client.Sandbox.Types ( SandboxPackageInfo(..) ) +import Distribution.Solver.Types.ConstraintSource import Distribution.Solver.Types.OptionalStanza import Distribution.Solver.Types.PkgConfigDb ( PkgConfigDb, readPkgConfigDb ) diff --git a/cabal-install/Distribution/Client/Install.hs b/cabal-install/Distribution/Client/Install.hs index 78e16961cea7d1e9e9f76b50b99d7d61215fcf6b..463c14f3152d8503a82995f18dace7e6ef72b58c 100644 --- a/cabal-install/Distribution/Client/Install.hs +++ b/cabal-install/Distribution/Client/Install.hs @@ -72,7 +72,7 @@ import Distribution.Client.Configure ( chooseCabalVersion, configureSetupScript, checkConfigExFlags ) import Distribution.Client.Dependency import Distribution.Client.Dependency.Types - ( Solver(..), ConstraintSource(..), LabeledPackageConstraint(..) ) + ( Solver(..), LabeledPackageConstraint(..) ) import Distribution.Client.FetchUtils import Distribution.Client.HttpUtils ( HttpTransport (..) ) @@ -110,6 +110,7 @@ import Distribution.Client.Compat.ExecutablePath import Distribution.Client.JobControl import qualified Distribution.Solver.Types.ComponentDeps as CD +import Distribution.Solver.Types.ConstraintSource import Distribution.Solver.Types.OptionalStanza import qualified Distribution.Solver.Types.PackageIndex as SourcePackageIndex import Distribution.Solver.Types.PackageFixedDeps diff --git a/cabal-install/Distribution/Client/ProjectConfig/Legacy.hs b/cabal-install/Distribution/Client/ProjectConfig/Legacy.hs index 31b4f1888fe2a93e0a96ec070467c52b4149430c..60473e8c0b5ecadf05a262f78c1533f7ccb1c5ab 100644 --- a/cabal-install/Distribution/Client/ProjectConfig/Legacy.hs +++ b/cabal-install/Distribution/Client/ProjectConfig/Legacy.hs @@ -23,11 +23,11 @@ module Distribution.Client.ProjectConfig.Legacy ( import Distribution.Client.ProjectConfig.Types import Distribution.Client.Types ( RemoteRepo(..), emptyRemoteRepo ) -import Distribution.Client.Dependency.Types - ( ConstraintSource(..) ) import Distribution.Client.Config ( SavedConfig(..), remoteRepoFields ) +import Distribution.Solver.Types.ConstraintSource + import Distribution.Package import Distribution.PackageDescription ( SourceRepo(..), RepoKind(..) ) diff --git a/cabal-install/Distribution/Client/ProjectConfig/Types.hs b/cabal-install/Distribution/Client/ProjectConfig/Types.hs index 27bed0884c798facfc2ce223b61b844a28a517df..93c4c7aaddb7ee92243c4fcc6de1b63dfe684a5c 100644 --- a/cabal-install/Distribution/Client/ProjectConfig/Types.hs +++ b/cabal-install/Distribution/Client/ProjectConfig/Types.hs @@ -22,14 +22,14 @@ module Distribution.Client.ProjectConfig.Types ( import Distribution.Client.Types ( RemoteRepo ) import Distribution.Client.Dependency.Types - ( PreSolver, ConstraintSource ) + ( PreSolver ) import Distribution.Client.Targets ( UserConstraint ) import Distribution.Client.BuildReports.Types ( ReportLevel(..) ) import Distribution.Solver.Types.Settings - ( ReorderGoals, StrongFlags ) +import Distribution.Solver.Types.ConstraintSource import Distribution.Package ( PackageName, PackageId, UnitId, Dependency ) diff --git a/cabal-install/Distribution/Client/ProjectPlanning.hs b/cabal-install/Distribution/Client/ProjectPlanning.hs index d9a808a4a2b1047473f7061b3a3e562df94cef65..f396c0d68fd12faa689f52a769be2728819c0bb1 100644 --- a/cabal-install/Distribution/Client/ProjectPlanning.hs +++ b/cabal-install/Distribution/Client/ProjectPlanning.hs @@ -78,6 +78,7 @@ import Distribution.Utils.NubList import qualified Distribution.Solver.Types.ComponentDeps as CD import Distribution.Solver.Types.ComponentDeps (ComponentDeps) +import Distribution.Solver.Types.ConstraintSource import Distribution.Solver.Types.OptionalStanza import Distribution.Solver.Types.PackageFixedDeps import qualified Distribution.Solver.Types.PackageIndex as SourcePackageIndex diff --git a/cabal-install/Distribution/Client/Sandbox/PackageEnvironment.hs b/cabal-install/Distribution/Client/Sandbox/PackageEnvironment.hs index 04c9632ae61526c340c236105f5884177b295303..18588bd372926fd06391e3a78624a260d6a13fe0 100644 --- a/cabal-install/Distribution/Client/Sandbox/PackageEnvironment.hs +++ b/cabal-install/Distribution/Client/Sandbox/PackageEnvironment.hs @@ -36,7 +36,6 @@ import Distribution.Client.Config ( SavedConfig(..), commentSavedConfig , installDirsFields, withProgramsFields , withProgramOptionsFields , defaultCompiler ) -import Distribution.Client.Dependency.Types ( ConstraintSource (..) ) import Distribution.Client.ParseUtils ( parseFields, ppFields, ppSection ) import Distribution.Client.Setup ( GlobalFlags(..), ConfigExFlags(..) , InstallFlags(..) @@ -51,6 +50,7 @@ import Distribution.Simple.Setup ( Flag(..) , ConfigFlags(..), HaddockFlags(..) , fromFlagOrDefault, toFlag, flagToMaybe ) import Distribution.Simple.Utils ( die, info, notice, warn ) +import Distribution.Solver.Types.ConstraintSource import Distribution.ParseUtils ( FieldDescr(..), ParseResult(..) , commaListField, commaNewLineListField , liftField, lineNo, locatedErrorMsg diff --git a/cabal-install/Distribution/Client/Setup.hs b/cabal-install/Distribution/Client/Setup.hs index bdf953d3ba2ba5af32568c6c9d8e4fced3ef14a2..edb3622780cd8e6c88efaecb18fac78da3d5387f 100644 --- a/cabal-install/Distribution/Client/Setup.hs +++ b/cabal-install/Distribution/Client/Setup.hs @@ -59,7 +59,7 @@ import Distribution.Client.Types import Distribution.Client.BuildReports.Types ( ReportLevel(..) ) import Distribution.Client.Dependency.Types - ( PreSolver(..), ConstraintSource(..) ) + ( PreSolver(..) ) import qualified Distribution.Client.Init.Types as IT ( InitFlags(..), PackageType(..) ) import Distribution.Client.Targets @@ -67,6 +67,7 @@ import Distribution.Client.Targets import Distribution.Utils.NubList ( NubList, toNubList, fromNubList) +import Distribution.Solver.Types.ConstraintSource import Distribution.Solver.Types.Settings import Distribution.Simple.Compiler (PackageDB) diff --git a/cabal-install/Distribution/Client/Targets.hs b/cabal-install/Distribution/Client/Targets.hs index 6d796bb156a972be106835b43744c02a4a5195f9..82c53b39aa934926fe8c3eca6415ee97f8e85eb3 100644 --- a/cabal-install/Distribution/Client/Targets.hs +++ b/cabal-install/Distribution/Client/Targets.hs @@ -58,9 +58,10 @@ import Distribution.Client.Types ( PackageLocation(..) , ResolvedPkgLoc, UnresolvedSourcePackage ) import Distribution.Client.Dependency.Types - ( PackageConstraint(..), ConstraintSource(..) + ( PackageConstraint(..) , LabeledPackageConstraint(..) ) +import Distribution.Solver.Types.ConstraintSource import Distribution.Solver.Types.OptionalStanza import Distribution.Solver.Types.PackageIndex (PackageIndex) import qualified Distribution.Solver.Types.PackageIndex as PackageIndex diff --git a/cabal-install/Distribution/Solver/Modular/Message.hs b/cabal-install/Distribution/Solver/Modular/Message.hs index 95208bf396053e985974f167d92572214e6311ed..5cefa26f6cd14b47143d53b31c3266a549c31cd7 100644 --- a/cabal-install/Distribution/Solver/Modular/Message.hs +++ b/cabal-install/Distribution/Solver/Modular/Message.hs @@ -15,9 +15,8 @@ import Distribution.Solver.Modular.Flag import Distribution.Solver.Modular.Package import Distribution.Solver.Modular.Tree ( FailReason(..), POption(..) ) +import Distribution.Solver.Types.ConstraintSource import Distribution.Solver.Types.Progress -import Distribution.Client.Dependency.Types - ( ConstraintSource(..), showConstraintSource ) data Message = Enter -- ^ increase indentation level diff --git a/cabal-install/Distribution/Solver/Modular/Preference.hs b/cabal-install/Distribution/Solver/Modular/Preference.hs index fb9c3470ad1199ebe5bee99bddf22b19b462f4b5..1dc4a00142dd8f9a6b9244071f8c644c223e8561 100644 --- a/cabal-install/Distribution/Solver/Modular/Preference.hs +++ b/cabal-install/Distribution/Solver/Modular/Preference.hs @@ -29,8 +29,9 @@ import Data.Map (Map) import Data.Traversable (sequence) import Distribution.Client.Dependency.Types - ( PackageConstraint(..), LabeledPackageConstraint(..), ConstraintSource(..) + ( PackageConstraint(..), LabeledPackageConstraint(..) , PackagePreferences(..), InstalledPreference(..) ) +import Distribution.Solver.Types.ConstraintSource import Distribution.Solver.Types.OptionalStanza import Distribution.Solver.Modular.Dependency diff --git a/cabal-install/Distribution/Solver/Modular/Tree.hs b/cabal-install/Distribution/Solver/Modular/Tree.hs index 58c794abb7c6bf7c6a54e99c3a2309ac240b5b7c..32908b0170438b9b8f2dbf78bc610c17cacf7d8d 100644 --- a/cabal-install/Distribution/Solver/Modular/Tree.hs +++ b/cabal-install/Distribution/Solver/Modular/Tree.hs @@ -26,7 +26,7 @@ import Distribution.Solver.Modular.Package import Distribution.Solver.Modular.PSQ (PSQ) import qualified Distribution.Solver.Modular.PSQ as P import Distribution.Solver.Modular.Version -import Distribution.Client.Dependency.Types ( ConstraintSource(..) ) +import Distribution.Solver.Types.ConstraintSource -- | Type of the search tree. Inlining the choice nodes for now. data Tree a = diff --git a/cabal-install/Distribution/Solver/Types/ConstraintSource.hs b/cabal-install/Distribution/Solver/Types/ConstraintSource.hs new file mode 100644 index 0000000000000000000000000000000000000000..4f378c70d02d1c3c3155dac7f57bffb8ecb09a81 --- /dev/null +++ b/cabal-install/Distribution/Solver/Types/ConstraintSource.hs @@ -0,0 +1,72 @@ +{-# LANGUAGE DeriveGeneric #-} +module Distribution.Solver.Types.ConstraintSource + ( ConstraintSource(..) + , showConstraintSource + ) where + +import GHC.Generics (Generic) +import Distribution.Compat.Binary (Binary(..)) + +import Prelude hiding (fail) + +-- | Source of a 'PackageConstraint'. +data ConstraintSource = + + -- | Main config file, which is ~/.cabal/config by default. + ConstraintSourceMainConfig FilePath + + -- | Local cabal.project file + | ConstraintSourceProjectConfig FilePath + + -- | Sandbox config file, which is ./cabal.sandbox.config by default. + | ConstraintSourceSandboxConfig FilePath + + -- | User config file, which is ./cabal.config by default. + | ConstraintSourceUserConfig FilePath + + -- | Flag specified on the command line. + | ConstraintSourceCommandlineFlag + + -- | Target specified by the user, e.g., @cabal install package-0.1.0.0@ + -- implies @package==0.1.0.0@. + | ConstraintSourceUserTarget + + -- | Internal requirement to use installed versions of packages like ghc-prim. + | ConstraintSourceNonUpgradeablePackage + + -- | Internal requirement to use the add-source version of a package when that + -- version is installed and the source is modified. + | ConstraintSourceModifiedAddSourceDep + + -- | Internal constraint used by @cabal freeze@. + | ConstraintSourceFreeze + + -- | Constraint specified by a config file, a command line flag, or a user + -- target, when a more specific source is not known. + | ConstraintSourceConfigFlagOrTarget + + -- | The source of the constraint is not specified. + | ConstraintSourceUnknown + deriving (Eq, Show, Generic) + +instance Binary ConstraintSource + +-- | Description of a 'ConstraintSource'. +showConstraintSource :: ConstraintSource -> String +showConstraintSource (ConstraintSourceMainConfig path) = + "main config " ++ path +showConstraintSource (ConstraintSourceProjectConfig path) = + "project config " ++ path +showConstraintSource (ConstraintSourceSandboxConfig path) = + "sandbox config " ++ path +showConstraintSource (ConstraintSourceUserConfig path)= "user config " ++ path +showConstraintSource ConstraintSourceCommandlineFlag = "command line flag" +showConstraintSource ConstraintSourceUserTarget = "user target" +showConstraintSource ConstraintSourceNonUpgradeablePackage = + "non-upgradeable package" +showConstraintSource ConstraintSourceModifiedAddSourceDep = + "modified add-source dependency" +showConstraintSource ConstraintSourceFreeze = "cabal freeze" +showConstraintSource ConstraintSourceConfigFlagOrTarget = + "config file, command line flag, or user target" +showConstraintSource ConstraintSourceUnknown = "unknown source" diff --git a/cabal-install/cabal-install.cabal b/cabal-install/cabal-install.cabal index 11a2451ee00d70ff5a6e491e580b7540c7315667..85664ec31e413dcecf2c24e7d3e5dbe629dd95b6 100644 --- a/cabal-install/cabal-install.cabal +++ b/cabal-install/cabal-install.cabal @@ -216,6 +216,7 @@ executable cabal Distribution.Client.Compat.Process Distribution.Client.Compat.Semaphore Distribution.Solver.Types.ComponentDeps + Distribution.Solver.Types.ConstraintSource Distribution.Solver.Types.Internal.Utils Distribution.Solver.Types.OptionalStanza Distribution.Solver.Types.PackageFixedDeps diff --git a/cabal-install/tests/UnitTests/Distribution/Client/ProjectConfig.hs b/cabal-install/tests/UnitTests/Distribution/Client/ProjectConfig.hs index 40e618cdd72f8fc1779ebbfcf4aa8448f513a076..5acb03ecd1ab528b197525a56ae7db8a27a824b2 100644 --- a/cabal-install/tests/UnitTests/Distribution/Client/ProjectConfig.hs +++ b/cabal-install/tests/UnitTests/Distribution/Client/ProjectConfig.hs @@ -31,6 +31,7 @@ import Distribution.Client.Targets import Distribution.Utils.NubList import Network.URI +import Distribution.Solver.Types.ConstraintSource import Distribution.Solver.Types.OptionalStanza import Distribution.Solver.Types.Settings diff --git a/cabal-install/tests/UnitTests/Distribution/Solver/Modular/DSL.hs b/cabal-install/tests/UnitTests/Distribution/Solver/Modular/DSL.hs index 7a8eb4c54102ae18f483f3f63982c2367b11fcb1..4c3be71d2c0edc0f0b3b9b7463c76db189d2811e 100644 --- a/cabal-install/tests/UnitTests/Distribution/Solver/Modular/DSL.hs +++ b/cabal-install/tests/UnitTests/Distribution/Solver/Modular/DSL.hs @@ -48,6 +48,7 @@ import qualified Distribution.Client.InstallPlan as CI.InstallPlan import Distribution.Solver.Types.ComponentDeps (ComponentDeps) import qualified Distribution.Solver.Types.ComponentDeps as CD +import Distribution.Solver.Types.ConstraintSource import Distribution.Solver.Types.OptionalStanza import qualified Distribution.Solver.Types.PackageIndex as CI.PackageIndex import qualified Distribution.Solver.Types.PkgConfigDb as PC