@@ -2,18 +2,19 @@
22
33module Distribution.Nixpkgs.Haskell.FromCabal.PostProcess ( postProcess ) where
44
5−import Control.Lens
6−import Data.List.Split
7−import Data.Set ( Set )
8−import qualified Data.Set as Set
9−import Data.Set.Lens
10−import Distribution.Nixpkgs.Haskell
11−import Distribution.Nixpkgs.Meta
12−import Distribution.Package
13−import Distribution.System
14−import Distribution.Text
15−import Distribution.Version
16−import Language.Nix
5+import Control.Lens
6+import Data.List
7+import Data.List.Split
8+import Data.Set (Set)
9+import qualified Data.Set as Set
10+import Data.Set.Lens
11+import Distribution.Nixpkgs.Haskell
12+import Distribution.Nixpkgs.Meta
13+import Distribution.Package
14+import Distribution.System
15+import Distribution.Text
16+import Distribution.Version
17+import Language.Nix
1718
1819postProcess :: Derivation -> Derivation
1920postProcess deriv = foldr ($) (fixGtkBuilds deriv) [ f | (Dependency n vr, f) <- hooks, packageName deriv == n, packageVersion deriv `withinRange` vr ]
@@ -50,11 +51,15 @@ hooks =
5051 , ("freenect < 1.2.1", over configureFlags (Set.union (Set.fromList ["--extra-include-dirs=${pkgs.freenect}/include/libfreenect", "--extra-lib-dirs=${pkgs.freenect}/lib"])))
5152 , ("gf", set phaseOverrides gfPhaseOverrides . set doCheck False)
5253 , ("gi-cairo", giCairoPhaseOverrides) -- https://github.com/haskell-gi/haskell-gi/issues/36
54+ , ("gi-gdk", giGdkPhaseOverrides) -- https://github.com/haskell-gi/haskell-gi/issues/36
55+ , ("gi-gdkpixbuf", giGdkPixBufPhaseOverrides) -- https://github.com/haskell-gi/haskell-gi/issues/36
5356 , ("gi-gio", giPhaseOverrides) -- https://github.com/haskell-gi/haskell-gi/issues/36
5457 , ("gi-glib", giPhaseOverrides) -- https://github.com/haskell-gi/haskell-gi/issues/36
5558 , ("gi-gobject", giPhaseOverrides) -- https://github.com/haskell-gi/haskell-gi/issues/36
59+ , ("gi-gtk", giGtkPhaseOverrides) -- https://github.com/haskell-gi/haskell-gi/issues/36
5660 , ("gi-javascriptcore", giJavascriptCorePhaseOverrides) -- https://github.com/haskell-gi/haskell-gi/issues/36
5761 , ("gi-pango", giPhaseOverrides) -- https://github.com/haskell-gi/haskell-gi/issues/36
62+ , ("gi-webkit2", giWebkit2PhaseOverrides) -- https://github.com/haskell-gi/haskell-gi/issues/36
5863 , ("gio", set (libraryDepends . pkgconfig . contains "system-glib = pkgs.glib") True)
5964 , ("git", set doCheck False) -- https://github.com/vincenthz/hit/issues/33
6065 , ("git-annex", gitAnnexHook)
@@ -245,14 +250,39 @@ stackOverrides = unlines
245250 , "'';"
246251 ]
247252
253+exportGirSearchPath :: [String] -> String
254+exportGirSearchPath packages =
255+ "export HASKELL_GI_GIR_SEARCH_PATH="
256+ ++ intercalate ":" [ "${" ++ package ++ "}/share/gir-1.0" | package <- packages]
257+
248258giPhaseOverrides :: Derivation -> Derivation
249259giPhaseOverrides
250− = set phaseOverrides "preConfigure = \"export HASKELL_GI_GIR_SEARCH_PATH=${gobjectIntrospection.dev}/share/gir-1.0\";"
260+ = set phaseOverrides ("preConfigure = ''" ++ exportGirSearchPath ["gobjectIntrospection.dev"] ++ "'';")
261+ . set (libraryDepends . pkgconfig . contains (pkg "gobjectIntrospection")) True
262+
263+giGdkPhaseOverrides :: Derivation -> Derivation
264+giGdkPhaseOverrides
265+ = set phaseOverrides ("preConfigure = ''" ++ exportGirSearchPath ["gtk.dev"] ++ "'';")
266+ . set (libraryDepends . pkgconfig . contains (pkg "gtk3")) True
267+
268+giGdkPixBufPhaseOverrides :: Derivation -> Derivation
269+giGdkPixBufPhaseOverrides
270+ = set phaseOverrides (unlines
271+ [ "preConfigure = ''"
272+ , " " ++ exportGirSearchPath ["gobjectIntrospection.dev", "gdk_pixbuf.dev"]
273+ , " export GI_TYPELIB_PATH=${gdk_pixbuf.out}/lib/girepository-1.0"
274+ , "'';"
275+ ])
251276 . set (libraryDepends . pkgconfig . contains (pkg "gobjectIntrospection")) True
252277
278+giGtkPhaseOverrides :: Derivation -> Derivation
279+giGtkPhaseOverrides
280+ = set phaseOverrides ("preConfigure = ''" ++ exportGirSearchPath ["gtk.dev"] ++ "'';")
281+ . set (libraryDepends . pkgconfig . contains (pkg "gtk3")) True
282+
253283giJavascriptCorePhaseOverrides :: Derivation -> Derivation
254284giJavascriptCorePhaseOverrides
255− = set phaseOverrides "preConfigure = \"export HASKELL_GI_GIR_SEARCH_PATH=${webkitgtk}/share/gir-1.0\";"
285+ = set phaseOverrides ("preConfigure = ''" ++ exportGirSearchPath ["webkitgtk"] ++ "'';")
256286 . set (libraryDepends . pkgconfig . contains (pkg "webkitgtk")) True
257287
258288giCairoPhaseOverrides :: Derivation -> Derivation
@@ -264,6 +294,11 @@ giCairoPhaseOverrides = over phaseOverrides (++'\n':txt) . giPhaseOverrides
264294 , "'';"
265295 ]
266296
297+giWebkit2PhaseOverrides :: Derivation -> Derivation
298+giWebkit2PhaseOverrides
299+ = set phaseOverrides ("preConfigure = ''" ++ exportGirSearchPath ["webkitgtk"] ++ "'';")
300+ . set (libraryDepends . pkgconfig . contains (pkg "webkitgtk")) True
301+
267302hfseventsOverrides :: Derivation -> Derivation
268303hfseventsOverrides
269304 = set isLibrary True