hackport 0.5.5 → 0.5.6
raw patch · 7 files changed
+104/−18 lines, 7 files
Files
- Main.hs +47/−0
- Merge/Dependencies.hs +18/−0
- Portage/Dependency/Print.hs +20/−17
- Portage/PackageId.hs +6/−0
- Portage/Use.hs +6/−0
- Portage/Version.hs +6/−0
- hackport.cabal +1/−1
Main.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE CPP #-}+ module Main (main) where import Control.Applicative@@ -6,6 +8,7 @@ import Data.List import Data.Monoid ( Monoid(..) )+import qualified Data.Semigroup as S -- cabal import Distribution.Simple.Setup@@ -36,6 +39,8 @@ import System.Environment ( getArgs, getProgName ) import System.Directory ( doesDirectoryExist ) import System.Exit ( exitFailure )+{-# LANGUAGE CPP #-}+ import System.FilePath ( (</>) ) import qualified HackPort.GlobalFlags as H@@ -56,14 +61,24 @@ listVerbosity :: Flag Verbosity } +#if MIN_VERSION_base(4,9,0)+instance S.Semigroup ListFlags where+ a <> b = ListFlags {+ listVerbosity = combine listVerbosity+ }+ where combine field = field a S.<> field b+#endif+ instance Monoid ListFlags where mempty = ListFlags { listVerbosity = mempty }+#if !(MIN_VERSION_base(4,11,0)) mappend a b = ListFlags { listVerbosity = combine listVerbosity } where combine field = field a `mappend` field b+#endif defaultListFlags :: ListFlags defaultListFlags = ListFlags {@@ -119,16 +134,27 @@ , makeEbuildCabalFlags :: Flag (Maybe String) } +#if MIN_VERSION_base(4,9,0)+instance S.Semigroup MakeEbuildFlags where+ a <> b = MakeEbuildFlags {+ makeEbuildVerbosity = combine makeEbuildVerbosity+ , makeEbuildCabalFlags = makeEbuildCabalFlags b+ }+ where combine field = field a S.<> field b+#endif+ instance Monoid MakeEbuildFlags where mempty = MakeEbuildFlags { makeEbuildVerbosity = mempty , makeEbuildCabalFlags = mempty }+#if MIN_VERSION_base(4,9,0) mappend a b = MakeEbuildFlags { makeEbuildVerbosity = combine makeEbuildVerbosity , makeEbuildCabalFlags = makeEbuildCabalFlags b } where combine field = field a `mappend` field b+#endif defaultMakeEbuildFlags :: MakeEbuildFlags defaultMakeEbuildFlags = MakeEbuildFlags {@@ -180,14 +206,24 @@ updateVerbosity :: Flag Verbosity } +#if MIN_VERSION_base(4,9,0)+instance S.Semigroup UpdateFlags where+ a <> b = UpdateFlags {+ updateVerbosity = combine updateVerbosity+ }+ where combine field = field a S.<> field b+#endif+ instance Monoid UpdateFlags where mempty = UpdateFlags { updateVerbosity = mempty }+#if !(MIN_VERSION_base(4,11,0)) mappend a b = UpdateFlags { updateVerbosity = combine updateVerbosity } where combine field = field a `mappend` field b+#endif defaultUpdateFlags :: UpdateFlags defaultUpdateFlags = UpdateFlags {@@ -284,16 +320,27 @@ , mergeCabalFlags :: Flag (Maybe String) } +#if MIN_VERSION_base(4,9,0)+instance S.Semigroup MergeFlags where+ a <> b = MergeFlags {+ mergeVerbosity = combine mergeVerbosity+ , mergeCabalFlags = mergeCabalFlags b+ }+ where combine field = field a S.<> field b+#endif+ instance Monoid MergeFlags where mempty = MergeFlags { mergeVerbosity = mempty , mergeCabalFlags = mempty }+#if !(MIN_VERSION_base(4,11,0)) mappend a b = MergeFlags { mergeVerbosity = combine mergeVerbosity , mergeCabalFlags = mergeCabalFlags b } where combine field = field a `mappend` field b+#endif defaultMergeFlags :: MergeFlags defaultMergeFlags = MergeFlags {
Merge/Dependencies.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE CPP #-}+ {- | Merge a package from hackage to an ebuild. -} module Merge.Dependencies@@ -32,6 +34,10 @@ import Debug.Trace ( trace ) +#if MIN_VERSION_base(4,9,0)+import Data.Semigroup (Semigroup(..))+#endif+ -- | Dependencies of an ebuild data EDep = EDep {@@ -42,6 +48,16 @@ } deriving (Show, Eq, Ord) +#if MIN_VERSION_base(4,9,0)+instance Semigroup EDep where+ (EDep rdepA rdep_eA depA dep_eA) <> (EDep rdepB rdep_eB depB dep_eB) = EDep+ { rdep = Portage.DependAllOf [rdepA, rdepB]+ , rdep_e = rdep_eA `S.union` rdep_eB+ , dep = Portage.DependAllOf [depA, depB]+ , dep_e = dep_eA `S.union` dep_eB+ }+#endif + instance Monoid EDep where mempty = EDep {@@ -50,12 +66,14 @@ dep = Portage.empty_dependency, dep_e = S.empty }+#if !(MIN_VERSION_base(4,11,0)) (EDep rdepA rdep_eA depA dep_eA) `mappend` (EDep rdepB rdep_eB depB dep_eB) = EDep { rdep = Portage.DependAllOf [rdepA, rdepB] , rdep_e = rdep_eA `S.union` rdep_eB , dep = Portage.DependAllOf [depA, depB] , dep_e = dep_eA `S.union` dep_eB }+#endif resolveDependencies :: Portage.Overlay -> Cabal.PackageDescription -> Cabal.CompilerInfo -> [Cabal.PackageName] -> Cabal.PackageName
Portage/Dependency/Print.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE CPP #-}+ module Portage.Dependency.Print ( dep2str@@ -11,7 +13,8 @@ import qualified Distribution.Text as DT import qualified Text.PrettyPrint as Disp-import Text.PrettyPrint ( (<>), vcat, nest, render )+import Text.PrettyPrint ( vcat, nest, render )+import Text.PrettyPrint as PP ((<>)) import Portage.Dependency.Types @@ -21,17 +24,17 @@ dispSlot (GivenSlot slot) = Disp.text (':' : slot) dispLBound :: PackageName -> LBound -> Disp.Doc-dispLBound pn (StrictLB v) = Disp.char '>' <> DT.disp pn <-> DT.disp v-dispLBound pn (NonstrictLB v) = Disp.text ">=" <> DT.disp pn <-> DT.disp v+dispLBound pn (StrictLB v) = Disp.char '>' PP.<> DT.disp pn <-> DT.disp v+dispLBound pn (NonstrictLB v) = Disp.text ">=" PP.<> DT.disp pn <-> DT.disp v dispLBound _pn ZeroB = error "unhandled 'dispLBound ZeroB'" dispUBound :: PackageName -> UBound -> Disp.Doc-dispUBound pn (StrictUB v) = Disp.char '<' <> DT.disp pn <-> DT.disp v-dispUBound pn (NonstrictUB v) = Disp.text "<=" <> DT.disp pn <-> DT.disp v+dispUBound pn (StrictUB v) = Disp.char '<' PP.<> DT.disp pn <-> DT.disp v+dispUBound pn (NonstrictUB v) = Disp.text "<=" PP.<> DT.disp pn <-> DT.disp v dispUBound _pn InfinityB = error "unhandled 'dispUBound Infinity'" dispDAttr :: DAttr -> Disp.Doc-dispDAttr (DAttr s u) = dispSlot s <> dispUses u+dispDAttr (DAttr s u) = dispSlot s PP.<> dispUses u dep2str :: Int -> Dependency -> String dep2str start_indent = render . nest start_indent . showDepend@@ -40,13 +43,13 @@ dep2str_noindent = render . showDepend (<->) :: Disp.Doc -> Disp.Doc -> Disp.Doc-a <-> b = a <> Disp.char '-' <> b+a <-> b = a PP.<> Disp.char '-' PP.<> b sp :: Disp.Doc sp = Disp.char ' ' sparens :: Disp.Doc -> Disp.Doc-sparens doc = Disp.parens (sp <> valign doc <> sp)+sparens doc = Disp.parens (sp PP.<> valign doc PP.<> sp) valign :: Disp.Doc -> Disp.Doc valign d = nest 0 d@@ -55,24 +58,24 @@ showDepend (DependAtom (Atom pn range dattr)) = case range of -- any version- DRange ZeroB InfinityB -> DT.disp pn <> dispDAttr dattr- DRange ZeroB ub -> dispUBound pn ub <> dispDAttr dattr- DRange lb InfinityB -> dispLBound pn lb <> dispDAttr dattr+ DRange ZeroB InfinityB -> DT.disp pn PP.<> dispDAttr dattr+ DRange ZeroB ub -> dispUBound pn ub PP.<> dispDAttr dattr+ DRange lb InfinityB -> dispLBound pn lb PP.<> dispDAttr dattr -- TODO: handle >=foo-0 special case -- TODO: handle =foo-x.y.* special case DRange lb ub -> showDepend (DependAtom (Atom pn (DRange lb InfinityB) dattr))- <> Disp.char ' '- <> showDepend (DependAtom (Atom pn (DRange ZeroB ub) dattr))- DExact v -> Disp.char '~' <> DT.disp pn <-> DT.disp v { versionRevision = 0 } <> dispDAttr dattr+ PP.<> Disp.char ' '+ PP.<> showDepend (DependAtom (Atom pn (DRange ZeroB ub) dattr))+ DExact v -> Disp.char '~' PP.<> DT.disp pn <-> DT.disp v { versionRevision = 0 } PP.<> dispDAttr dattr showDepend (DependIfUse u td fd) = valign $ vcat [td_doc, fd_doc] where td_doc | is_empty_dependency td = Disp.empty- | otherwise = DT.disp u <> Disp.char '?' <> sp <> sparens (showDepend td)+ | otherwise = DT.disp u PP.<> Disp.char '?' PP.<> sp PP.<> sparens (showDepend td) fd_doc | is_empty_dependency fd = Disp.empty- | otherwise = Disp.char '!' <> DT.disp u <> Disp.char '?' <> sp <> sparens (showDepend fd)-showDepend (DependAnyOf deps) = Disp.text "||" <> sp <> sparens (vcat $ map showDependInAnyOf deps)+ | otherwise = Disp.char '!' PP.<> DT.disp u PP.<> Disp.char '?' PP.<> sp PP.<> sparens (showDepend fd)+showDepend (DependAnyOf deps) = Disp.text "||" PP.<> sp PP.<> sparens (vcat $ map showDependInAnyOf deps) showDepend (DependAllOf deps) = valign $ vcat $ map showDepend deps -- needs special grouping
Portage/PackageId.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE CPP #-}+ -- | Portage package identifiers, which unlike Cabal ones include a category. -- module Portage.PackageId (@@ -30,6 +32,10 @@ import Distribution.Text(display) import System.FilePath ( (</>) )++#if MIN_VERSION_base(4,11,0)+import Prelude hiding ((<>))+#endif newtype Category = Category { unCategory :: String } deriving (Eq, Ord, Show, Read)
Portage/Use.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE CPP #-}+ module Portage.Use ( -- * main structures UseFlag(..),@@ -12,6 +14,10 @@ import qualified Text.PrettyPrint as Disp import Text.PrettyPrint ((<>)) import qualified Distribution.Text as DT++#if MIN_VERSION_base(4,11,0)+import Prelude hiding ((<>))+#endif -- | Use variable modificator data UseFlag = UseFlag Use -- ^ no modificator
Portage/Version.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE CPP #-}+ {-| Author : Andres Loeh <kosmikus@gentoo.org> Stability : provisional@@ -25,6 +27,10 @@ import qualified Text.PrettyPrint as Disp import Text.PrettyPrint ((<>)) import qualified Data.Char as Char (isAlpha, isDigit)++#if MIN_VERSION_base(4,11,0)+import Prelude hiding ((<>))+#endif data Version = Version { versionNumber :: [Int] -- [1,42,3] ~= 1.42.3 , versionChar :: (Maybe Char) -- optional letter
hackport.cabal view
@@ -1,5 +1,5 @@ Name: hackport-Version: 0.5.5+Version: 0.5.6 License: GPL License-file: LICENSE Author: Henning Günther, Duncan Coutts, Lennart Kolmodin