pidgin:add pisi-2.0

This commit is contained in:
alihanozturk
2015-11-21 01:18:48 +02:00
parent 17bad92faf
commit 1037801005
21 changed files with 3642 additions and 0 deletions
+50
View File
@@ -0,0 +1,50 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt
from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools
from pisi.actionsapi import shelltools
from pisi.actionsapi import perlmodules
from pisi.actionsapi import get
def setup():
#shelltools.export("CFLAGS","%s -fstack-protector-all" % get.CFLAGS())
#shelltools.export("CXXFLAGS", "%s -fstack-protector-all" % get.CXXFLAGS())
#shelltools.export("LDFLAGS", "%s -pie" % get.LDFLAGS())
#autotools.autoreconf("-fi")
autotools.configure("--prefix=/usr \
--enable-dbus \
--enable-cyrus-sasl \
--enable-gnutls=yes \
--enable-nss=yes \
--enable-nm \
--enable-cap \
--enable-mono \
--disable-schemas-install \
--disable-meanwhile \
--disable-vv \
--enable-nm \
--enable-tcl \
--enable-tk \
--with-python=/usr/bin/python2.7 \
--x-includes=/usr/include/X11 \
--with-gnutls-includes=/usr/include/gnutls \
--with-gnutls-libs=/usr/lib \
--with-system-ssl-certs=/etc/ssl/certs")
#pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ")
def build():
autotools.make()
def install():
autotools.rawInstall("DESTDIR=%s" % get.installDIR())
pisitools.dosym("../icons/hicolor/48x48/apps/pidgin.png", "/usr/share/pixmaps/pidgin.png")
pisitools.dodoc("AUTHORS", "COPYING", "HACKING", "NEWS", "README", "ChangeLog")
perlmodules.removePodfiles()
@@ -0,0 +1,17 @@
pidgin-2.7.2.tar.bz2
pidgin-2.7.3.tar.bz2
/pidgin-2.7.4.tar.bz2
/pidgin-2.7.5.tar.bz2
/pidgin-2.7.7.tar.bz2
/pidgin-2.7.9.tar.bz2
/pidgin-2.7.10.tar.bz2
/pidgin-2.7.11.tar.bz2
/pidgin-2.8.0.tar.bz2
/pidgin-2.9.0.tar.bz2
/pidgin-2.10.0.tar.bz2
/pidgin-2.10.1.tar.bz2
/pidgin-2.10.2.tar.bz2
/pidgin-2.10.4.tar.bz2
/pidgin-2.10.5.tar.bz2
/pidgin-2.10.6.tar.bz2
/pidgin-2.10.7.tar.bz2
@@ -0,0 +1,33 @@
diff -urN pidgin-2.5.2.orig/pidgin/gtksound.c pidgin-2.5.2/pidgin/gtksound.c
--- pidgin-2.5.2.orig/pidgin/gtksound.c 2008-07-13 22:05:38.000000000 -0400
+++ pidgin-2.5.2/pidgin/gtksound.c 2008-11-22 13:36:54.000000000 -0500
@@ -298,6 +298,9 @@
purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/mute", FALSE);
purple_prefs_add_path(PIDGIN_PREFS_ROOT "/sound/command", "");
purple_prefs_add_string(PIDGIN_PREFS_ROOT "/sound/method", "automatic");
+#ifndef USE_GSTREAMER
+ purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/sound/rhel4migrated", FALSE);
+#endif
purple_prefs_add_int(PIDGIN_PREFS_ROOT "/sound/volume", 50);
#ifdef USE_GSTREAMER
@@ -433,6 +436,19 @@
return;
}
+#ifndef USE_GSTREAMER
+ /* RHEL4 migration code */
+ if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/sound/rhel4migrated")) {
+ purple_prefs_set_bool(PIDGIN_PREFS_ROOT "/sound/rhel4migrated", TRUE);
+ if(!strcmp(method, "automatic") ||
+ !strcmp(method, "esd") ||
+ !strcmp(method, "arts")) {
+ purple_prefs_set_string(PIDGIN_PREFS_ROOT "/sound/method", "custom");
+ purple_prefs_set_path(PIDGIN_PREFS_ROOT "/sound/command", "aplay %s");
+ }
+ }
+#endif
+
#ifndef _WIN32
if (!strcmp(method, "custom")) {
const char *sound_cmd;
@@ -0,0 +1,23 @@
--- pidgin-2.10.0/libpurple/protocols/gg/gg.c.orig 2011-08-18 10:51:03.000000000 +0200
+++ pidgin-2.10.0/libpurple/protocols/gg/gg.c 2011-08-21 09:54:41.000000000 +0200
@@ -533,6 +533,8 @@
purple_request_fields_get_string(fields, "firstname"));
form->nickname = g_strdup(
purple_request_fields_get_string(fields, "nickname"));
+ form->uin = g_strdup(
+ purple_request_fields_get_string(fields, "uin"));
form->city = g_strdup(
purple_request_fields_get_string(fields, "city"));
form->birthyear = g_strdup(
@@ -586,6 +588,11 @@
purple_request_field_string_set_masked(field, FALSE);
purple_request_field_group_add_field(group, field);
+ field = purple_request_field_string_new("uin",
+ _("UIN"), NULL, FALSE);
+ purple_request_field_string_set_masked(field, FALSE);
+ purple_request_field_group_add_field(group, field);
+
field = purple_request_field_string_new("city",
_("City"), NULL, FALSE);
purple_request_field_string_set_masked(field, FALSE);
@@ -0,0 +1,20 @@
--- libpurple/protocols/jabber/Makefile.am.orig 2010-02-16 10:34:06.000000000 +0100
+++ libpurple/protocols/jabber/Makefile.am 2010-02-18 10:31:46.828001077 +0100
@@ -80,6 +80,7 @@
AM_CFLAGS = $(st)
+libjabber_la_LDFLAGS = -module -avoid-version
libxmpp_la_LDFLAGS = -module -avoid-version
if USE_CYRUS_SASL
--- libpurple/protocols/oscar/Makefile.am.orig 2010-02-16 10:34:06.000000000 +0100
+++ libpurple/protocols/oscar/Makefile.am 2010-02-18 10:31:46.828001077 +0100
@@ -50,6 +50,7 @@
libaim_la_LDFLAGS = -module -avoid-version
libicq_la_LDFLAGS = -module -avoid-version
+liboscar_la_LDFLAGS = -module -avoid-version
if STATIC_OSCAR
st = -DPURPLE_STATIC_PRPL
@@ -0,0 +1,20 @@
diff -p -up pidgin-2.7.0/configure.ac~ pidgin-2.7.0/configure.ac
--- pidgin-2.7.0/configure.ac~ 2010-05-13 22:24:35.000000000 +0200
+++ pidgin-2.7.0/configure.ac 2010-05-13 22:28:11.000000000 +0200
@@ -1522,7 +1522,7 @@ dnl # Check for Mono support
dnl #######################################################################
AC_ARG_ENABLE(mono, [AC_HELP_STRING([--enable-mono], [compile with Mono runtime support (experimental)])], , enable_mono=no)
if test x"$enable_mono" = x"yes" ; then
- PKG_CHECK_MODULES(MONO, mono, [
+ PKG_CHECK_MODULES(MONO, mono glib-2.0 gthread-2.0, [
AC_SUBST(MONO_CFLAGS)
AC_SUBST(MONO_LIBS)
enable_mono=yes
diff -p -up pidgin-2.7.0/libpurple/plugins/mono/loader/status-glue.c~ pidgin-2.7.0/libpurple/plugins/mono/loader/status-glue.c
--- pidgin-2.7.0/libpurple/plugins/mono/loader/status-glue.c~ 2010-05-12 06:36:11.000000000 +0200
+++ pidgin-2.7.0/libpurple/plugins/mono/loader/status-glue.c 2010-05-13 22:33:45.000000000 +0200
@@ -1,3 +1,4 @@
+#include <glib.h>
#include "status.h"
#include "mono-helper.h"
#include "mono-glue.h"
@@ -0,0 +1,24 @@
diff -p -up pidgin-2.7.0/pidgin/pixmaps/emotes/default/24/theme.smiley pidgin-2.7.0/pidgin/pixmaps/emotes/default/24/theme
--- pidgin-2.7.0/pidgin/pixmaps/emotes/default/24/theme.smiley 2010-05-12 06:37:31.000000000 +0200
+++ pidgin-2.7.0/pidgin/pixmaps/emotes/default/24/theme 2010-05-13 21:15:22.000000000 +0200
@@ -6,9 +6,9 @@ Author=Hylke Bons
# Default smileys
[default]
-happy.png :) :-)
+happy.png :) :-) =)
excited.png :-D :-d :D :d
-sad.png :-( :(
+sad.png :-( :( =(
wink.png ;-) ;)
tongue.png :P :p :-P :-p
shocked.png =-O =-o
@@ -16,7 +16,7 @@ kiss.png :-*
glasses-cool.png 8-)
embarrassed.png :-[
crying.png :'( :'-(
-thinking.png :-/ :-\\
+thinking.png :-/ :-\ :\
angel.png O:-) o:-)
shut-mouth.png :-X
moneymouth.png :-$
@@ -0,0 +1,14 @@
--- pidgin-2.8.0/libpurple/protocols/gg/gg.c.orig 2011-06-08 03:10:11.000000000 +0200
+++ pidgin-2.8.0/libpurple/protocols/gg/gg.c 2011-06-08 03:13:44.000000000 +0200
@@ -1816,6 +1816,11 @@
case GG_EVENT_PUBDIR50_SEARCH_REPLY:
ggp_pubdir_reply_handler(gc, ev->event.pubdir50);
break;
+ case GG_EVENT_DISCONNECT:
+ purple_connection_error_reason (gc,
+ PURPLE_CONNECTION_ERROR_OTHER_ERROR,
+ _("Server Disconnect."));
+ break;
case GG_EVENT_TYPING_NOTIFICATION:
ggp_typing_notification_handler(gc, ev->event.typing_notification.uin,
ev->event.typing_notification.length);
@@ -0,0 +1,11 @@
--- pidgin-2.8.0/libpurple/network.c.reread-resolvconf 2011-06-09 16:30:04.764927571 +0200
+++ pidgin-2.8.0/libpurple/network.c 2011-06-09 16:31:29.356249181 +0200
@@ -874,8 +874,6 @@
#else
case NM_STATE_CONNECTED:
#endif
- /* Call res_init in case DNS servers have changed */
- res_init();
/* update STUN IP in case we it changed (theoretically we could
have gone from IPv4 to IPv6, f.ex. or we were previously
offline */
@@ -0,0 +1,9 @@
--- pidgin.desktop.in 2009-08-18 23:48:30.163325146 +0300
+++ pidgin.desktop2 2009-08-18 23:47:51.648352181 +0300
@@ -1,5 +1,5 @@
[Desktop Entry]
-_Name=Pidgin Internet Messenger
+_Name=Pidgin
_GenericName=Internet Messenger
_Comment=Send instant messages over multiple protocols
Exec=pidgin
@@ -0,0 +1,22 @@
# HG changeset patch
# User Youness Alaoui <kakaroto@kakaroto.homelinux.net>
# Date 1404159462 14400
# Node ID 2b41ba1fde8a80a4f2d715874a0b02449d4b66ad
# Parent f02f7d1fb4d545c6d7353745094e1afcf0428ca9
Fix send-video enum typo
Refs #16315
diff --git a/libpurple/media/enum-types.c b/libpurple/media/enum-types.c
--- a/libpurple/media/enum-types.c
+++ b/libpurple/media/enum-types.c
@@ -175,7 +175,7 @@
{ PURPLE_MEDIA_RECV_VIDEO,
"PURPLE_MEDIA_RECV_VIDEO", "recv-video" },
{ PURPLE_MEDIA_SEND_VIDEO,
- "PURPLE_MEDIA_SEND_VIDEO", "send-audio" },
+ "PURPLE_MEDIA_SEND_VIDEO", "send-video" },
{ PURPLE_MEDIA_AUDIO,
"PURPLE_MEDIA_AUDIO", "audio" },
{ PURPLE_MEDIA_VIDEO,
@@ -0,0 +1,350 @@
# HG changeset patch
# User David Woodhouse <David.Woodhouse@intel.com>
# Date 1425675783 0
# Node ID 6b4576edf2a694ab55d0d06d3643c44601a75b15
# Parent 714ba418d0aa5ba0cc4cc3b9db37296cd2bbf041
Add out-of-band DTMF support and dialpad to use it
This is a backport of e4c122196b08 from the trunk. It adds the UI and
farstream backend support for sending DTMF.
Fixes #15575
diff --git a/libpurple/media.c b/libpurple/media.c
--- a/libpurple/media.c
+++ b/libpurple/media.c
@@ -1439,3 +1439,46 @@
}
#endif /* USE_GSTREAMER */
+gboolean
+purple_media_send_dtmf(PurpleMedia *media, const gchar *session_id,
+ gchar dtmf, guint8 volume, guint16 duration)
+{
+#ifdef USE_VV
+ PurpleAccount *account = NULL;
+ PurpleConnection *gc = NULL;
+ PurplePlugin *prpl = NULL;
+ PurplePluginProtocolInfo *prpl_info = NULL;
+ PurpleMediaBackendIface *backend_iface = NULL;
+
+ if (media)
+ {
+ account = purple_media_get_account(media);
+ backend_iface = PURPLE_MEDIA_BACKEND_GET_INTERFACE(media->priv->backend);
+ }
+ if (account)
+ gc = purple_account_get_connection(account);
+ if (gc)
+ prpl = purple_connection_get_prpl(gc);
+ if (prpl)
+ prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
+
+ if (dtmf == 'a')
+ dtmf = 'A';
+ else if (dtmf == 'b')
+ dtmf = 'B';
+ else if (dtmf == 'c')
+ dtmf = 'C';
+ else if (dtmf == 'd')
+ dtmf = 'D';
+
+ g_return_val_if_fail(strchr("0123456789ABCD#*", dtmf), FALSE);
+
+ if (backend_iface && backend_iface->send_dtmf
+ && backend_iface->send_dtmf(media->priv->backend,
+ session_id, dtmf, volume, duration))
+ {
+ return TRUE;
+ }
+#endif
+ return FALSE;
+}
diff --git a/libpurple/media.h b/libpurple/media.h
--- a/libpurple/media.h
+++ b/libpurple/media.h
@@ -437,6 +437,21 @@
*/
void purple_media_remove_output_windows(PurpleMedia *media);
+/**
+ * Sends a DTMF signal out-of-band.
+ *
+ * @param media The media instance to send a DTMF signal to.
+ * @param sess_id The session id of the session to send the DTMF signal on.
+ * @param dtmf The character representing the DTMF in the range [0-9#*A-D].
+ * @param volume The power level expressed in dBm0 after dropping the sign
+ * in the range of 0 to 63. A larger value represents a lower volume.
+ * @param duration The duration of the tone in milliseconds.
+ *
+ * @since 2.11
+ */
+gboolean purple_media_send_dtmf(PurpleMedia *media, const gchar *session_id,
+ gchar dtmf, guint8 volume, guint16 duration);
+
#ifdef __cplusplus
}
#endif
diff --git a/libpurple/media/backend-fs2.c b/libpurple/media/backend-fs2.c
--- a/libpurple/media/backend-fs2.c
+++ b/libpurple/media/backend-fs2.c
@@ -94,6 +94,9 @@
static void purple_media_backend_fs2_set_params(PurpleMediaBackend *self,
guint num_params, GParameter *params);
static const gchar **purple_media_backend_fs2_get_available_params(void);
+static gboolean purple_media_backend_fs2_send_dtmf(
+ PurpleMediaBackend *self, const gchar *sess_id,
+ gchar dtmf, guint8 volume, guint16 duration);
static void free_stream(PurpleMediaBackendFs2Stream *stream);
static void free_session(PurpleMediaBackendFs2Session *session);
@@ -499,6 +502,7 @@
iface->set_send_codec = purple_media_backend_fs2_set_send_codec;
iface->set_params = purple_media_backend_fs2_set_params;
iface->get_available_params = purple_media_backend_fs2_get_available_params;
+ iface->send_dtmf = purple_media_backend_fs2_send_dtmf;
}
static FsMediaType
@@ -2436,6 +2440,65 @@
return supported_params;
}
+static gboolean
+send_dtmf_callback(gpointer userdata)
+{
+ FsSession *session = userdata;
+
+ fs_session_stop_telephony_event(session);
+
+ return FALSE;
+}
+static gboolean
+purple_media_backend_fs2_send_dtmf(PurpleMediaBackend *self,
+ const gchar *sess_id, gchar dtmf, guint8 volume,
+ guint16 duration)
+{
+ PurpleMediaBackendFs2Session *session;
+ FsDTMFEvent event;
+
+ g_return_val_if_fail(PURPLE_IS_MEDIA_BACKEND_FS2(self), FALSE);
+
+ session = get_session(PURPLE_MEDIA_BACKEND_FS2(self), sess_id);
+ if (session == NULL)
+ return FALSE;
+
+ /* Convert DTMF char into FsDTMFEvent enum */
+ switch(dtmf) {
+ case '0': event = FS_DTMF_EVENT_0; break;
+ case '1': event = FS_DTMF_EVENT_1; break;
+ case '2': event = FS_DTMF_EVENT_2; break;
+ case '3': event = FS_DTMF_EVENT_3; break;
+ case '4': event = FS_DTMF_EVENT_4; break;
+ case '5': event = FS_DTMF_EVENT_5; break;
+ case '6': event = FS_DTMF_EVENT_6; break;
+ case '7': event = FS_DTMF_EVENT_7; break;
+ case '8': event = FS_DTMF_EVENT_8; break;
+ case '9': event = FS_DTMF_EVENT_9; break;
+ case '*': event = FS_DTMF_EVENT_STAR; break;
+ case '#': event = FS_DTMF_EVENT_POUND; break;
+ case 'A': event = FS_DTMF_EVENT_A; break;
+ case 'B': event = FS_DTMF_EVENT_B; break;
+ case 'C': event = FS_DTMF_EVENT_C; break;
+ case 'D': event = FS_DTMF_EVENT_D; break;
+ default:
+ return FALSE;
+ }
+
+ if (!fs_session_start_telephony_event(session->session,
+ event, volume)) {
+ return FALSE;
+ }
+
+ if (duration <= 50) {
+ fs_session_stop_telephony_event(session->session);
+ } else {
+ purple_timeout_add(duration, send_dtmf_callback,
+ session->session);
+ }
+
+ return TRUE;
+}
#else
GType
purple_media_backend_fs2_get_type(void)
diff --git a/libpurple/media/backend-iface.h b/libpurple/media/backend-iface.h
--- a/libpurple/media/backend-iface.h
+++ b/libpurple/media/backend-iface.h
@@ -71,6 +71,9 @@
void (*set_params) (PurpleMediaBackend *self,
guint num_params, GParameter *params);
const gchar **(*get_available_params) (void);
+ gboolean (*send_dtmf) (PurpleMediaBackend *self,
+ const gchar *sess_id, gchar dtmf, guint8 volume,
+ guint16 duration);
};
/**
diff --git a/pidgin/gtkmedia.c b/pidgin/gtkmedia.c
--- a/pidgin/gtkmedia.c
+++ b/pidgin/gtkmedia.c
@@ -41,6 +41,7 @@
#ifdef _WIN32
#include <gdk/gdkwin32.h>
#endif
+#include <gdk/gdkkeysyms.h>
#include <gst/interfaces/xoverlay.h>
@@ -759,6 +760,136 @@
}
static void
+phone_dtmf_pressed_cb(GtkButton *button, gpointer user_data)
+{
+ PidginMedia *gtkmedia = user_data;
+ gint num;
+ gchar *sid;
+
+ num = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(button), "dtmf-digit"));
+ sid = g_object_get_data(G_OBJECT(button), "session-id");
+
+ purple_media_send_dtmf(gtkmedia->priv->media, sid, num, 25, 50);
+}
+
+static inline GtkWidget *
+phone_create_button(const gchar *text_hi, const gchar *text_lo)
+{
+ GtkWidget *button;
+ GtkWidget *label_hi;
+ GtkWidget *label_lo;
+ GtkWidget *grid;
+ const gchar *text_hi_local;
+
+ if (text_hi)
+ text_hi_local = _(text_hi);
+ else
+ text_hi_local = "";
+
+ grid = gtk_vbox_new(TRUE, 0);
+
+ button = gtk_button_new();
+ label_hi = gtk_label_new(text_hi_local);
+ gtk_misc_set_alignment(GTK_MISC(label_hi), 0.5, 0.5);
+ gtk_box_pack_end(GTK_BOX(grid), label_hi, FALSE, TRUE, 0);
+ label_lo = gtk_label_new(text_lo);
+ gtk_misc_set_alignment(GTK_MISC(label_lo), 0.5, 0.5);
+ gtk_label_set_use_markup(GTK_LABEL(label_lo), TRUE);
+ gtk_box_pack_end(GTK_BOX(grid), label_lo, FALSE, TRUE, 0);
+ gtk_container_add(GTK_CONTAINER(button), grid);
+
+ return button;
+}
+
+static struct phone_label {
+ gchar *subtext;
+ gchar *text;
+ gchar chr;
+} phone_labels[] = {
+ {"<b>1</b>", NULL, '1'},
+ /* Translators note: These are the letters on the keys of a numeric
+ keypad; translate according to §7.2.4 of
+ http://www.etsi.org/deliver/etsi_es/202100_202199/202130/01.01.01_60/es_20213 */
+ /* Letters on the '2' key of a numeric keypad */
+ {"<b>2</b>", N_("ABC"), '2'},
+ /* Letters on the '3' key of a numeric keypad */
+ {"<b>3</b>", N_("DEF"), '3'},
+ /* Letters on the '4' key of a numeric keypad */
+ {"<b>4</b>", N_("GHI"), '4'},
+ /* Letters on the '5' key of a numeric keypad */
+ {"<b>5</b>", N_("JKL"), '5'},
+ /* Letters on the '6' key of a numeric keypad */
+ {"<b>6</b>", N_("MNO"), '6'},
+ /* Letters on the '7' key of a numeric keypad */
+ {"<b>7</b>", N_("PQRS"), '7'},
+ /* Letters on the '8' key of a numeric keypad */
+ {"<b>8</b>", N_("TUV"), '8'},
+ /* Letters on the '9' key of a numeric keypad */
+ {"<b>9</b>", N_("WXYZ"), '9'},
+ {"<b>*</b>", NULL, '*'},
+ {"<b>0</b>", NULL, '0'},
+ {"<b>#</b>", NULL, '#'},
+ {NULL, NULL, 0}
+};
+
+static gboolean
+pidgin_media_dtmf_key_press_event_cb(GtkWidget *widget,
+ GdkEvent *event, gpointer user_data)
+{
+ PidginMedia *gtkmedia = user_data;
+ GdkEventKey *key = (GdkEventKey *) event;
+
+ if (event->type != GDK_KEY_PRESS) {
+ return FALSE;
+ }
+
+ if ((key->keyval >= GDK_KEY_0 && key->keyval <= GDK_KEY_9) ||
+ key->keyval == GDK_KEY_asterisk ||
+ key->keyval == GDK_KEY_numbersign) {
+ gchar *sid = g_object_get_data(G_OBJECT(widget), "session-id");
+
+ purple_media_send_dtmf(gtkmedia->priv->media, sid, key->keyval, 25, 50);
+ }
+
+ return FALSE;
+}
+
+static GtkWidget *
+pidgin_media_add_dtmf_widget(PidginMedia *gtkmedia,
+ PurpleMediaSessionType type, const gchar *_sid)
+{
+ GtkWidget *grid = gtk_table_new(4, 3, TRUE);
+ GtkWidget *button;
+ gint index = 0;
+ GtkWindow *win = &gtkmedia->parent;
+
+ /* Add buttons */
+ for (index = 0; phone_labels[index].subtext != NULL; index++) {
+ button = phone_create_button(phone_labels[index].text,
+ phone_labels[index].subtext);
+ g_signal_connect(button, "pressed",
+ G_CALLBACK(phone_dtmf_pressed_cb), gtkmedia);
+ g_object_set_data(G_OBJECT(button), "dtmf-digit",
+ GINT_TO_POINTER(phone_labels[index].chr));
+ g_object_set_data_full(G_OBJECT(button), "session-id",
+ g_strdup(_sid), g_free);
+ gtk_table_attach(GTK_TABLE(grid), button, index % 3,
+ index % 3 + 1, index / 3, index / 3 + 1,
+ GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND,
+ 2, 2);
+ }
+
+ g_signal_connect(G_OBJECT(win), "key-press-event",
+ G_CALLBACK(pidgin_media_dtmf_key_press_event_cb), gtkmedia);
+ g_object_set_data_full(G_OBJECT(win), "session-id",
+ g_strdup(_sid), g_free);
+
+ gtk_widget_show_all(grid);
+
+ return grid;
+}
+
+static void
pidgin_media_ready_cb(PurpleMedia *media, PidginMedia *gtkmedia, const gchar *sid)
{
GtkWidget *send_widget = NULL, *recv_widget = NULL, *button_widget = NULL;
@@ -888,7 +1019,11 @@
gtk_box_pack_end(GTK_BOX(recv_widget),
pidgin_media_add_audio_widget(gtkmedia,
- PURPLE_MEDIA_SEND_AUDIO, NULL), FALSE, FALSE, 0);
+ PURPLE_MEDIA_SEND_AUDIO, sid), FALSE, FALSE, 0);
+
+ gtk_box_pack_end(GTK_BOX(recv_widget),
+ pidgin_media_add_dtmf_widget(gtkmedia,
+ PURPLE_MEDIA_SEND_AUDIO, sid), FALSE, FALSE, 0);
}
if (type & PURPLE_MEDIA_AUDIO &&
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,38 @@
--- a/finch/gntsound.c
+++ b/finch/gntsound.c
@@ -449,6 +449,7 @@ bus_call (GstBus *bus, GstMessage *msg,
case GST_MESSAGE_EOS:
gst_element_set_state(play, GST_STATE_NULL);
gst_object_unref(GST_OBJECT(play));
+ return FALSE;
break;
case GST_MESSAGE_WARNING:
gst_message_parse_warning(msg, &err, NULL);
--- a/libpurple/mediamanager.c
+++ b/libpurple/mediamanager.c
@@ -288,6 +288,7 @@ pipeline_bus_call(GstBus *bus, GstMessag
switch(GST_MESSAGE_TYPE(msg)) {
case GST_MESSAGE_EOS:
purple_debug_info("mediamanager", "End of Stream\n");
+ return FALSE;
break;
case GST_MESSAGE_ERROR: {
gchar *debug = NULL;
@@ -305,6 +306,7 @@
"Debug details: %s\n", debug);
g_free (debug);
}
+ return FALSE;
break;
}
default:
--- a/pidgin/gtksound.c
+++ b/pidgin/gtksound.c
@@ -394,6 +394,7 @@ bus_call (GstBus *bus,
case GST_MESSAGE_EOS:
gst_element_set_state(play, GST_STATE_NULL);
gst_object_unref(GST_OBJECT(play));
+ return FALSE;
break;
case GST_MESSAGE_WARNING:
gst_message_parse_warning(msg, &err, NULL);
@@ -0,0 +1,44 @@
# HG changeset patch
# User Youness Alaoui <kakaroto@kakaroto.homelinux.net>
# Date 1404874798 14400
# Node ID b52be4fef1ded825e262095480915f2c675a5694
# Parent 2b41ba1fde8a80a4f2d715874a0b02449d4b66ad
Fix gstreamer elements references
In backend-fs2, the create_src will unref the src after it's done with
it, if we simply return the created source, it will segfault.
The issue never happened before because every source so far also has
the UNIQUE flag, which causes it to go in a different branch of the
code which does ref the element and add it to the bin.
Refs #16315
diff --git a/libpurple/mediamanager.c b/libpurple/mediamanager.c
--- a/libpurple/mediamanager.c
+++ b/libpurple/mediamanager.c
@@ -443,7 +443,11 @@
if (src) {
GstElement *capsfilter = gst_bin_get_by_name(GST_BIN(src), "prpl_video_caps");
- g_object_set(G_OBJECT(capsfilter), "caps", caps, NULL);
+ if (capsfilter) {
+ g_object_set(G_OBJECT(capsfilter), "caps", caps, NULL);
+ gst_object_unref (capsfilter);
+ }
+ gst_object_unref (src);
}
g_free(id);
@@ -550,6 +554,11 @@
} else {
ret = purple_media_element_info_call_create(info,
media, session_id, participant);
+ if (element_type & PURPLE_MEDIA_ELEMENT_SRC) {
+ gst_object_ref(ret);
+ gst_bin_add(GST_BIN(purple_media_manager_get_pipeline(manager)),
+ ret);
+ }
}
if (ret == NULL)
@@ -0,0 +1,52 @@
# HG changeset patch
# User Jakub Adam <jakub.adam@ktknet.cz>
# Date 1407847148 -7200
# Node ID 7767aaeade6404396204794f9bc75d9a2cb723f0
# Parent 8e4fa54f166211ffd6cd869cca611e8d64ea1fdf
media: make "init-media" signal handler optional
Change the logic so that the PurpleMedia instance isn't disposed when
"init-media" has no connected handlers.
We want the media object freed only when some signal callback function
explicitly returns FALSE, indicating an error during the initialization.
This is mostly useful for the imminent addition of private media streams.
diff --git a/libpurple/mediamanager.c b/libpurple/mediamanager.c
--- a/libpurple/mediamanager.c
+++ b/libpurple/mediamanager.c
@@ -334,7 +334,7 @@
{
#ifdef USE_VV
PurpleMedia *media;
- gboolean signal_ret;
+ guint signal_id;
media = PURPLE_MEDIA(g_object_new(purple_media_get_type(),
"manager", manager,
@@ -343,12 +343,17 @@
"initiator", initiator,
NULL));
- g_signal_emit(manager, purple_media_manager_signals[INIT_MEDIA], 0,
- media, account, remote_user, &signal_ret);
+ signal_id = purple_media_manager_signals[INIT_MEDIA];
- if (signal_ret == FALSE) {
- g_object_unref(media);
- return NULL;
+ if (g_signal_has_handler_pending(manager, signal_id, 0, FALSE)) {
+ gboolean signal_ret;
+
+ g_signal_emit(manager, signal_id, 0, media, account, remote_user,
+ &signal_ret);
+ if (signal_ret == FALSE) {
+ g_object_unref(media);
+ return NULL;
+ }
}
manager->priv->medias = g_list_append(manager->priv->medias, media);
@@ -0,0 +1,290 @@
# HG changeset patch
# User Youness Alaoui <kakaroto@kakaroto.homelinux.net>
# Date 1404764862 14400
# Node ID d729a9b2126594df3e38647e926ac7c0a7db807b
# Parent 7767aaeade6404396204794f9bc75d9a2cb723f0
Add Private media API
Creating a private media can be useful for plugins that want to create a
PurpleMedia for internal use without the front-end being notified of its
creation.
diff --git a/libpurple/mediamanager.c b/libpurple/mediamanager.c
--- a/libpurple/mediamanager.c
+++ b/libpurple/mediamanager.c
@@ -86,6 +86,7 @@
GstElement *pipeline;
PurpleMediaCaps ui_caps;
GList *medias;
+ GList *private_medias;
GList *elements;
GList *output_windows;
gulong next_output_window_id;
@@ -111,6 +112,7 @@
enum {
INIT_MEDIA,
+ INIT_PRIVATE_MEDIA,
UI_CAPS_CHANGED,
LAST_SIGNAL
};
@@ -161,6 +163,15 @@
G_TYPE_BOOLEAN, 3, PURPLE_TYPE_MEDIA,
G_TYPE_POINTER, G_TYPE_STRING);
+ purple_media_manager_signals[INIT_PRIVATE_MEDIA] =
+ g_signal_new ("init-private-media",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0, NULL, NULL,
+ purple_smarshal_BOOLEAN__OBJECT_POINTER_STRING,
+ G_TYPE_BOOLEAN, 3, PURPLE_TYPE_MEDIA,
+ G_TYPE_POINTER, G_TYPE_STRING);
+
purple_media_manager_signals[UI_CAPS_CHANGED] = g_signal_new ("ui-caps-changed",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST,
@@ -177,6 +188,7 @@
{
media->priv = PURPLE_MEDIA_MANAGER_GET_PRIVATE(media);
media->priv->medias = NULL;
+ media->priv->private_medias = NULL;
media->priv->next_output_window_id = 1;
#ifdef USE_VV
media->priv->backend_type = PURPLE_TYPE_MEDIA_BACKEND_FS2;
@@ -198,6 +210,10 @@
g_list_delete_link(priv->medias, priv->medias)) {
g_object_unref(priv->medias->data);
}
+ for (; priv->private_medias; priv->private_medias =
+ g_list_delete_link(priv->private_medias, priv->private_medias)) {
+ g_object_unref(priv->private_medias->data);
+ }
for (; priv->elements; priv->elements =
g_list_delete_link(priv->elements, priv->elements)) {
g_object_unref(priv->elements->data);
@@ -325,12 +341,13 @@
}
#endif /* USE_GSTREAMER */
-PurpleMedia *
-purple_media_manager_create_media(PurpleMediaManager *manager,
- PurpleAccount *account,
- const char *conference_type,
- const char *remote_user,
- gboolean initiator)
+static PurpleMedia *
+create_media(PurpleMediaManager *manager,
+ PurpleAccount *account,
+ const char *conference_type,
+ const char *remote_user,
+ gboolean initiator,
+ gboolean private)
{
#ifdef USE_VV
PurpleMedia *media;
@@ -343,7 +360,9 @@
"initiator", initiator,
NULL));
- signal_id = purple_media_manager_signals[INIT_MEDIA];
+ signal_id = private ?
+ purple_media_manager_signals[INIT_PRIVATE_MEDIA] :
+ purple_media_manager_signals[INIT_MEDIA];
if (g_signal_has_handler_pending(manager, signal_id, 0, FALSE)) {
gboolean signal_ret;
@@ -356,26 +375,33 @@
}
}
- manager->priv->medias = g_list_append(manager->priv->medias, media);
+ if (private)
+ manager->priv->private_medias = g_list_append(
+ manager->priv->private_medias, media);
+ else
+ manager->priv->medias = g_list_append(manager->priv->medias, media);
return media;
#else
return NULL;
#endif
}
-GList *
-purple_media_manager_get_media(PurpleMediaManager *manager)
+static GList *
+get_media(PurpleMediaManager *manager, gboolean private)
{
#ifdef USE_VV
- return manager->priv->medias;
+ if (private)
+ return manager->priv->private_medias;
+ else
+ return manager->priv->medias;
#else
return NULL;
#endif
}
-GList *
-purple_media_manager_get_media_by_account(PurpleMediaManager *manager,
- PurpleAccount *account)
+static GList *
+get_media_by_account(PurpleMediaManager *manager,
+ PurpleAccount *account, gboolean private)
{
#ifdef USE_VV
GList *media = NULL;
@@ -383,7 +409,10 @@
g_return_val_if_fail(PURPLE_IS_MEDIA_MANAGER(manager), NULL);
- iter = manager->priv->medias;
+ if (private)
+ iter = manager->priv->private_medias;
+ else
+ iter = manager->priv->medias;
for (; iter; iter = g_list_next(iter)) {
if (purple_media_get_account(iter->data) == account) {
media = g_list_prepend(media, iter->data);
@@ -397,21 +426,73 @@
}
void
-purple_media_manager_remove_media(PurpleMediaManager *manager,
- PurpleMedia *media)
+purple_media_manager_remove_media(PurpleMediaManager *manager, PurpleMedia *media)
{
#ifdef USE_VV
GList *list;
+ GList **medias;
g_return_if_fail(manager != NULL);
- list = g_list_find(manager->priv->medias, media);
+ if ((list = g_list_find(manager->priv->medias, media))) {
+ medias = &manager->priv->medias;
+ } else if ((list = g_list_find(manager->priv->private_medias, media))) {
+ medias = &manager->priv->private_medias;
+ }
+
if (list)
- manager->priv->medias =
- g_list_delete_link(manager->priv->medias, list);
+ *medias = g_list_delete_link(*medias, list);
#endif
}
+PurpleMedia *
+purple_media_manager_create_media(PurpleMediaManager *manager,
+ PurpleAccount *account,
+ const char *conference_type,
+ const char *remote_user,
+ gboolean initiator)
+{
+ return create_media (manager, account, conference_type,
+ remote_user, initiator, FALSE);
+}
+
+GList *
+purple_media_manager_get_media(PurpleMediaManager *manager)
+{
+ return get_media (manager, FALSE);
+}
+
+GList *
+purple_media_manager_get_media_by_account(PurpleMediaManager *manager,
+ PurpleAccount *account)
+{
+ return get_media_by_account (manager, account, FALSE);
+}
+
+PurpleMedia *
+purple_media_manager_create_private_media(PurpleMediaManager *manager,
+ PurpleAccount *account,
+ const char *conference_type,
+ const char *remote_user,
+ gboolean initiator)
+{
+ return create_media (manager, account, conference_type,
+ remote_user, initiator, TRUE);
+}
+
+GList *
+purple_media_manager_get_private_media(PurpleMediaManager *manager)
+{
+ return get_media (manager, TRUE);
+}
+
+GList *
+purple_media_manager_get_private_media_by_account(PurpleMediaManager *manager,
+ PurpleAccount *account)
+{
+ return get_media_by_account (manager, account, TRUE);
+}
+
#ifdef USE_VV
static void
request_pad_unlinked_cb(GstPad *pad, GstPad *peer, gpointer user_data)
diff --git a/libpurple/mediamanager.h b/libpurple/mediamanager.h
--- a/libpurple/mediamanager.h
+++ b/libpurple/mediamanager.h
@@ -130,6 +130,56 @@
PurpleMedia *media);
/**
+ * Creates a private media session. A private media session is a
+ * media session which is private to the caller. It is meant to be
+ * used by plugins to create a media session that the front-end does
+ * not get notified about. It is useful especially for sessions with a
+ * type of PURPLE_MEDIA_APPLICATION which the front-end wouldn't know
+ * how to handle.
+ *
+ * @param manager The media manager to create the session under.
+ * @param account The account to create the session on.
+ * @param conference_type The conference type to feed into Farsight2.
+ * @param remote_user The remote user to initiate the session with.
+ * @param initiator TRUE if the local user is the initiator of this media
+ * call, FALSE otherwise.
+ *
+ * @return A newly created media session.
+ *
+ * @since 2.11.0
+ */
+PurpleMedia *purple_media_manager_create_private_media(
+ PurpleMediaManager *manager,
+ PurpleAccount *account,
+ const char *conference_type,
+ const char *remote_user,
+ gboolean initiator);
+
+/**
+ * Gets all of the private media sessions.
+ *
+ * @param manager The media manager to get all of the sessions from.
+ *
+ * @return A list of all the private media sessions.
+ *
+ * @since 2.11.0
+ */
+GList *purple_media_manager_get_private_media(PurpleMediaManager *manager);
+
+/**
+ * Gets all of the private media sessions for a given account.
+ *
+ * @param manager The media manager to get the sessions from.
+ * @param account The account the sessions are on.
+ *
+ * @return A list of the private media sessions on the given account.
+ *
+ * @since 2.11.0
+ */
+GList *purple_media_manager_get_private_media_by_account(
+ PurpleMediaManager *manager, PurpleAccount *account);
+
+/**
* Signals that output windows should be created for the chosen stream.
*
* This shouldn't be called outside of mediamanager.c and media.c
@@ -0,0 +1,57 @@
Index: pidgin-2.10.11/finch/libgnt/gntwm.c
===================================================================
--- pidgin-2.10.11.orig/finch/libgnt/gntwm.c
+++ pidgin-2.10.11/finch/libgnt/gntwm.c
@@ -174,37 +174,37 @@ work_around_for_ncurses_bug(void)
cchar_t ch;
PANEL *below = panel;
- sx = panel->win->_begx;
- ex = panel->win->_maxx + sx;
- sy = panel->win->_begy;
- ey = panel->win->_maxy + sy;
+ sx = getbegx(panel->win);
+ ex = getmaxx(panel->win) + sx;
+ sy = getbegy(panel->win);
+ ey = getmaxy(panel->win) + sy;
while ((below = panel_below(below)) != NULL) {
- if (sy > below->win->_begy + below->win->_maxy ||
- ey < below->win->_begy)
+ if (sy > getbegy(below->win) + getmaxy(below->win) ||
+ ey < getbegy(below->win))
continue;
- if (sx > below->win->_begx + below->win->_maxx ||
- ex < below->win->_begx)
+ if (sx > getbegx(below->win) + getmaxx(below->win) ||
+ ex < getbegx(below->win))
continue;
- for (y = MAX(sy, below->win->_begy); y <= MIN(ey, below->win->_begy + below->win->_maxy); y++) {
- if (mvwin_wch(below->win, y - below->win->_begy, sx - 1 - below->win->_begx, &ch) != OK)
+ for (y = MAX(sy, getbegy(below->win)); y <= MIN(ey, getbegy(below->win) + getmaxy(below->win)); y++) {
+ if (mvwin_wch(below->win, y - getbegy(below->win), sx - 1 - getbegx(below->win), &ch) != OK)
goto right;
w = widestringwidth(ch.chars);
if (w > 1 && (ch.attr & 1)) {
ch.chars[0] = ' ';
ch.attr &= ~ A_CHARTEXT;
- mvwadd_wch(below->win, y - below->win->_begy, sx - 1 - below->win->_begx, &ch);
- touchline(below->win, y - below->win->_begy, 1);
+ mvwadd_wch(below->win, y - getbegy(below->win), sx - 1 - getbegx(below->win), &ch);
+ touchline(below->win, y - getbegy(below->win), 1);
}
right:
- if (mvwin_wch(below->win, y - below->win->_begy, ex + 1 - below->win->_begx, &ch) != OK)
+ if (mvwin_wch(below->win, y - getbegy(below->win), ex + 1 - getbegx(below->win), &ch) != OK)
continue;
w = widestringwidth(ch.chars);
if (w > 1 && !(ch.attr & 1)) {
ch.chars[0] = ' ';
ch.attr &= ~ A_CHARTEXT;
- mvwadd_wch(below->win, y - below->win->_begy, ex + 1 - below->win->_begx, &ch);
- touchline(below->win, y - below->win->_begy, 1);
+ mvwadd_wch(below->win, y - getbegy(below->win), ex + 1 - getbegx(below->win), &ch);
+ touchline(below->win, y - getbegy(below->win), 1);
}
}
}
File diff suppressed because it is too large Load Diff
+270
View File
@@ -0,0 +1,270 @@
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
<Source>
<Name>pidgin</Name>
<Homepage>http://www.pidgin.im</Homepage>
<Packager>
<Name>PisiLinux Community</Name>
<Email>admins@pisilinux.org</Email>
</Packager>
<License>GPLv2</License>
<Icon>pidgin</Icon>
<Summary>Instant messaging application previously known as gaim</Summary>
<Description>Multi-protocol instant messaging tool for MSN, Yahoo, IRC, Jabber and Gadu-Gadu protocols.</Description>
<Archive sha1sum="5e0062b81bdb01300804e12bc0b6a04a91984631" type="tarbz2">mirrors://sourceforge/pidgin/pidgin-2.10.11.tar.bz2</Archive>
<BuildDependencies>
<Dependency>intltool</Dependency>
<Dependency>glib2-devel</Dependency>
<Dependency>gtk2-devel</Dependency>
<Dependency>libXScrnSaver-devel</Dependency>
<Dependency>libSM-devel</Dependency>
<Dependency>gtkspell-devel</Dependency>
<Dependency>sqlite-devel</Dependency>
<Dependency>libxml2-devel</Dependency>
<Dependency>gstreamer-devel</Dependency>
<Dependency>farstream-devel</Dependency>
<Dependency>gst-plugins-base-devel</Dependency>
<Dependency>libidn-devel</Dependency>
<Dependency>avahi-glib-devel</Dependency>
<Dependency>dbus-glib-devel</Dependency>
<Dependency>NetworkManager-devel</Dependency>
<Dependency>nss-devel</Dependency>
<Dependency>tcl-devel</Dependency>
<Dependency>tcltk-devel</Dependency>
<Dependency>cyrus-sasl-devel</Dependency>
<Dependency>doxygen</Dependency>
<Dependency>libxslt-devel</Dependency>
<Dependency>gnutls-devel</Dependency>
<Dependency>mono-devel</Dependency>
<Dependency>atk-devel</Dependency>
<Dependency>cairo-devel</Dependency>
<Dependency>gdk-pixbuf-devel</Dependency>
<Dependency>ncurses-devel</Dependency>
<Dependency>python-devel</Dependency>
</BuildDependencies>
<Patches>
<!--<Patch level="0">pidgin-desktop.patch</Patch> -->
<!-- <Patch level="1">mageia/pidgin-2.7.0-smiley.patch</Patch> -->
<!-- <Patch level="1">mageia/pidgin-2.8.0-reread-resolvconf.patch</Patch> -->
<!-- <Patch level="1">mageia/pidgin-2.10.0-gg-search-by-uin.patch</Patch> -->
<!-- <Patch level="0">mageia/pidgin-2.4.2-set-jabber-as-module.patch</Patch> -->
<!-- <Patch level="1">mageia/pidgin-2.8.0-gg-disconnect.patch</Patch> -->
<!-- <Patch level="1">mageia/pidgin-2.7.0-mono-build.patch</Patch> -->
<!-- <Patch level="1">fedora/pidgin-NOT-UPSTREAM-2.5.2-rhel4-sound-migration.patch</Patch> -->
<Patch level="1">suse/ pidgin-2.10.11-send-video-enum.patch</Patch>
<Patch level="1">suse/pidgin-2.10.11-add-dtmf-support.patch</Patch>
<!-- <Patch level="1">suse/pidgin-2.10.11-application-media.patch</Patch> -->
<Patch level="1">suse/pidgin-2.10.11-fix-sound-play-fd-leak.patch</Patch>
<Patch level="1">suse/pidgin-2.10.11-gst-references.patch</Patch>
<Patch level="1">suse/pidgin-2.10.11-init-media-optional.patch</Patch>
<Patch level="1">suse/pidgin-2.10.11-private-media.patch</Patch>
<Patch level="1">suse/pidgin-ncurses-6.0-accessors.patch</Patch>
<!-- <Patch level="1">suse/pidgin-port-to-gst-1.0.patch</Patch> -->
</Patches>
</Source>
<Package>
<Name>pidgin</Name>
<IsA>app:gui</IsA>
<RuntimeDependencies>
<Dependency>atk</Dependency>
<Dependency>dbus</Dependency>
<Dependency>gtk2</Dependency>
<Dependency>cairo</Dependency>
<Dependency>glib2</Dependency>
<Dependency>libSM</Dependency>
<Dependency>pango</Dependency>
<Dependency>libICE</Dependency>
<Dependency>sqlite</Dependency>
<Dependency>freetype</Dependency>
<Dependency>gtkspell</Dependency>
<Dependency>dbus-glib</Dependency>
<Dependency>gstreamer</Dependency>
<Dependency>fontconfig</Dependency>
<Dependency>gdk-pixbuf</Dependency>
<Dependency>libXScrnSaver</Dependency>
<Dependency release="current">libpurple</Dependency>
</RuntimeDependencies>
<Files>
<Path fileType="man">/usr/share/man</Path>
<Path fileType="doc">/usr/share/doc</Path>
<Path fileType="executable">/usr/bin</Path>
<Path fileType="data">/usr/share/icons</Path>
<Path fileType="data">/usr/share/sounds</Path>
<Path fileType="data">/usr/share/dbus-1</Path>
<Path fileType="data">/usr/share/purple</Path>
<Path fileType="data">/usr/share/pixmaps</Path>
<Path fileType="library">/usr/lib/pidgin</Path>
<Path fileType="config">/etc/gconf/schemas</Path>
<Path fileType="data">/usr/share/appdata/</Path>
<Path fileType="localedata">/usr/share/locale</Path>
<Path fileType="data">/usr/share/applications</Path>
</Files>
</Package>
<Package>
<Name>pidgin-devel</Name>
<IsA>library</IsA>
<Summary>Development files of pidgin</Summary>
<RuntimeDependencies>
<Dependency release="current">pidgin</Dependency>
<Dependency release="current">libpurple-devel</Dependency>
<Dependency>gtk2-devel</Dependency>
</RuntimeDependencies>
<Files>
<Path fileType="header">/usr/include/pidgin</Path>
<Path fileType="executable">/usr/bin/dh_pidgin</Path>
<Path fileType="man">/usr/share/man/man3/Pidgin*</Path>
<Path fileType="data">/usr/lib/pkgconfig/pidgin.pc</Path>
</Files>
</Package>
<Package>
<Name>finch</Name>
<IsA>app:console</IsA>
<Summary>Console based instant messaging application</Summary>
<RuntimeDependencies>
<Dependency>glib2</Dependency>
<Dependency>libX11</Dependency>
<Dependency>python</Dependency>
<Dependency>libxml2</Dependency>
<Dependency>ncurses</Dependency>
<Dependency>gstreamer</Dependency>
<Dependency release="current">libpurple</Dependency>
</RuntimeDependencies>
<Files>
<Path fileType="library">/usr/lib/gnt</Path>
<Path fileType="library">/usr/lib/finch</Path>
<Path fileType="library">/usr/lib/libgnt*</Path>
<Path fileType="executable">/usr/bin/finch</Path>
<Path fileType="man">/usr/share/man/man1/finch*</Path>
</Files>
</Package>
<Package>
<Name>finch-devel</Name>
<IsA>library</IsA>
<Summary>Development files of finch</Summary>
<RuntimeDependencies>
<Dependency release="current">finch</Dependency>
<Dependency release="current">libpurple-devel</Dependency>
</RuntimeDependencies>
<Files>
<Path fileType="header">/usr/include/gnt</Path>
<Path fileType="header">/usr/include/finch</Path>
<Path fileType="data">/usr/lib/pkgconfig/gnt*</Path>
<Path fileType="data">/usr/lib/pkgconfig/finch*</Path>
</Files>
</Package>
<Package>
<Name>libpurple</Name>
<IsA>library</IsA>
<Summary>The core library of pidgin, supports MSN, XMPP, ICQ, Gadu-Gadu and etc.</Summary>
<RuntimeDependencies>
<Dependency>nss</Dependency>
<Dependency>tcl</Dependency>
<Dependency>dbus</Dependency>
<Dependency>nspr</Dependency>
<Dependency>perl</Dependency>
<Dependency>glib2</Dependency>
<Dependency>tcltk</Dependency>
<Dependency>gnutls</Dependency>
<Dependency>libidn</Dependency>
<Dependency>libxml2</Dependency>
<Dependency>dbus-glib</Dependency>
<Dependency>gstreamer</Dependency>
<Dependency>avahi-glib</Dependency>
<Dependency>avahi-libs</Dependency>
<Dependency>cyrus-sasl</Dependency>
<Dependency>gst-plugins-base</Dependency>
</RuntimeDependencies>
<Files>
<Path fileType="library">/usr/lib/purple-2</Path>
<Path fileType="executable">/usr/bin/purple*</Path>
<Path fileType="library">/usr/lib/libpurple*</Path>
</Files>
</Package>
<Package>
<Name>libpurple-devel</Name>
<IsA>library</IsA>
<Summary>Development files of libpurple</Summary>
<RuntimeDependencies>
<Dependency release="current">libpurple</Dependency>
</RuntimeDependencies>
<Files>
<Path fileType="data">/usr/share/aclocal</Path>
<Path fileType="header">/usr/include/libpurple</Path>
<Path fileType="man">/usr/share/man/man3/Purple*</Path>
<Path fileType="data">/usr/lib/pkgconfig/purple.pc</Path>
</Files>
</Package>
<History>
<Update release="9">
<Date>2015-11-20</Date>
<Version>2.10.11</Version>
<Comment>rebuild and add pisi-2.0.</Comment>
<Name>Alihan Öztürk</Name>
<Email>alihan@pisilinux.org</Email>
</Update>
<Update release="8">
<Date>2015-02-17</Date>
<Version>2.10.11</Version>
<Comment>Version bump.</Comment>
<Name>Stefan Gronewold(groni)</Name>
<Email>groni@pisilinux.org</Email>
</Update>
<Update release="7">
<Date>2014-02-17</Date>
<Version>2.10.9</Version>
<Comment>Rebuild Unused</Comment>
<Name>Varol Maksutoğlu</Name>
<Email>waroi@pisilinux.org</Email>
</Update>
<Update release="6">
<Date>2014-02-04</Date>
<Version>2.10.9</Version>
<Comment>Version bump.</Comment>
<Name>Yusuf Aydemir</Name>
<Email>yusuf.aydemir@pisilinux.org</Email>
</Update>
<Update release="5">
<Date>2014-01-11</Date>
<Version>2.10.7</Version>
<Comment>Rebuild</Comment>
<Name>Kamil Atlı</Name>
<Email>suvarice@gmail.com</Email>
</Update>
<Update release="4">
<Date>2013-07-29</Date>
<Version>2.10.7</Version>
<Comment>Dep Fixed</Comment>
<Name>Osman Erkan</Name>
<Email>osman.erkan@pisilinux.org</Email>
</Update>
<Update release="3">
<Date>2013-03-22</Date>
<Version>2.10.7</Version>
<Comment>fixing some errors</Comment>
<Name>Erdinç Gültekin</Name>
<Email>admins@pisilinux.org</Email>
</Update>
<Update release="2">
<Date>2013-01-16</Date>
<Version>2.10.7</Version>
<Comment>Updated</Comment>
<Name>Osman Erkan</Name>
<Email>osman.erkan@pisilinux.org</Email>
</Update>
<Update release="1">
<Date>2012-07-25</Date>
<Version>2.10.6</Version>
<Comment>First release</Comment>
<Name>Yusuf Aydemir</Name>
<Email>yusuf.aydemir@pisilinux.org</Email>
</Update>
</History>
</PISI>
+33
View File
@@ -0,0 +1,33 @@
<?xml version="1.0" ?>
<PISI>
<Source>
<Name>pidgin</Name>
<Summary xml:lang="tr">Eski sürümleri gaim olarak bilinen, hızlı haberleşme aracı</Summary>
<Description xml:lang="tr">Birçok protokolü (MSN Messenger, Yahoo, IRC, Jabber, Gadu-Gadu gibi) destekleyen hızlı haberleşme aracıdır.</Description>
</Source>
<Package>
<Name>pidgin-devel</Name>
<Summary xml:lang="tr">pidgin paketine ait geliştirme dosyaları</Summary>
</Package>
<Package>
<Name>finch</Name>
<Summary xml:lang="tr">Konsol tabanlı anında mesajlaşma istemcisi</Summary>
</Package>
<Package>
<Name>finch-devel</Name>
<Summary xml:lang="tr">finch paketine ait geliştirme dosyaları</Summary>
</Package>
<Package>
<Name>libpurple</Name>
<Summary xml:lang="tr">Pidgin projesine ait, MSN, XMPP, ICQ, Gadu-Gadu gibi protokolleri destekleyen anında mesajlaşma kitaplığı</Summary>
</Package>
<Package>
<Name>libpurple-devel</Name>
<Summary xml:lang="tr">libpurple paketine ait geliştirme dosyaları</Summary>
</Package>
</PISI>