@@ -2,18 +2,19 @@
3module Distribution.Nixpkgs.Haskell.FromCabal.PostProcess ( postProcess ) where
3module Distribution.Nixpkgs.Haskell.FromCabal.PostProcess ( postProcess ) where
5−import Control.Lens
5+import Control.Lens
6−import Data.List.Split
7+import Data.List.Split
7−import Data.Set ( Set )
8+import Data.Set (Set)
8−import qualified Data.Set as Set
9+import qualified Data.Set as Set
9−import Data.Set.Lens
10+import Data.Set.Lens
10−import Distribution.Nixpkgs.Haskell
11+import Distribution.Nixpkgs.Haskell
11−import Distribution.Nixpkgs.Meta
12+import Distribution.Nixpkgs.Meta
12−import Distribution.Package
13+import Distribution.Package
13−import Distribution.System
14+import Distribution.System
14−import Distribution.Text
15+import Distribution.Text
15−import Distribution.Version
16+import Distribution.Version
16−import Language.Nix
17+import Language.Nix
18postProcess :: Derivation -> Derivation
19postProcess :: Derivation -> Derivation
19postProcess deriv = foldr ($) (fixGtkBuilds deriv) [ f | (Dependency n vr, f) <- hooks, packageName deriv == n, packageVersion deriv `withinRange` vr ]
20postProcess deriv = foldr ($) (fixGtkBuilds deriv) [ f | (Dependency n vr, f) <- hooks, packageName deriv == n, packageVersion deriv `withinRange` vr ]
@@ -50,11 +51,15 @@ hooks =
50 , ("freenect < 1.2.1", over configureFlags (Set.union (Set.fromList ["--extra-include-dirs=${pkgs.freenect}/include/libfreenect", "--extra-lib-dirs=${pkgs.freenect}/lib"])))
51 , ("freenect < 1.2.1", over configureFlags (Set.union (Set.fromList ["--extra-include-dirs=${pkgs.freenect}/include/libfreenect", "--extra-lib-dirs=${pkgs.freenect}/lib"])))
51 , ("gf", set phaseOverrides gfPhaseOverrides . set doCheck False)
52 , ("gf", set phaseOverrides gfPhaseOverrides . set doCheck False)
52 , ("gi-cairo", giCairoPhaseOverrides) -- https://github.com/haskell-gi/haskell-gi/issues/36
53 , ("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
53 , ("gi-gio", giPhaseOverrides) -- https://github.com/haskell-gi/haskell-gi/issues/36
56 , ("gi-gio", giPhaseOverrides) -- https://github.com/haskell-gi/haskell-gi/issues/36
54 , ("gi-glib", giPhaseOverrides) -- https://github.com/haskell-gi/haskell-gi/issues/36
57 , ("gi-glib", giPhaseOverrides) -- https://github.com/haskell-gi/haskell-gi/issues/36
55 , ("gi-gobject", giPhaseOverrides) -- https://github.com/haskell-gi/haskell-gi/issues/36
58 , ("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
56 , ("gi-javascriptcore", giJavascriptCorePhaseOverrides) -- https://github.com/haskell-gi/haskell-gi/issues/36
60 , ("gi-javascriptcore", giJavascriptCorePhaseOverrides) -- https://github.com/haskell-gi/haskell-gi/issues/36
57 , ("gi-pango", giPhaseOverrides) -- https://github.com/haskell-gi/haskell-gi/issues/36
61 , ("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
58 , ("gio", set (libraryDepends . pkgconfig . contains "system-glib = pkgs.glib") True)
63 , ("gio", set (libraryDepends . pkgconfig . contains "system-glib = pkgs.glib") True)
59 , ("git", set doCheck False) -- https://github.com/vincenthz/hit/issues/33
64 , ("git", set doCheck False) -- https://github.com/vincenthz/hit/issues/33
60 , ("git-annex", gitAnnexHook)
65 , ("git-annex", gitAnnexHook)
@@ -245,14 +250,39 @@ stackOverrides = unlines
253+exportGirSearchPath :: [String] -> String
254+exportGirSearchPath packages =
255+ "export HASKELL_GI_GIR_SEARCH_PATH="
256+ ++ intercalate ":" [ "${" ++ package ++ "}/share/gir-1.0" | package <- packages]
248giPhaseOverrides :: Derivation -> Derivation
258giPhaseOverrides :: Derivation -> Derivation
249giPhaseOverrides
259giPhaseOverrides
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
263+giGdkPhaseOverrides :: Derivation -> Derivation
265+ = set phaseOverrides ("preConfigure = ''" ++ exportGirSearchPath ["gtk.dev"] ++ "'';")
266+ . set (libraryDepends . pkgconfig . contains (pkg "gtk3")) True
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"
251 . set (libraryDepends . pkgconfig . contains (pkg "gobjectIntrospection")) True
276 . set (libraryDepends . pkgconfig . contains (pkg "gobjectIntrospection")) True
278+giGtkPhaseOverrides :: Derivation -> Derivation
280+ = set phaseOverrides ("preConfigure = ''" ++ exportGirSearchPath ["gtk.dev"] ++ "'';")
281+ . set (libraryDepends . pkgconfig . contains (pkg "gtk3")) True
253giJavascriptCorePhaseOverrides :: Derivation -> Derivation
283giJavascriptCorePhaseOverrides :: Derivation -> Derivation
254giJavascriptCorePhaseOverrides
284giJavascriptCorePhaseOverrides
255− = set phaseOverrides "preConfigure = \"export HASKELL_GI_GIR_SEARCH_PATH=${webkitgtk}/share/gir-1.0\";"
285+ = set phaseOverrides ("preConfigure = ''" ++ exportGirSearchPath ["webkitgtk"] ++ "'';")
256 . set (libraryDepends . pkgconfig . contains (pkg "webkitgtk")) True
286 . set (libraryDepends . pkgconfig . contains (pkg "webkitgtk")) True
258giCairoPhaseOverrides :: Derivation -> Derivation
288giCairoPhaseOverrides :: Derivation -> Derivation
@@ -264,6 +294,11 @@ giCairoPhaseOverrides = over phaseOverrides (++'\n':txt) . giPhaseOverrides
297+giWebkit2PhaseOverrides :: Derivation -> Derivation
298+giWebkit2PhaseOverrides
299+ = set phaseOverrides ("preConfigure = ''" ++ exportGirSearchPath ["webkitgtk"] ++ "'';")
300+ . set (libraryDepends . pkgconfig . contains (pkg "webkitgtk")) True
267hfseventsOverrides :: Derivation -> Derivation
302hfseventsOverrides :: Derivation -> Derivation
268hfseventsOverrides
303hfseventsOverrides
269 = set isLibrary True
304 = set isLibrary True