summary refs log tree commit diff
path: root/gnu/packages/patches
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2015-01-25 21:15:13 -0500
committerMark H Weaver <mhw@netris.org>2015-01-25 21:15:13 -0500
commit5ade90ba6976a5ce8715de07344985c70c0eda8b (patch)
tree7d42618d87ebd8888223e2aa1d0cd5375b3a7712 /gnu/packages/patches
parent06aac933e1cc97781db0d28eb86b5d984099a30e (diff)
parent94987ebe136569dfe0180277384d7c04e18ab78c (diff)
downloadguix-5ade90ba6976a5ce8715de07344985c70c0eda8b.tar.gz
Merge branch 'wip-gobject-introspection'
Diffstat (limited to 'gnu/packages/patches')
-rw-r--r--gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch30
-rw-r--r--gnu/packages/patches/gobject-introspection-girepository.patch25
2 files changed, 55 insertions, 0 deletions
diff --git a/gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch b/gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch
new file mode 100644
index 0000000000..d00cc5a420
--- /dev/null
+++ b/gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch
@@ -0,0 +1,30 @@
+# Names of libraries included in typelib files are opened by dlopen.  Here we 
+# add the full path.
+#
+# This patch was provided by Luca Bruno <lucabru@src.gnome.org>  for 
+# 'gobject-introspection' 1.40.0 in Nix. 
+--- ./giscanner/utils.py.orig	2014-08-14 22:05:05.055334080 +0200
++++ ./giscanner/utils.py	2014-08-14 22:05:24.687497334 +0200
+@@ -110,17 +110,11 @@
+     if dlname is None:
+         return None
+ 
+-    # Darwin uses absolute paths where possible; since the libtool files never
+-    # contain absolute paths, use the libdir field
+-    if platform.system() == 'Darwin':
+-        dlbasename = os.path.basename(dlname)
+-        libdir = _extract_libdir_field(la_file)
+-        if libdir is None:
+-            return dlbasename
+-        return libdir + '/' + dlbasename
+-    # From the comments in extract_libtool(), older libtools had
+-    # a path rather than the raw dlname
+-    return os.path.basename(dlname)
++    dlbasename = os.path.basename(dlname)
++    libdir = _extract_libdir_field(la_file)
++    if libdir is None:
++        return dlbasename
++    return libdir + '/' + dlbasename
+ 
+ 
+ def extract_libtool(la_file):
diff --git a/gnu/packages/patches/gobject-introspection-girepository.patch b/gnu/packages/patches/gobject-introspection-girepository.patch
new file mode 100644
index 0000000000..380617f27f
--- /dev/null
+++ b/gnu/packages/patches/gobject-introspection-girepository.patch
@@ -0,0 +1,25 @@
+--- a/girepository/gitypelib.c.orig
++++ b/girepository/gitypelib.c
+@@ -2296,7 +2296,22 @@ _g_typelib_do_dlopen (GITypelib *typelib)
+         {
+           GModule *module;
+ 
++          /* 'gobject-introspection' doesn't store the path of shared
++             libraries into '.typelib' and '.gir' files.  Shared
++             libraries are searched for in the dynamic linker search
++             path.  In Guix we patch 'gobject-introspection' such that
++             it stores the absolute path of shared libraries in
++             '.typelib' and '.gir' files.  Here, in order to minimize
++             side effects, we make sure that if the library is not
++             found at the indicated path location, we try with just
++             the basename and the system dynamic library
++             infrastructure, as per default behaviour of the
++             library. */
+           module = load_one_shared_library (shlibs[i]);
++          if (module == NULL && g_path_is_absolute (shlibs[i]))
++            {
++              module = load_one_shared_library (g_basename(shlibs[i]));
++            }
+ 
+           if (module == NULL)
+             {