Distribution.Solver.Types.PackagePath

cabal-install-solver-3.12.1.0: The command-line interface for Cabal and Hackage.

Safe Haskell | None
Language | Haskell2010

Distribution.Solver.Types.PackagePath

Synopsis

- data PackagePath = PackagePath Namespace Qualifier
- data Namespace
  - = DefaultNamespace
  - | Independent PackageName
- data Qualifier
  - = QualToplevel
  - | QualBase PackageName
  - | QualSetup PackageName
  - | QualExe PackageName PackageName
- dispQualifier :: Qualifier -> Doc
- data Qualified a = Q PackagePath a
- type QPN = Qualified PackageName
- dispQPN :: QPN -> Doc
- showQPN :: QPN -> String

# Documentation

data PackagePath #

A package path consists of a namespace and a package path inside that namespace.

Constructors

PackagePath Namespace Qualifier |

#### Instances

Instances details

Show PackagePath # |
Instance details Defined in Distribution.Solver.Types.PackagePath Methods showsPrec :: Int -> PackagePath -> ShowS # show :: PackagePath -> String # showList :: [PackagePath] -> ShowS #
Eq PackagePath # |
Instance details Defined in Distribution.Solver.Types.PackagePath Methods (==) :: PackagePath -> PackagePath -> Bool # (/=) :: PackagePath -> PackagePath -> Bool #
Ord PackagePath # |
Instance details Defined in Distribution.Solver.Types.PackagePath Methods compare :: PackagePath -> PackagePath -> Ordering # (<) :: PackagePath -> PackagePath -> Bool # (<=) :: PackagePath -> PackagePath -> Bool # (>) :: PackagePath -> PackagePath -> Bool # (>=) :: PackagePath -> PackagePath -> Bool # max :: PackagePath -> PackagePath -> PackagePath # min :: PackagePath -> PackagePath -> PackagePath #

data Namespace #

Top-level namespace

Package choices in different namespaces are considered completely independent by the solver.

Constructors

DefaultNamespace | The default namespace
Independent PackageName | A namespace for a specific build target

#### Instances

Instances details

Show Namespace # |
Instance details Defined in Distribution.Solver.Types.PackagePath Methods showsPrec :: Int -> Namespace -> ShowS # show :: Namespace -> String # showList :: [Namespace] -> ShowS #
Eq Namespace # |
Instance details Defined in Distribution.Solver.Types.PackagePath Methods (==) :: Namespace -> Namespace -> Bool # (/=) :: Namespace -> Namespace -> Bool #
Ord Namespace # |
Instance details Defined in Distribution.Solver.Types.PackagePath Methods compare :: Namespace -> Namespace -> Ordering # (<) :: Namespace -> Namespace -> Bool # (<=) :: Namespace -> Namespace -> Bool # (>) :: Namespace -> Namespace -> Bool # (>=) :: Namespace -> Namespace -> Bool # max :: Namespace -> Namespace -> Namespace # min :: Namespace -> Namespace -> Namespace #

data Qualifier #

Qualifier of a package within a namespace (see `PackagePath`)

Constructors

QualToplevel | Top-level dependency in this namespace
QualBase PackageName | Any dependency on base is considered independent This makes it possible to have base shims.
QualSetup PackageName | Setup dependency By rights setup dependencies ought to be nestable; after all, the setup dependencies of a package might themselves have setup dependencies, which are independent from everything else. However, this very quickly leads to infinite search trees in the solver. Therefore we limit ourselves to a single qualifier (within a given namespace).
QualExe PackageName PackageName | If we depend on an executable from a package (via `build-tools`), we should solve for the dependencies of that package separately (since we're not going to actually try to link it.) We qualify for EACH package separately; e.g., ``Exe` pn1 pn2` qualifies the `build-tools` dependency on `pn2` from package `pn1`. (If we tracked only `pn1`, that would require a consistent dependency resolution for all of the depended upon executables from a package; if we tracked only `pn2`, that would require us to pick only one version of an executable over the entire install plan.)

#### Instances

Instances details

Show Qualifier # |
Instance details Defined in Distribution.Solver.Types.PackagePath Methods showsPrec :: Int -> Qualifier -> ShowS # show :: Qualifier -> String # showList :: [Qualifier] -> ShowS #
Eq Qualifier # |
Instance details Defined in Distribution.Solver.Types.PackagePath Methods (==) :: Qualifier -> Qualifier -> Bool # (/=) :: Qualifier -> Qualifier -> Bool #
Ord Qualifier # |
Instance details Defined in Distribution.Solver.Types.PackagePath Methods compare :: Qualifier -> Qualifier -> Ordering # (<) :: Qualifier -> Qualifier -> Bool # (<=) :: Qualifier -> Qualifier -> Bool # (>) :: Qualifier -> Qualifier -> Bool # (>=) :: Qualifier -> Qualifier -> Bool # max :: Qualifier -> Qualifier -> Qualifier # min :: Qualifier -> Qualifier -> Qualifier #

dispQualifier :: Qualifier -> Doc #

Pretty-prints a qualifier. The result is either empty or ends in a period, so it can be prepended onto a package name.

NOTE: the base qualifier is for a dependency _on_ base; the qualifier is there to make sure different dependencies on base are all independent. So we want to print something like `"A.base"`, where the `"A."` part is the qualifier and `"base"` is the actual dependency (which, for the `Base` qualifier, will always be `base`).

data Qualified a #

A qualified entity. Pairs a package path with the entity.

Constructors

Q PackagePath a |

#### Instances

Instances details

Show a => Show (Qualified a) # |
Instance details Defined in Distribution.Solver.Types.PackagePath Methods showsPrec :: Int -> Qualified a -> ShowS # show :: Qualified a -> String # showList :: [Qualified a] -> ShowS #
Eq a => Eq (Qualified a) # |
Instance details Defined in Distribution.Solver.Types.PackagePath Methods (==) :: Qualified a -> Qualified a -> Bool # (/=) :: Qualified a -> Qualified a -> Bool #
Ord a => Ord (Qualified a) # |
Instance details Defined in Distribution.Solver.Types.PackagePath Methods compare :: Qualified a -> Qualified a -> Ordering # (<) :: Qualified a -> Qualified a -> Bool # (<=) :: Qualified a -> Qualified a -> Bool # (>) :: Qualified a -> Qualified a -> Bool # (>=) :: Qualified a -> Qualified a -> Bool # max :: Qualified a -> Qualified a -> Qualified a # min :: Qualified a -> Qualified a -> Qualified a #

type QPN = Qualified PackageName #

Qualified package name.

dispQPN :: QPN -> Doc #

Pretty-prints a qualified package name.

showQPN :: QPN -> String #

String representation of a qualified package name.