cabal-install-3.0.0.0: Distribution/Client/Dependency/Types.hs
{-# LANGUAGE DeriveGeneric #-}
module Distribution.Client.Dependency.Types (
PreSolver(..),
Solver(..),
PackagesPreferenceDefault(..),
) where
import Data.Char
( isAlpha, toLower )
import qualified Distribution.Deprecated.ReadP as Parse
( pfail, munch1 )
import Distribution.Deprecated.Text
( Text(..) )
import Text.PrettyPrint
( text )
import GHC.Generics (Generic)
import Distribution.Compat.Binary (Binary(..))
-- | All the solvers that can be selected.
data PreSolver = AlwaysModular
deriving (Eq, Ord, Show, Bounded, Enum, Generic)
-- | All the solvers that can be used.
data Solver = Modular
deriving (Eq, Ord, Show, Bounded, Enum, Generic)
instance Binary PreSolver
instance Binary Solver
instance Text PreSolver where
disp AlwaysModular = text "modular"
parse = do
name <- Parse.munch1 isAlpha
case map toLower name of
"modular" -> return AlwaysModular
_ -> Parse.pfail
-- | Global policy for all packages to say if we prefer package versions that
-- are already installed locally or if we just prefer the latest available.
--
data PackagesPreferenceDefault =
-- | Always prefer the latest version irrespective of any existing
-- installed version.
--
-- * This is the standard policy for upgrade.
--
PreferAllLatest
-- | Always prefer the installed versions over ones that would need to be
-- installed. Secondarily, prefer latest versions (eg the latest installed
-- version or if there are none then the latest source version).
| PreferAllInstalled
-- | Prefer the latest version for packages that are explicitly requested
-- but prefers the installed version for any other packages.
--
-- * This is the standard policy for install.
--
| PreferLatestForSelected
deriving Show