cabal-debian-5.2: Create a Debianization for a Cabal package
Safe HaskellNone
LanguageHaskell2010

Debian.Debianize.VersionSplits

Description

Convert between cabal and debian package names based on version number ranges.

Synopsis

Documentation

newtype DebBase Source #

The base of a debian binary package name, the string that appears between "libghc-" and "-dev".

Constructors

DebBase 

Fields

Instances

Instances details
Eq DebBase Source # 
Instance details

Defined in Debian.Debianize.VersionSplits

Methods

(==) :: DebBase -> DebBase -> Bool #

(/=) :: DebBase -> DebBase -> Bool #

Data DebBase Source # 
Instance details

Defined in Debian.Debianize.VersionSplits

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DebBase -> c DebBase #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DebBase #

toConstr :: DebBase -> Constr #

dataTypeOf :: DebBase -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c DebBase) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DebBase) #

gmapT :: (forall b. Data b => b -> b) -> DebBase -> DebBase #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DebBase -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DebBase -> r #

gmapQ :: (forall d. Data d => d -> u) -> DebBase -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> DebBase -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> DebBase -> m DebBase #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DebBase -> m DebBase #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DebBase -> m DebBase #

Ord DebBase Source # 
Instance details

Defined in Debian.Debianize.VersionSplits

Read DebBase Source # 
Instance details

Defined in Debian.Debianize.VersionSplits

Show DebBase Source # 
Instance details

Defined in Debian.Debianize.VersionSplits

Interspersed VersionSplits DebBase Version Source # 
Instance details

Defined in Debian.Debianize.VersionSplits

Methods

leftmost :: VersionSplits -> DebBase Source #

pairs :: VersionSplits -> [(Version, DebBase)] Source #

foldTriples :: (DebBase -> Version -> DebBase -> r -> r) -> r -> VersionSplits -> r Source #

foldInverted :: (Maybe Version -> DebBase -> Maybe Version -> r -> r) -> r -> VersionSplits -> r Source #

foldArounds :: (DebBase -> DebBase -> r -> r) -> r -> VersionSplits -> r Source #

foldBetweens :: (Version -> r -> r) -> r -> VersionSplits -> r Source #

Combinators for VersionSplits

data VersionSplits Source #

Describes a mapping from cabal package name and version to debian package names. For example, versions of the cabal QuickCheck package less than 2 are mapped to "quickcheck1", while version 2 or greater is mapped to "quickcheck2".

Constructors

VersionSplits 

Fields

  • oldestPackage :: DebBase

    The Debian name given to versions older than the oldest split.

  • splits :: [(Version, DebBase)]

    Each pair is The version where the split occurs, and the name to use for versions greater than or equal to that version. This list assumed to be in (must be kept in) descending version number order, newest to oldest

Instances

Instances details
Eq VersionSplits Source # 
Instance details

Defined in Debian.Debianize.VersionSplits

Data VersionSplits Source # 
Instance details

Defined in Debian.Debianize.VersionSplits

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> VersionSplits -> c VersionSplits #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c VersionSplits #

toConstr :: VersionSplits -> Constr #

dataTypeOf :: VersionSplits -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c VersionSplits) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c VersionSplits) #

gmapT :: (forall b. Data b => b -> b) -> VersionSplits -> VersionSplits #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> VersionSplits -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> VersionSplits -> r #

gmapQ :: (forall d. Data d => d -> u) -> VersionSplits -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> VersionSplits -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> VersionSplits -> m VersionSplits #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> VersionSplits -> m VersionSplits #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> VersionSplits -> m VersionSplits #

Ord VersionSplits Source # 
Instance details

Defined in Debian.Debianize.VersionSplits

Show VersionSplits Source # 
Instance details

Defined in Debian.Debianize.VersionSplits

Interspersed VersionSplits DebBase Version Source # 
Instance details

Defined in Debian.Debianize.VersionSplits

Methods

leftmost :: VersionSplits -> DebBase Source #

pairs :: VersionSplits -> [(Version, DebBase)] Source #

foldTriples :: (DebBase -> Version -> DebBase -> r -> r) -> r -> VersionSplits -> r Source #

foldInverted :: (Maybe Version -> DebBase -> Maybe Version -> r -> r) -> r -> VersionSplits -> r Source #

foldArounds :: (DebBase -> DebBase -> r -> r) -> r -> VersionSplits -> r Source #

foldBetweens :: (Version -> r -> r) -> r -> VersionSplits -> r Source #

makePackage :: DebBase -> VersionSplits Source #

Create a version split database that assigns a single debian package name base to all cabal versions.

insertSplit Source #

Arguments

:: Version

Where to split the version range

-> DebBase

The name to use for versions older than the split

-> VersionSplits 
-> VersionSplits 

Split the version range and give the older packages a new name.

Operators on VersionSplits

cabalFromDebian :: Map PackageName VersionSplits -> DebBase -> DebianVersion -> PackageName Source #

Brute force implementation - I'm assuming this is not a huge map.

doSplits :: VersionSplits -> Maybe VersionReq -> DebBase Source #

Given a version split database, turn the debian version requirements into a debian package name base that ought to satisfy them.