diff --git a/src/Merge/Dependencies.hs b/src/Merge/Dependencies.hs index 4f5e811..6ba0805 100644 --- a/src/Merge/Dependencies.hs +++ b/src/Merge/Dependencies.hs @@ -20,6 +20,7 @@ module Merge.Dependencies ) where import Control.DeepSeq (NFData(..)) +import Data.Default.Class import Data.Maybe ( isJust, isNothing ) import qualified Data.List as L #if !MIN_VERSION_base(4,11,0) @@ -474,121 +475,121 @@ resolvePkgConfigs overlay cdeps = resolvePkgConfig :: Portage.Overlay -> Cabal.PkgconfigDependency -> Maybe Portage.Dependency resolvePkgConfig _overlay (Cabal.PkgconfigDependency cabal_pn _cabalVersion) = do - (cat,portname, slot) <- lookup (Cabal.unPkgconfigName cabal_pn) pkgconfig_table - return $ any_c_p_s_u cat portname slot [] + (cat, portname, Portage.DAttr slot usedep) <- lookup (Cabal.unPkgconfigName cabal_pn) pkgconfig_table + return $ any_c_p_s_u cat portname slot usedep -pkgconfig_table :: [(String, (String, String, Portage.SlotDepend))] +pkgconfig_table :: [(String, (String, String, Portage.DAttr))] pkgconfig_table = [ - ("alsa", ("media-libs", "alsa-lib", Portage.AnySlot)) - ,("atk", ("dev-libs", "atk", Portage.AnySlot)) - ,("gconf-2.0", ("gnome-base", "gconf", Portage.AnySlot)) - - ,("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")) + ("alsa", ("media-libs", "alsa-lib", def)) + ,("atk", ("dev-libs", "atk", def)) + ,("gconf-2.0", ("gnome-base", "gconf", def)) + + ,("gio-2.0", ("dev-libs", "glib", Portage.DAttr (Portage.GivenSlot "2") [])) + ,("gio-unix-2.0", ("dev-libs", "glib", Portage.DAttr (Portage.GivenSlot "2") [])) + ,("glib-2.0", ("dev-libs", "glib", Portage.DAttr (Portage.GivenSlot "2") [])) + ,("gmodule-2.0", ("dev-libs", "glib", Portage.DAttr (Portage.GivenSlot "2") [])) + ,("gmodule-export-2.0", ("dev-libs", "glib", Portage.DAttr (Portage.GivenSlot "2") [])) + ,("gmodule-no-export-2.0", ("dev-libs", "glib", Portage.DAttr (Portage.GivenSlot "2") [])) + ,("gobject-2.0", ("dev-libs", "glib", Portage.DAttr (Portage.GivenSlot "2") [])) ,("gobject-introspection-1.0", ("dev-libs", "gobject-introspection", - Portage.AnySlot)) - ,("gthread-2.0", ("dev-libs", "glib", Portage.GivenSlot "2")) - - ,("gtk+-2.0", ("x11-libs", "gtk+", Portage.GivenSlot "2")) - ,("gdk-2.0", ("x11-libs", "gtk+", Portage.GivenSlot "2")) - ,("gdk-3.0", ("x11-libs", "gtk+", Portage.GivenSlot "3")) - ,("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")) - - ,("gtk+-3.0", ("x11-libs", "gtk+", Portage.GivenSlot "3")) - ,("webkitgtk-3.0", ("net-libs", "webkit-gtk", Portage.GivenSlot "3")) - - ,("cairo", ("x11-libs", "cairo", Portage.AnySlot)) -- need [svg] for dev-haskell/cairo - ,("cairo-gobject", ("x11-libs", "cairo", Portage.AnySlot)) -- need [glib] 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)) - - ,("javascriptcoregtk-4.0", ("net-libs", "webkit-gtk", Portage.GivenSlot "4")) - ,("webkit2gtk-4.0", ("net-libs", "webkit-gtk", Portage.GivenSlot "4")) - - ,("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", Portage.AnySlot)) - ,("libsoup-2.4", ("net-libs", "libsoup", Portage.GivenSlot "2.4")) - ,("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")) - ,("gtksourceview-3.0", ("x11-libs", "gtksourceview", Portage.GivenSlot "3.0")) - - ,("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", 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", 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", Portage.AnySlot)) - ,("libxml2", ("dev-libs", "libxml2", Portage.AnySlot)) - ,("libgsasl", ("virtual", "gsasl", Portage.AnySlot)) - ,("libzip", ("dev-libs", "libzip", Portage.AnySlot)) - ,("gnutls", ("net-libs", "gnutls", Portage.AnySlot)) - ,("libidn", ("net-dns", "libidn", Portage.AnySlot)) - ,("libxml-2.0", ("dev-libs", "libxml2", Portage.AnySlot)) - ,("yaml-0.1", ("dev-libs", "libyaml", Portage.AnySlot)) - ,("QtCore", ("dev-qt", "qtcore", Portage.AnySlot)) - ,("lua", ("dev-lang", "lua", Portage.AnySlot)) - ,("QtDeclarative", ("dev-qt", "qtdeclarative", Portage.AnySlot)) - ,("QtGui", ("dev-qt", "qtgui", Portage.AnySlot)) - ,("QtOpenGL", ("dev-qt", "qtopengl", Portage.AnySlot)) - ,("QtScript", ("dev-qt", "qtscript", Portage.AnySlot)) - ,("ImageMagick", ("media-gfx", "imagemagick", Portage.AnySlot)) - ,("MagickWand", ("media-gfx", "imagemagick", Portage.AnySlot)) - ,("ncurses", ("sys-libs", "ncurses", Portage.AnySlot)) - ,("ncursesw", ("sys-libs", "ncurses", Portage.AnySlot)) - ,("panel", ("sys-libs", "ncurses", Portage.AnySlot)) - ,("panelw", ("sys-libs", "ncurses", Portage.AnySlot)) - ,("libssh2", ("net-libs", "libssh2", Portage.AnySlot)) - ,("SDL_image", ("media-libs", "sdl-image", Portage.AnySlot)) - ,("libzmq", ("net-libs", "zeromq", Portage.AnySlot)) - ,("taglib_c", ("media-libs", "taglib", Portage.AnySlot)) - ,("libcurl", ("net-misc", "curl", Portage.AnySlot)) - ,("libpq", ("dev-db", "postgresql", Portage.AnySlot)) - ,("poppler-glib", ("app-text", "poppler", Portage.AnySlot)) - ,("gsl", ("sci-libs", "gsl", Portage.AnySlot)) - ,("libvirt", ("app-emulation", "libvirt", Portage.AnySlot)) - - ,("Qt5Core", ("dev-qt", "qtcore", Portage.GivenSlot "5")) - ,("Qt5Gui", ("dev-qt", "qtgui", Portage.GivenSlot "5")) - ,("Qt5Qml", ("dev-qt", "qtdeclarative", Portage.GivenSlot "5")) - ,("Qt5Quick", ("dev-qt", "qtdeclarative", Portage.GivenSlot "5")) - ,("Qt5Widgets", ("dev-qt", "qtwidgets", Portage.GivenSlot "5")) - - ,("sdl2", ("media-libs", "libsdl2", Portage.AnySlot)) - ,("SDL2_image", ("media-libs", "sdl2-image", Portage.AnySlot)) - ,("SDL2_mixer", ("media-libs", "sdl2-mixer", Portage.AnySlot)) - ,("zlib", ("sys-libs", "zlib", Portage.AnySlot)) - ,("libpcre", ("dev-libs", "libpcre", Portage.AnySlot)) + def)) + ,("gthread-2.0", ("dev-libs", "glib", Portage.DAttr (Portage.GivenSlot "2") [])) + + ,("gtk+-2.0", ("x11-libs", "gtk+", Portage.DAttr (Portage.GivenSlot "2") [])) + ,("gdk-2.0", ("x11-libs", "gtk+", Portage.DAttr (Portage.GivenSlot "2") [])) + ,("gdk-3.0", ("x11-libs", "gtk+", Portage.DAttr (Portage.GivenSlot "3") [])) + ,("gdk-pixbuf-2.0", ("x11-libs", "gtk+", Portage.DAttr (Portage.GivenSlot "2") [])) + ,("gdk-pixbuf-xlib-2.0", ("x11-libs", "gtk+", Portage.DAttr (Portage.GivenSlot "2") [])) + ,("gdk-x11-2.0", ("x11-libs", "gtk+", Portage.DAttr (Portage.GivenSlot "2") [])) + ,("gtk+-unix-print-2.0", ("x11-libs", "gtk+", Portage.DAttr (Portage.GivenSlot "2") [])) + ,("gtk+-x11-2.0", ("x11-libs", "gtk+", Portage.DAttr (Portage.GivenSlot "2") [])) + + ,("gtk+-3.0", ("x11-libs", "gtk+", Portage.DAttr (Portage.GivenSlot "3") [])) + ,("webkitgtk-3.0", ("net-libs", "webkit-gtk", Portage.DAttr (Portage.GivenSlot "3") [])) + + ,("cairo", ("x11-libs", "cairo", def)) + ,("cairo-gobject", ("x11-libs", "cairo", Portage.DAttr (Portage.AnySlot) ["glib"])) -- need [glib] for dev-haskell/cairo + ,("cairo-ft", ("x11-libs", "cairo", def)) + ,("cairo-ps", ("x11-libs", "cairo", def)) + ,("cairo-png", ("x11-libs", "cairo", def)) + ,("cairo-pdf", ("x11-libs", "cairo", def)) + ,("cairo-svg", ("x11-libs", "cairo", def)) + ,("cairo-xlib", ("x11-libs", "cairo", def)) + ,("cairo-xlib-xrender", ("x11-libs", "cairo", def)) + + ,("javascriptcoregtk-4.0", ("net-libs", "webkit-gtk", Portage.DAttr (Portage.GivenSlot "4") [])) + ,("webkit2gtk-4.0", ("net-libs", "webkit-gtk", Portage.DAttr (Portage.GivenSlot "4") [])) + + ,("pangocairo", ("x11-libs", "pango", def)) + ,("pangoft2", ("x11-libs", "pango", def)) + ,("pango", ("x11-libs", "pango", def)) + ,("pangoxft", ("x11-libs", "pango", def)) + ,("pangox", ("x11-libs", "pango", def)) + + ,("libglade-2.0", ("gnome-base", "libglade", def)) + ,("libsoup-2.4", ("net-libs", "libsoup", Portage.DAttr (Portage.GivenSlot "2.4") [])) + ,("gnome-vfs-2.0", ("gnome-base", "gnome-vfs", def)) + ,("gnome-vfs-module-2.0", ("gnome-base", "gnome-vfs", def)) + ,("webkit-1.0", ("net-libs","webkit-gtk", Portage.DAttr (Portage.GivenSlot "2") [])) + ,("gtksourceview-3.0", ("x11-libs", "gtksourceview", Portage.DAttr (Portage.GivenSlot "3.0") [])) + + ,("gstreamer-0.10", ("media-libs", "gstreamer", def)) + ,("gstreamer-base-0.10", ("media-libs", "gstreamer", def)) + ,("gstreamer-check-0.10", ("media-libs", "gstreamer", def)) + ,("gstreamer-controller-0.10", ("media-libs", "gstreamer", def)) + ,("gstreamer-dataprotocol-0.10", ("media-libs", "gstreamer", def)) + ,("gstreamer-net-0.10", ("media-libs", "gstreamer", def)) + + ,("gstreamer-app-0.10", ("media-libs", "gst-plugins-base", def)) + ,("gstreamer-audio-0.10", ("media-libs", "gst-plugins-base", def)) + ,("gstreamer-video-0.10", ("media-libs", "gst-plugins-base", def)) + ,("gstreamer-plugins-base-0.10", ("media-libs", "gst-plugins-base", def)) + + ,("gtksourceview-2.0", ("x11-libs", "gtksourceview", Portage.DAttr (Portage.GivenSlot "2.0") [])) + ,("librsvg-2.0", ("gnome-base","librsvg", def)) + ,("vte", ("x11-libs","vte", Portage.DAttr (Portage.GivenSlot "0") [])) + ,("gtkglext-1.0", ("x11-libs","gtkglext", def)) + + ,("curl", ("net-misc", "curl", def)) + ,("libxml2", ("dev-libs", "libxml2", def)) + ,("libgsasl", ("virtual", "gsasl", def)) + ,("libzip", ("dev-libs", "libzip", def)) + ,("gnutls", ("net-libs", "gnutls", def)) + ,("libidn", ("net-dns", "libidn", def)) + ,("libxml-2.0", ("dev-libs", "libxml2", def)) + ,("yaml-0.1", ("dev-libs", "libyaml", def)) + ,("QtCore", ("dev-qt", "qtcore", def)) + ,("lua", ("dev-lang", "lua", def)) + ,("QtDeclarative", ("dev-qt", "qtdeclarative", def)) + ,("QtGui", ("dev-qt", "qtgui", def)) + ,("QtOpenGL", ("dev-qt", "qtopengl", def)) + ,("QtScript", ("dev-qt", "qtscript", def)) + ,("ImageMagick", ("media-gfx", "imagemagick", def)) + ,("MagickWand", ("media-gfx", "imagemagick", def)) + ,("ncurses", ("sys-libs", "ncurses", def)) + ,("ncursesw", ("sys-libs", "ncurses", def)) + ,("panel", ("sys-libs", "ncurses", def)) + ,("panelw", ("sys-libs", "ncurses", def)) + ,("libssh2", ("net-libs", "libssh2", def)) + ,("SDL_image", ("media-libs", "sdl-image", def)) + ,("libzmq", ("net-libs", "zeromq", def)) + ,("taglib_c", ("media-libs", "taglib", def)) + ,("libcurl", ("net-misc", "curl", def)) + ,("libpq", ("dev-db", "postgresql", def)) + ,("poppler-glib", ("app-text", "poppler", def)) + ,("gsl", ("sci-libs", "gsl", def)) + ,("libvirt", ("app-emulation", "libvirt", def)) + + ,("Qt5Core", ("dev-qt", "qtcore", Portage.DAttr (Portage.GivenSlot "5") [])) + ,("Qt5Gui", ("dev-qt", "qtgui", Portage.DAttr (Portage.GivenSlot "5") [])) + ,("Qt5Qml", ("dev-qt", "qtdeclarative", Portage.DAttr (Portage.GivenSlot "5") [])) + ,("Qt5Quick", ("dev-qt", "qtdeclarative", Portage.DAttr (Portage.GivenSlot "5") [])) + ,("Qt5Widgets", ("dev-qt", "qtwidgets", Portage.DAttr (Portage.GivenSlot "5") [])) + + ,("sdl2", ("media-libs", "libsdl2", def)) + ,("SDL2_image", ("media-libs", "sdl2-image", def)) + ,("SDL2_mixer", ("media-libs", "sdl2-mixer", def)) + ,("zlib", ("sys-libs", "zlib", def)) + ,("libpcre", ("dev-libs", "libpcre", def)) ] diff --git a/src/Portage/Dependency/Types.hs b/src/Portage/Dependency/Types.hs index ff5e0b7..bd0255a 100644 --- a/src/Portage/Dependency/Types.hs +++ b/src/Portage/Dependency/Types.hs @@ -24,6 +24,7 @@ import Portage.PackageId import Portage.Use import Control.DeepSeq (NFData(..)) +import Data.Default.Class -- | Type of SLOT dependency of a dependency. data SlotDepend = AnySlot -- ^ nothing special @@ -112,6 +113,9 @@ data DAttr = DAttr SlotDepend [UseFlag] instance NFData DAttr where rnf (DAttr sd uf) = rnf sd `seq` rnf uf +instance Default DAttr where + def = DAttr AnySlot [] + data Dependency = DependAtom Atom | DependAnyOf [Dependency] | DependAllOf [Dependency]