From 0c1dd38d2bd231f7d926f75fcc35fea0de27cade Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Sat, 25 Sep 2010 12:58:04 +0530 Subject: Add net-im/pidgin with gnome-keyring support from suse --- net-im/pidgin/Manifest | 4 + net-im/pidgin/files/pidgin-2.7.2-ldflags.patch | 25 +++ net-im/pidgin/files/pidgin-gnome-keyring.patch | 175 ++++++++++++++++++++ net-im/pidgin/pidgin-2.7.3.ebuild | 211 +++++++++++++++++++++++++ 4 files changed, 415 insertions(+) create mode 100644 net-im/pidgin/Manifest create mode 100644 net-im/pidgin/files/pidgin-2.7.2-ldflags.patch create mode 100644 net-im/pidgin/files/pidgin-gnome-keyring.patch create mode 100644 net-im/pidgin/pidgin-2.7.3.ebuild 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 ') : ()), + '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 ') : ()), +- '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 ++ ++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? ( =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-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 +} -- cgit v1.2.3-65-gdbad