summaryrefslogtreecommitdiff
path: root/net-im
diff options
context:
space:
mode:
authorPatrick McLean <chutzpah@gentoo.org>2010-07-21 00:28:56 -0400
committerPatrick McLean <chutzpah@gentoo.org>2010-07-21 00:28:56 -0400
commit8d5218493a87663e4f31a73a0a0edbc32e7abcc8 (patch)
tree9df2e71fc1ae5b92371a3b23ddf0f891be4c6df6 /net-im
parentInitial commit, add kobo-desktop to overlay. (diff)
downloadchutzpah-8d5218493a87663e4f31a73a0a0edbc32e7abcc8.tar.gz
chutzpah-8d5218493a87663e4f31a73a0a0edbc32e7abcc8.tar.bz2
chutzpah-8d5218493a87663e4f31a73a0a0edbc32e7abcc8.zip
Add pidgin to overlay with patch to use gnome-keyring for storing passwords rather than storing them in the config file.
Diffstat (limited to 'net-im')
-rw-r--r--net-im/pidgin/Manifest23
-rw-r--r--net-im/pidgin/files/pidgin-gnome-keyring-1.patch224
-rw-r--r--net-im/pidgin/pidgin-2.7.1-r1.ebuild216
3 files changed, 463 insertions, 0 deletions
diff --git a/net-im/pidgin/Manifest b/net-im/pidgin/Manifest
new file mode 100644
index 0000000..ef64df0
--- /dev/null
+++ b/net-im/pidgin/Manifest
@@ -0,0 +1,23 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+AUX pidgin-gnome-keyring-1.patch 7453 RMD160 bc32f94cd28d67b48b837d0ce6ab8b58c7902070 SHA1 51a5d07eb061d985816b29cb776fb38823e34b5f SHA256 7cbd7a399e460bdacf9f7fc189ffb0f9ea2ea1a00a7e028e7b542a386900e267
+DIST pidgin-2.7.1.tar.bz2 9647234 RMD160 5e5deec529b1c8d75cd3f925b3f5e4f5310e42e5 SHA1 b746720cc3e65b3d6da6eab0729f26673f997849 SHA256 f412a5a7389ad553229743b49399f968278095c8258dc0f89f766a6cd0ba95d1
+EBUILD pidgin-2.7.1-r1.ebuild 6339 RMD160 7f26bfb1a148bd846612ff8b6c1b7ae0f594d0d5 SHA1 317fc130adbf31bbb7e0b60654960a30ccef1a7f SHA256 8aa1047e40fc96b6011984e0e9576c68c2d62825b2a3a4daeb126aca2c44c292
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.0.15 (GNU/Linux)
+
+iQIcBAEBAgAGBQJMRm0+AAoJEHy/RO9cNQiDfSAP/2bvX5Fn8X7fow4+uJHAU7kT
+mXpENarvg3EZ7Cdqedn7uP5Uk0wnsOP4llGnrlnnA+NLpnIkVyifUa31K7D/FXH1
+mZ5igWOo5inK3u49o3nteWRcvCRVeN6jImfxAIDYnW2CO1hqkiDUUZbgllsABfb2
+d/Q9X32BAerwNzN5stGtp88P04Rbw3UklKbm8OgkOGxpVIMbXLWgFAGD5Myz8afJ
+wNneXsMzEoj5N2Nw+AEJX/zSmOuwrICYvxKe2eqPMnrdehi7RhG3xK7IqgmsTVS5
+gosaZr07TpVZEdOVf2QHLHpVhKi/VmyDKa0by2dlDJtoSw1e2zTWGE9Q9YOjNWTv
+RijZZOh5UxHO+3fSSvI1k/mXBDZ3p1L89X+85mca+fWNKS0YA84ff4X7d7d5v2x4
+BOSWNICm6bLXgWgQA4ys7N4V7zs595A6sANFP/YmDv8wHyMbtQNoi3AGIo4gsfos
+uUN+BmvCKhV1rsNNJ/BIc2iqmb1v55zgjgwEvQXSaVFpEuTBTPnt+sNrltDXAd69
+ssWRdmkjIcx11scvsGe/gq2NovmE4JKU4sJFIikMX7z+B0qWUJyJZkOJK2/afqXU
+2fyZbzHLTgl3YdwHKLPtxWKnPGjHIEILK0KQ8ataRKX2OolJTZE+KOUzsQzJ4R7A
+XL7Abb/rywLz3GZ3Hg/T
+=Bf67
+-----END PGP SIGNATURE-----
diff --git a/net-im/pidgin/files/pidgin-gnome-keyring-1.patch b/net-im/pidgin/files/pidgin-gnome-keyring-1.patch
new file mode 100644
index 0000000..fc0e90f
--- /dev/null
+++ b/net-im/pidgin/files/pidgin-gnome-keyring-1.patch
@@ -0,0 +1,224 @@
+diff -ur pidgin-2.7.1.orig//configure.ac pidgin-2.7.1//configure.ac
+--- pidgin-2.7.1.orig//configure.ac 2010-05-29 21:23:56.000000000 -0400
++++ pidgin-2.7.1//configure.ac 2010-07-20 23:25:59.520998076 -0400
+@@ -2393,6 +2393,20 @@
+ LDFLAGS="$orig_LDFLAGS"
+ fi
+
++dnl #######################################################################
++dnl # Check for gnome-keyring
++dnl #--enable-gnome-keyring=(yes|no)
++dnl #######################################################################
++AC_ARG_ENABLE(gnome-keyring,
++ AC_HELP_STRING([--enable-gnome-keyring],
++ [use gnome keyring for storing password [default=no]]),,
++ enable_gnome_keyring=no)
++if test "x$enable_gnome_keyring" = "xyes"; then
++ PKG_CHECK_MODULES(GAIM_KEYRING,
++ gnome-keyring-1,
++ AC_DEFINE(GAIM_ENABLE_KEYRING, [], [Set if we should use gnome-keyring]))
++fi
++
+ AC_MSG_CHECKING(for me pot o' gold)
+ AC_MSG_RESULT(no)
+ AC_CHECK_FUNCS(gethostid lrand48)
+diff -ur pidgin-2.7.1.orig//libpurple/Makefile.am pidgin-2.7.1//libpurple/Makefile.am
+--- pidgin-2.7.1.orig//libpurple/Makefile.am 2010-05-29 21:23:57.000000000 -0400
++++ pidgin-2.7.1//libpurple/Makefile.am 2010-07-20 23:25:59.529007791 -0400
+@@ -307,6 +307,7 @@
+ $(DBUS_LIBS) \
+ $(GLIB_LIBS) \
+ $(LIBXML_LIBS) \
++ $(GAIM_KEYRING_LIBS) \
+ $(NETWORKMANAGER_LIBS) \
+ $(INTLLIBS) \
+ $(FARSIGHT_LIBS) \
+@@ -323,6 +324,7 @@
+ $(GLIB_CFLAGS) \
+ $(DEBUG_CFLAGS) \
+ $(DBUS_CFLAGS) \
++ $(GAIM_KEYRING_CFLAGS) \
+ $(LIBXML_CFLAGS) \
+ $(FARSIGHT_CFLAGS) \
+ $(GSTREAMER_CFLAGS) \
+diff -ur pidgin-2.7.1.orig//libpurple/account.c pidgin-2.7.1//libpurple/account.c
+--- pidgin-2.7.1.orig//libpurple/account.c 2010-05-29 21:23:57.000000000 -0400
++++ pidgin-2.7.1//libpurple/account.c 2010-07-20 23:25:59.528013217 -0400
+@@ -49,6 +49,13 @@
+ #define PURPLE_ACCOUNT_GET_PRIVATE(account) \
+ ((PurpleAccountPrivate *) (account->priv))
+
++#ifdef GAIM_ENABLE_KEYRING
++#include <gnome-keyring.h>
++
++static char * gaim_account_get_password_from_keyring (const char *_prpl, const char *_user);
++static gboolean gaim_account_set_password_in_keyring (const char *_prpl, const char *_user, const char *password);
++#endif
++
+ /* TODO: Should use PurpleValue instead of this? What about "ui"? */
+ typedef struct
+ {
+@@ -378,8 +385,13 @@
+ if (purple_account_get_remember_password(account) &&
+ ((tmp = purple_account_get_password(account)) != NULL))
+ {
++#ifdef GAIM_ENABLE_KEYRING
++ gaim_account_set_password_in_keyring( purple_account_get_protocol_id(account),
++ purple_account_get_username(account), tmp);
++#else
+ child = xmlnode_new_child(node, "password");
+ xmlnode_insert_data(child, tmp, -1);
++#endif
+ }
+
+ if ((tmp = purple_account_get_alias(account)) != NULL)
+@@ -828,17 +840,30 @@
+ }
+
+ ret = purple_account_new(name, _purple_oscar_convert(name, protocol_id)); /* XXX: */
+- g_free(name);
+- g_free(protocol_id);
+-
+- /* Read the password */
+- child = xmlnode_get_child(node, "password");
+- if ((child != NULL) && ((data = xmlnode_get_data(child)) != NULL))
+- {
+- purple_account_set_remember_password(ret, TRUE);
+- purple_account_set_password(ret, data);
+- g_free(data);
+- }
++ gboolean got_pwd = FALSE;
++#ifdef GAIM_ENABLE_KEYRING
++ data = gaim_account_get_password_from_keyring(protocol_id, name);
++ if (data)
++ {
++ got_pwd = TRUE;
++ purple_account_set_remember_password(ret, TRUE);
++ purple_account_set_password(ret, data);
++ g_free(data);
++ }
++#endif
++ if (!got_pwd)
++ {
++ /* Read the password */
++ child = xmlnode_get_child(node, "password");
++ if ((child != NULL) && ((data = xmlnode_get_data(child)) != NULL))
++ {
++ purple_account_set_remember_password(ret, TRUE);
++ purple_account_set_password(ret, data);
++ g_free(data);
++ }
++ }
++ g_free(name);
++ g_free(protocol_id);
+
+ /* Read the alias */
+ child = xmlnode_get_child(node, "alias");
+@@ -3064,3 +3089,61 @@
+ purple_signals_disconnect_by_handle(handle);
+ purple_signals_unregister_by_instance(handle);
+ }
++
++#ifdef GAIM_ENABLE_KEYRING
++static char *
++gaim_account_get_password_from_keyring(const char *_prpl, const char *_user)
++{
++ GnomeKeyringNetworkPasswordData *found_item;
++ GnomeKeyringResult result;
++ GList *matches;
++ char *password;
++
++ matches = NULL;
++
++ result = gnome_keyring_find_network_password_sync (
++ _user, /* user */
++ NULL, /* domain */
++ "gaim.local", /* server */
++ NULL, /* object */
++ _prpl, /* protocol */
++ NULL, /* authtype */
++ 1863, /* port */
++ &matches);
++
++ if (result != GNOME_KEYRING_RESULT_OK)
++ return NULL;
++
++ if (matches == NULL || matches->data == NULL)
++ return NULL;
++
++ found_item = (GnomeKeyringNetworkPasswordData *) matches->data;
++
++ password = g_strdup (found_item->password);
++
++ gnome_keyring_network_password_list_free (matches);
++
++ return password;
++}
++
++static gboolean
++gaim_account_set_password_in_keyring (const char *_prpl, const char *_user, const char *_password)
++{
++ GnomeKeyringResult result;
++ guint32 item_id;
++
++ result = gnome_keyring_set_network_password_sync (
++ NULL, /* default keyring */
++ _user, /* user */
++ NULL, /* domain */
++ "gaim.local", /* server */
++ NULL, /* object */
++ _prpl, /* protocol */
++ NULL, /* authtype */
++ 1863, /* port */
++ _password, /* password */
++ &item_id);
++
++ return result == GNOME_KEYRING_RESULT_OK;
++}
++#endif
+diff -ur pidgin-2.7.1.orig//pidgin/Makefile.am pidgin-2.7.1//pidgin/Makefile.am
+--- pidgin-2.7.1.orig//pidgin/Makefile.am 2010-05-29 21:24:00.000000000 -0400
++++ pidgin-2.7.1//pidgin/Makefile.am 2010-07-20 23:25:59.530998309 -0400
+@@ -161,6 +161,7 @@
+ $(GTKSPELL_LIBS) \
+ $(STARTUP_NOTIFICATION_LIBS) \
+ $(LIBXML_LIBS) \
++ $(GAIM_KEYRING_LIBS) \
+ $(GTK_LIBS) \
+ $(top_builddir)/libpurple/libpurple.la
+
+@@ -181,6 +182,7 @@
+ $(GSTREAMER_CFLAGS) \
+ $(DEBUG_CFLAGS) \
+ $(GTK_CFLAGS) \
++ $(GAIM_KEYRING_CFLAGS) \
+ $(DBUS_CFLAGS) \
+ $(GTKSPELL_CFLAGS) \
+ $(STARTUP_NOTIFICATION_CFLAGS) \
+diff -ur pidgin-2.7.1.orig//pidgin/gtkmain.c pidgin-2.7.1//pidgin/gtkmain.c
+--- pidgin-2.7.1.orig//pidgin/gtkmain.c 2010-05-29 21:24:00.000000000 -0400
++++ pidgin-2.7.1//pidgin/gtkmain.c 2010-07-20 23:25:59.529007791 -0400
+@@ -70,6 +70,10 @@
+ #include "pidginstock.h"
+ #include "gtkwhiteboard.h"
+
++#ifdef GAIM_ENABLE_KEYRING
++#include <gnome-keyring.h>
++#endif
++
+ #ifdef HAVE_SIGNAL_H
+ # include <signal.h>
+ #endif
+@@ -793,6 +797,12 @@
+ gtk_rc_add_default_file(search_path);
+ g_free(search_path);
+
++#ifdef GAIM_ENABLE_KEYRING
++ GnomeKeyringResult rtn = gnome_keyring_unlock_sync(NULL, NULL);
++ // if (rtn == GNOME_KEYRING_RESULT_DENIED)
++ // return 0;
++#endif
++
+ gui_check = gtk_init_check(&argc, &argv);
+ if (!gui_check) {
+ char *display = gdk_get_display();
diff --git a/net-im/pidgin/pidgin-2.7.1-r1.ebuild b/net-im/pidgin/pidgin-2.7.1-r1.ebuild
new file mode 100644
index 0000000..dc2ee77
--- /dev/null
+++ b/net-im/pidgin/pidgin-2.7.1-r1.ebuild
@@ -0,0 +1,216 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=2
+
+GENTOO_DEPEND_ON_PERL=no
+inherit flag-o-matic eutils toolchain-funcs multilib perl-app gnome2 python
+inherit autotools
+
+DESCRIPTION="GTK Instant Messenger client"
+HOMEPAGE="http://pidgin.im/"
+SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86"
+IUSE="dbus debug doc eds gadu gnutls +gstreamer +gtk idn krb4 meanwhile"
+IUSE+=" networkmanager nls perl silc tcl tk spell qq sasl +startup-notification"
+IUSE+=" ncurses groupwise prediction python +xscreensaver zephyr zeroconf" # mono"
+IUSE+=" gnome-keyring"
+
+# dbus requires python to generate C code for dbus bindings (thus DEPEND only).
+# finch uses libgnt that links with libpython - {R,}DEPEND. But still there is
+# no way to build dbus and avoid libgnt linkage with python. If you want this
+# send patch upstream.
+RDEPEND="
+ >=dev-libs/glib-2.12
+ >=dev-libs/libxml2-2.6.18
+ ncurses? ( sys-libs/ncurses[unicode]
+ dbus? ( <dev-lang/python-3 )
+ python? ( <dev-lang/python-3 ) )
+ gtk? (
+ >=x11-libs/gtk+-2.10:2
+ x11-libs/libSM
+ xscreensaver? ( x11-libs/libXScrnSaver )
+ startup-notification? ( >=x11-libs/startup-notification-0.5 )
+ spell? ( >=app-text/gtkspell-2.0.2 )
+ eds? ( gnome-extra/evolution-data-server )
+ prediction? ( >=dev-db/sqlite-3.3:3 ) )
+ gstreamer? ( =media-libs/gstreamer-0.10*
+ =media-libs/gst-plugins-good-0.10*
+ >=net-libs/farsight2-0.0.14
+ media-plugins/gst-plugins-meta
+ media-plugins/gst-plugins-gconf )
+ zeroconf? ( net-dns/avahi )
+ dbus? ( >=dev-libs/dbus-glib-0.71
+ >=sys-apps/dbus-0.90 )
+ perl? ( >=dev-lang/perl-5.8.2-r1[-build] )
+ gadu? ( >=net-libs/libgadu-1.9.0[-ssl] )
+ gnutls? ( net-libs/gnutls )
+ !gnutls? ( >=dev-libs/nss-3.11 )
+ meanwhile? ( net-libs/meanwhile )
+ silc? ( >=net-im/silc-toolkit-1.0.1 )
+ zephyr? ( >=app-crypt/mit-krb5-1.3.6-r1[krb4?] )
+ tcl? ( dev-lang/tcl )
+ tk? ( dev-lang/tk )
+ sasl? ( dev-libs/cyrus-sasl:2 )
+ networkmanager? ( net-misc/networkmanager )
+ gnome-keyring? ( gnome-base/gnome-keyring )
+ idn? ( net-dns/libidn )"
+ # Mono support crashes pidgin
+ #mono? ( dev-lang/mono )"
+
+DEPEND="$RDEPEND
+ dev-lang/perl
+ dev-perl/XML-Parser
+ dev-util/pkgconfig
+ gtk? ( x11-proto/scrnsaverproto )
+ dbus? ( <dev-lang/python-3 )
+ doc? ( app-doc/doxygen )
+ nls? ( >=dev-util/intltool-0.41.1
+ sys-devel/gettext )"
+
+DOCS="AUTHORS HACKING NEWS README ChangeLog"
+
+# Enable Default protocols
+DYNAMIC_PRPLS="irc,jabber,oscar,yahoo,simple,msn,myspace"
+
+# List of plugins
+# app-accessibility/pidgin-festival
+# net-im/librvp
+# x11-plugins/guifications
+# x11-plugins/msn-pecan
+# x11-plugins/pidgin-encryption
+# x11-plugins/pidgin-extprefs
+# x11-plugins/pidgin-hotkeys
+# x11-plugins/pidgin-latex
+# x11-plugins/pidgintex
+# x11-plugins/pidgin-libnotify
+# x11-plugins/pidgin-otr
+# x11-plugins/pidgin-rhythmbox
+# x11-plugins/purple-plugin_pack
+# x11-themes/pidgin-smileys
+# x11-plugins/pidgin-knotify
+# Plugins in Sunrise:
+# x11-plugins/pidgimpd
+# x11-plugins/pidgin-birthday
+# x11-plugins/pidgin-botsentry
+# x11-plugins/pidgin-convreverse
+# x11-plugins/pidgin-extended-blist-sort
+# x11-plugins/pidgin-lastfm
+# x11-plugins/pidgin-mbpurple
+
+pkg_setup() {
+ if ! use gtk && ! use ncurses ; then
+ einfo
+ elog "You did not pick the ncurses or gtk use flags, only libpurple"
+ elog "will be built."
+ einfo
+ fi
+ if ! use xscreensaver; then
+ elog "Note: xscreensaver USE flag is disabled. Thus pidgin will be unable"
+ elog "to monitor idle/active status based on mouse/keyboard events"
+ fi
+ if use dbus && ! use python; then
+ elog "It's impossible to disable linkage with python in case dbus is enabled."
+ fi
+ if use dbus || { use ncurses && use python; }; then
+ python_set_active_version 2
+ python_pkg_setup
+ fi
+}
+
+src_prepare() {
+ epatch "${FILESDIR}"/${PN}-gnome-keyring-1.patch
+ eautoreconf
+}
+
+src_configure() {
+ # Stabilize things, for your own good
+ strip-flags
+ replace-flags -O? -O2
+
+ local myconf
+
+ if use gadu; then
+ DYNAMIC_PRPLS="${DYNAMIC_PRPLS},gg"
+ myconf="${myconf} --with-gadu-includes=."
+ myconf="${myconf} --with-gadu-libs=."
+ fi
+
+ use silc && DYNAMIC_PRPLS+=",silc"
+ use qq && DYNAMIC_PRPLS+=",qq"
+ use meanwhile && DYNAMIC_PRPLS+=",sametime"
+ use zeroconf && DYNAMIC_PRPLS+=",bonjour"
+ use groupwise && DYNAMIC_PRPLS+=",novell"
+ use zephyr && DYNAMIC_PRPLS+=",zephyr"
+
+ if use gnutls; then
+ einfo "Disabling NSS, using GnuTLS"
+ myconf+=" --enable-nss=no --enable-gnutls=yes"
+ myconf+=" --with-gnutls-includes=/usr/include/gnutls"
+ myconf+=" --with-gnutls-libs=/usr/$(get_libdir)"
+ else
+ einfo "Disabling GnuTLS, using NSS"
+ myconf+=" --enable-gnutls=no --enable-nss=yes"
+ fi
+
+ if use dbus || { use ncurses && use python; }; then
+ myconf+=" --with-python=$(PYTHON)"
+ else
+ myconf+=" --without-python"
+ fi
+
+ econf \
+ $(use_enable ncurses consoleui) \
+ $(use_enable nls) \
+ $(use_enable gtk gtkui) \
+ $(use_enable gtk sm) \
+ $(use gtk && use_enable startup-notification) \
+ $(use gtk && use_enable xscreensaver screensaver) \
+ $(use gtk && use_enable prediction cap) \
+ $(use gtk && use_enable eds gevolution) \
+ $(use gtk && use_enable spell gtkspell) \
+ $(use_enable perl) \
+ $(use_enable tk) \
+ $(use_enable tcl) \
+ $(use_enable debug) \
+ $(use_enable dbus) \
+ $(use_enable meanwhile) \
+ $(use_enable gstreamer) \
+ $(use_enable gstreamer farsight) \
+ $(use_enable gstreamer vv) \
+ $(use_enable sasl cyrus-sasl ) \
+ $(use_enable doc doxygen) \
+ $(use_enable networkmanager nm) \
+ $(use zephyr && use_with krb4) \
+ $(use_enable zeroconf avahi) \
+ $(use_enable gnome-keyring) \
+ $(use_enable idn) \
+ "--with-dynamic-prpls=${DYNAMIC_PRPLS}" \
+ --disable-mono \
+ --x-includes=/usr/include/X11 \
+ ${myconf}
+ #$(use_enable mono) \
+}
+
+src_install() {
+ gnome2_src_install
+ if use gtk; then
+ # Fix tray pathes for kde-3.5, e16 (x11-wm/enlightenment) and other
+ # implementations that are not complient with new hicolor theme yet, #323355
+ local pixmapdir
+ for d in 16 22 32 48; do
+ pixmapdir=${D}/usr/share/pixmaps/pidgin/tray/hicolor/${d}x${d}/actions
+ mkdir "${pixmapdir}" || die
+ pushd "${pixmapdir}" >/dev/null || die
+ for f in ../status/*; do
+ ln -s ${f} || die
+ done
+ popd >/dev/null
+ done
+ fi
+ use perl && fixlocalpod
+}