summary refs log tree commit diff
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2018-01-20 15:08:27 +0100
committerJan Tojnar <jtojnar@gmail.com>2018-01-20 15:58:20 +0100
commite44038bccab0cae96a93fa517a9acaab9c81a6d8 (patch)
tree501131be316dbc19f1daa39e9201b9877798e02e
parent4fd0a3a43d6a4be050e786706e258707049d76d9 (diff)
downloadnixlib-e44038bccab0cae96a93fa517a9acaab9c81a6d8.tar
nixlib-e44038bccab0cae96a93fa517a9acaab9c81a6d8.tar.gz
nixlib-e44038bccab0cae96a93fa517a9acaab9c81a6d8.tar.bz2
nixlib-e44038bccab0cae96a93fa517a9acaab9c81a6d8.tar.lz
nixlib-e44038bccab0cae96a93fa517a9acaab9c81a6d8.tar.xz
nixlib-e44038bccab0cae96a93fa517a9acaab9c81a6d8.tar.zst
nixlib-e44038bccab0cae96a93fa517a9acaab9c81a6d8.zip
gobjectIntrospection: use absolute path for cairo GIR
Cairo does not provide its own GObject bindinds so they are provided
by gobject-introspection package. Unfortunately, this means that if we
want to use the absolute path, we need gi to depend on cairo, which
increases the closure size from 41M to 56M. We will probably want
to split the typelib into a separate output.

Closes: #34080
-rw-r--r--pkgs/development/libraries/gobject-introspection/absolute_gir_path.patch11
-rw-r--r--pkgs/development/libraries/gobject-introspection/default.nix17
2 files changed, 23 insertions, 5 deletions
diff --git a/pkgs/development/libraries/gobject-introspection/absolute_gir_path.patch b/pkgs/development/libraries/gobject-introspection/absolute_gir_path.patch
new file mode 100644
index 000000000000..f7e1bedd3e18
--- /dev/null
+++ b/pkgs/development/libraries/gobject-introspection/absolute_gir_path.patch
@@ -0,0 +1,11 @@
+--- a/gir/cairo-1.0.gir.in
++++ b/gir/cairo-1.0.gir.in
+@@ -5,7 +5,7 @@
+             xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+   <package name="%CAIRO_GIR_PACKAGE%"/>
+   <namespace name="cairo" version="1.0"
+-	     shared-library="%CAIRO_SHARED_LIBRARY%"
++	     shared-library="@cairoLib@/%CAIRO_SHARED_LIBRARY%"
+ 	     c:identifier-prefixes="cairo"
+ 	     c:symbol-prefixes="cairo">
+     <record name="Context" c:type="cairo_t" foreign="1"
diff --git a/pkgs/development/libraries/gobject-introspection/default.nix b/pkgs/development/libraries/gobject-introspection/default.nix
index f629b9a8a3c3..870f77686b3e 100644
--- a/pkgs/development/libraries/gobject-introspection/default.nix
+++ b/pkgs/development/libraries/gobject-introspection/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, glib, flex, bison, pkgconfig, libffi, python
-, libintlOrEmpty, cctools
+, libintlOrEmpty, cctools, cairo
 , substituteAll, nixStoreDir ? builtins.storeDir
 }:
 # now that gobjectIntrospection creates large .gir files (eg gtk3 case)
@@ -38,10 +38,17 @@ stdenv.mkDerivation rec {
 
   setupHook = ./setup-hook.sh;
 
-  patches = stdenv.lib.singleton (substituteAll {
-    src = ./absolute_shlib_path.patch;
-    inherit nixStoreDir;
-  });
+  patches = [
+    (substituteAll {
+      src = ./absolute_shlib_path.patch;
+      inherit nixStoreDir;
+    })
+    # https://github.com/NixOS/nixpkgs/issues/34080
+    (substituteAll {
+      src = ./absolute_gir_path.patch;
+      cairoLib = "${getLib cairo}/lib";
+    })
+  ];
 
   meta = with stdenv.lib; {
     description = "A middleware layer between C libraries and language bindings";