Hello community, here is the log from the commit of package pidgin for openSUSE:Factory checked in at 2012-02-28 14:14:54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pidgin (Old) and /work/SRC/openSUSE:Factory/.pidgin.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pidgin", Maintainer is "[email protected]" Changes: -------- --- /work/SRC/openSUSE:Factory/pidgin/pidgin.changes 2012-01-05 19:14:54.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.pidgin.new/pidgin.changes 2012-02-28 14:14:55.000000000 +0100 @@ -1,0 +2,13 @@ +Tue Feb 21 10:52:59 UTC 2012 - [email protected] + +- On 12.2, add explicit libSM-devel, libXScrnSaver-devel, + libXext-devel, pkgconfig(x11) BuildRequires, to avoid issues + after the big xorg-x11 packaging change. +- Get ready for transition from farsight2 to farstream in 12.2: + + Only use farsight2-devel on <= 12.1 (and > 11.1). + + Pass --disable-vv to configure on > 12.1 (and < 11.2), to + disable voice/video support. + + Add pidgin-port-to-farstream.patch, that we only apply on 12.2 + and later: port pidgin to farstream. + +------------------------------------------------------------------- New: ---- pidgin-port-to-farstream.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pidgin.spec ++++++ --- /var/tmp/diff_new_pack.LuZPeo/_old 2012-02-28 14:14:57.000000000 +0100 +++ /var/tmp/diff_new_pack.LuZPeo/_new 2012-02-28 14:14:57.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package pidgin # -# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -15,6 +15,7 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # + %if 0%{?suse_version} > 1010 && 0%{?suse_version} < 1140 %define with_mono 1 %else @@ -45,13 +46,15 @@ Patch16: pidgin-nm09-more.patch # PATCH-FIX-UPSTREAM pidgin-glib-2.31.patch http://developer.pidgin.im/ticket/14773 [email protected] -- Fix build with glib 2.31. Patch17: pidgin-glib-2.31.patch +# PATCH-FIX-UPSTREAM pidgin-port-to-farstream.patch http://developer.pidgin.im/ticket/14936 [email protected] -- Port to farstream +Patch18: pidgin-port-to-farstream.patch # Can use external libzephyr BuildRequires: cyrus-sasl-devel BuildRequires: dbus-1-devel BuildRequires: doxygen BuildRequires: evolution-data-server-devel BuildRequires: libtool -%if %suse_version > 1110 +%if %suse_version > 1110 && %suse_version <= 1210 BuildRequires: farsight2-devel %endif BuildRequires: gconf2-devel @@ -116,8 +119,8 @@ %if %suse_version > 1110 BuildRequires: translation-update-upstream %endif -BuildRequires: update-desktop-files BuildRequires: NetworkManager-devel +BuildRequires: update-desktop-files %if %suse_version > 1030 BuildRequires: gstreamer-0_10-devel BuildRequires: gstreamer-0_10-plugins-base-devel @@ -142,6 +145,13 @@ BuildRequires: avahi-devel BuildRequires: avahi-glib %endif +%if %suse_version > 1210 +# Explicit BuildRequires needed after big xorg-x11 packaging change in 12.2 +BuildRequires: libSM-devel +BuildRequires: libXScrnSaver-devel +BuildRequires: libXext-devel +BuildRequires: pkgconfig(x11) +%endif %if %suse_version > 1020 Requires: openssl-certs %endif @@ -177,13 +187,17 @@ #' Summary: Development Headers, Documentation, and Libraries for Pidgin Group: Productivity/Networking/Instant Messenger -Requires: %{name} = %{version} glib2-devel gtk2-devel libpurple-devel = %{version} +Requires: %{name} = %{version} +Requires: glib2-devel +Requires: gtk2-devel +Requires: libpurple-devel = %{version} %package -n libpurple Summary: GLib-based Instant Messenger Library Group: System/Libraries # Not really required, but standard Jabber accounts require it, if compiled with SASL support. -Requires: cyrus-sasl-digestmd5 cyrus-sasl-plain +Requires: cyrus-sasl-digestmd5 +Requires: cyrus-sasl-plain # Needed for purple-url-handler: Requires: dbus-1-python Requires: perl = %{perl_version} @@ -197,7 +211,11 @@ %package -n libpurple-devel Summary: Development Headers, Documentation, and Libraries for libpurple Group: Productivity/Networking/Instant Messenger -Requires: libpurple = %{version} NetworkManager-devel NetworkManager-glib glib2-devel libxml2-devel +Requires: NetworkManager-devel +Requires: NetworkManager-glib +Requires: glib2-devel +Requires: libpurple = %{version} +Requires: libxml2-devel %if 0%{?suse_version} > 1120 %if 0%{?building_for_sle_ge_11} Requires: libgnome-keyring-devel @@ -251,7 +269,11 @@ %package -n finch-devel Summary: Headers etc. for finch Stuffs Group: Productivity/Networking/Instant Messenger -Requires: finch = %{version} glib2-devel glibc-devel libpurple-devel = %{version} ncurses-devel +Requires: finch = %{version} +Requires: glib2-devel +Requires: glibc-devel +Requires: libpurple-devel = %{version} +Requires: ncurses-devel Requires: pkg-config Obsoletes: gaim-unstable-text-devel @@ -359,6 +381,9 @@ %patch15 -p1 %patch16 -p1 %patch17 -p1 +%if %suse_version > 1210 +%patch18 -p0 +%endif # Change Myanmar/Myanmar to Myanmar: rename my_MM my po/my_MM.* %{__sed} -i "/ALL_LINGUAS/s/ my_MM / my /" configure.ac @@ -371,7 +396,7 @@ autoreconf -fi %configure\ --disable-static\ -%if %suse_version < 1120 +%if %suse_version < 1120 || %suse_version > 1210 --disable-vv\ %endif --enable-plugins\ ++++++ pidgin-port-to-farstream.patch ++++++ # # old_revision [555badc59f0096515a4de142b15d414bafe2235b] # # patch "configure.ac" # from [146e991fb67000dc69168ef834a34418d93738d8] # to [1d890de2e4a9cf32a1ba109ff4071cf987b54450] # # patch "libpurple/Makefile.am" # from [bf23a245fd958fb16800f6b1abcc1c93aed1c270] # to [57f43833f6848d04c9644ed83d959f91aa2dbc3c] # # patch "libpurple/media/backend-fs2.c" # from [14baabde9d85c5db0c5b002a41707439a1afd834] # to [52850ade346ba967fe205fe56a341a5e7f11138c] # # patch "libpurple/media.c" # from [b6d7130f18c1bd96f12516b0eb35344457c5b447] # to [1934c80d30a14fa9f719fc5f71caea49fb54d69d] # ============================================================ --- configure.ac 146e991fb67000dc69168ef834a34418d93738d8 +++ configure.ac 1d890de2e4a9cf32a1ba109ff4071cf987b54450 @@ -821,18 +821,18 @@ dnl #################################### 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 @@ -843,20 +843,20 @@ if test "x$enable_vv" != "xno"; then [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 ============================================================ --- libpurple/Makefile.am bf23a245fd958fb16800f6b1abcc1c93aed1c270 +++ libpurple/Makefile.am 57f43833f6848d04c9644ed83d959f91aa2dbc3c @@ -305,7 +305,7 @@ libpurple_la_LIBADD = \ $(LIBXML_LIBS) \ $(NETWORKMANAGER_LIBS) \ $(INTLLIBS) \ - $(FARSIGHT_LIBS) \ + $(FARSTREAM_LIBS) \ $(GSTREAMER_LIBS) \ $(GSTINTERFACES_LIBS) \ $(IDN_LIBS) \ @@ -321,7 +321,7 @@ AM_CPPFLAGS = \ $(DEBUG_CFLAGS) \ $(DBUS_CFLAGS) \ $(LIBXML_CFLAGS) \ - $(FARSIGHT_CFLAGS) \ + $(FARSTREAM_CFLAGS) \ $(GSTREAMER_CFLAGS) \ $(GSTINTERFACES_CFLAGS) \ $(IDN_CFLAGS) \ ============================================================ --- libpurple/media/backend-fs2.c 14baabde9d85c5db0c5b002a41707439a1afd834 +++ libpurple/media/backend-fs2.c 52850ade346ba967fe205fe56a341a5e7f11138c @@ -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 @@ struct _PurpleMediaBackendFs2Stream gchar *participant; FsStream *stream; + gboolean supports_add; + GstElement *src; GstElement *tee; GstElement *volume; @@ -147,6 +150,8 @@ struct _PurpleMediaBackendFs2Private FsConference *conference; gchar *conference_type; + FsElementAddedNotifier *notifier; + GHashTable *sessions; GHashTable *participants; @@ -212,6 +217,11 @@ purple_media_backend_fs2_dispose(GObject 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 @@ gst_handle_message_element(GstBus *bus, 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); @@ -867,16 +877,9 @@ gst_handle_message_element(GstBus *bus, " 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 +888,11 @@ gst_handle_message_element(GstBus *bus, 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 +927,7 @@ gst_handle_message_element(GstBus *bus, 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 +945,7 @@ gst_handle_message_element(GstBus *bus, 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 +979,7 @@ gst_handle_message_element(GstBus *bus, 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 +989,10 @@ gst_handle_message_element(GstBus *bus, 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 +1028,11 @@ gst_handle_message_element(GstBus *bus, } 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 +1042,12 @@ gst_handle_message_element(GstBus *bus, 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 +1223,12 @@ stream_info_cb(PurpleMedia *media, Purpl 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 +1308,7 @@ init_conference(PurpleMediaBackendFs2 *s GstElement *pipeline; GstBus *bus; gchar *name; + GKeyFile *default_props; priv->conference = FS_CONFERENCE( gst_element_factory_make(priv->conference_type, NULL)); @@ -1343,6 +1351,14 @@ init_conference(PurpleMediaBackendFs2 *s 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 +1575,7 @@ create_session(PurpleMediaBackendFs2 *se * 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 +1628,7 @@ create_participant(PurpleMediaBackendFs2 GError *err = NULL; participant = fs_conference_new_participant( - priv->conference, name, &err); + priv->conference, &err); if (err) { purple_debug_error("backend-fs2", @@ -1622,6 +1638,12 @@ create_participant(PurpleMediaBackendFs2 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 +1808,40 @@ create_stream(PurpleMediaBackendFs2 *sel } } + + 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 +1896,22 @@ create_stream(PurpleMediaBackendFs2 *sel _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; + 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; } - - 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), 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,8 +2024,12 @@ purple_media_backend_fs2_add_remote_cand 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) { purple_debug_error("backend-fs2", "Error adding remote" ============================================================ --- libpurple/media.c b6d7130f18c1bd96f12516b0eb35344457c5b447 +++ libpurple/media.c 1934c80d30a14fa9f719fc5f71caea49fb54d69d @@ -1067,7 +1067,6 @@ purple_media_add_stream(PurpleMedia *med { #ifdef USE_VV PurpleMediaSession *session; - PurpleMediaStream *stream = NULL; g_return_val_if_fail(PURPLE_IS_MEDIA(media), FALSE); @@ -1103,7 +1102,7 @@ purple_media_add_stream(PurpleMedia *med } 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, -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
