Skip to content

Commit

Permalink
haskell-gtk2hs packges: fixes for building on Darwin
Browse files Browse the repository at this point in the history
This includes two layered changes so the gtk2hs packages build on Darwin:

 - For `glib`, `gio`, `gtk`, `gtk3`, and `pango`: the fix for version 0.13.8.0
   from gtk2hs/gtk2hs#293 . I expect at some point the
   referenced fix (or one like it) will be released and and brought into
   nixpkgs, at which point the override and patch files here can (in fact must)
   be removed.

 - For `gtk` and `gtk3`: also apply the required cabal flag cited in
   gtk2hs/gtk2hs#249 to specify the Quartz rather than
   X11 backend (Quartz is the one that both nixpkgs and macOS support
   out-the-box). This override is likely to be wanted indefinitely.

Both modifications are required for a successful build of `gtk` or `gtk3` on
Darwin right now.
  • Loading branch information
simonchatts committed Feb 20, 2020
1 parent f829f1a commit 804b57b
Showing 1 changed file with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions pkgs/development/haskell-modules/configuration-common.nix
Original file line number Diff line number Diff line change
Expand Up @@ -1416,4 +1416,58 @@ self: super: {
# cabal-fmt requires Cabal3
cabal-fmt = super.cabal-fmt.override { Cabal = self.Cabal_3_0_0_0; };

# Several gtk2hs-provided packages at v0.13.8.0 fail to build on Darwin
# until we pick up https://github.com/gtk2hs/gtk2hs/pull/293 so apply that
# patch here. That single patch is for the gtk2hs super-repo, out of which
# we extract the patch for each indvidiual project (glib/gio/pango/gtk/gtk3).
glib = appendPatch super.glib (pkgs.fetchpatch {
url = "https://github.com/gtk2hs/gtk2hs/commit/1cf2f9bff2427d39986e32880d1383cfff49ab0e.patch";
includes = [ "glib.cabal" ];
stripLen = 1;
sha256 = "1zdss1xgsbijs3kx8dp5a81qryrfc1zm1xrd20whna3dqakf8b7g";
});
gio = appendPatch super.gio (pkgs.fetchpatch {
url = "https://github.com/gtk2hs/gtk2hs/commit/1cf2f9bff2427d39986e32880d1383cfff49ab0e.patch";
includes = [ "gio.cabal" ];
stripLen = 1;
sha256 = "0d72k6gqvgax9jcqi3gz1gqnar7jg8p5065z3mw2fcwvdw46s2zv";
});
pango = appendPatch super.pango (pkgs.fetchpatch {
url = "https://github.com/gtk2hs/gtk2hs/commit/1cf2f9bff2427d39986e32880d1383cfff49ab0e.patch";
includes = [ "pango.cabal" ];
stripLen = 1;
sha256 = "0dc221wlmyhc24h6ybfhbkxmcx4i6bvkbr1zgqidbnj3yp6w0l5w";
});
# gtk/gtk3 have an additional complication: independent of the above
# 0.13.8.0-specific fix, they need to be told on Darwin to use the Quartz
# rather than X11 backend (see eg https://github.com/gtk2hs/gtk2hs/issues/249).
gtk3 =
let
patchedGtk3 = appendPatch super.gtk3 (pkgs.fetchpatch {
url = "https://github.com/gtk2hs/gtk2hs/commit/1cf2f9bff2427d39986e32880d1383cfff49ab0e.patch";
includes = [ "gtk3.cabal" ];
stripLen = 1;
sha256 = "0zvj0dzfwf9bksfhi0m4v0h5aij236gd0qhyr1adpdcjrkd8zbkd";
});
in
# The appendConfigureFlags should remain even after we can drop patchedGtk3.
appendConfigureFlags patchedGtk3 (pkgs.lib.optional pkgs.stdenv.isDarwin "-f have-quartz-gtk");
gtk =
let
patchedGtk = appendPatch super.gtk (pkgs.fetchpatch {
url = "https://github.com/gtk2hs/gtk2hs/commit/1cf2f9bff2427d39986e32880d1383cfff49ab0e.patch";
includes = [ "gtk.cabal-renamed" ];
stripLen = 1;
sha256 = "0wb0scvmhg8b42hxpns9m6zak3r8b25a2z7wg6vl56n17nb635l7";
# One final complication: the gtk cabal file in the source repo (as seen
# by the patch) is `gtk.cabal-renamed`, but this gets changed to the usual
# `gtk.cabal` before uploading to Hackage by a script.
postFetch = ''
substituteInPlace $out --replace "-renamed" ""
'';
});
in
# The appendConfigureFlags should remain even after we can drop patchedGtk.
appendConfigureFlags patchedGtk (pkgs.lib.optional pkgs.stdenv.isDarwin "-f have-quartz-gtk");

} // import ./configuration-tensorflow.nix {inherit pkgs haskellLib;} self super

0 comments on commit 804b57b

Please sign in to comment.