summaryrefslogtreecommitdiff
path: root/libre/xchat-libre
diff options
context:
space:
mode:
Diffstat (limited to 'libre/xchat-libre')
-rw-r--r--libre/xchat-libre/PKGBUILD24
-rw-r--r--libre/xchat-libre/remove-non-free-suggestion.patch2
-rw-r--r--libre/xchat-libre/xchat-2.8.8-libnotify07.patch25
-rw-r--r--libre/xchat-libre/xchat-2.8.8-link-against-libnotify.patch344
4 files changed, 385 insertions, 10 deletions
diff --git a/libre/xchat-libre/PKGBUILD b/libre/xchat-libre/PKGBUILD
index 0c0c0b6b1..f04ec2f47 100644
--- a/libre/xchat-libre/PKGBUILD
+++ b/libre/xchat-libre/PKGBUILD
@@ -4,7 +4,7 @@
pkgbasename=xchat
pkgname=xchat-libre
pkgver=2.8.8
-pkgrel=3.1
+pkgrel=7
pkgdesc="A GTK+ based IRC client without non-free browser reference"
arch=('i686' 'x86_64')
url="http://www.xchat.org/"
@@ -12,20 +12,27 @@ provides=("xchat=$pkgver")
replaces=('xchat')
conflicts=('xchat')
license=('GPL')
-depends=('gtk2' 'openssl' 'dbus-glib')
+depends=('gtk2' 'openssl' 'dbus-glib' 'libnotify')
makedepends=('tcl' 'perl' 'python2')
-optdepends=('enchant: for spell checking support' 'tcl: for tcl plugin' \
+optdepends=('enchant: for spell checking support' 'tcl: for tcl plugin'
'python2: for python plugin')
options=('!libtool')
changelog=ChangeLog
source=(http://www.xchat.org/files/source/${pkgver%.*}/${pkgbasename}-${pkgver}.tar.xz
+ xchat-2.8.8-libnotify07.patch
+ xchat-2.8.8-link-against-libnotify.patch
remove-non-free-suggestion.patch
no-firefox.patch)
build() {
cd "${srcdir}/${pkgbasename}-${pkgver}"
- patch -p1 < ../remove-non-free-suggestion.patch
- patch -p1 < ../no-firefox.patch
+ patch -Np1 -i ${srcdir}/remove-non-free-suggestion.patch
+ patch -Np1 -i ${srcdir}/no-firefox.patch
+ patch -Np1 -i ${srcdir}/xchat-2.8.8-libnotify07.patch
+ patch -Np1 -i ${srcdir}/xchat-2.8.8-link-against-libnotify.patch
+ autoconf
+ autoheader
+
./configure --prefix=/usr --sysconfdir=/etc --enable-openssl --enable-dbus \
--disable-textfe --enable-ipv6 --enable-shm --enable-spell=static
make
@@ -37,8 +44,7 @@ package() {
}
md5sums=('9a11f13121ff0af787bba3b014378e58'
- '47c665961f11a803e9a12007811a04c9'
+ '8f0ba48dc3d151cd9b4fbef3255e8c95'
+ '805893e0d8f7c9713d703f34b6bb4b89'
+ 'd0968310982fa9e30d43dd43536b7387'
'ba11c3e889509d1b46307d6ebf74509c')
-sha1sums=('e12305da42d1aacc26c2ca25e239f393d4dd3532'
- '05e673aa44813ddac8aabb251d5f0124efde91a2'
- '3a1c115c4436bdfb1882bcf93dedbe0d40dad9ae')
diff --git a/libre/xchat-libre/remove-non-free-suggestion.patch b/libre/xchat-libre/remove-non-free-suggestion.patch
index 8b0f4e41f..943daff60 100644
--- a/libre/xchat-libre/remove-non-free-suggestion.patch
+++ b/libre/xchat-libre/remove-non-free-suggestion.patch
@@ -6,7 +6,7 @@ diff -urN xchat-2.8.8.orig/src/common/xchat.c xchat-2.8.8/src/common/xchat.c
static char defaultconf_urlhandlers[] =
- "NAME Open Link in Opera\n" "CMD !opera -remote 'openURL(%s)'\n\n";
-+ "NAME Open Link in Web Browser\n" "CMD !icecat 'openURL(%s)'\n\n";
++ "NAME Open Link in Web Browser\n" "CMD !icecat '%s'\n\n";
#ifdef USE_SIGACTION
/* Close and open log files on SIGUSR1. Usefull for log rotating */
diff --git a/libre/xchat-libre/xchat-2.8.8-libnotify07.patch b/libre/xchat-libre/xchat-2.8.8-libnotify07.patch
new file mode 100644
index 000000000..95d429542
--- /dev/null
+++ b/libre/xchat-libre/xchat-2.8.8-libnotify07.patch
@@ -0,0 +1,25 @@
+diff -up xchat-2.8.8/src/fe-gtk/plugin-tray.c.libnotify07 xchat-2.8.8/src/fe-gtk/plugin-tray.c
+--- xchat-2.8.8/src/fe-gtk/plugin-tray.c.libnotify07 2010-11-15 17:32:15.708325783 -0500
++++ xchat-2.8.8/src/fe-gtk/plugin-tray.c 2010-11-15 18:05:17.322141789 -0500
+@@ -125,8 +125,9 @@ static void *nn_mod = NULL;
+ /* prototypes */
+ static gboolean (*nn_init) (char *);
+ static void (*nn_uninit) (void);
+-static void *(*nn_new_with_status_icon) (const gchar *summary, const gchar *message, const gchar *icon, GtkStatusIcon *status_icon);
+-static void *(*nn_new) (const gchar *summary, const gchar *message, const gchar *icon, GtkWidget *attach);
++/* recent versions of libnotify don't take the fourth GtkWidget argument, but passing an
++ * extra NULL argument will be fine */
++static void *(*nn_new) (const gchar *summary, const gchar *message, const gchar *icon, gpointer dummy);
+ static gboolean (*nn_show) (void *noti, GError **error);
+ static void (*nn_set_timeout) (void *noti, gint timeout);
+
+@@ -160,8 +161,6 @@ libnotify_notify_new (const char *title,
+ goto bad;
+ if (!g_module_symbol (nn_mod, "notify_uninit", (gpointer)&nn_uninit))
+ goto bad;
+- if (!g_module_symbol (nn_mod, "notify_notification_new_with_status_icon", (gpointer)&nn_new_with_status_icon))
+- goto bad;
+ if (!g_module_symbol (nn_mod, "notify_notification_new", (gpointer)&nn_new))
+ goto bad;
+ if (!g_module_symbol (nn_mod, "notify_notification_show", (gpointer)&nn_show))
+
diff --git a/libre/xchat-libre/xchat-2.8.8-link-against-libnotify.patch b/libre/xchat-libre/xchat-2.8.8-link-against-libnotify.patch
new file mode 100644
index 000000000..6dad938ea
--- /dev/null
+++ b/libre/xchat-libre/xchat-2.8.8-link-against-libnotify.patch
@@ -0,0 +1,344 @@
+From: Christopher Aillon <caillon@redhat.com>
+Date: Thu, 7 Apr 2011 19:34:14 -0700
+Subject: [PATCH] Link directly against libnotify
+
+Dynamically loading the library isn't ideal since the soname
+can change silently on us. Additionally, notify-send is
+shipped as part of libnotify, so we aren't actually bringing
+in a new dependency. Since we'd need to patch the source and
+rebuild for new sonames anyway, there's little benefit to
+dynamically loading libnotify.
+
+Plus, this has the benefit of cleaning up the code, as well as
+ensuring we'll catch any future soname changes sooner.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=693362
+https://sourceforge.net/tracker/?func=detail&aid=3280223&group_id=239&atid=100239
+---
+ configure.in | 23 +++++++
+ src/fe-gtk/plugin-tray.c | 144 ++++++++++-------------------------------------
+ 2 files changed, 55 insertions(+), 112 deletions(-)
+
+diff -p -U8 xchat-2.8.8/configure.in.libnotifyso4 xchat-2.8.8/configure.in
+--- xchat-2.8.8/configure.in.libnotifyso4 2010-05-29 23:01:16.000000000 -0700
++++ xchat-2.8.8/configure.in 2011-04-07 19:27:00.448137113 -0700
+@@ -34,16 +34,17 @@ AH_VERBATIM([PREFIX],[#undef PREFIX])
+ AH_VERBATIM([XCHATLIBDIR],[#undef XCHATLIBDIR])
+ AH_VERBATIM([XCHATSHAREDIR],[#undef XCHATSHAREDIR])
+ AH_VERBATIM([SOCKS],[#undef SOCKS])
+ AH_VERBATIM([USE_MSPROXY],[#undef USE_MSPROXY])
+ dnl AH_VERBATIM([USE_GNOME],[#undef USE_GNOME])
+ AH_VERBATIM([USE_SHM],[#undef USE_SHM])
+ AH_VERBATIM([USE_GTKSPELL],[#undef USE_GTKSPELL])
+ AH_VERBATIM([USE_LIBSEXY],[#undef USE_LIBSEXY])
++AH_VERBATIM([USE_LIBNOTIFY],[#undef USE_LIBNOTIFY])
+ AH_VERBATIM([USE_IPV6],[#undef USE_IPV6])
+ AH_VERBATIM([USE_MMX],[#undef USE_MMX])
+ AH_VERBATIM([USE_OPENSSL],[#undef USE_OPENSSL])
+ AH_VERBATIM([USE_PLUGIN],[#undef USE_PLUGIN])
+ AH_VERBATIM([USE_XFT],[#undef USE_XFT])
+ AH_VERBATIM([USE_XLIB],[#undef USE_XLIB])
+ AH_VERBATIM([USE_SIGACTION],[#undef USE_SIGACTION])
+ AH_VERBATIM([USING_FREEBSD],[#undef USING_FREEBSD])
+@@ -126,16 +127,20 @@ AC_ARG_ENABLE(tcl,
+ AC_ARG_ENABLE(plugin,
+ [ --disable-plugin disable plugin support],
+ plugin=$enableval, plugin=yes)
+
+ AC_ARG_ENABLE(dbus,
+ [ --disable-dbus disable DBUS support],
+ dbus=$enableval, dbus=yes)
+
++AC_ARG_ENABLE(libnotify,
++[ --disable-libnotify disable libnotify support],
++ libnotify=$enableval, libnotify=yes)
++
+ AC_ARG_ENABLE(mmx,
+ [ --disable-mmx disable MMX assembly routines],
+ mmx=$enableval, mmx=yes)
+
+ AC_ARG_ENABLE(shm,
+ [ --enable-shm enable use of XShm for fast tinting (default: no)],
+ shm=$enableval, shm=no)
+
+@@ -482,16 +487,32 @@ if test "x$dbus" = "xyes" ; then
+
+ DBUS_SERVICES_DIR="$DATADIR/dbus-1/services"
+ AC_SUBST(DBUS_SERVICES_DIR)
+ AC_DEFINE_UNQUOTED(DBUS_SERVICES_DIR, "$DBUS_SERVICES_DIR", [Where services dir for DBUS is])
+ fi
+ fi
+
+ dnl *********************************************************************
++dnl ** LIBNOTIFY ********************************************************
++dnl *********************************************************************
++
++if test "x$libnotify" = "xyes" ; then
++ PKG_CHECK_MODULES(LIBNOTIFY, libnotify >= 0.4, [], [
++ AC_MSG_RESULT(no)
++ libnotify=no
++ ])
++ if test "$libnotify" != "no" ; then
++ GUI_LIBS="$GUI_LIBS $LIBNOTIFY_LIBS"
++ GUI_CFLAGS="$GUI_CFLAGS $LIBNOTIFY_CFLAGS"
++ AC_DEFINE(USE_LIBNOTIFY)
++ fi
++fi
++
++dnl *********************************************************************
+ dnl ** SPELL ************************************************************
+ dnl *********************************************************************
+
+ if test "$spell" = "gtkspell" ; then
+ PKG_CHECK_MODULES(GTKSPELL, gtkspell-2.0 >= 2.0.2, [], [
+ AC_MSG_RESULT(no)
+ spell=no
+ ])
+@@ -519,16 +540,17 @@ if test "$spell" = "static" ; then
+ fi
+
+ dnl *********************************************************************
+ dnl ** CONDITIONALS *****************************************************
+ dnl *********************************************************************
+
+ AM_CONDITIONAL(USE_OPENSSL, test "x$openssl" = "xyes")
+ AM_CONDITIONAL(USE_LIBSEXY, test "x$spell" = "xstatic")
++AM_CONDITIONAL(USE_LIBNOTIFY, test "x$libnotify" = "xyes")
+ AM_CONDITIONAL(DO_TEXT, test "x$textfe" = "xyes")
+ AM_CONDITIONAL(DO_GTK, test "x$gtkfe" = "xyes")
+ AM_CONDITIONAL(DO_PERL, test "x$perl" = "xyes")
+ AM_CONDITIONAL(DO_PYTHON, test "x$python" = "xyes")
+ AM_CONDITIONAL(DO_TCL, test "x$tcl" = "xyes")
+ AM_CONDITIONAL(DO_PLUGIN, test "x$plugin" = "xyes")
+ AM_CONDITIONAL(USE_DBUS, test "x$dbus" = "xyes")
+ AM_CONDITIONAL(DO_GCONF, test "x$GCONFTOOL" != "xno")
+@@ -807,16 +829,17 @@ echo mmx tinting ......... : $mmx\ spell
+ echo XShm tinting ........ : $shm\ plugin interface ...... : $plugin
+ if test "$xft" = no; then
+ echo text backend ........ : pango\ nls/gettext ........... : $USE_NLS
+ else
+ echo text backend ........ : xft\ nls/gettext ........... : $USE_NLS
+ fi
+ echo openssl support ..... : $openssl\ ipv6 support .......... : $ipv6
+ echo dbus support ........ : $dbus\ msproxy ntlm \(ISA\) .... : $have_ntlm
++echo libnotify support ... : $libnotify
+ echo
+ echo The binary will be installed in $prefix/bin
+ echo
+
+ if test "$gtkfe" = no; then
+ echo Warning: The GTK \(GUI\) frontend will not be built.
+ echo
+ fi
+diff -p -U8 xchat-2.8.8/src/fe-gtk/plugin-tray.c.libnotifyso4 xchat-2.8.8/src/fe-gtk/plugin-tray.c
+--- xchat-2.8.8/src/fe-gtk/plugin-tray.c.libnotifyso4 2011-04-07 17:57:27.524307905 -0700
++++ xchat-2.8.8/src/fe-gtk/plugin-tray.c 2011-04-07 19:18:33.429475719 -0700
+@@ -10,17 +10,27 @@
+ #include "../common/fe.h"
+ #include "../common/util.h"
+ #include "fe-gtk.h"
+ #include "pixmaps.h"
+ #include "maingui.h"
+ #include "menu.h"
+ #include <gtk/gtk.h>
+
+-#define LIBNOTIFY
++#ifdef USE_LIBNOTIFY
++#include <libnotify/notify.h>
++#ifndef NOTIFY_CHECK_VERSION
++#define NOTIFY_CHECK_VERSION(x,y,z) 0
++#endif
++#if NOTIFY_CHECK_VERSION(0,7,0)
++#define XC_NOTIFY_NEW(a,b,c,d) notify_notification_new(a,b,c)
++#else
++#define XC_NOTIFY_NEW(a,b,c,d) notify_notification_new(a,b,c,d)
++#endif
++#endif
+
+ typedef enum /* current icon status */
+ {
+ TS_NONE,
+ TS_MESSAGE,
+ TS_HIGHLIGHT,
+ TS_FILEOFFER,
+ TS_CUSTOM /* plugin */
+@@ -112,90 +122,16 @@ tray_count_networks (void)
+
+ void
+ fe_tray_set_tooltip (const char *text)
+ {
+ if (sticon)
+ gtk_status_icon_set_tooltip (sticon, text);
+ }
+
+-#ifdef LIBNOTIFY
+-
+-/* dynamic access to libnotify.so */
+-
+-static void *nn_mod = NULL;
+-/* prototypes */
+-static gboolean (*nn_init) (char *);
+-static void (*nn_uninit) (void);
+-/* recent versions of libnotify don't take the fourth GtkWidget argument, but passing an
+- * extra NULL argument will be fine */
+-static void *(*nn_new) (const gchar *summary, const gchar *message, const gchar *icon, gpointer dummy);
+-static gboolean (*nn_show) (void *noti, GError **error);
+-static void (*nn_set_timeout) (void *noti, gint timeout);
+-
+-static void
+-libnotify_cleanup (void)
+-{
+- if (nn_mod)
+- {
+- nn_uninit ();
+- g_module_close (nn_mod);
+- nn_mod = NULL;
+- }
+-}
+-
+-static gboolean
+-libnotify_notify_new (const char *title, const char *text, GtkStatusIcon *icon)
+-{
+- void *noti;
+-
+- if (!nn_mod)
+- {
+- nn_mod = g_module_open ("libnotify", G_MODULE_BIND_LAZY);
+- if (!nn_mod)
+- {
+- nn_mod = g_module_open ("libnotify.so.1", G_MODULE_BIND_LAZY);
+- if (!nn_mod)
+- return FALSE;
+- }
+-
+- if (!g_module_symbol (nn_mod, "notify_init", (gpointer)&nn_init))
+- goto bad;
+- if (!g_module_symbol (nn_mod, "notify_uninit", (gpointer)&nn_uninit))
+- goto bad;
+- if (!g_module_symbol (nn_mod, "notify_notification_new", (gpointer)&nn_new))
+- goto bad;
+- if (!g_module_symbol (nn_mod, "notify_notification_show", (gpointer)&nn_show))
+- goto bad;
+- if (!g_module_symbol (nn_mod, "notify_notification_set_timeout", (gpointer)&nn_set_timeout))
+- goto bad;
+- if (!nn_init (PACKAGE_NAME))
+- goto bad;
+- }
+-
+- text = strip_color (text, -1, STRIP_ALL|STRIP_ESCMARKUP);
+- title = strip_color (title, -1, STRIP_ALL);
+- noti = nn_new (title, text, XCHATSHAREDIR"/pixmaps/xchat.png", NULL);
+- g_free ((char *)title);
+- g_free ((char *)text);
+-
+- nn_set_timeout (noti, prefs.input_balloon_time*1000);
+- nn_show (noti, NULL);
+- g_object_unref (G_OBJECT (noti));
+-
+- return TRUE;
+-
+-bad:
+- g_module_close (nn_mod);
+- nn_mod = NULL;
+- return FALSE;
+-}
+-
+-#endif
+-
+ void
+ fe_tray_set_balloon (const char *title, const char *text)
+ {
+ #ifndef WIN32
+ const char *argv[8];
+ const char *path;
+ char time[16];
+ WinStatus ws;
+@@ -208,52 +144,36 @@ fe_tray_set_balloon (const char *title,
+ /* bit 1 of flags means "no balloons unless hidden/iconified" */
+ if (ws != WS_HIDDEN && (prefs.gui_tray_flags & 2))
+ return;
+
+ /* FIXME: this should close the current balloon */
+ if (!text)
+ return;
+
+-#ifdef LIBNOTIFY
+- /* try it via libnotify.so */
+- if (libnotify_notify_new (title, text, sticon))
+- return; /* success */
+-#endif
++#ifdef USE_LIBNOTIFY
++ NotifyNotification *notification;
++ char *notify_text, *notify_title;
+
+- /* try it the crude way */
+- path = g_find_program_in_path ("notify-send");
+- if (path)
+- {
+- sprintf(time, "%d000",prefs.input_balloon_time);
+- argv[0] = path;
+- argv[1] = "-i";
+- argv[2] = "gtk-dialog-info";
+- if (access (XCHATSHAREDIR"/pixmaps/xchat.png", R_OK) == 0)
+- argv[2] = XCHATSHAREDIR"/pixmaps/xchat.png";
+- argv[3] = "-t";
+- argv[4] = time;
+- argv[5] = title;
+- text = strip_color (text, -1, STRIP_ALL|STRIP_ESCMARKUP);
+- argv[6] = text;
+- argv[7] = NULL;
+- xchat_execv (argv);
+- g_free ((char *)path);
+- g_free ((char *)text);
+- }
+- else
+- {
+- /* show this error only once */
+- static unsigned char said_it = FALSE;
+- if (!said_it)
+- {
+- said_it = TRUE;
+- fe_message (_("Cannot find 'notify-send' to open balloon alerts.\nPlease install libnotify."), FE_MSG_ERROR);
+- }
+- }
++ if (!notify_is_initted())
++ notify_init(PACKAGE_NAME);
++
++ notify_text = strip_color (text, -1, STRIP_ALL|STRIP_ESCMARKUP);
++ notify_title = strip_color (title, -1, STRIP_ALL);
++
++ notification = XC_NOTIFY_NEW (notify_title, notify_text, XCHATSHAREDIR"/pixmaps/xchat.png", NULL);
++
++ g_free ((char *)notify_title);
++ g_free ((char *)notify_text);
++
++ notify_notification_set_timeout (notification, prefs.input_balloon_time*1000);
++ notify_notification_show (notification, NULL);
++
++ g_object_unref (notification);
++#endif
+ #endif
+ }
+
+ static void
+ tray_set_balloonf (const char *text, const char *format, ...)
+ {
+ va_list args;
+ char *buf;
+@@ -840,13 +760,13 @@ tray_plugin_init (xchat_plugin *plugin_h
+ return 1; /* return 1 for success */
+ }
+
+ int
+ tray_plugin_deinit (xchat_plugin *plugin_handle)
+ {
+ #ifdef WIN32
+ tray_cleanup ();
+-#elif defined(LIBNOTIFY)
+- libnotify_cleanup ();
++#elif defined(USE_LIBNOTIFY)
++ notify_uninit ();
+ #endif
+ return 1;
+ }
+