summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek.chauhan@gmail.com>2010-09-25 12:58:04 +0530
committerNirbheek Chauhan <nirbheek.chauhan@gmail.com>2010-09-25 12:58:04 +0530
commit0c1dd38d2bd231f7d926f75fcc35fea0de27cade (patch)
treecbfa3a932962bec3ed76d27bb6cb7f549b837c01
parentAdd ~amd64 to penumbra-overture-bin (diff)
downloadnirbheek-0c1dd38d2bd231f7d926f75fcc35fea0de27cade.tar.gz
nirbheek-0c1dd38d2bd231f7d926f75fcc35fea0de27cade.tar.bz2
nirbheek-0c1dd38d2bd231f7d926f75fcc35fea0de27cade.zip
Add net-im/pidgin with gnome-keyring support from suse
-rw-r--r--net-im/pidgin/Manifest4
-rw-r--r--net-im/pidgin/files/pidgin-2.7.2-ldflags.patch25
-rw-r--r--net-im/pidgin/files/pidgin-gnome-keyring.patch175
-rw-r--r--net-im/pidgin/pidgin-2.7.3.ebuild211
4 files changed, 415 insertions, 0 deletions
diff --git a/net-im/pidgin/Manifest b/net-im/pidgin/Manifest
new file mode 100644
index 0000000..1a99ef1
--- /dev/null
+++ b/net-im/pidgin/Manifest
@@ -0,0 +1,4 @@
+AUX pidgin-2.7.2-ldflags.patch 1593 RMD160 ade438f25d0af927485523e561ce728762645948 SHA1 6ac16bd019ad048109643af5e3525987c994dbb0 SHA256 64d78b48111345b49216e9678c114f321963393b4fd0aa6046de8aec6f03cb44
+AUX pidgin-gnome-keyring.patch 6229 RMD160 2574e923fa09dd45996933854a9dd5644c8b0db3 SHA1 541e5062f6041d8e772ee02df3da90eb58ba4758 SHA256 d70ce355858a72bf35d94e20acc3c67a90a46c7f82eae3a9488ac39d9e9681d8
+DIST pidgin-2.7.3.tar.bz2 9746117 RMD160 276fb19abf6505f9d56120c7412987002511fcb3 SHA1 81b9b5591ddbdf36aa656ddd90ff935ae090e940 SHA256 8b5788aa7b8c3fa372e6c5f671592731c86e41322bcc09facb6bbe6127e323f2
+EBUILD pidgin-2.7.3.ebuild 6237 RMD160 c37459bdccc3a3f0aeb63284a5254cffb4d094e6 SHA1 0f4d80ea52a74b14e0f24ef58fca8bca6bfc51e8 SHA256 d269c3d5f26b43e749bb708912a1043bab1ebe2702e750507cd75b11633150b7
diff --git a/net-im/pidgin/files/pidgin-2.7.2-ldflags.patch b/net-im/pidgin/files/pidgin-2.7.2-ldflags.patch
new file mode 100644
index 0000000..1a4cd7a
--- /dev/null
+++ b/net-im/pidgin/files/pidgin-2.7.2-ldflags.patch
@@ -0,0 +1,25 @@
+Index: pidgin-2.7.2/libpurple/plugins/perl/common/Makefile.PL.in
+===================================================================
+--- pidgin-2.7.2.orig/libpurple/plugins/perl/common/Makefile.PL.in
++++ pidgin-2.7.2/libpurple/plugins/perl/common/Makefile.PL.in
+@@ -10,6 +10,7 @@ WriteMakefile(
+ (ABSTRACT_FROM => '@srcdir@/Purple.pm', # finds $ABSTRACT
+ AUTHOR => 'Purple <http://pidgin.im/>') : ()),
+ 'DEFINE' => '@DEBUG_CFLAGS@',
++ 'dynamic_lib' => { 'OTHERLDFLAGS' => '@LDFLAGS@' },
+ 'INC' => '-I. -I@srcdir@ -I@top_srcdir@ -I@top_srcdir@/libpurple @GLIB_CFLAGS@',
+ 'OBJECT' => '$(O_FILES)', # link all the C files too
+ # 'OPTIMIZE' => '-g', # For debugging
+Index: pidgin-2.7.2/pidgin/plugins/perl/common/Makefile.PL.in
+===================================================================
+--- pidgin-2.7.2.orig/pidgin/plugins/perl/common/Makefile.PL.in
++++ pidgin-2.7.2/pidgin/plugins/perl/common/Makefile.PL.in
+@@ -8,7 +8,7 @@ WriteMakefile(
+ ($] >= 5.005 ? ## Add these new keywords supported since 5.005
+ ('ABSTRACT_FROM' => '@srcdir@/Pidgin.pm', # finds $ABSTRACT
+ 'AUTHOR' => 'Pidgin <http://pidgin.im/>') : ()),
+- 'DEFINE' => '@DEBUG_CFLAGS@',
++ 'DEFINE' => '@DEBUG_CFLAGS@ @LDFLAGS@',
+ 'INC' => '-I. -I@srcdir@ -I@top_srcdir@ -I@top_srcdir@/libpurple -I@top_srcdir@/pidgin @GTK_CFLAGS@',
+ 'OBJECT' => '$(O_FILES)', # link all the C files too
+ 'TYPEMAPS' => ["@top_srcdir@/libpurple/plugins/perl/common/typemap"],
diff --git a/net-im/pidgin/files/pidgin-gnome-keyring.patch b/net-im/pidgin/files/pidgin-gnome-keyring.patch
new file mode 100644
index 0000000..8fe92ef
--- /dev/null
+++ b/net-im/pidgin/files/pidgin-gnome-keyring.patch
@@ -0,0 +1,175 @@
+Index: pidgin-2.6.3/configure.ac
+===================================================================
+--- pidgin-2.6.3.orig/configure.ac
++++ pidgin-2.6.3/configure.ac
+@@ -1799,6 +1799,20 @@ if test "x$enable_nss" != "xno"; then
+ [AC_HELP_STRING([--with-nss-libs=PREFIX], [specify location of Mozilla nss3 libs.])],
+ [with_nss_libs="$withval"])
+
++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(PURPLE_KEYRING,
++ gnome-keyring-1,
++ AC_DEFINE(PURPLE_ENABLE_KEYRING, [], [Set if we should use gnome-keyring]))
++fi
++
+
+ if test -n "$with_nspr_includes" || test -n "$with_nspr_libs" || \
+ test -n "$with_nss_includes" || test -n "$with_nss_libs" ||
+Index: pidgin-2.6.3/libpurple/Makefile.am
+===================================================================
+--- pidgin-2.6.3.orig/libpurple/Makefile.am
++++ pidgin-2.6.3/libpurple/Makefile.am
+@@ -291,6 +291,7 @@ libpurple_la_LIBADD = \
+ $(GLIB_LIBS) \
+ $(LIBXML_LIBS) \
+ $(NETWORKMANAGER_LIBS) \
++ $(PURPLE_KEYRING_LIBS) \
+ $(INTLLIBS) \
+ $(FARSIGHT_LIBS) \
+ $(GSTREAMER_LIBS) \
+@@ -306,6 +307,7 @@ AM_CPPFLAGS = \
+ $(GLIB_CFLAGS) \
+ $(DEBUG_CFLAGS) \
+ $(DBUS_CFLAGS) \
++ $(PURPLE_KEYRING_CFLAGS) \
+ $(LIBXML_CFLAGS) \
+ $(FARSIGHT_CFLAGS) \
+ $(GSTREAMER_CFLAGS) \
+Index: pidgin-2.6.3/libpurple/account.c
+===================================================================
+--- pidgin-2.6.3.orig/libpurple/account.c
++++ pidgin-2.6.3/libpurple/account.c
+@@ -49,6 +49,13 @@ typedef struct
+ #define PURPLE_ACCOUNT_GET_PRIVATE(account) \
+ ((PurpleAccountPrivate *) (account->priv))
+
++#ifdef PURPLE_ENABLE_KEYRING
++#include <gnome-keyring.h>
++
++static char * purple_account_get_password_from_keyring (const char *_prpl, const char *_user);
++static gboolean purple_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 @@ account_to_xmlnode(PurpleAccount *accoun
+ if (purple_account_get_remember_password(account) &&
+ ((tmp = purple_account_get_password(account)) != NULL))
+ {
++#ifdef PURPLE_ENABLE_KEYRING
++ purple_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 @@ parse_account(xmlnode *node)
+ }
+
+ 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))
++ gboolean got_pwd = FALSE;
++#ifdef PURPLE_ENABLE_KEYRING
++ data = purple_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");
+@@ -2873,3 +2898,60 @@ purple_accounts_uninit(void)
+ purple_signals_disconnect_by_handle(handle);
+ purple_signals_unregister_by_instance(handle);
+ }
++
++#ifdef PURPLE_ENABLE_KEYRING
++static char *
++purple_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;
++
++ g_assert (matches != NULL && matches->data != NULL);
++
++ found_item = (GnomeKeyringNetworkPasswordData *) matches->data;
++
++ password = g_strdup (found_item->password);
++
++ gnome_keyring_network_password_list_free (matches);
++
++ return password;
++}
++
++static gboolean
++purple_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 --git a/net-im/pidgin/pidgin-2.7.3.ebuild b/net-im/pidgin/pidgin-2.7.3.ebuild
new file mode 100644
index 0000000..54482f3
--- /dev/null
+++ b/net-im/pidgin/pidgin-2.7.3.ebuild
@@ -0,0 +1,211 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-im/pidgin/pidgin-2.7.3.ebuild,v 1.1 2010/08/12 10:43:18 pva Exp $
+
+EAPI=2
+
+GENTOO_DEPEND_ON_PERL=no
+inherit flag-o-matic eutils toolchain-funcs multilib perl-app gnome2 python 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 gnome-keyring +gstreamer +gtk idn meanwhile"
+IUSE+=" networkmanager nls perl silc tcl tk spell qq sasl +startup-notification"
+IUSE+=" ncurses groupwise prediction python +xscreensaver zephyr zeroconf" # mono"
+
+# 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 ) )
+ gnome-keyring? ( gnome-base/gnome-keyring )
+ 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 )
+ tcl? ( dev-lang/tcl )
+ tk? ( dev-lang/tk )
+ sasl? ( dev-libs/cyrus-sasl:2 )
+ networkmanager? ( net-misc/networkmanager )
+ 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 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() {
+ gnome2_src_prepare
+ epatch "${FILESDIR}"/${PN}-gnome-keyring.patch
+ epatch "${FILESDIR}"/${PN}-2.7.2-ldflags.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 \
+ --disable-silent-rules \
+ $(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 gnome-keyring) \
+ $(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_enable zeroconf avahi) \
+ $(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
+}