diff options
author | Olivier Crête <tester@gentoo.org> | 2012-03-31 21:01:56 +0000 |
---|---|---|
committer | Olivier Crête <tester@gentoo.org> | 2012-03-31 21:01:56 +0000 |
commit | a300536c649f59a30824418e8121c8206d843702 (patch) | |
tree | 1cecf45caa8109cc890e0ad9093e907c234fe4b9 /net-im | |
parent | Remove old. (diff) | |
download | gentoo-2-a300536c649f59a30824418e8121c8206d843702.tar.gz gentoo-2-a300536c649f59a30824418e8121c8206d843702.tar.bz2 gentoo-2-a300536c649f59a30824418e8121c8206d843702.zip |
Add package.masked version that uses farstream instead of farsight2
(Portage version: 2.1.10.49/cvs/Linux x86_64)
Diffstat (limited to 'net-im')
-rw-r--r-- | net-im/pidgin/ChangeLog | 8 | ||||
-rw-r--r-- | net-im/pidgin/files/port-to-farstream-v5.patch | 499 | ||||
-rw-r--r-- | net-im/pidgin/pidgin-2.10.3-r100.ebuild | 230 |
3 files changed, 736 insertions, 1 deletions
diff --git a/net-im/pidgin/ChangeLog b/net-im/pidgin/ChangeLog index c5d51d159b9d..f543c6b6d0e8 100644 --- a/net-im/pidgin/ChangeLog +++ b/net-im/pidgin/ChangeLog @@ -1,6 +1,12 @@ # ChangeLog for net-im/pidgin # Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/net-im/pidgin/ChangeLog,v 1.268 2012/03/30 17:11:29 polynomial-c Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-im/pidgin/ChangeLog,v 1.269 2012/03/31 21:01:55 tester Exp $ + +*pidgin-2.10.3-r100 (31 Mar 2012) + + 31 Mar 2012; Olivier Crête <tester@gentoo.org> + +files/port-to-farstream-v5.patch, +pidgin-2.10.3-r100.ebuild: + Add package.masked version that uses farstream instead of farsight2 *pidgin-2.10.3 (30 Mar 2012) diff --git a/net-im/pidgin/files/port-to-farstream-v5.patch b/net-im/pidgin/files/port-to-farstream-v5.patch new file mode 100644 index 000000000000..10b4a6d334e7 --- /dev/null +++ b/net-im/pidgin/files/port-to-farstream-v5.patch @@ -0,0 +1,499 @@ +diff -aur pidgin-2.10.3-orig//configure.ac pidgin-2.10.3/configure.ac +--- pidgin-2.10.3-orig//configure.ac 2012-03-25 23:49:14.000000000 -0400 ++++ pidgin-2.10.3/configure.ac 2012-03-31 16:23:09.772818869 -0400 +@@ -786,18 +786,18 @@ + fi + + dnl ####################################################################### +-dnl # Check for Farsight ++dnl # Check for Farstream + dnl ####################################################################### +-AC_ARG_ENABLE(farsight, +- [AC_HELP_STRING([--disable-farsight], [compile without farsight support])], +- enable_farsight="$enableval", enable_farsight="yes") +-if test "x$enable_farsight" != "xno"; then +- PKG_CHECK_MODULES(FARSIGHT, [farsight2-0.10 >= 0.0.9], [ +- AC_DEFINE(USE_FARSIGHT, 1, [Use Farsight for voice and video]) +- AC_SUBST(FARSIGHT_CFLAGS) +- AC_SUBST(FARSIGHT_LIBS) ++AC_ARG_ENABLE(farstream, ++ [AC_HELP_STRING([--disable-farstream], [compile without farstream support])], ++ enable_farstream="$enableval", enable_farstream="yes") ++if test "x$enable_farstream" != "xno"; then ++ PKG_CHECK_MODULES(FARSTREAM, [farstream-0.1], [ ++ AC_DEFINE(USE_FARSTREAM, 1, [Use Farstream for voice and video]) ++ AC_SUBST(FARSTREAM_CFLAGS) ++ AC_SUBST(FARSTREAM_LIBS) + ], [ +- enable_farsight="no" ++ enable_farstream="no" + ]) + fi + +@@ -808,20 +808,20 @@ + [AC_HELP_STRING([--disable-vv], [compile without voice and video support])], + enable_vv="$enableval", enable_vv="yes") + if test "x$enable_vv" != "xno"; then +- if test "x$enable_gstreamer" != "xno" -a "x$enable_gstinterfaces" != "xno" -a "x$enable_farsight" != "xno"; then ++ if test "x$enable_gstreamer" != "xno" -a "x$enable_gstinterfaces" != "xno" -a "x$enable_farstream" != "xno"; then + AC_DEFINE(USE_VV, 1, [Use voice and video]) + else + enable_vv="no" + if test "x$force_deps" = "xyes"; then + AC_MSG_ERROR([ + Dependencies for voice/video were not met. +-Install the necessary gstreamer and farsight packages first. ++Install the necessary gstreamer and farstream packages first. + Or use --disable-vv if you do not need voice/video support. + ]) + fi + fi + fi +-AM_CONDITIONAL(USE_VV, test "x$enable_gstreamer" != "xno" -a "x$enable_gstinterfaces" != "xno" -a "x$enable_farsight" != "xno") ++AM_CONDITIONAL(USE_VV, test "x$enable_gstreamer" != "xno" -a "x$enable_gstinterfaces" != "xno" -a "x$enable_farstream" != "xno") + + dnl ####################################################################### + dnl # Check for Internationalized Domain Name support +Only in pidgin-2.10.3: configure.ac.orig +diff -aur pidgin-2.10.3-orig//libpurple/Makefile.am pidgin-2.10.3/libpurple/Makefile.am +--- pidgin-2.10.3-orig//libpurple/Makefile.am 2012-03-25 23:49:15.000000000 -0400 ++++ pidgin-2.10.3/libpurple/Makefile.am 2012-03-31 16:23:09.776152155 -0400 +@@ -306,7 +306,7 @@ + $(LIBXML_LIBS) \ + $(NETWORKMANAGER_LIBS) \ + $(INTLLIBS) \ +- $(FARSIGHT_LIBS) \ ++ $(FARSTREAM_LIBS) \ + $(GSTREAMER_LIBS) \ + $(GSTINTERFACES_LIBS) \ + $(IDN_LIBS) \ +@@ -322,7 +322,7 @@ + $(DEBUG_CFLAGS) \ + $(DBUS_CFLAGS) \ + $(LIBXML_CFLAGS) \ +- $(FARSIGHT_CFLAGS) \ ++ $(FARSTREAM_CFLAGS) \ + $(GSTREAMER_CFLAGS) \ + $(GSTINTERFACES_CFLAGS) \ + $(IDN_CFLAGS) \ +diff -aur pidgin-2.10.3-orig//libpurple/media/backend-fs2.c pidgin-2.10.3/libpurple/media/backend-fs2.c +--- pidgin-2.10.3-orig//libpurple/media/backend-fs2.c 2012-03-25 23:49:16.000000000 -0400 ++++ pidgin-2.10.3/libpurple/media/backend-fs2.c 2012-03-31 16:41:52.840615660 -0400 +@@ -1,5 +1,5 @@ + /** +- * @file backend-fs2.c Farsight 2 backend for media API ++ * @file backend-fs2.c Farstream backend for media API + * @ingroup core + */ + +@@ -34,8 +34,9 @@ + #include "network.h" + #include "media-gst.h" + +-#include <gst/farsight/fs-conference-iface.h> +-#include <gst/farsight/fs-element-added-notifier.h> ++#include <farstream/fs-conference.h> ++#include <farstream/fs-element-added-notifier.h> ++#include <farstream/fs-utils.h> + + /** @copydoc _PurpleMediaBackendFs2Class */ + typedef struct _PurpleMediaBackendFs2Class PurpleMediaBackendFs2Class; +@@ -112,6 +113,8 @@ + gchar *participant; + FsStream *stream; + ++ gboolean supports_add; ++ + GstElement *src; + GstElement *tee; + GstElement *volume; +@@ -147,6 +150,8 @@ + FsConference *conference; + gchar *conference_type; + ++ FsElementAddedNotifier *notifier; ++ + GHashTable *sessions; + GHashTable *participants; + +@@ -212,6 +217,11 @@ + + purple_debug_info("backend-fs2", "purple_media_backend_fs2_dispose\n"); + ++ if (priv->notifier) { ++ g_object_unref(priv->notifier); ++ priv->notifier = NULL; ++ } ++ + if (priv->confbin) { + GstElement *pipeline; + +@@ -846,7 +856,7 @@ + priv->conference != FS_CONFERENCE(src)) + return; + +- if (gst_structure_has_name(msg->structure, "farsight-error")) { ++ if (gst_structure_has_name(msg->structure, "farstream-error")) { + FsError error_no; + gst_structure_get_enum(msg->structure, "error-no", + FS_TYPE_ERROR, (gint*)&error_no); +@@ -859,24 +869,9 @@ + " packages.")); + purple_media_end(priv->media, NULL, NULL); + break; +- case FS_ERROR_NO_CODECS_LEFT: +- purple_media_error(priv->media, _("No codecs" +- " left. Your codec" +- " preferences in" +- " fs-codecs.conf are too" +- " strict.")); +- purple_media_end(priv->media, NULL, NULL); +- break; +- case FS_ERROR_UNKNOWN_CNAME: +- /* +- * Unknown CName is only a problem for the +- * multicast transmitter which isn't used. +- * It is also deprecated. +- */ +- break; + default: + purple_debug_error("backend-fs2", +- "farsight-error: %i: %s\n", ++ "farstream-error: %i: %s\n", + error_no, + gst_structure_get_string( + msg->structure, "error-msg")); +@@ -885,11 +880,11 @@ + + if (FS_ERROR_IS_FATAL(error_no)) { + purple_media_error(priv->media, _("A non-recoverable " +- "Farsight2 error has occurred.")); ++ "Farstream error has occurred.")); + purple_media_end(priv->media, NULL, NULL); + } + } else if (gst_structure_has_name(msg->structure, +- "farsight-new-local-candidate")) { ++ "farstream-new-local-candidate")) { + const GValue *value; + FsStream *stream; + FsCandidate *local_candidate; +@@ -924,7 +919,7 @@ + session->id, name, candidate); + g_object_unref(candidate); + } else if (gst_structure_has_name(msg->structure, +- "farsight-local-candidates-prepared")) { ++ "farstream-local-candidates-prepared")) { + const GValue *value; + FsStream *stream; + FsParticipant *participant; +@@ -942,7 +937,7 @@ + g_signal_emit_by_name(self, "candidates-prepared", + session->id, name); + } else if (gst_structure_has_name(msg->structure, +- "farsight-new-active-candidate-pair")) { ++ "farstream-new-active-candidate-pair")) { + const GValue *value; + FsStream *stream; + FsCandidate *local_candidate; +@@ -976,7 +971,7 @@ + g_object_unref(lcandidate); + g_object_unref(rcandidate); + } else if (gst_structure_has_name(msg->structure, +- "farsight-recv-codecs-changed")) { ++ "farstream-recv-codecs-changed")) { + const GValue *value; + GList *codecs; + FsCodec *codec; +@@ -986,10 +981,10 @@ + codec = codecs->data; + + purple_debug_info("backend-fs2", +- "farsight-recv-codecs-changed: %s\n", ++ "farstream-recv-codecs-changed: %s\n", + codec->encoding_name); + } else if (gst_structure_has_name(msg->structure, +- "farsight-component-state-changed")) { ++ "farstream-component-state-changed")) { + const GValue *value; + FsStreamState fsstate; + guint component; +@@ -1025,11 +1020,11 @@ + } + + purple_debug_info("backend-fs2", +- "farsight-component-state-changed: " ++ "farstream-component-state-changed: " + "component: %u state: %s\n", + component, state); + } else if (gst_structure_has_name(msg->structure, +- "farsight-send-codec-changed")) { ++ "farstream-send-codec-changed")) { + const GValue *value; + FsCodec *codec; + gchar *codec_str; +@@ -1039,12 +1034,12 @@ + codec_str = fs_codec_to_string(codec); + + purple_debug_info("backend-fs2", +- "farsight-send-codec-changed: codec: %s\n", ++ "farstream-send-codec-changed: codec: %s\n", + codec_str); + + g_free(codec_str); + } else if (gst_structure_has_name(msg->structure, +- "farsight-codecs-changed")) { ++ "farstream-codecs-changed")) { + const GValue *value; + FsSession *fssession; + GList *sessions; +@@ -1220,8 +1215,12 @@ + purple_media_is_initiator(media, sid, name)) + return; + +- fs_stream_set_remote_candidates(stream->stream, +- stream->remote_candidates, &err); ++ if (stream->supports_add) ++ fs_stream_add_remote_candidates(stream->stream, ++ stream->remote_candidates, &err); ++ else ++ fs_stream_force_remote_candidates(stream->stream, ++ stream->remote_candidates, &err); + + if (err == NULL) + return; +@@ -1301,6 +1300,7 @@ + GstElement *pipeline; + GstBus *bus; + gchar *name; ++ GKeyFile *default_props; + + priv->conference = FS_CONFERENCE( + gst_element_factory_make(priv->conference_type, NULL)); +@@ -1343,6 +1343,14 @@ + return FALSE; + } + ++ default_props = fs_utils_get_default_element_properties(GST_ELEMENT(priv->conference)); ++ if (default_props != NULL) { ++ priv->notifier = fs_element_added_notifier_new(); ++ fs_element_added_notifier_add(priv->notifier, ++ GST_BIN(priv->confbin)); ++ fs_element_added_notifier_set_properties_from_keyfile(priv->notifier, default_props); ++ } ++ + g_signal_connect(G_OBJECT(bus), "message", + G_CALLBACK(gst_bus_cb), self); + gst_object_unref(bus); +@@ -1559,7 +1567,7 @@ + * receiving the src-pad-added signal. + * Only works for non-multicast FsRtpSessions. + */ +- if (is_nice || !strcmp(transmitter, "rawudp")) ++ if (!!strcmp(transmitter, "multicast")) + g_object_set(G_OBJECT(session->session), + "no-rtcp-timeout", 0, NULL); + +@@ -1612,7 +1620,7 @@ + GError *err = NULL; + + participant = fs_conference_new_participant( +- priv->conference, name, &err); ++ priv->conference, &err); + + if (err) { + purple_debug_error("backend-fs2", +@@ -1622,6 +1630,12 @@ + return FALSE; + } + ++ if (g_object_class_find_property(G_OBJECT_GET_CLASS(participant), ++ "cname")) { ++ g_object_set(participant, "cname", name, NULL); ++ } ++ ++ + if (!priv->participants) { + purple_debug_info("backend-fs2", + "Creating hash table for participants\n"); +@@ -1786,6 +1800,40 @@ + } + } + ++ ++ session = get_session(self, sess_id); ++ ++ if (session == NULL) { ++ purple_debug_error("backend-fs2", ++ "Couldn't find session to create stream.\n"); ++ return FALSE; ++ } ++ ++ participant = get_participant(self, who); ++ ++ if (participant == NULL) { ++ purple_debug_error("backend-fs2", "Couldn't find " ++ "participant to create stream.\n"); ++ return FALSE; ++ } ++ ++ fsstream = fs_session_new_stream(session->session, participant, ++ initiator == TRUE ? type_direction : ++ (type_direction & FS_DIRECTION_RECV), &err); ++ ++ if (fsstream == NULL) { ++ if (err) { ++ purple_debug_error("backend-fs2", ++ "Error creating stream: %s\n", ++ err && err->message ? ++ err->message : "NULL"); ++ g_error_free(err); ++ } else ++ purple_debug_error("backend-fs2", ++ "Error creating stream\n"); ++ return FALSE; ++ } ++ + memcpy(_params, params, sizeof(GParameter) * num_params); + + /* set the controlling mode parameter */ +@@ -1840,45 +1888,22 @@ + _num_params++; + } + +- session = get_session(self, sess_id); + +- if (session == NULL) { +- purple_debug_error("backend-fs2", +- "Couldn't find session to create stream.\n"); +- return FALSE; +- } +- +- participant = get_participant(self, who); +- +- if (participant == NULL) { +- purple_debug_error("backend-fs2", "Couldn't find " +- "participant to create stream.\n"); +- return FALSE; ++ if(!fs_stream_set_transmitter(fsstream, transmitter, ++ _params, _num_params, &err)) { ++ purple_debug_error("backend-fs2", "Could not set transmitter %s: %s.\n", transmitter, err->message); ++ g_clear_error(&err); ++ g_free(_params); ++ return FALSE; + } +- +- fsstream = fs_session_new_stream(session->session, participant, +- initiator == TRUE ? type_direction : +- (type_direction & FS_DIRECTION_RECV), transmitter, +- _num_params, _params, &err); + g_free(_params); + +- if (fsstream == NULL) { +- if (err) { +- purple_debug_error("backend-fs2", +- "Error creating stream: %s\n", +- err && err->message ? +- err->message : "NULL"); +- g_error_free(err); +- } else +- purple_debug_error("backend-fs2", +- "Error creating stream\n"); +- return FALSE; +- } + + stream = g_new0(PurpleMediaBackendFs2Stream, 1); + stream->participant = g_strdup(who); + stream->session = session; + stream->stream = fsstream; ++ stream->supports_add = !strcmp(transmitter, "nice"); + + priv->streams = g_list_append(priv->streams, stream); + +@@ -1991,7 +2016,11 @@ + if (purple_media_is_initiator(priv->media, sess_id, participant) || + purple_media_accepted( + priv->media, sess_id, participant)) { +- fs_stream_set_remote_candidates(stream->stream, ++ if (stream->supports_add) ++ fs_stream_add_remote_candidates(stream->stream, ++ stream->remote_candidates, &err); ++ else ++ fs_stream_force_remote_candidates(stream->stream, + stream->remote_candidates, &err); + + if (err) { +@@ -2016,6 +2045,7 @@ + if (sess_id != NULL) { + PurpleMediaBackendFs2Session *session = get_session( + PURPLE_MEDIA_BACKEND_FS2(self), sess_id); ++ GList *codecs = NULL; + + if (session == NULL) + return FALSE; +@@ -2023,21 +2053,31 @@ + if (session->type & (PURPLE_MEDIA_SEND_AUDIO | + PURPLE_MEDIA_SEND_VIDEO)) + g_object_get(session->session, +- "codecs-ready", &ret, NULL); ++ "codecs", &codecs, NULL); + else + ret = TRUE; ++ if (codecs) { ++ fs_codec_list_destroy (codecs); ++ ret = TRUE; ++ } + } else { + GList *values = g_hash_table_get_values(priv->sessions); + + for (; values; values = g_list_delete_link(values, values)) { + PurpleMediaBackendFs2Session *session = values->data; ++ GList *codecs = NULL; ++ + if (session->type & (PURPLE_MEDIA_SEND_AUDIO | + PURPLE_MEDIA_SEND_VIDEO)) + g_object_get(session->session, +- "codecs-ready", &ret, NULL); ++ "codecs", &codecs, NULL); + else + ret = TRUE; + ++ if (codecs) { ++ fs_codec_list_destroy (codecs); ++ ret = TRUE; ++ } + if (ret == FALSE) + break; + } +Only in pidgin-2.10.3/libpurple/media: backend-fs2.c~ +diff -aur pidgin-2.10.3-orig//libpurple/media.c pidgin-2.10.3/libpurple/media.c +--- pidgin-2.10.3-orig//libpurple/media.c 2012-03-25 23:49:16.000000000 -0400 ++++ pidgin-2.10.3/libpurple/media.c 2012-03-31 16:23:09.789485312 -0400 +@@ -1067,7 +1067,6 @@ + { + #ifdef USE_VV + PurpleMediaSession *session; +- PurpleMediaStream *stream = NULL; + + g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE); + +@@ -1103,7 +1102,7 @@ + } + + if (purple_media_get_stream(media, sess_id, who) == NULL) { +- stream = purple_media_insert_stream(session, who, initiator); ++ purple_media_insert_stream(session, who, initiator); + + g_signal_emit(media, purple_media_signals[STATE_CHANGED], + 0, PURPLE_MEDIA_STATE_NEW, +diff -aur pidgin-2.10.3-orig//libpurple/mediamanager.c pidgin-2.10.3/libpurple/mediamanager.c +--- pidgin-2.10.3-orig//libpurple/mediamanager.c 2012-03-25 23:49:16.000000000 -0400 ++++ pidgin-2.10.3/libpurple/mediamanager.c 2012-03-31 16:23:09.789485312 -0400 +@@ -39,7 +39,7 @@ + #ifdef USE_VV + #include <media/backend-fs2.h> + +-#include <gst/farsight/fs-element-added-notifier.h> ++#include <farstream/fs-element-added-notifier.h> + #include <gst/interfaces/xoverlay.h> + + /** @copydoc _PurpleMediaManagerPrivate */ diff --git a/net-im/pidgin/pidgin-2.10.3-r100.ebuild b/net-im/pidgin/pidgin-2.10.3-r100.ebuild new file mode 100644 index 000000000000..be34cbdb6002 --- /dev/null +++ b/net-im/pidgin/pidgin-2.10.3-r100.ebuild @@ -0,0 +1,230 @@ +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/net-im/pidgin/pidgin-2.10.3-r100.ebuild,v 1.1 2012/03/31 21:01:56 tester Exp $ + +EAPI=4 + +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 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86" +IUSE="dbus debug doc eds gadu gnutls +gstreamer +gtk idn meanwhile" +IUSE+=" networkmanager nls perl silc tcl tk spell sasl ncurses" +IUSE+=" 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. +# purple-url-handler and purple-remote require dbus-python thus in reality we +# rdepend on python if dbus enabled. But it is possible to separate this dep. +RDEPEND=" + >=dev-libs/glib-2.16 + >=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 ) + spell? ( >=app-text/gtkspell-2.0.2: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/farstream + media-plugins/gst-plugins-meta + media-plugins/gst-plugins-gconf ) + zeroconf? ( net-dns/avahi[dbus] ) + dbus? ( >=dev-libs/dbus-glib-0.71 + >=sys-apps/dbus-0.90 + dev-python/dbus-python ) + perl? ( >=dev-lang/perl-5.8.2-r1[-build] ) + gadu? ( || ( >=net-libs/libgadu-1.11.0[ssl,gnutls] + >=net-libs/libgadu-1.11.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 ) + !<x11-plugins/pidgin-facebookchat-1.69-r1" + # Mono support crashes pidgin + #mono? ( dev-lang/mono )" + +# We want nls in case gtk is enabled, bug # +NLS_DEPEND=">=dev-util/intltool-0.41.1 sys-devel/gettext" + +DEPEND="$RDEPEND + dev-lang/perl + dev-perl/XML-Parser + dev-util/pkgconfig + gtk? ( x11-proto/scrnsaverproto + ${NLS_DEPEND} ) + dbus? ( <dev-lang/python-3 ) + doc? ( app-doc/doxygen ) + !gtk? ( nls? ( ${NLS_DEPEND} ) )" + +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-mbpurple +# x11-plugins/pidgin-bot-sentry +# 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/pidgin-audacious-remote +# x11-plugins/pidgin-autoanswer +# x11-plugins/pidgin-birthday-reminder +# x11-plugins/pidgin-blinklight +# x11-plugins/pidgin-convreverse +# x11-plugins/pidgin-embeddedvideo +# x11-plugins/pidgin-extended-blist-sort +# x11-plugins/pidgin-gfire +# x11-plugins/pidgin-lastfm +# x11-plugins/pidgin-sendscreenshot +# x11-plugins/pidgimpd + +pkg_setup() { + if ! use gtk && ! use ncurses ; then + elog "You did not pick the ncurses or gtk use flags, only libpurple" + elog "will be built." + fi + if use dbus || { use ncurses && use python; }; then + python_set_active_version 2 + python_pkg_setup + fi + + # dbus is enabled, no way to disable linkage with python => python is enabled + #REQUIRED_USE="gtk? ( nls ) dbus? ( python )" + if use gtk && ! use nls; then + ewarn "gtk build => nls is enabled!" + fi + if use dbus && ! use python; then + elog "dbus is enabled, no way to disable linkage with python => python is enabled" + fi +} + +src_prepare() { + epatch "${FILESDIR}/${PN}-2.10.0-gold.patch" + epatch "${FILESDIR}/port-to-farstream-v5.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 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 gtk gtkui) \ + $(use_enable gtk sm) \ + $(use gtk || use_enable nls) \ + $(use gtk && echo "--enable-nls") \ + $(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 farstream) \ + $(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-system-ssl-certs="/etc/ssl/certs/" \ + --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 + + dodoc finch/plugins/pietray.py + docompress -x /usr/share/doc/${PF}/pietray.py + + find "${ED}" -type f -name '*.la' -exec rm -rf '{}' '+' || die "la removal failed" +} |