{-# LANGUAGE CPP #-}
{-# OPTIONS -Wall #-}
module Debian.Debianize.Details
( debianDefaults
) where
import Control.Lens
import Data.Map as Map (insert)
import Debian.Debianize.DebianName (mapCabal, splitCabal)
import Debian.Debianize.Monad (CabalT)
import Debian.Debianize.CabalInfo as A (epochMap, debInfo)
import Debian.Debianize.DebInfo as D (execMap)
import Debian.Debianize.VersionSplits (DebBase(DebBase))
import Debian.Relation (BinPkgName(BinPkgName), Relation(Rel))
import Distribution.Package (mkPackageName)
import Distribution.Version (mkVersion)
debianDefaults :: Monad m => CabalT m ()
debianDefaults :: forall (m :: * -> *). Monad m => CabalT m ()
debianDefaults =
do
(Map PackageName Int -> Identity (Map PackageName Int))
-> CabalInfo -> Identity CabalInfo
Lens' CabalInfo (Map PackageName Int)
A.epochMap ((Map PackageName Int -> Identity (Map PackageName Int))
-> CabalInfo -> Identity CabalInfo)
-> (Map PackageName Int -> Map PackageName Int) -> CabalT m ()
forall s (m :: * -> *) a b.
MonadState s m =>
ASetter s s a b -> (a -> b) -> m ()
%= PackageName -> Int -> Map PackageName Int -> Map PackageName Int
forall k a. Ord k => k -> a -> Map k a -> Map k a
Map.insert (String -> PackageName
mkPackageName String
"HaXml") Int
1
(Map PackageName Int -> Identity (Map PackageName Int))
-> CabalInfo -> Identity CabalInfo
Lens' CabalInfo (Map PackageName Int)
A.epochMap ((Map PackageName Int -> Identity (Map PackageName Int))
-> CabalInfo -> Identity CabalInfo)
-> (Map PackageName Int -> Map PackageName Int) -> CabalT m ()
forall s (m :: * -> *) a b.
MonadState s m =>
ASetter s s a b -> (a -> b) -> m ()
%= PackageName -> Int -> Map PackageName Int -> Map PackageName Int
forall k a. Ord k => k -> a -> Map k a -> Map k a
Map.insert (String -> PackageName
mkPackageName String
"HTTP") Int
1
(String -> CabalT m ()) -> [String] -> CabalT m ()
forall (t :: * -> *) (m :: * -> *) a b.
(Foldable t, Monad m) =>
(a -> m b) -> t a -> m ()
mapM_ (\String
name -> ((DebInfo -> Identity DebInfo) -> CabalInfo -> Identity CabalInfo
Lens' CabalInfo DebInfo
A.debInfo ((DebInfo -> Identity DebInfo) -> CabalInfo -> Identity CabalInfo)
-> ((Map String Relations -> Identity (Map String Relations))
-> DebInfo -> Identity DebInfo)
-> (Map String Relations -> Identity (Map String Relations))
-> CabalInfo
-> Identity CabalInfo
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Map String Relations -> Identity (Map String Relations))
-> DebInfo -> Identity DebInfo
Lens' DebInfo (Map String Relations)
D.execMap) ((Map String Relations -> Identity (Map String Relations))
-> CabalInfo -> Identity CabalInfo)
-> (Map String Relations -> Map String Relations) -> CabalT m ()
forall s (m :: * -> *) a b.
MonadState s m =>
ASetter s s a b -> (a -> b) -> m ()
%= String -> Relations -> Map String Relations -> Map String Relations
forall k a. Ord k => k -> a -> Map k a -> Map k a
Map.insert String
name [[BinPkgName -> Maybe VersionReq -> Maybe ArchitectureReq -> Relation
Rel (String -> BinPkgName
BinPkgName String
name) Maybe VersionReq
forall a. Maybe a
Nothing Maybe ArchitectureReq
forall a. Maybe a
Nothing]])
[String
"alex", String
"c2hs", String
"ghc", String
"happy", String
"hsx2hs"]
PackageName -> DebBase -> CabalT m ()
forall (m :: * -> *).
Monad m =>
PackageName -> DebBase -> CabalT m ()
mapCabal (String -> PackageName
mkPackageName String
"QuickCheck") (String -> DebBase
DebBase String
"quickcheck2")
PackageName -> DebBase -> CabalT m ()
forall (m :: * -> *).
Monad m =>
PackageName -> DebBase -> CabalT m ()
mapCabal (String -> PackageName
mkPackageName String
"gtk2hs-buildtools") (String -> DebBase
DebBase String
"gtk2hs-buildtools")
PackageName -> DebBase -> CabalT m ()
forall (m :: * -> *).
Monad m =>
PackageName -> DebBase -> CabalT m ()
mapCabal (String -> PackageName
mkPackageName String
"haskell-src-exts") (String -> DebBase
DebBase String
"src-exts")
PackageName -> DebBase -> CabalT m ()
forall (m :: * -> *).
Monad m =>
PackageName -> DebBase -> CabalT m ()
mapCabal (String -> PackageName
mkPackageName String
"haskell-src-exts-simple") (String -> DebBase
DebBase String
"src-exts-simple")
PackageName -> DebBase -> CabalT m ()
forall (m :: * -> *).
Monad m =>
PackageName -> DebBase -> CabalT m ()
mapCabal (String -> PackageName
mkPackageName String
"haskell-src-exts-util") (String -> DebBase
DebBase String
"src-exts-util")
PackageName -> DebBase -> CabalT m ()
forall (m :: * -> *).
Monad m =>
PackageName -> DebBase -> CabalT m ()
mapCabal (String -> PackageName
mkPackageName String
"haskell-src-meta") (String -> DebBase
DebBase String
"src-meta")
PackageName -> DebBase -> CabalT m ()
forall (m :: * -> *).
Monad m =>
PackageName -> DebBase -> CabalT m ()
mapCabal (String -> PackageName
mkPackageName String
"Cabal") (String -> DebBase
DebBase String
"cabal")
PackageName -> DebBase -> CabalT m ()
forall (m :: * -> *).
Monad m =>
PackageName -> DebBase -> CabalT m ()
mapCabal (String -> PackageName
mkPackageName String
"happstack-authenticate") (String -> DebBase
DebBase String
"happstack-authenticate")
PackageName -> DebBase -> Version -> CabalT m ()
forall (m :: * -> *).
Monad m =>
PackageName -> DebBase -> Version -> CabalT m ()
splitCabal (String -> PackageName
mkPackageName String
"happstack-authenticate") (String -> DebBase
DebBase String
"happstack-authenticate-0") ([Int] -> Version
mkVersion [Int
2])