On Tue, Jan 20, 2015 at 6:52 PM, Federico Beffa <be...@ieee.org> wrote:
> Please find attached a patch for libpeas.
>
> This package, up to now, is the only one experiencing some
> side-effects from the gobject-introspection patch that we adopted from
> nix and which installs the full path name of shared libraries in
> .typelib and .gir files.

I find the above side-effect disturbing. For this reason I would like
to propose an additional patch to 'gobject-introspection'. When
'gobject-introspection' consults a .typelib file (due to the patch we
introduced earlier) it will find a reference to a shared library which
includes the absolute path. With the new patch, if the library is not
found at the absolute path, then it discards the path and tries to
look for the library using the OS dynamic library loading
infrastructure (which is the normal behavior of
'gobject-introspection').

With this change 'libpeas' (and all its dependencies) passes all tests.

Regards,
Fede
From 58d32305b609eccf54de620398a54457af0af0c5 Mon Sep 17 00:00:00 2001
From: Federico Beffa <be...@fbengineering.ch>
Date: Tue, 20 Jan 2015 18:43:55 +0100
Subject: [PATCH 1/2] gnu: libpeas: Update to 1.12.1, add 'pre-build phase.

* gnu/packages/gnome.scm (libpeas): Update to version 1.12.1 and add
  'pre-build phase.
---
 gnu/packages/gnome.scm | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index acc964e..0f33880 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2014 Ludovic Courtès <l...@gnu.org>
 ;;; Copyright © 2014 Ian Denhardt <i...@zenhack.net>
 ;;; Copyright © 2014 Eric Bavier <bav...@member.fsf.org>
+;;; Copyright © 2014, 2015 Federico Beffa <be...@fbengineering.ch>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -427,7 +428,7 @@ some form of information without getting in the user's way.")
 (define-public libpeas
   (package
     (name "libpeas")
-    (version "1.9.0")
+    (version "1.12.1")
     (source
      (origin
       (method url-fetch)
@@ -436,7 +437,7 @@ some form of information without getting in the user's way.")
                           name "-" version ".tar.xz"))
       (sha256
        (base32
-        "13fzyzv6c0cfdj83z1s16lv8k997wpnzyzr0wfwcfkcmvz64g1q0"))))
+        "1mjjjjwphc83bjznmbsm7x0jg7ql261nys6qnl7mi0nkr4qvw476"))))
     (build-system gnu-build-system)
     (inputs
      `(("atk" ,atk)
@@ -449,6 +450,13 @@ some form of information without getting in the user's way.")
        ("glib:bin" ,glib "bin")
        ("gobject-introspection" ,gobject-introspection)
        ("intltool" ,intltool)))
+    (arguments
+     `(#:phases 
+       (alist-cons-before
+        'build 'pre-build
+        (lambda* _
+          (setenv "CC" "gcc"))
+        %standard-phases)))
     (home-page "https://wiki.gnome.org/Libpeas";)
     (synopsis "GObject plugin system")
     (description
@@ -457,7 +465,6 @@ every application the chance to assume its own extensibility.  It also has a
 set of features including, but not limited to: multiple extension points; on
 demand (lazy) programming language support for C, Python and JS; simplicity of
 the API")
-
     (license license:lgpl2.0+)))
 
 (define-public gtkglext
-- 
1.8.4

From b90d70f312e9c298232d76f29099002f359f4468 Mon Sep 17 00:00:00 2001
From: Federico Beffa <be...@fbengineering.ch>
Date: Wed, 21 Jan 2015 13:46:52 +0100
Subject: [PATCH 2/2] gnu: gobject-introspection: Add patch.

* gnu/packages/glib.scm (gobject-introspection): Add patch
  gobject-introspection-girepository.patch.
---
 gnu/packages/glib.scm                                   |  2 ++
 .../patches/gobject-introspection-girepository.patch    | 17 +++++++++++++++++
 2 files changed, 19 insertions(+)
 create mode 100644 gnu/packages/patches/gobject-introspection-girepository.patch

diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 8294c4d..39fc736 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -213,6 +213,8 @@ dynamic loading, and an object system.")
               (base32 "1xwm7wmr9r9wp6xljb3bckx3a4siybavaq39w46ly7gpskxfv8iv"))
              (patches (list 
                        (search-patch "gobject-introspection-cc.patch")
+                       (search-patch
+                        "gobject-introspection-girepository.patch")
                        (search-patch 
                         "gobject-introspection-absolute-shlib-path.patch")))))
     (build-system gnu-build-system)
diff --git a/gnu/packages/patches/gobject-introspection-girepository.patch b/gnu/packages/patches/gobject-introspection-girepository.patch
new file mode 100644
index 0000000..5f1905f
--- /dev/null
+++ b/gnu/packages/patches/gobject-introspection-girepository.patch
@@ -0,0 +1,17 @@
+--- gobject-introspection-1.42.0/girepository/gitypelib.c.orig	2015-01-20 20:37:43.706684642 +0100
++++ gobject-introspection-1.42.0/girepository/gitypelib.c	2015-01-21 09:19:40.927751124 +0100
+@@ -2296,7 +2296,14 @@
+         {
+           GModule *module;
+ 
++          /* We expect an absolute directory name.  If the library is
++             not found, try with just the basename and the system
++             dynamic library infrastructure. */
+           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)
+             {
-- 
1.8.4

Reply via email to