diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index 3be03278c8..0d0f186aee 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -40,6 +40,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 +49,9 @@ gobject-introspection dbus-glib intltool - itstool)) + itstool + libsigc++ + glibmm)) (define dbus (package @@ -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+)))