gnu: itstool: Add python2-libxml2 to propagated-inputs.
[jackhill/guix/guix.git] / gnu / packages / glib.scm
index 0a42c0d..88c61b6 100644 (file)
@@ -1,7 +1,8 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
+;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -22,6 +23,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
             intltool
             itstool
             libsigc++
-            glibmm))
+            glibmm
+            telepathy-glib))
 
 (define dbus
   (package
     (name "dbus")
-    (version "1.8.8")
+    (version "1.8.16")
     (source (origin
              (method url-fetch)
              (uri
@@ -62,7 +65,7 @@
                              version ".tar.gz"))
              (sha256
               (base32
-               "1zfi5grrlryppgrl23im82cqw6l9fk1wlc2ayvzx0yd994v2dayz"))
+               "01rba8mp8kqvmy6ibdmi806kjr3m14swnskqk02gyhykxxl54ybz"))
              (patches (list (search-patch "dbus-localstatedir.patch")))))
     (build-system gnu-build-system)
     (arguments
     (synopsis "Message bus for inter-process communication (IPC)")
     (description
      "D-Bus is a message bus system, a simple way for applications to
-talk to one another. In addition to interprocess communication, D-Bus
+talk to one another.  In addition to interprocess communication, D-Bus
 helps coordinate process lifecycle; it makes it simple and reliable to
 code a \"single instance\" application or daemon, and to launch
 applications and daemons on demand when their services are needed.
@@ -105,10 +108,10 @@ applications and daemons on demand when their services are needed.
 D-Bus supplies both a system daemon (for events such as \"new hardware
 device added\" or \"printer queue changed\") and a
 per-user-login-session daemon (for general IPC needs among user
-applications). Also, the message bus is built on top of a general
+applications).  Also, the message bus is built on top of a general
 one-to-one message passing framework, which can be used by any two apps
 to communicate directly (without going through the message bus
-daemon). Currently the communicating applications are on one computer,
+daemon).  Currently the communicating applications are on one computer,
 or through unencrypted TCP/IP suitable for use behind a firewall with
 shared NFS home directories.")
     (license license:gpl2+)))                     ; or Academic Free License 2.1
@@ -116,18 +119,20 @@ shared NFS home directories.")
 (define glib
   (package
    (name "glib")
-   (version "2.40.0")
+   (version "2.44.0")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/"
                                 name "/" (string-take version 4) "/"
                                 name "-" version ".tar.xz"))
             (sha256
-             (base32 "1d98mbqjmc34s8095lkw1j1bwvnnkw9581yfvjaikjvfjsaz29qd"))
+             (base32
+              "1fgmjv3yzxgbks31h42201x2izpw0sd84h8dfw0si3x00sqn5lzj"))
             (patches (list (search-patch "glib-tests-homedir.patch")
                            (search-patch "glib-tests-desktop.patch")
                            (search-patch "glib-tests-prlimit.patch")
-                           (search-patch "glib-tests-timer.patch")))))
+                           (search-patch "glib-tests-timer.patch")
+                           (search-patch "glib-tests-gapplication.patch")))))
    (build-system gnu-build-system)
    (outputs '("out"           ; everything
               "bin"           ; glib-mkenums, gtester, etc.; depends on Python
@@ -160,13 +165,18 @@ shared NFS home directories.")
                                  "glib/tests/utils.c"
                                  "tests/spawn-test.c")
                     (("/bin/sh")
-                     (string-append (assoc-ref inputs "bash") "/bin/sh"))))
+                     (string-append (assoc-ref inputs "bash") "/bin/sh")))
+
+                  ;; Disable a test that requires dbus.
+                  (substitute* "gio/tests/gdbus-serialization.c"
+                    (("g_test_add_func \\(\"/gdbus/message-serialize/double-array\", test_double_array\\);" all)
+                     (string-append "/* " all " */"))))
                 %standard-phases)
 
       ;; Note: `--docdir' and `--htmldir' are not honored, so work around it.
       #:configure-flags (list (string-append "--with-html-dir="
                                              (assoc-ref %outputs "doc")
-                                             "/share/gtk-doc"))
+                                             "/share/gtk-doc/html"))
 
       ;; In 'gio/tests', 'gdbus-test-codegen-generated.h' is #included in a
       ;; file that gets compiled possibly before it has been fully generated.
