summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu-system.am1
-rw-r--r--gnu/packages/messaging.scm97
-rw-r--r--gnu/packages/patches/pidgin-add-search-path.patch25
3 files changed, 122 insertions, 1 deletions
diff --git a/gnu-system.am b/gnu-system.am
index 4b1486eeee..372edc1166 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -578,6 +578,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/perl-net-ssleay-disable-ede-test.patch	\
   gnu/packages/patches/perl-no-sys-dirs.patch			\
   gnu/packages/patches/perl-tk-x11-discover.patch		\
+  gnu/packages/patches/pidgin-add-search-path.patch		\
   gnu/packages/patches/pingus-sdl-libs-config.patch		\
   gnu/packages/patches/plotutils-libpng-jmpbuf.patch		\
   gnu/packages/patches/polkit-drop-test.patch			\
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 9477b25301..bb75dd43b6 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -21,17 +21,29 @@
 
 (define-module (gnu packages messaging)
   #:use-module ((guix licenses)
-                #:select (gpl2+ gpl2 lgpl2.1 bsd-2))
+                #:select (gpl2+ gpl2 lgpl2.1 lgpl2.0+ bsd-2 non-copyleft))
+  #:use-module (guix utils)
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system glib-or-gtk)
   #:use-module (gnu packages)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages avahi)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages cyrus-sasl)
+  #:use-module (gnu packages databases)
+  #:use-module (gnu packages doxygen)
   #:use-module (gnu packages enchant)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages libcanberra)
+  #:use-module (gnu packages libidn)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages ncurses)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages python)
@@ -224,4 +236,87 @@ networks.  It is easy to configure, can cope with dynamic IP addresses, and
 supports IPv6, SSL-protected connections as well as PAM for authentication.")
     (license gpl2+)))
 
+(define-public pidgin
+  (package
+    (name "pidgin")
+    (version "2.10.11")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/pidgin/Pidgin/"
+                           version "/" name "-" version ".tar.bz2"))
+       (sha256
+        (base32
+         "01s0q30qrjlzj7kkz6f8lvrwsdd55a9yjh2xjjwyyxzw849j3bpj"))
+       (patches (list (search-patch "pidgin-add-search-path.patch")))))
+    (build-system glib-or-gtk-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("check" ,check)
+       ("intltool" ,intltool)
+       ("gconf" ,gconf)
+       ("python" ,python-2)
+       ("doxygen" ,doxygen)))
+    (inputs
+     `(("gtk+" ,gtk+-2)
+       ("libgcrypt" ,libgcrypt)
+       ("gnutls" ,gnutls)
+       ("cyrus-sasl" ,cyrus-sasl)
+       ("dbus" ,dbus)
+       ("dbus-glib" ,dbus-glib)
+       ("python2-dbus" ,python2-dbus)
+       ("libidn" ,libidn)
+       ("libltdl" ,libltdl)
+       ("libxml2" ,libxml2)
+       ;; TODO: gstreamer: patches needed to support gstreamer-1.0 or later
+       ;; TODO: farstream
+       ;; TODO: meanwhile
+       ;; TODO: network-manager
+       ;; TODO: gtkspell
+       ;; TODO: libxephyr
+       ;; TODO: libgadu
+       ("libxslt" ,libxslt)
+       ("avahi" ,avahi)
+       ("ncurses" ,ncurses)
+       ("sqlite" ,sqlite)
+       ("libice" ,libice)
+       ("libsm" ,libsm)
+       ("libxscrnsaver" ,libxscrnsaver)
+       ("startup-notification" ,startup-notification)))
+    (arguments
+     `(#:configure-flags
+       (list "--disable-gtkspell"
+             "--disable-tcl"
+             "--disable-meanwhile"
+             "--disable-nm"  ; XXX remove when we have network-manager
+             "--disable-vv"  ; XXX remove when we have farstream and gstreamer
+             "--disable-gstreamer" ; XXX patches needed to support gstreamer-1.0
+             "--enable-cyrus-sasl"
+             (string-append "--with-ncurses-headers="
+                            (assoc-ref %build-inputs "ncurses")
+                            "/include"))))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "PURPLE_PLUGIN_PATH")
+            (files (list (string-append "lib/purple-"
+                                        (version-prefix version 1))
+                         "lib/pidgin")))))
+    (home-page "http://www.pidgin.im/")
+    (synopsis "Graphical multi-protocol instant messaging client")
+    (description
+     "Pidgin is a modular instant messaging client that supports many popular
+chat protocols.")
+    (license
+     (list
+      gpl2+    ; Most of the code
+      lgpl2.1  ; GG protocol plugin (libpurple/protocols/gg/lib)
+      lgpl2.0+ ; OSCAR protocol plugin (libpurple/protocols/oscar)
+      ;; The following licenses cover the zephyr protocol plugin:
+      (non-copyleft
+       "file://libpurple/protocols/zephyr/mit-copyright.h"
+       "See libpurple/protocols/zephyr/mit-copyright.h in the distribution.")
+      (non-copyleft
+       "file://libpurple/protocols/zephyr/mit-sipb-copyright.h"
+       "See libpurple/protocols/zephyr/mit-sipb-copyright.h in the distribution.")))))
+
 ;;; messaging.scm ends here
diff --git a/gnu/packages/patches/pidgin-add-search-path.patch b/gnu/packages/patches/pidgin-add-search-path.patch
new file mode 100644
index 0000000000..00eb9e4ca6
--- /dev/null
+++ b/gnu/packages/patches/pidgin-add-search-path.patch
@@ -0,0 +1,25 @@
+Support the PURPLE_PLUGIN_PATH environment variable.  This patch is based on
+one from Nixpkgs, but properly handles the case where that variable is unset.
+
+--- pidgin-2.10.11/libpurple/plugin.c.orig	2014-11-23 11:41:25.000000000 -0500
++++ pidgin-2.10.11/libpurple/plugin.c	2015-08-04 14:31:02.257366144 -0400
+@@ -1178,8 +1178,19 @@
+ void
+ purple_plugins_init(void) {
+ 	void *handle = purple_plugins_get_handle();
++	const gchar *purple_plugin_path;
+ 
+ 	purple_plugins_add_search_path(LIBDIR);
++	purple_plugin_path = g_getenv("PURPLE_PLUGIN_PATH");
++	if (purple_plugin_path && *purple_plugin_path) {
++		gchar **paths = g_strsplit(purple_plugin_path, ":", -1);
++		if (paths) {
++			gchar **p;
++			for (p = paths; *p; ++p)
++				if (**p) purple_plugins_add_search_path(*p);
++		}
++		g_strfreev(paths);
++	}
+ 
+ 	purple_signal_register(handle, "plugin-load",
+ 						 purple_marshal_VOID__POINTER,