From b1a2bc895a3c12a4a668a04aec3e0e32c5ec0857 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Tue, 4 Aug 2015 00:12:16 -0400 Subject: [PATCH] gnu: Add pidgin. * gnu/packages/patches/pidgin-add-search-path.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. * gnu/packages/messaging.scm (pidgin): New variable. --- gnu-system.am | 1 + gnu/packages/messaging.scm | 97 ++++++++++++++++++- .../patches/pidgin-add-search-path.patch | 25 +++++ 3 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/pidgin-add-search-path.patch 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,