summaryrefslogtreecommitdiff
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,