diff mbox series

[bug#49198,core-updates] fix gobject-introspection cairo library path

Message ID ruSvaOflk1qv2WgsTJJTOaemFjt0USNbYWFV5LiIB_QxUHIv3Fu8FeyBpW6yaKb_ee50dB9WcQzR-AXPIEOyaCmybp5P_VcbItzHIzdoltY=@protonmail.com
State New
Headers show
Series [bug#49198,core-updates] fix gobject-introspection cairo library path | expand


Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

John Kehayias June 23, 2021, 9:32 p.m. UTC

This is a patch to fix issue #49122 (gobject-introspection and not finding cairo). The patch changes the cairo typelib file to include the absolute path to the cairo patch (as required by libraries that use introspection via gir) by modifying the input file. I believe this is exactly what is done in nix to solve the same issue, see https://github.com/NixOS/nixpkgs/issues/34080 for their discussion and fix.

I believe this necessitates building with a cairo dependency to have the library path available, but correct me if I'm wrong as I'm new to guix. I've used cairo-sans-poppler to avoid the dependency cycle. I've tested this builds and solves issue #49122 for me.

diff mbox series


diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 206222b578..3434e699d2 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -496,6 +496,14 @@  dynamic loading, and an object system.")
        (modify-phases %standard-phases
+         (add-after 'unpack 'patch
+           ;; Patch for cairo library location
+           (lambda* (#:key inputs #:allow-other-keys)
+              (substitute* "gir/cairo-1.0.gir.in"
+                (("shared-library=\"@CAIRO_SHARED_LIBRARY@\"")
+                 (string-append "shared-library=\""
+                                (assoc-ref inputs "cairo")
+                                "/lib/@CAIRO_SHARED_LIBRARY@\"")))))
          (add-after 'unpack 'do-not-use-/usr/bin/env
            (lambda _
              (substitute* "tools/g-ir-tool-template.in"
@@ -507,6 +515,7 @@  dynamic loading, and an object system.")
        ("pkg-config" ,pkg-config)))
      `(("bison" ,bison)
+       ("cairo" ,cairo-sans-poppler) ; break dependency loop via poppler
        ("flex" ,flex)
        ("glib" ,glib)
        ("python" ,python-wrapper)