guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 2/6 v3] gnu: gtk+: enable introspection.


From: Cyril Roelandt
Subject: [PATCH 2/6 v3] gnu: gtk+: enable introspection.
Date: Wed, 11 Dec 2013 00:43:11 +0100

* gnu/packages/gtk.scm (atk, gdk-pixbuf, gtk+, pango): enable introspection
* guix/build/gnome.scm: New file.
---
 Makefile.am           |  1 +
 gnu/packages/glib.scm |  5 ++++-
 gnu/packages/gtk.scm  | 43 +++++++++++++++++++++++++++++++++++++++----
 guix/build/gnome.scm  | 31 +++++++++++++++++++++++++++++++
 4 files changed, 75 insertions(+), 5 deletions(-)
 create mode 100644 guix/build/gnome.scm

diff --git a/Makefile.am b/Makefile.am
index a99f8c1..13088ff 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -52,6 +52,7 @@ MODULES =                                     \
   guix/ui.scm                                  \
   guix/build/download.scm                      \
   guix/build/cmake-build-system.scm            \
+  guix/build/gnome.scm                         \
   guix/build/gnu-build-system.scm              \
   guix/build/gnu-dist.scm                      \
   guix/build/linux-initrd.scm                  \
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 1ff873d..185b11a 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -184,9 +184,12 @@ dynamic loading, and an object system.")
        ("cairo" ,cairo)
        ("flex" ,flex)
        ("glib" ,glib)
-       ("libffi" ,libffi)
        ("pkg-config" ,pkg-config)
        ("python-2" ,python-2)))
+    (propagated-inputs
+     `(;; In practice, GIR users will need libffi when using
+       ;; gobject-introspection.
+       ("libffi" ,libffi)))
     (arguments
      `(#:phases
         (alist-replace
diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm
index 5aa95fe..f701122 100644
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@ -54,6 +54,7 @@
               "1c2hbg66wfvibsz2ia0ri48yr62751fn950i97c53j3b0fjifsb3"))))
    (build-system gnu-build-system)
    (inputs `(("glib" ,glib)
+             ("gobject-introspection" ,gobject-introspection)
              ("pkg-config" ,pkg-config)))
    (synopsis "GNOME accessibility toolkit")
    (description
@@ -153,7 +154,8 @@ affine transformation (scale, rotation, shear, etc.)")
     `(("cairo" ,cairo)
       ("harfbuzz" ,harfbuzz)))
    (inputs
-    `(("pkg-config" ,pkg-config)
+    `(("gobject-introspection" ,gobject-introspection)
+      ("pkg-config" ,pkg-config)
       ("zlib" ,zlib)))
    (synopsis "GNOME text and font handling library")
    (description
@@ -231,6 +233,7 @@ printing and other features typical of a source code 
editor.")
    (build-system gnu-build-system)
    (inputs
     `(("glib" ,glib)
+      ("gobject-introspection", gobject-introspection)
       ("libjpeg" ,libjpeg)
       ("libpng" ,libpng)
       ("libtiff" ,libtiff)
@@ -359,16 +362,23 @@ application suites.")
       ("libxinerama" ,libxinerama)
       ("pango" ,pango)))
    (inputs
-    `(("libxml2" ,libxml2)
+    `(("gobject-introspection" ,gobject-introspection)
+      ("libxml2" ,libxml2)
       ("perl" ,perl)
       ("pkg-config" ,pkg-config)
       ("python-wrapper" ,python-wrapper)
       ("xorg-server" ,xorg-server)))
    (arguments
-    `(#:phases
+    `(#:modules ((guix build gnome)
+                 (guix build gnu-build-system)
+                 (guix build utils))
+      #:imported-modules ((guix build gnome)
+                          (guix build gnu-build-system)
+                          (guix build utils))
+      #:phases
       (alist-replace
        'configure
-       (lambda* (#:key #:allow-other-keys #:rest args)
+       (lambda* (#:key inputs #:allow-other-keys #:rest args)
          (let ((configure (assoc-ref %standard-phases 'configure)))
            ;; Disable most tests, failing in the chroot with the message:
            ;; D-Bus library appears to be incorrectly set up; failed to read
@@ -377,6 +387,31 @@ application suites.")
            ;; See the manual page for dbus-uuidgen to correct this issue.
            (substitute* "testsuite/Makefile.in"
             (("SUBDIRS = gdk gtk a11y css reftests") "SUBDIRS = gdk"))
+
+          ;; We need to tell GIR where it can find some of the required .gir
+           ;; files.
+           (substitute* "gdk/Makefile.in"
+            (("--add-include-path=../gdk")
+             (string-append
+              "--add-include-path=../gdk"
+              " --add-include-path=" (gir-directory inputs "gdk-pixbuf")
+              " --add-include-path=" (gir-directory inputs "pango")))
+            (("--includedir=\\.")
+             (string-append "--includedir=."
+              " --includedir=" (gir-directory inputs "gdk-pixbuf")
+              " --includedir=" (gir-directory inputs "pango"))))
+
+           (substitute* "gtk/Makefile.in"
+            (("--add-include-path=../gdk")
+             (string-append "--add-include-path=../gdk"
+              " --add-include-path=" (gir-directory inputs "atk")
+              " --add-include-path=" (gir-directory inputs "gdk-pixbuf")
+              " --add-include-path=" (gir-directory inputs "pango")))
+            (("--includedir=../gdk")
+             (string-append "--includedir=../gdk"
+              " --includedir=" (gir-directory inputs "atk")
+              " --includedir=" (gir-directory inputs "gdk-pixbuf")
+              " --includedir=" (gir-directory inputs "pango"))))
            (apply configure args)))
        %standard-phases)))))
 
diff --git a/guix/build/gnome.scm b/guix/build/gnome.scm
new file mode 100644
index 0000000..cac4de8
--- /dev/null
+++ b/guix/build/gnome.scm
@@ -0,0 +1,31 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2013 Cyril Roelandt <address@hidden>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (guix build gnome)
+  #:export (gir-directory))
+
+;;; Commentary:
+;;;
+;;; Tools commonly used when building GNOME programs.
+;;;
+;;; Code:
+
+(define (gir-directory inputs pkg-name)
+  "Return the GIR directory name for PKG-NAME found from INPUTS."
+  (string-append (assoc-ref inputs pkg-name)
+                 "/share/gir-1.0"))
-- 
1.8.4.rc3




reply via email to

[Prev in Thread] Current Thread [Next in Thread]