packages feed

hackport 0.2.19 → 0.3

raw patch · 13 files changed

+265/−194 lines, 13 files

Files

+ .gitignore view
@@ -0,0 +1,1 @@+dist/
+ .gitmodules view
@@ -0,0 +1,3 @@+[submodule "cabal"]+	path = cabal+	url = git://github.com/gentoo-haskell/cabal.git
Cabal2Ebuild.hs view
@@ -55,6 +55,7 @@                                                else Cabal.description pkg,     E.homepage        = thisHomepage,     E.license         = Cabal.license pkg,+    E.slot            = (E.slot E.ebuildTemplate) ++ maybe [] (const "/${PV}") (Cabal.library pkg),     E.my_pn           = if any isUpper cabalPkgName then Just cabalPkgName else Nothing,     E.features        = E.features E.ebuildTemplate                    ++ (if hasExe then ["bin"] else [])@@ -84,13 +85,13 @@             Nothing -> Portage.PackageName category (Portage.normalizeCabalPackageName pname)     convert :: Cabal.VersionRange -> [Dependency]     convert =  Cabal.foldVersionRange'-             (          [AnyVersionOf                            pn []] -- ^ @\"-any\"@ version-            )(\v     -> [ThisVersionOf      (fromCabalVersion v) pn []] -- ^ @\"== v\"@-            )(\v     -> [LaterVersionOf     (fromCabalVersion v) pn []] -- ^ @\"> v\"@-            )(\v     -> [EarlierVersionOf   (fromCabalVersion v) pn []] -- ^ @\"< v\"@-            )(\v     -> [OrLaterVersionOf   (fromCabalVersion v) pn []] -- ^ @\">= v\"@-            )(\v     -> [OrEarlierVersionOf (fromCabalVersion v) pn []] -- ^ @\"<= v\"@-            )(\v _   -> [ThisMajorOf        (fromCabalVersion v) pn []] -- ^ @\"== v.*\"@ wildcard. (incl lower, excl upper)+             (          [AnyVersionOf                            pn AnySlot []] -- ^ @\"-any\"@ version+            )(\v     -> [ThisVersionOf      (fromCabalVersion v) pn AnySlot []] -- ^ @\"== v\"@+            )(\v     -> [LaterVersionOf     (fromCabalVersion v) pn AnySlot []] -- ^ @\"> v\"@+            )(\v     -> [EarlierVersionOf   (fromCabalVersion v) pn AnySlot []] -- ^ @\"< v\"@+            )(\v     -> [OrLaterVersionOf   (fromCabalVersion v) pn AnySlot []] -- ^ @\">= v\"@+            )(\v     -> [OrEarlierVersionOf (fromCabalVersion v) pn AnySlot []] -- ^ @\"<= v\"@+            )(\v _   -> [ThisMajorOf        (fromCabalVersion v) pn AnySlot []] -- ^ @\"== v.*\"@ wildcard. (incl lower, excl upper)             )(\g1 g2 -> [DependEither                       (g1 ++ g2)] -- ^ @\"_ || _\"@ union             )(\r1 r2 -> r1 ++ r2                                     -- ^ @\"_ && _\"@ intersection             )(\dp    -> [AllOf dp                                  ] -- ^ @\"(_)\"@ parentheses
Merge/Dependencies.hs view
@@ -113,7 +113,7 @@     hasBuildableExes p = any (buildable . buildInfo) . executables $ p     treatAsLibrary = (not . hasBuildableExes) pkg || hasLibs pkg     haskell_deps-        | treatAsLibrary = add_profile $ haskellDependencies overlay pkg+        | treatAsLibrary = map set_build_slot $ map add_profile $ haskellDependencies overlay pkg         | otherwise      = haskellDependencies overlay pkg     test_deps         | (not . null) (testSuites pkg) = testDependencies overlay pkg@@ -130,7 +130,7 @@                           : build_tools                           ++ test_deps,                     dep_e = [ "${RDEPEND}" ],-                    rdep = ghc_dep+                    rdep = set_build_slot ghc_dep                             : haskell_deps                             ++ extra_libs                             ++ pkg_config@@ -145,7 +145,8 @@                     dep_e = [ "${RDEPEND}" ],                     rdep = extra_libs ++ pkg_config                   }-    add_profile = map (flip Portage.addDepUseFlag (Portage.mkQUse "profile"))+    add_profile    = Portage.addDepUseFlag (Portage.mkQUse "profile")+    set_build_slot = Portage.setSlotDep Portage.AnyBuildTimeSlot  --------------------------------------------------------------- -- Test-suite dependencies@@ -198,7 +199,7 @@  compilerIdToDependency :: CompilerId -> Portage.Dependency compilerIdToDependency (CompilerId GHC versionNumbers) =-  Portage.OrLaterVersionOf (Portage.fromCabalVersion versionNumbers) (Portage.mkPackageName "dev-lang" "ghc") []+  Portage.OrLaterVersionOf (Portage.fromCabalVersion versionNumbers) (Portage.mkPackageName "dev-lang" "ghc") Portage.AnySlot []  --------------------------------------------------------------- -- C Libraries@@ -207,7 +208,7 @@ findCLibs :: PackageDescription -> [Portage.Dependency] findCLibs (PackageDescription { library = lib, executables = exes }) =   [ trace ("WARNING: This package depends on a C library we don't know the portage name for: " ++ p ++ ". Check the generated ebuild.")-          (Portage.AnyVersionOf (Portage.mkPackageName "unknown-c-lib" p) [])+          (Portage.AnyVersionOf (Portage.mkPackageName "unknown-c-lib" p) Portage.AnySlot [])   | p <- notFound   ] ++    found@@ -222,16 +223,17 @@ staticTranslateExtraLib :: String -> Maybe Portage.Dependency staticTranslateExtraLib lib = lookup lib m   where-  m = [ ("z", Portage.AnyVersionOf (Portage.mkPackageName "sys-libs" "zlib") [])-      , ("bz2", Portage.AnyVersionOf (Portage.mkPackageName "sys-libs" "bzlib") [])-      , ("mysqlclient", Portage.LaterVersionOf (Portage.Version [4,0] Nothing [] 0) (Portage.mkPackageName "virtual" "mysql") [])-      , ("pq", Portage.LaterVersionOf (Portage.Version [7] Nothing [] 0) (Portage.mkPackageName "dev-db" "postgresql-base") [])-      , ("ev", Portage.AnyVersionOf (Portage.mkPackageName "dev-libs" "libev") [])-      , ("expat", Portage.AnyVersionOf (Portage.mkPackageName "dev-libs" "expat") [])-      , ("curl", Portage.AnyVersionOf (Portage.mkPackageName "net-misc" "curl") [])-      , ("xml2", Portage.AnyVersionOf (Portage.mkPackageName "dev-libs" "libxml2") [])-      , ("mecab", Portage.AnyVersionOf (Portage.mkPackageName "app-text" "mecab") [])-      , ("zmq", Portage.AnyVersionOf (Portage.mkPackageName "net-libs" "zeromq") [])+  m = [ ("z", Portage.AnyVersionOf (Portage.mkPackageName "sys-libs" "zlib") Portage.AnySlot [])+      , ("bz2", Portage.AnyVersionOf (Portage.mkPackageName "sys-libs" "bzlib") Portage.AnySlot [])+      , ("mysqlclient", Portage.LaterVersionOf (Portage.Version [4,0] Nothing [] 0) (Portage.mkPackageName "virtual" "mysql") Portage.AnySlot [])+      , ("pq", Portage.LaterVersionOf (Portage.Version [7] Nothing [] 0) (Portage.mkPackageName "dev-db" "postgresql-base") Portage.AnySlot [])+      , ("ev", Portage.AnyVersionOf (Portage.mkPackageName "dev-libs" "libev") Portage.AnySlot [])+      , ("expat", Portage.AnyVersionOf (Portage.mkPackageName "dev-libs" "expat") Portage.AnySlot [])+      , ("curl", Portage.AnyVersionOf (Portage.mkPackageName "net-misc" "curl") Portage.AnySlot [])+      , ("xml2", Portage.AnyVersionOf (Portage.mkPackageName "dev-libs" "libxml2") Portage.AnySlot [])+      , ("mecab", Portage.AnyVersionOf (Portage.mkPackageName "app-text" "mecab") Portage.AnySlot [])+      , ("zmq", Portage.AnyVersionOf (Portage.mkPackageName "net-libs" "zeromq") Portage.AnySlot [])+      , ("SDL", Portage.AnyVersionOf (Portage.mkPackageName "media-libs" "libsdl") Portage.AnySlot [])       ]  ---------------------------------------------------------------@@ -243,7 +245,7 @@   [ case pkg of       Just p -> p       Nothing -> trace ("WARNING: Unknown build tool '" ++ pn ++ "'. Check the generated ebuild.")-                       (Portage.AnyVersionOf (Portage.mkPackageName "unknown-build-tool" pn) [])+                       (Portage.AnyVersionOf (Portage.mkPackageName "unknown-build-tool" pn) Portage.AnySlot [])   | Cabal.Dependency (Cabal.PackageName pn) _range <- cabalDeps   , pkg <- return (lookup pn buildToolsTable)    ]@@ -255,13 +257,13 @@  buildToolsTable :: [(String, Portage.Dependency)] buildToolsTable =-  [ ("happy", Portage.AnyVersionOf (Portage.mkPackageName "dev-haskell" "happy") [])-  , ("alex", Portage.AnyVersionOf (Portage.mkPackageName "dev-haskell" "alex") [])-  , ("c2hs", Portage.AnyVersionOf (Portage.mkPackageName "dev-haskell" "c2hs") [])-  , ("cabal-install", Portage.AnyVersionOf (Portage.mkPackageName "dev-haskell" "cabal-install") [])-  , ("gtk2hsTypeGen",       Portage.AnyVersionOf (Portage.mkPackageName "dev-haskell" "gtk2hs-buildtools") [])-  , ("gtk2hsHookGenerator", Portage.AnyVersionOf (Portage.mkPackageName "dev-haskell" "gtk2hs-buildtools") [])-  , ("gtk2hsC2hs",          Portage.AnyVersionOf (Portage.mkPackageName "dev-haskell" "gtk2hs-buildtools") [])+  [ ("happy", Portage.AnyVersionOf (Portage.mkPackageName "dev-haskell" "happy") Portage.AnySlot [])+  , ("alex", Portage.AnyVersionOf (Portage.mkPackageName "dev-haskell" "alex") Portage.AnySlot [])+  , ("c2hs", Portage.AnyVersionOf (Portage.mkPackageName "dev-haskell" "c2hs") Portage.AnySlot [])+  , ("cabal-install", Portage.AnyVersionOf (Portage.mkPackageName "dev-haskell" "cabal-install") Portage.AnySlot [])+  , ("gtk2hsTypeGen",       Portage.AnyVersionOf (Portage.mkPackageName "dev-haskell" "gtk2hs-buildtools") Portage.AnySlot [])+  , ("gtk2hsHookGenerator", Portage.AnyVersionOf (Portage.mkPackageName "dev-haskell" "gtk2hs-buildtools") Portage.AnySlot [])+  , ("gtk2hsC2hs",          Portage.AnyVersionOf (Portage.mkPackageName "dev-haskell" "gtk2hs-buildtools") Portage.AnySlot [])   ]  -- tools that are provided by ghc or some other existing program@@ -286,76 +288,76 @@   [ case resolvePkgConfig overlay pkg of       Just d -> d       Nothing -> trace ("WARNING: Could not resolve pkg-config: " ++ pn ++ ". Check generated ebuild.")-                       (Portage.AnyVersionOf (Portage.mkPackageName "unknown-pkg-config" pn) [])+                       (Portage.AnyVersionOf (Portage.mkPackageName "unknown-pkg-config" pn) Portage.AnySlot [])   | pkg@(Cabal.Dependency (Cabal.PackageName pn) _range) <- cdeps ]  resolvePkgConfig :: Portage.Overlay -> Cabal.Dependency -> Maybe Portage.Dependency resolvePkgConfig overlay (Cabal.Dependency (Cabal.PackageName pn) _cabalVersion) = do-  (cat,portname) <- lookup pn table-  return $ Portage.AnyVersionOf (Portage.mkPackageName cat portname) []+  (cat,portname, slot) <- lookup pn table+  return $ Portage.AnyVersionOf (Portage.mkPackageName cat portname) slot [] -table :: [(String, (String, String))]+table :: [(String, (String, String, Portage.SlotDepend))] table =   [-   ("alsa",         ("media-libs", "alsa-lib"))-  ,("gconf-2.0",    ("gnome-base", "gconf"))+   ("alsa",         ("media-libs", "alsa-lib", Portage.AnySlot))+  ,("gconf-2.0",    ("gnome-base", "gconf", Portage.AnySlot)) -  ,("gio-2.0",                ("dev-libs", "glib:2"))-  ,("gio-unix-2.0",           ("dev-libs", "glib:2"))-  ,("glib-2.0",               ("dev-libs", "glib:2"))-  ,("gmodule-2.0",            ("dev-libs", "glib:2"))-  ,("gmodule-export-2.0",     ("dev-libs", "glib:2"))-  ,("gmodule-no-export-2.0",  ("dev-libs", "glib:2"))-  ,("gobject-2.0",            ("dev-libs", "glib:2"))-  ,("gthread-2.0",            ("dev-libs", "glib:2"))+  ,("gio-2.0",                ("dev-libs", "glib", Portage.GivenSlot "2"))+  ,("gio-unix-2.0",           ("dev-libs", "glib", Portage.GivenSlot "2"))+  ,("glib-2.0",               ("dev-libs", "glib", Portage.GivenSlot "2"))+  ,("gmodule-2.0",            ("dev-libs", "glib", Portage.GivenSlot "2"))+  ,("gmodule-export-2.0",     ("dev-libs", "glib", Portage.GivenSlot "2"))+  ,("gmodule-no-export-2.0",  ("dev-libs", "glib", Portage.GivenSlot "2"))+  ,("gobject-2.0",            ("dev-libs", "glib", Portage.GivenSlot "2"))+  ,("gthread-2.0",            ("dev-libs", "glib", Portage.GivenSlot "2")) -  ,("gtk+-2.0",            ("x11-libs", "gtk+:2"))-  ,("gdk-2.0",             ("x11-libs", "gtk+:2"))-  ,("gdk-pixbuf-2.0",      ("x11-libs", "gtk+:2"))-  ,("gdk-pixbuf-xlib-2.0", ("x11-libs", "gtk+:2"))-  ,("gdk-x11-2.0",         ("x11-libs", "gtk+:2"))-  ,("gtk+-unix-print-2.0", ("x11-libs", "gtk+:2"))-  ,("gtk+-x11-2.0",        ("x11-libs", "gtk+:2"))+  ,("gtk+-2.0",            ("x11-libs", "gtk+", Portage.GivenSlot "2"))+  ,("gdk-2.0",             ("x11-libs", "gtk+", Portage.GivenSlot "2"))+  ,("gdk-pixbuf-2.0",      ("x11-libs", "gtk+", Portage.GivenSlot "2"))+  ,("gdk-pixbuf-xlib-2.0", ("x11-libs", "gtk+", Portage.GivenSlot "2"))+  ,("gdk-x11-2.0",         ("x11-libs", "gtk+", Portage.GivenSlot "2"))+  ,("gtk+-unix-print-2.0", ("x11-libs", "gtk+", Portage.GivenSlot "2"))+  ,("gtk+-x11-2.0",        ("x11-libs", "gtk+", Portage.GivenSlot "2")) -  ,("cairo",            ("x11-libs", "cairo")) -- need [svg] for dev-haskell/cairo-  ,("cairo-ft",         ("x11-libs", "cairo"))-  ,("cairo-ps",         ("x11-libs", "cairo"))-  ,("cairo-png",        ("x11-libs", "cairo"))-  ,("cairo-pdf",        ("x11-libs", "cairo"))-  ,("cairo-svg",        ("x11-libs", "cairo"))-  ,("cairo-xlib",         ("x11-libs", "cairo"))-  ,("cairo-xlib-xrender", ("x11-libs", "cairo"))+  ,("cairo",            ("x11-libs", "cairo", Portage.AnySlot)) -- need [svg] for dev-haskell/cairo+  ,("cairo-ft",         ("x11-libs", "cairo", Portage.AnySlot))+  ,("cairo-ps",         ("x11-libs", "cairo", Portage.AnySlot))+  ,("cairo-png",        ("x11-libs", "cairo", Portage.AnySlot))+  ,("cairo-pdf",        ("x11-libs", "cairo", Portage.AnySlot))+  ,("cairo-svg",        ("x11-libs", "cairo", Portage.AnySlot))+  ,("cairo-xlib",         ("x11-libs", "cairo", Portage.AnySlot))+  ,("cairo-xlib-xrender", ("x11-libs", "cairo", Portage.AnySlot)) -  ,("pangocairo",       ("x11-libs", "pango"))-  ,("pangoft2",         ("x11-libs", "pango"))-  ,("pango",            ("x11-libs", "pango"))-  ,("pangoxft",         ("x11-libs", "pango"))-  ,("pangox",           ("x11-libs", "pango"))+  ,("pangocairo",       ("x11-libs", "pango", Portage.AnySlot))+  ,("pangoft2",         ("x11-libs", "pango", Portage.AnySlot))+  ,("pango",            ("x11-libs", "pango", Portage.AnySlot))+  ,("pangoxft",         ("x11-libs", "pango", Portage.AnySlot))+  ,("pangox",           ("x11-libs", "pango", Portage.AnySlot)) -  ,("libglade-2.0", ("gnome-base", "libglade"))-  ,("gnome-vfs-2.0", ("gnome-base", "gnome-vfs"))-  ,("gnome-vfs-module-2.0", ("gnome-base", "gnome-vfs"))-  ,("webkit-1.0", ("net-libs","webkit-gtk:2"))+  ,("libglade-2.0", ("gnome-base", "libglade", Portage.AnySlot))+  ,("gnome-vfs-2.0", ("gnome-base", "gnome-vfs", Portage.AnySlot))+  ,("gnome-vfs-module-2.0", ("gnome-base", "gnome-vfs", Portage.AnySlot))+  ,("webkit-1.0", ("net-libs","webkit-gtk", Portage.GivenSlot "2")) -  ,("gstreamer-0.10",              ("media-libs", "gstreamer"))-  ,("gstreamer-base-0.10",         ("media-libs", "gstreamer"))-  ,("gstreamer-check-0.10",        ("media-libs", "gstreamer"))-  ,("gstreamer-controller-0.10",   ("media-libs", "gstreamer"))-  ,("gstreamer-dataprotocol-0.10", ("media-libs", "gstreamer"))-  ,("gstreamer-net-0.10",          ("media-libs", "gstreamer"))+  ,("gstreamer-0.10",              ("media-libs", "gstreamer", Portage.AnySlot))+  ,("gstreamer-base-0.10",         ("media-libs", "gstreamer", Portage.AnySlot))+  ,("gstreamer-check-0.10",        ("media-libs", "gstreamer", Portage.AnySlot))+  ,("gstreamer-controller-0.10",   ("media-libs", "gstreamer", Portage.AnySlot))+  ,("gstreamer-dataprotocol-0.10", ("media-libs", "gstreamer", Portage.AnySlot))+  ,("gstreamer-net-0.10",          ("media-libs", "gstreamer", Portage.AnySlot)) -  ,("gstreamer-app-0.10",          ("media-libs", "gst-plugins-base"))-  ,("gstreamer-audio-0.10",        ("media-libs", "gst-plugins-base"))-  ,("gstreamer-video-0.10",        ("media-libs", "gst-plugins-base"))-  ,("gstreamer-plugins-base-0.10", ("media-libs", "gst-plugins-base"))+  ,("gstreamer-app-0.10",          ("media-libs", "gst-plugins-base", Portage.AnySlot))+  ,("gstreamer-audio-0.10",        ("media-libs", "gst-plugins-base", Portage.AnySlot))+  ,("gstreamer-video-0.10",        ("media-libs", "gst-plugins-base", Portage.AnySlot))+  ,("gstreamer-plugins-base-0.10", ("media-libs", "gst-plugins-base", Portage.AnySlot)) -  ,("gtksourceview-2.0",           ("x11-libs", "gtksourceview:2.0"))-  ,("librsvg-2.0",                 ("gnome-base","librsvg"))-  ,("vte",                         ("x11-libs","vte:0"))-  ,("gtkglext-1.0",                ("x11-libs","gtkglext"))+  ,("gtksourceview-2.0",           ("x11-libs", "gtksourceview", Portage.GivenSlot "2.0"))+  ,("librsvg-2.0",                 ("gnome-base","librsvg", Portage.AnySlot))+  ,("vte",                         ("x11-libs","vte", Portage.GivenSlot "0"))+  ,("gtkglext-1.0",                ("x11-libs","gtkglext", Portage.AnySlot)) -  ,("curl",                        ("net-misc", "curl"))-  ,("libxml2",                     ("dev-libs", "libxml2"))-  ,("libgsasl",                    ("virtual", "gsasl"))+  ,("curl",                        ("net-misc", "curl", Portage.AnySlot))+  ,("libxml2",                     ("dev-libs", "libxml2", Portage.AnySlot))+  ,("libgsasl",                    ("virtual", "gsasl", Portage.AnySlot))    ]
Portage/Dependency.hs view
@@ -1,8 +1,10 @@-module Portage.Dependency (-  Dependency(..),-  simplify_deps,-  simplifyUseDeps,-  addDepUseFlag+module Portage.Dependency+  ( Dependency(..)+  , SlotDepend(..)+  , simplify_deps+  , simplifyUseDeps+  , addDepUseFlag+  , setSlotDep   ) where  import Portage.Version@@ -18,15 +20,25 @@ import Data.List ( nub, groupBy, partition, sortBy ) import Data.Ord           (comparing) -data Dependency = AnyVersionOf               PackageName [UseFlag]-                | ThisVersionOf      Version PackageName [UseFlag]  -- ~package-version-                | LaterVersionOf     Version PackageName [UseFlag]  -- >package-version-                | EarlierVersionOf   Version PackageName [UseFlag]  -- <package-version-                | OrLaterVersionOf   Version PackageName [UseFlag]  -- >=package-version-                | OrEarlierVersionOf Version PackageName [UseFlag]  -- <=package-version-                | DependEither [Dependency]                         -- || ( depend1 depend2 ... )+data SlotDepend = AnySlot          -- nothing special+                | AnyBuildTimeSlot -- ':='+                | GivenSlot String -- ':slotno'+    deriving (Eq, Show)++dispSlot :: SlotDepend -> Disp.Doc+dispSlot AnySlot          = Disp.empty+dispSlot AnyBuildTimeSlot = Disp.text ":="+dispSlot (GivenSlot slot) = Disp.text (':' : slot)++data Dependency = AnyVersionOf               PackageName SlotDepend [UseFlag]+                | ThisVersionOf      Version PackageName SlotDepend [UseFlag]  -- ~package-version+                | LaterVersionOf     Version PackageName SlotDepend [UseFlag]  -- >package-version+                | EarlierVersionOf   Version PackageName SlotDepend [UseFlag]  -- <package-version+                | OrLaterVersionOf   Version PackageName SlotDepend [UseFlag]  -- >=package-version+                | OrEarlierVersionOf Version PackageName SlotDepend [UseFlag]  -- <=package-version+                | ThisMajorOf        Version PackageName SlotDepend [UseFlag]  -- =package-version*                 | DependIfUse  UseFlag    Dependency                -- use? ( depend )-                | ThisMajorOf        Version PackageName [UseFlag]  -- =package-version*+                | DependEither [Dependency]                         -- || ( depend1 depend2 ... )                 | AllOf        [Dependency]                         -- ( depend1 depend2 ... )     deriving (Eq,Show) @@ -37,18 +49,18 @@ a <-> b = a <> Disp.char '-' <> b  showDepend :: Dependency -> Disp.Doc-showDepend (AnyVersionOf         p u) = disp p <> dispUses u -showDepend (ThisVersionOf      v p u) = Disp.char '~' <> disp p <-> disp v { versionRevision = 0 } <> dispUses u-showDepend (LaterVersionOf     v p u) = Disp.char '>' <> disp p <-> disp v <> dispUses u-showDepend (EarlierVersionOf   v p u) = Disp.char '<' <> disp p <-> disp v <> dispUses u-showDepend (OrLaterVersionOf   v p u) = Disp.text ">=" <> disp p <-> disp v <> dispUses u-showDepend (OrEarlierVersionOf v p u) = Disp.text "<=" <> disp p <-> disp v <> dispUses u+showDepend (AnyVersionOf         p s u) = disp p <> dispSlot s <> dispUses u+showDepend (ThisVersionOf      v p s u) = Disp.char '~' <> disp p <-> disp v { versionRevision = 0 } <> dispSlot s <> dispUses u+showDepend (LaterVersionOf     v p s u) = Disp.char '>' <> disp p <-> disp v <> dispSlot s <> dispUses u+showDepend (EarlierVersionOf   v p s u) = Disp.char '<' <> disp p <-> disp v <> dispSlot s <> dispUses u+showDepend (OrLaterVersionOf   v p s u) = Disp.text ">=" <> disp p <-> disp v <> dispSlot s <> dispUses u+showDepend (OrEarlierVersionOf v p s u) = Disp.text "<=" <> disp p <-> disp v <> dispSlot s <> dispUses u+showDepend (ThisMajorOf        v p s u) = Disp.char '='  <> disp p <-> disp v <> Disp.char '*' <> dispSlot s <> dispUses u showDepend (DependEither       dp ) = Disp.text "|| ( " <> hsep (map showDepend dp) <> Disp.text " )" showDepend (DependIfUse        useflag dep) = disp useflag <> Disp.text "? " <> pp_deps dep     where -- special case to avoid double braces: test? ( ( ) )           pp_deps (AllOf _) =                               disp dep           pp_deps         _ = Disp.parens (Disp.text " " <> disp dep <> Disp.text " ")-showDepend (ThisMajorOf        v p u) = Disp.char '=' <> disp p <-> disp v <> Disp.char '*' <> dispUses u showDepend (AllOf []) = Disp.empty showDepend (AllOf              (d:dp) ) =     Disp.text "( " <> showDepend d <> line@@ -59,6 +71,7 @@ {- Here goes code for dependencies simplification -}  simplify_group_table :: PackageName ->+                        SlotDepend  ->                         [UseFlag]   ->                         Maybe Version ->                         Maybe Version ->@@ -68,36 +81,37 @@  -- simplify_group_table p ol       l        e        oe       exact -- 1) trivial cases:-simplify_group_table    p u Nothing  Nothing  Nothing  Nothing  Nothing  = error $ display p ++ ": unsolvable constraints"-simplify_group_table    p u (Just v) Nothing  Nothing  Nothing  Nothing  = [OrLaterVersionOf v p u]-simplify_group_table    p u Nothing  (Just v) Nothing  Nothing  Nothing  = [LaterVersionOf v p u]-simplify_group_table    p u Nothing  Nothing  (Just v) Nothing  Nothing  = [EarlierVersionOf v p u]-simplify_group_table    p u Nothing  Nothing  Nothing  (Just v) Nothing  = [OrEarlierVersionOf v p u]-simplify_group_table    p u Nothing  Nothing  Nothing  Nothing  (Just v) = [ThisVersionOf v p u]+simplify_group_table    p _s _u Nothing  Nothing  Nothing  Nothing  Nothing  = error $ display p ++ ": unsolvable constraints"+simplify_group_table    p s u (Just v) Nothing  Nothing  Nothing  Nothing  = [OrLaterVersionOf v p s u]+simplify_group_table    p s u Nothing  (Just v) Nothing  Nothing  Nothing  = [LaterVersionOf v p s u]+simplify_group_table    p s u Nothing  Nothing  (Just v) Nothing  Nothing  = [EarlierVersionOf v p s u]+simplify_group_table    p s u Nothing  Nothing  Nothing  (Just v) Nothing  = [OrEarlierVersionOf v p s u]+simplify_group_table    p s u Nothing  Nothing  Nothing  Nothing  (Just v) = [ThisVersionOf v p s u]  -- 2) simplification passes-simplify_group_table    p u (Just (Version v1 _ _ _)) Nothing (Just (Version v2 _ _ _)) Nothing Nothing+simplify_group_table    p s u (Just (Version v1 _ _ _)) Nothing (Just (Version v2 _ _ _)) Nothing Nothing     -- special case: >=a-v.N a<v.(N+1)   => =a-v.N*-    | (init v1 == init v2) && (last v2 == last v1 + 1) = [ThisMajorOf (Version v1 Nothing [] 0) p u]-    | otherwise                                        = [OrLaterVersionOf (Version v1 Nothing [] 0) p u, EarlierVersionOf (Version v2 Nothing [] 0) p u]+    | (init v1 == init v2) && (last v2 == last v1 + 1) = [ThisMajorOf (Version v1 Nothing [] 0) p s u]+    | otherwise                                        = [OrLaterVersionOf (Version v1 Nothing [] 0) p s u, EarlierVersionOf (Version v2 Nothing [] 0) p s u]  -- TODO: simplify constraints of type: >=a-v1; > a-v2 and such  -- 3) otherwise sink:-simplify_group_table    p u (Just v)     l@(_)       e@(_)        oe@(_)       exact@(_) =   OrLaterVersionOf v p u: simplify_group_table p u Nothing  l e oe exact-simplify_group_table    p u ol@(Nothing) (Just v)    e@(_)        oe@(_)       exact@(_) =     LaterVersionOf v p u: simplify_group_table p u ol Nothing e oe exact-simplify_group_table    p u ol@(Nothing) l@(Nothing) (Just v)     oe@(_)       exact@(_) =   EarlierVersionOf v p u: simplify_group_table p u ol l Nothing oe exact-simplify_group_table    p u ol@(Nothing) l@(Nothing) e@(Nothing)  (Just v)     exact@(_) = OrEarlierVersionOf v p u: simplify_group_table p u ol l e Nothing  exact+simplify_group_table    p s u (Just v)     l@(_)       e@(_)        oe@(_)       exact@(_) =   OrLaterVersionOf v p s u: simplify_group_table p s u Nothing  l e oe exact+simplify_group_table    p s u ol@(Nothing) (Just v)    e@(_)        oe@(_)       exact@(_) =     LaterVersionOf v p s u: simplify_group_table p s u ol Nothing e oe exact+simplify_group_table    p s u ol@(Nothing) l@(Nothing) (Just v)     oe@(_)       exact@(_) =   EarlierVersionOf v p s u: simplify_group_table p s u ol l Nothing oe exact+simplify_group_table    p s u ol@(Nothing) l@(Nothing) e@(Nothing)  (Just v)     exact@(_) = OrEarlierVersionOf v p s u: simplify_group_table p s u ol l e Nothing  exact -- already defined earlier--- simplify_group_table    p ol@(Nothing) l@(Nothing) e@(Nothing)  oe@(Nothing) (Just v)  = OrEarlierVersionOf v p : simplify_group_table p ol l e oe Nothing+-- simplify_group_table    p s u ol@(Nothing) l@(Nothing) e@(Nothing)  oe@(Nothing) (Just v)  = OrEarlierVersionOf v p : simplify_group_table p ol l e oe Nothing  --  >a-v1 >a-v2         => >a-(max v1 v2) -- key idea: all constraints are enforcing constraints, so we can't get -- more, than one interval. simplify_group :: [Dependency] -> [Dependency]-simplify_group [dep@(AnyVersionOf _package _u)] = [dep]-simplify_group [dep@(ThisMajorOf _v    _p _u)]  = [dep]+simplify_group [dep@(AnyVersionOf _package _s _u)] = [dep]+simplify_group [dep@(ThisMajorOf _v    _p _s _u)]  = [dep] simplify_group deps = simplify_group_table package+                                           slot                                            uses                                            min_or_later_v   -- >=                                            min_later_v      -- >@@ -106,6 +120,7 @@                                            exact_this_v     -- ==     where           package = fromJust.getPackage $ head deps+          slot    = fromJust.getSlot    $ head deps           uses    = fromJust.getUses    $ head deps           max_earlier_v    = safe_minimum $ map earlier_v deps           max_or_earlier_v = safe_minimum $ map or_earlier_v deps@@ -116,19 +131,19 @@                                   [v] -> Just v                                   xs  -> error $ "too many exact versions:" ++ show xs           ---          earlier_v (EarlierVersionOf v _p _u) = Just v+          earlier_v (EarlierVersionOf v _p _s _u) = Just v           earlier_v _                       = Nothing -          or_earlier_v (OrEarlierVersionOf v _p _u) = Just v+          or_earlier_v (OrEarlierVersionOf v _p _s _u) = Just v           or_earlier_v _                         = Nothing -          later_v (LaterVersionOf v _p _u) = Just v+          later_v (LaterVersionOf v _p _s _u) = Just v           later_v _                     = Nothing -          or_later_v (OrLaterVersionOf v _p _u) = Just v+          or_later_v (OrLaterVersionOf v _p _s _u) = Just v           or_later_v _                     = Nothing -          this_v (ThisVersionOf v  _p _u) = Just v+          this_v (ThisVersionOf v  _p _s _u) = Just v           this_v _                     = Nothing           --           safe_minimum xs = case catMaybes xs of@@ -152,45 +167,69 @@           -- getPackage :: Dependency -> Maybe PackageName getPackage (AllOf _dependency) = Nothing-getPackage (AnyVersionOf package _uses) = Just package-getPackage (ThisVersionOf      _version package _uses) = Just package-getPackage (LaterVersionOf     _version package _uses) = Just package-getPackage (EarlierVersionOf   _version package _uses) = Just package-getPackage (OrLaterVersionOf   _version package _uses) = Just package-getPackage (OrEarlierVersionOf _version package _uses) = Just package+getPackage (AnyVersionOf package _s _uses) = Just package+getPackage (ThisVersionOf      _version package _s _uses) = Just package+getPackage (LaterVersionOf     _version package _s _uses) = Just package+getPackage (EarlierVersionOf   _version package _s _uses) = Just package+getPackage (OrLaterVersionOf   _version package _s _uses) = Just package+getPackage (OrEarlierVersionOf _version package _s _uses) = Just package+getPackage (ThisMajorOf        _version package _s _uses) = Just package getPackage (DependEither _dependency           ) = Nothing getPackage (DependIfUse  _useFlag    _Dependency) = Nothing-getPackage (ThisMajorOf        _version package _uses) = Just package  getUses  :: Dependency -> Maybe [UseFlag] getUses (AllOf _d) = Nothing-getUses (AnyVersionOf _p u) = Just u-getUses (ThisVersionOf _v _p u) = Just u-getUses (LaterVersionOf _v _p u) = Just u-getUses (EarlierVersionOf _v _p u) = Just u-getUses (OrLaterVersionOf _v _p u) = Just u-getUses (OrEarlierVersionOf _v _p u) = Just u+getUses (AnyVersionOf _p _s u) = Just u+getUses (ThisVersionOf _v _p _s u) = Just u+getUses (LaterVersionOf _v _p _s u) = Just u+getUses (EarlierVersionOf _v _p _s u) = Just u+getUses (OrLaterVersionOf _v _p _s u) = Just u+getUses (OrEarlierVersionOf _v _p _s u) = Just u+getUses (ThisMajorOf _v _p _s u) = Just u getUses (DependEither _d) = Nothing getUses (DependIfUse _u _d) = Nothing-getUses (ThisMajorOf _v _p u) = Just u +getSlot :: Dependency -> Maybe SlotDepend+getSlot (AllOf _d) = Nothing+getSlot (AnyVersionOf _p s _u) = Just s+getSlot (ThisVersionOf _v _p s _u) = Just s+getSlot (LaterVersionOf _v _p s _u) = Just s+getSlot (EarlierVersionOf _v _p s _u) = Just s+getSlot (OrLaterVersionOf _v _p s _u) = Just s+getSlot (OrEarlierVersionOf _v _p s _u) = Just s+getSlot (ThisMajorOf _v _p s _u) = Just s+getSlot (DependEither _d) = Nothing+getSlot (DependIfUse _u _d) = Nothing+ -- getPackagePart :: Dependency -> PackageName getPackagePart dep = fromJust (getPackage dep)  ---addDepUseFlag :: Dependency -> UseFlag -> Dependency-addDepUseFlag (AllOf d) n = AllOf $ map (flip addDepUseFlag n) d-addDepUseFlag (AnyVersionOf p u) n = AnyVersionOf p (n:u)-addDepUseFlag (ThisVersionOf v p u) n = ThisVersionOf v p (n:u)-addDepUseFlag (LaterVersionOf v p u) n = LaterVersionOf v p (n:u)-addDepUseFlag (EarlierVersionOf v p u) n = EarlierVersionOf v p (n:u)-addDepUseFlag (OrLaterVersionOf v p u) n = OrLaterVersionOf v p (n:u)-addDepUseFlag (OrEarlierVersionOf v p u) n = OrEarlierVersionOf v p (n:u)-addDepUseFlag (ThisMajorOf v p u) n = ThisMajorOf v p (n:u)-addDepUseFlag (DependEither d) n = DependEither $ map (flip addDepUseFlag n) d-addDepUseFlag (DependIfUse u d) n = DependIfUse u (addDepUseFlag d n)+setSlotDep :: SlotDepend -> Dependency -> Dependency+setSlotDep n (AllOf d) = AllOf $ map (setSlotDep n) d+setSlotDep n (AnyVersionOf p _s u) = AnyVersionOf p n u+setSlotDep n (ThisVersionOf v p _s u) = ThisVersionOf v p n u+setSlotDep n (LaterVersionOf v p _s u) = LaterVersionOf v p n u+setSlotDep n (EarlierVersionOf v p _s u) = EarlierVersionOf v p n u+setSlotDep n (OrLaterVersionOf v p _s u) = OrLaterVersionOf v p n u+setSlotDep n (OrEarlierVersionOf v p _s u) = OrEarlierVersionOf v p n u+setSlotDep n (ThisMajorOf v p _s u) = ThisMajorOf v p n u+setSlotDep n (DependEither d) = DependEither $ map (setSlotDep n) d+setSlotDep n (DependIfUse u d) = DependIfUse u (setSlotDep n d) +addDepUseFlag :: UseFlag -> Dependency -> Dependency+addDepUseFlag n (AllOf d) = AllOf $ map (addDepUseFlag n) d+addDepUseFlag n (AnyVersionOf p s u) = AnyVersionOf p s (n:u)+addDepUseFlag n (ThisVersionOf v p s u) = ThisVersionOf v p s (n:u)+addDepUseFlag n (LaterVersionOf v p s u) = LaterVersionOf v p s (n:u)+addDepUseFlag n (EarlierVersionOf v p s u) = EarlierVersionOf v p s (n:u)+addDepUseFlag n (OrLaterVersionOf v p s u) = OrLaterVersionOf v p s (n:u)+addDepUseFlag n (OrEarlierVersionOf v p s u) = OrEarlierVersionOf v p s (n:u)+addDepUseFlag n (ThisMajorOf v p s u) = ThisMajorOf v p s (n:u)+addDepUseFlag n (DependEither d) = DependEither $ map (addDepUseFlag n) d+addDepUseFlag n (DependIfUse u d) = DependIfUse u (addDepUseFlag n d)+ -- -- | remove all Use dependencies that overlap with normal dependencies simplifyUseDeps :: [Dependency]         -- list where use deps is taken@@ -216,4 +255,3 @@ isUseDep :: Dependency -> Bool isUseDep (DependIfUse _ _) = True isUseDep _ = False---
Portage/EBuild.hs view
@@ -81,7 +81,7 @@   ss "# Distributed under the terms of the GNU General Public License v2". nl.   ss "# $Header: $". nl.   nl.-  ss "EAPI=4". nl.+  ss "EAPI=5". nl.   nl.   ss ("# ebuild generated by hackport " ++ hackportVersion ebuild). nl.   nl.
+ cabal/.git view
@@ -0,0 +1,1 @@+gitdir: /home/slyfox/portage/hackport/.git/modules/cabal
+ cabal/.gitignore view
@@ -0,0 +1,25 @@+# trivial gitignore file++cabal-dev/+Cabal/dist/+cabal-install/dist/+.hpc/+*.hi+*.o+*.p_hi+*.prof+*.tix++# editor temp files++*#+.#*+*~+.*.swp++# GHC build++Cabal/GNUmakefile+Cabal/dist-boot/+Cabal/dist-install/+Cabal/ghc.mk
− cabal/Cabal/tests/PackageTests/BuildDeps/GlobalBuildDepsNotAdditive1/GlobalBuildDeps
@@ -1,20 +0,0 @@-name: GlobalBuildDepsNotAdditive1-version: 0.1-license: BSD3-cabal-version: >= 1.6-author: Stephen Blackheath-stability: stable-category: PackageTests-build-type: Simple--description:-    If you specify 'base' in the global build dependencies, then define-    a library without base, it fails to find 'base' for the library.-------------------------------------------build-depends: base--Library-    exposed-modules: MyLibrary-    build-depends: bytestring, old-time
+ cabal/Cabal/tests/PackageTests/BuildDeps/GlobalBuildDepsNotAdditive1/GlobalBuildDepsNot view
@@ -0,0 +1,20 @@+name: GlobalBuildDepsNotAdditive1+version: 0.1+license: BSD3+cabal-version: >= 1.6+author: Stephen Blackheath+stability: stable+category: PackageTests+build-type: Simple++description:+    If you specify 'base' in the global build dependencies, then define+    a library without base, it fails to find 'base' for the library.++---------------------------------------++build-depends: base++Library+    exposed-modules: MyLibrary+    build-depends: bytestring, old-time
− cabal/Cabal/tests/PackageTests/BuildDeps/GlobalBuildDepsNotAdditive2/GlobalBuildDeps
@@ -1,20 +0,0 @@-name: GlobalBuildDepsNotAdditive1-version: 0.1-license: BSD3-cabal-version: >= 1.6-author: Stephen Blackheath-stability: stable-category: PackageTests-build-type: Simple--description:-    If you specify 'base' in the global build dependencies, then define-    an executable without base, it fails to find 'base' for the executable-------------------------------------------build-depends: base--Executable lemon-    main-is: lemon.hs-    build-depends: bytestring, old-time
+ cabal/Cabal/tests/PackageTests/BuildDeps/GlobalBuildDepsNotAdditive2/GlobalBuildDepsNot view
@@ -0,0 +1,20 @@+name: GlobalBuildDepsNotAdditive1+version: 0.1+license: BSD3+cabal-version: >= 1.6+author: Stephen Blackheath+stability: stable+category: PackageTests+build-type: Simple++description:+    If you specify 'base' in the global build dependencies, then define+    an executable without base, it fails to find 'base' for the executable++---------------------------------------++build-depends: base++Executable lemon+    main-is: lemon.hs+    build-depends: bytestring, old-time
hackport.cabal view
@@ -1,5 +1,5 @@ Name:           hackport-Version:	0.2.19+Version:	0.3 License:	GPL License-file:   LICENSE Author:		Henning Günther, Duncan Coutts, Lennart Kolmodin