hydra: Fix typo in core package list.
[jackhill/guix/guix.git] / gnu / packages / glib.scm
index 3be0327..0560915 100644 (file)
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
 ;;;
@@ -29,8 +29,7 @@
   #:use-module (gnu packages bison)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages flex)
-  #:use-module ((gnu packages gettext)
-                #:renamer (symbol-prefix-proc 'guix:))
+  #:use-module (gnu packages gettext)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages libffi)
   #:use-module (gnu packages perl)
@@ -40,6 +39,7 @@
   #:use-module (gnu packages bash)
   #:use-module (gnu packages file)
   #:use-module (gnu packages xorg)
+  #:use-module (gnu packages m4)
 
   ;; Export variables up-front to allow circular dependency with the 'xorg'
   ;; module.
@@ -48,7 +48,9 @@
             gobject-introspection
             dbus-glib
             intltool
-            itstool))
+            itstool
+            libsigc++
+            glibmm))
 
 (define dbus
   (package
@@ -61,7 +63,8 @@
                              version ".tar.gz"))
              (sha256
               (base32
-               "1wacqyfkcpayg7f8rvx9awqg275n5pksxq5q7y21lxjx85x6pfjz"))))
+               "1wacqyfkcpayg7f8rvx9awqg275n5pksxq5q7y21lxjx85x6pfjz"))
+             (patches (list (search-patch "dbus-localstatedir.patch")))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags (list ;; Install the system bus socket under /var.
                                ;; config.
                                ;; "--sysconfdir=/etc"
 
-                               "--with-session-socket-dir=/tmp")
-       #:patches (list (assoc-ref %build-inputs "patch/localstatedir"))))
+                               "--with-session-socket-dir=/tmp")))
     (inputs
      `(("expat" ,expat)
        ("pkg-config" ,pkg-config)
-       ("patch/localstatedir"
-        ,(search-patch "dbus-localstatedir.patch"))
 
        ;; Add a dependency on libx11 so that 'dbus-launch' has support for
        ;; '--autolaunch'.
@@ -106,40 +106,35 @@ shared NFS home directories.")
 (define glib
   (package
    (name "glib")
-   (version "2.38.0")
+   (version "2.39.1")
    (source (origin
             (method url-fetch)
             (uri (string-append "mirror://gnome/sources/"
                                 name "/" (string-take version 4) "/"
                                 name "-" version ".tar.xz"))
             (sha256
-             (base32 "0cpzqadqk6z6bmb79p04pykxc8x57rvshh33414cnk41bvgaf4vm"))))
+             (base32 "0lqi6z47068vgh91fm59jn0kq969wf3g2q8k4m33jsb0amprg36h"))
+            (patches (list (search-patch "glib-tests-homedir.patch")
+                           (search-patch "glib-tests-desktop.patch")
+                           (search-patch "glib-tests-prlimit.patch")
+                           (search-patch "glib-tests-newnet.patch")))))
    (build-system gnu-build-system)
    (outputs '("out"                        ; everything
               "doc"))                      ; 20 MiB of GTK-Doc reference
    (inputs
     `(("coreutils" ,coreutils)
-      ("gettext" ,guix:gettext)
       ("libffi" ,libffi)
+      ("zlib" ,zlib)
+      ("tzdata" ,tzdata)))     ; for tests/gdatetime.c
+   (native-inputs
+     `(("gettext" ,gnu-gettext)
+      ("dbus" ,dbus)                              ; for GDBus tests
       ("pkg-config" ,pkg-config)
       ("python" ,python-wrapper)
-      ("zlib" ,zlib)
       ("perl" ,perl)                              ; needed by GIO tests
-      ("dbus" ,dbus)                              ; for GDBus tests
-      ("bash" ,bash)
-      ("tzdata" ,tzdata)                          ; for tests/gdatetime.c
-
-      ("patch/tests-homedir"
-       ,(search-patch "glib-tests-homedir.patch"))
-      ("patch/tests-desktop"
-       ,(search-patch "glib-tests-desktop.patch"))
-      ("patch/tests-prlimit"
-       ,(search-patch "glib-tests-prlimit.patch"))))
+      ("bash" ,bash)))
    (arguments
-    '(#:patches (list (assoc-ref %build-inputs "patch/tests-homedir")
-                      (assoc-ref %build-inputs "patch/tests-desktop")
-                      (assoc-ref %build-inputs "patch/tests-prlimit"))
-      #:phases (alist-cons-before
+    '(#:phases (alist-cons-before
                 'build 'pre-build
                 (lambda* (#:key inputs outputs #:allow-other-keys)
                   ;; For tests/gdatetime.c.
@@ -160,7 +155,11 @@ shared NFS home directories.")
       ;; 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"))
+
+      ;; In 'gio/tests', 'gdbus-test-codegen-generated.h' is #included in a
+      ;; file that gets compiled possibly before it has been fully generated.
+      #:parallel-tests? #f))
    (synopsis "Thread-safe general utility library; basis of GTK+ and GNOME")
    (description
     "GLib provides data structure handling for C, portability wrappers,
@@ -181,24 +180,28 @@ dynamic loading, and an object system.")
                    "/gobject-introspection-"
                    version ".tar.xz"))
              (sha256
-              (base32 "0wvxyvgajmms2bb6k3pf1rdpnd79xdxamykzvxzmcyn1ag9yax9m"))))
+              (base32 "0wvxyvgajmms2bb6k3pf1rdpnd79xdxamykzvxzmcyn1ag9yax9m"))
+             (patches (list (search-patch "gobject-introspection-cc.patch")))))
     (build-system gnu-build-system)
     (inputs
      `(("bison" ,bison)
        ("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
          'configure
          (lambda* (#:key #:allow-other-keys #:rest args)
           (let ((configure (assoc-ref %standard-phases 'configure)))
-           ;; giscanner/sourcescanner.py looks for 'CC', let's set it here.
-           (setenv "CC" "gcc")
+           (substitute* "giscanner/sourcescanner.py"
+             (("GUIX_GCC_PATH") (which "gcc")))
            (apply configure args)))
          %standard-phases)))
     (home-page "https://wiki.gnome.org/GObjectIntrospection")
@@ -228,7 +231,7 @@ bindings to call into the C library.")
     (propagated-inputs
      `(;; Propagate gettext because users expect it to be there, and so does
        ;; the `intltool-update' script.
-       ("gettext" ,guix:gettext)
+       ("gettext" ,gnu-gettext)
 
        ;; `file' is used by `intltool-update' too.
        ("file" ,file)
@@ -314,3 +317,69 @@ translated.")
      "GLib bindings for D-Bus.  The package is obsolete and superseded
 by GDBus included in Glib.")
     (license license:gpl2)))                     ; or Academic Free License 2.1
+
+(define libsigc++
+  (package
+    (name "libsigc++")
+    (version "2.3.1")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "mirror://gnome/sources/libsigc++/2.3/libsigc++-"
+                                 version ".tar.xz"))
+             (sha256
+              (base32
+               "14q3sq6d43f6wfcmwhw4v1aal4ba0h5x9v6wkxy2dnqznd95il37"))))
+    (build-system gnu-build-system)
+    (inputs `(("pkg-config" ,pkg-config)))
+    (native-inputs `(("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
+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.
+
+It also contains adaptor classes for connection of dissimilar callbacks and
+has an ease of use unmatched by other C++ callback libraries.")
+    (license license:lgpl2.1+)))
+
+(define glibmm
+  (package
+    (name "glibmm")
+    (version "2.37.7")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "mirror://gnome/sources/glibmm/2.37/glibmm-"
+                                 version ".tar.xz"))
+             (sha256
+              (base32
+               "0mms4yl5izsya1135772z4jkb184ss86x0wlg6dm7yvwxvb6bjlw"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases (alist-cons-before
+                 'build 'pre-build
+                 (lambda _
+                   ;; This test uses /etc/fstab as an example file to read
+                   ;; from; choose a better example.
+                   (substitute* "tests/giomm_simple/main.cc"
+                     (("/etc/fstab")
+                      (string-append (getcwd)
+                                     "/tests/giomm_simple/main.cc")))
+
+                   ;; This test does a DNS lookup, and then expects to be able
+                   ;; to open a TLS session; just skip it.
+                   (substitute* "tests/giomm_tls_client/main.cc"
+                     (("Gio::init.*$")
+                      "return 77;\n")))
+                 %standard-phases)))
+    (inputs `(("pkg-config" ,pkg-config)))
+    (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
+useful for C++.")
+    (license license:lgpl2.1+)))