cabal-debian-4.36: Create a Debianization for a Cabal package

Safe HaskellNone
LanguageHaskell2010

Debian.Debianize.VersionSplits

Contents

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

Eq DebBase Source # 

Methods

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

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

Data DebBase Source # 

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 :: (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 # 
Read DebBase Source # 
Show DebBase Source # 
Interspersed VersionSplits DebBase Version Source # 

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

Eq VersionSplits Source # 
Data VersionSplits Source # 

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 :: (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 # 
Show VersionSplits Source # 
Interspersed VersionSplits DebBase Version Source # 

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.