@@ -179,7 +189,11 @@ shared NFS home directories.")
     ;; by 'glib-compile-schemas'.
     (list (search-path-specification
            (variable "XDG_DATA_DIRS")
-           (directories '("share")))))
+           (files '("share")))
+          ;; To load extra gio modules from glib-networking, etc.
+          (search-path-specification
+           (variable "GIO_EXTRA_MODULES")
+           (files '("lib/gio/modules")))))
    (search-paths native-search-paths)
 
    (synopsis "Thread-safe general utility library; basis of GTK+ and GNOME")
@@ -193,17 +207,20 @@ dynamic loading, and an object system.")
 (define gobject-introspection
   (package
     (name "gobject-introspection")
-    (version "1.38.0")
+    (version "1.44.0")
     (source (origin
              (method url-fetch)
-             (uri (string-append "http://ftp.gnome.org/pub/GNOME/sources/"
-                   "gobject-introspection/"
-                   (substring version 0 (string-rindex version #\.))
-                   "/gobject-introspection-"
-                   version ".tar.xz"))
+             (uri (string-append "mirror://gnome/sources/"
+                   "gobject-introspection/" (version-major+minor version)
+                   "/gobject-introspection-" version ".tar.xz"))
              (sha256
-              (base32 "0wvxyvgajmms2bb6k3pf1rdpnd79xdxamykzvxzmcyn1ag9yax9m"))
-             (patches (list (search-patch "gobject-introspection-cc.patch")))))
+              (base32 "1b972qg2yb51sdavfvb6kc19akwc15c1bwnbg81vadxamql2q33g"))
+             (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)
     (inputs
      `(("bison" ,bison)
@@ -218,14 +235,15 @@ dynamic loading, and an object system.")
      `(;; In practice, GIR users will need libffi when using
        ;; gobject-introspection.
        ("libffi" ,libffi)))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "GI_TYPELIB_PATH")
+            (files '("lib/girepository-1.0")))))
+    (search-paths native-search-paths)
     (arguments
-     `(#:phases
-        (alist-cons-before
-         'configure 'patch-paths
-         (lambda _
-           (substitute* "giscanner/sourcescanner.py"
-             (("GUIX_GCC_PATH") (which "gcc"))))
-         %standard-phases)))
+     `(;; The patch 'gobject-introspection-absolute-shlib-path.patch' causes
+       ;; some tests to fail.
+       #:tests? #f))
     (home-page "https://wiki.gnome.org/GObjectIntrospection")
     (synopsis "Generate interface introspection data for GObject libraries")
     (description
@@ -250,20 +268,27 @@ bindings to call into the C library.")
               (base32
                "01j4yd7i84n9nk4ccs6yifg84pp68nr9by57jdbhj7dpdxf5rwk7"))))
     (build-system gnu-build-system)
+    (inputs
+     `(("file" ,file)))
     (propagated-inputs
      `(;; Propagate gettext because users expect it to be there, and so does
        ;; the `intltool-update' script.
        ("gettext" ,gnu-gettext)
 
-       ;; `file' is used by `intltool-update' too.
-       ("file" ,file)
-
        ("perl-xml-parser" ,perl-xml-parser)
        ("perl" ,perl)))
+    (arguments
+     `(#:phases (alist-cons-after
+                 'unpack 'patch-file-references
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   (let ((file (assoc-ref inputs "file")))
+                     (substitute* "intltool-update.in"
+                       (("`file") (string-append "`" file "/bin/file")))))
+                 %standard-phases)))
     (home-page "https://launchpad.net/intltool/+download")
     (synopsis "Tools to centralise translations of different file formats")
     (description
-     "intltool is a set of tools to centralise translations of many different
+     "Intltool is a set of tools to centralise translations of many different
 file formats using GNU gettext-compatible PO files.
 
 The intltool collection can be used to do these things:
@@ -275,23 +300,24 @@ The intltool collection can be used to do these things:
     source files (.c, .h) in po/$(PACKAGE).pot.
 
     Merge back the translations from .po files into .xml, .desktop and
-    oaf files. This merge step will happen at build resp. installation time.")
+    oaf files.  This merge step will happen at build resp. installation time.")
     (license license:gpl2+)))
 
 (define itstool
   (package
     (name "itstool")
-    (version "1.2.0")
+    (version "2.0.2")
     (source (origin
              (method url-fetch)
              (uri (string-append "http://files.itstool.org/itstool/itstool-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "1akq75aflihm3y7js8biy7b5mw2g11vl8yq90gydnwlwp0zxdzj6"))))
+               "0fh34wi52i0qikgvlmrcpf1vx6gc1xqdad4539l4d9hikfsrz45z"))))
     (build-system gnu-build-system)
     (propagated-inputs
      `(("libxml2" ,libxml2)
+       ("python2-libxml2" ,python2-libxml2)
        ("python-2" ,python-2)))
     (home-page "http://www.itstool.org")
     (synopsis "Tool to translate XML documents with PO files")
@@ -318,7 +344,7 @@ translated.")
 (define dbus-glib
   (package
     (name "dbus-glib")
-    (version "0.100.2")
+    (version "0.104")
     (source (origin
              (method url-fetch)
              (uri
@@ -326,12 +352,13 @@ translated.")
                              version ".tar.gz"))
              (sha256
               (base32
-               "1ibav91yg70f2l3l18cr0hf4mna1h9d4mrg0c60w4l8zjbd45fx5"))))
+               "1xi1v1msz75qs0s4lkyf1psrksdppa3hwkg0mznc6gpw5flg3hdz"))))
     (build-system gnu-build-system)
-    (inputs
+    (propagated-inputs ; according to dbus-glib-1.pc
      `(("dbus" ,dbus)
-       ("expat" ,expat)
        ("glib" ,glib)))
+    (inputs
+     `(("expat" ,expat)))
     (native-inputs
      `(("glib" ,glib "bin")
        ("pkg-config" ,pkg-config)))
@@ -345,21 +372,22 @@ by GDBus included in Glib.")
 (define libsigc++
   (package
     (name "libsigc++")
-    (version "2.3.1")
+    (version "2.4.1")
     (source (origin
              (method url-fetch)
-             (uri (string-append "mirror://gnome/sources/libsigc++/2.3/libsigc++-"
-                                 version ".tar.xz"))
+             (uri (string-append "mirror://gnome/sources/libsigc++/"
+                                 (version-major+minor version) "/"
+                                 name "-" version ".tar.xz"))
              (sha256
               (base32
-               "14q3sq6d43f6wfcmwhw4v1aal4ba0h5x9v6wkxy2dnqznd95il37"))))
+               "1v0rvkzglzmf67y9nkcppwjwi68j1cy5yhldvcq7xrv8594l612l"))))
     (build-system gnu-build-system)
-    (inputs `(("pkg-config" ,pkg-config)))
-    (native-inputs `(("m4" ,m4)))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("m4" ,m4)))
     (home-page "http://libsigc.sourceforge.net/")
     (synopsis "Type-safe callback system for standard C++")
     (description
-     "libsigc++ implements a type-safe callback system for standard C++.  It
+     "Libsigc++ implements a type-safe callback system for standard C++.  It
 allows you to define signals and to connect those signals to any callback
 function, either global or a member function, regardless of whether it is
 static or virtual.
@@ -371,14 +399,15 @@ has an ease of use unmatched by other C++ callback libraries.")
 (define glibmm
   (package
     (name "glibmm")
-    (version "2.37.7")
+    (version "2.44.0")
     (source (origin
              (method url-fetch)
-             (uri (string-append "mirror://gnome/sources/glibmm/2.37/glibmm-"
-                                 version ".tar.xz"))
+             (uri (string-append "mirror://gnome/sources/glibmm/"
+                                 (version-major+minor version)
+                                 "/glibmm-" version ".tar.xz"))
              (sha256
               (base32
-               "0mms4yl5izsya1135772z4jkb184ss86x0wlg6dm7yvwxvb6bjlw"))))
+               "1a1fczy7hcpn24fglyn4i79f4yjc8s50is70q03mb294bm1c02hv"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases (alist-cons-before
@@ -397,14 +426,139 @@ has an ease of use unmatched by other C++ callback libraries.")
                      (("Gio::init.*$")
                       "return 77;\n")))
                  %standard-phases)))
-    (inputs `(("pkg-config" ,pkg-config)
-              ("glib" ,glib "bin")))
+    (native-inputs `(("pkg-config" ,pkg-config)
+                     ("glib" ,glib "bin")))
     (propagated-inputs
      `(("libsigc++" ,libsigc++)
        ("glib" ,glib)))
     (home-page "http://gtkmm.org/")
     (synopsis "C++ interface to the GLib library")
     (description
-     "glibmm provides a C++ programming interface to the part of GLib that are
+     "Glibmm provides a C++ programming interface to the part of GLib that are
 useful for C++.")
     (license license:lgpl2.1+)))
+
+(define-public python2-pygobject-2
+  (package
+    (name "python2-pygobject")
+    ;; This was the last version to declare the 2.0 platform number, i.e. its
+    ;; pkg-config files were named pygobject-2.0.pc
+    (version "2.28.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://gnome/sources/pygobject/"
+                           (version-major+minor version)
+                           "/pygobject-" version ".tar.xz"))
+       (sha256
+        (base32
+         "1f5dfxjnil2glfwxnqr14d2cjfbkghsbsn8n04js2c2icr7iv2pv"))
+       (patches
+        (list (search-patch
+               "python2-pygobject-2-gi-info-type-error-domain.patch")))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("which" ,which)
+       ("glib-bin" ,glib "bin")         ;for tests: glib-compile-schemas
+       ("pkg-config" ,pkg-config)
+       ("dbus" ,dbus)))                 ;for tests
+    (inputs
+     `(("python" ,python-2)
+       ("glib"   ,glib)
+       ("python2-pycairo" ,python2-pycairo)
+       ("gobject-introspection" ,gobject-introspection)))
+    (propagated-inputs
+     `(("libffi" ,libffi)))             ;mentioned in pygobject-2.0.pc
+    (arguments
+     `(#:tests? #f                      ;segfaults during tests
+       #:configure-flags '("LIBS=-lcairo-gobject")))
+    (home-page "https://pypi.python.org/pypi/PyGObject")
+    (synopsis "Python bindings for GObject")
+    (description
+     "Python bindings for GLib, GObject, and GIO.")
+    (license license:lgpl2.1+)))
+
+(define-public python-pygobject
+  (package
+    (name "python-pygobject")
+    (version "3.16.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://gnome/sources/pygobject/"
+                           (version-major+minor version)
+                           "/pygobject-" version ".tar.xz"))
+       (sha256
+        (base32
+         "1hqyma73w0lnjcgx68kawhnq84aq92xlkdqphrlc2ppia38dm5kx"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("which" ,which)
+       ("glib-bin" ,glib "bin")         ;for tests: glib-compile-schemas
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("python" ,python)
+       ("glib"   ,glib)
+       ("python-pycairo" ,python-pycairo)
+       ("gobject-introspection" ,gobject-introspection)
+       ("libffi" ,libffi)))
+    (arguments
+     ;; TODO: failing tests: test_native_calls_async
+     ;; test_native_calls_async_errors test_native_calls_sync
+     ;; test_native_calls_sync_errors test_python_calls_async
+     ;; test_python_calls_async_error test_python_calls_async_error_result
+     ;; test_python_calls_sync test_python_calls_sync_errors
+     ;; test_python_calls_sync_noargs test_callback_user_data_middle_none
+     ;; test_callback_user_data_middle_single
+     ;; test_callback_user_data_middle_tuple
+     '(#:tests? #f))
+    (home-page "https://live.gnome.org/PyGObject")
+    (synopsis "Python bindings for GObject")
+    (description
+     "Python bindings for GLib, GObject, and GIO.")
+    (license license:lgpl2.1+)))
+
+(define-public python2-pygobject
+  (package (inherit python-pygobject)
+    (name "python2-pygobject")
+    (inputs
+     `(("python" ,python-2)
+       ("glib" ,glib)
+       ("python-pycairo" ,python2-pycairo)
+       ("gobject-introspection" ,gobject-introspection)
+       ("libffi" ,libffi)))))
+
+(define telepathy-glib
+  (package
+    (name "telepathy-glib")
+    (version "0.24.1")
+    (source
+     (origin
+      (method url-fetch)
+       (uri
+        (string-append
+         "http://telepathy.freedesktop.org/releases/telepathy-glib/"
+         "telepathy-glib-" version ".tar.gz"))
+       (sha256
+        (base32
+         "1symyzbjmxvksn2ifdkk50lafjm2llf2sbmky062gq2pz3cg23cy"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("glib" ,glib "bin") ; uses glib-mkenums
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-2)))
+    (inputs
+     `(("dbus" ,dbus)
+       ("dbus-glib" ,dbus-glib)
+       ("glib" ,glib)
+       ("gobject-introspection" ,gobject-introspection)
+       ("libxslt" ,libxslt)))
+    (home-page "http://telepathy.freedesktop.org/wiki/")
+    (synopsis "GLib Real-time communications framework over D-Bus")
+    (description "Telepathy is a flexible, modular communications framework
+that enables real-time communication over D-Bus via pluggable protocol
+backends.  Telepathy is a communications service that can be accessed by
+many applications simultaneously.
+
+This package provides the library for GLib applications.")
+    (license license:lgpl2.1+)))