Skip to content

Commit

Permalink
Merge.Dependencies: pkgconfig_table: allow specifying USE deps
Browse files Browse the repository at this point in the history
  • Loading branch information
l29ah committed Sep 30, 2023
1 parent 2c8c127 commit fe567c1
Show file tree
Hide file tree
Showing 2 changed files with 118 additions and 113 deletions.
227 changes: 114 additions & 113 deletions src/Merge/Dependencies.hs
Expand Up @@ -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)
Expand Down Expand Up @@ -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))
]
4 changes: 4 additions & 0 deletions src/Portage/Dependency/Types.hs
Expand Up @@ -24,6 +24,7 @@ import Portage.PackageId
import Portage.Use

import Control.DeepSeq (NFData(..))
import Data.Default.Class

Check failure on line 27 in src/Portage/Dependency/Types.hs

View workflow job for this annotation

GitHub Actions / GHC 8.10 on ubuntu-latest

Could not find module ‘Data.Default.Class’

Check failure on line 27 in src/Portage/Dependency/Types.hs

View workflow job for this annotation

GitHub Actions / GHC 9.0 on ubuntu-latest

Could not find module ‘Data.Default.Class’

Check failure on line 27 in src/Portage/Dependency/Types.hs

View workflow job for this annotation

GitHub Actions / GHC 9.2 on ubuntu-latest

Could not find module ‘Data.Default.Class’

Check failure on line 27 in src/Portage/Dependency/Types.hs

View workflow job for this annotation

GitHub Actions / GHC 9.4 on ubuntu-latest

Could not find module ‘Data.Default.Class’

Check failure on line 27 in src/Portage/Dependency/Types.hs

View workflow job for this annotation

GitHub Actions / GHC 9.6 on ubuntu-latest

Could not find module ‘Data.Default.Class’

-- | Type of SLOT dependency of a dependency.
data SlotDepend = AnySlot -- ^ nothing special
Expand Down Expand Up @@ -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]
Expand Down

0 comments on commit fe567c1

Please sign in to comment.