Cabal-2.0.1.0: A framework for packaging Haskell software

Copyright | Isaac Jones 2003-2004
License | BSD3
Maintainer | cabal-devel@haskell.org
Portability | portable
Safe Haskell | None
Language | Haskell2010

Distribution.Package

Description

Defines a package identifier along with a parser and pretty printer for it. `PackageIdentifier`s consist of a name and an exact version. It also defines a `Dependency` data type. A dependency is a package name and a version range, like `"foo >= 1.2 && < 2"`.

Synopsis

- module Distribution.Types.AbiHash
- module Distribution.Types.ComponentId
- module Distribution.Types.PackageId
- module Distribution.Types.UnitId
- module Distribution.Types.Module
- module Distribution.Types.PackageName
- module Distribution.Types.PkgconfigName
- module Distribution.Types.Dependency
- class Package pkg where
- packageName :: Package pkg => pkg -> PackageName
- packageVersion :: Package pkg => pkg -> Version
- class HasMungedPackageId pkg where
- mungedName' :: HasMungedPackageId pkg => pkg -> MungedPackageName
- mungedVersion' :: HasMungedPackageId munged => munged -> Version
- class Package pkg => HasUnitId pkg where
- installedPackageId :: HasUnitId pkg => pkg -> UnitId
- class HasUnitId pkg => PackageInstalled pkg where

# Documentation

module Distribution.Types.AbiHash

module Distribution.Types.ComponentId

module Distribution.Types.PackageId

module Distribution.Types.UnitId

module Distribution.Types.Module

module Distribution.Types.PackageName

module Distribution.Types.PkgconfigName

module Distribution.Types.Dependency

class Package pkg where #

Class of things that have a `PackageIdentifier`

Types in this class are all notions of a package. This allows us to have different types for the different phases that packages go though, from simple name/id, package description, configured or installed packages.

Not all kinds of packages can be uniquely identified by a `PackageIdentifier`. In particular, installed packages cannot, there may be many installed instances of the same source package.

Minimal complete definition

packageId

Methods

packageId :: pkg -> PackageIdentifier #

Instances

Package PackageIdentifier # |
Methods packageId :: PackageIdentifier -> PackageIdentifier #
Package PackageDescription # |
Methods packageId :: PackageDescription -> PackageIdentifier #
Package GenericPackageDescription # |
Methods packageId :: GenericPackageDescription -> PackageIdentifier #
Package InstalledPackageInfo # |
Methods packageId :: InstalledPackageInfo -> PackageIdentifier #
Package LinkedComponent # |
Methods packageId :: LinkedComponent -> PackageIdentifier #
Package (AnnotatedId id) # |
Methods packageId :: AnnotatedId id -> PackageIdentifier #

packageName :: Package pkg => pkg -> PackageName #

packageVersion :: Package pkg => pkg -> Version #

class HasMungedPackageId pkg where #

Minimal complete definition

mungedId

Methods

mungedId :: pkg -> MungedPackageId #

Instances

HasMungedPackageId MungedPackageId # |
Methods mungedId :: MungedPackageId -> MungedPackageId #
HasMungedPackageId InstalledPackageInfo # |
Methods mungedId :: InstalledPackageInfo -> MungedPackageId #

mungedName' :: HasMungedPackageId pkg => pkg -> MungedPackageName #

mungedVersion' :: HasMungedPackageId munged => munged -> Version #

class Package pkg => HasUnitId pkg where #

Packages that have an installed unit ID

Minimal complete definition

installedUnitId

Methods

installedUnitId :: pkg -> UnitId #

Instances

HasUnitId InstalledPackageInfo # |
Methods installedUnitId :: InstalledPackageInfo -> UnitId #

installedPackageId :: HasUnitId pkg => pkg -> UnitId #

Deprecated: Use installedUnitId instead

Compatibility wrapper for Cabal pre-1.24.

class HasUnitId pkg => PackageInstalled pkg where #

Class of installed packages.

The primary data type which is an instance of this package is `InstalledPackageInfo`, but when we are doing install plans in Cabal install we may have other, installed package-like things which contain more metadata. Installed packages have exact dependencies `installedDepends`.

Minimal complete definition

installedDepends

Methods

installedDepends :: pkg -> [UnitId] #

Instances

PackageInstalled InstalledPackageInfo # |
Methods installedDepends :: InstalledPackageInfo -> [UnitId] #