diff options
Diffstat (limited to 'abs/extra/xchat')
| -rw-r--r-- | abs/extra/xchat/PKGBUILD | 51 | ||||
| -rw-r--r-- | abs/extra/xchat/xchat-2.8.8-glib-2.31.patch | 62 | ||||
| -rw-r--r-- | abs/extra/xchat/xchat-2.8.8-libnotify07.patch | 24 | ||||
| -rw-r--r-- | abs/extra/xchat/xchat-2.8.8-link-against-libnotify.patch | 343 | ||||
| -rw-r--r-- | abs/extra/xchat/xchat.install | 11 | 
5 files changed, 491 insertions, 0 deletions
| diff --git a/abs/extra/xchat/PKGBUILD b/abs/extra/xchat/PKGBUILD new file mode 100644 index 0000000..b642e6a --- /dev/null +++ b/abs/extra/xchat/PKGBUILD @@ -0,0 +1,51 @@ +# $Id: PKGBUILD 160583 2012-06-02 10:29:13Z bluewind $ +# Maintainer: Eric Bélanger <eric@archlinux.org> + +pkgname=xchat +pkgver=2.8.8 +pkgrel=10 +pkgdesc="A GTK+ based IRC client" +arch=('i686' 'x86_64') +url="http://www.xchat.org/" +license=('GPL') +depends=('gtk2' 'openssl' 'dbus-glib' 'libnotify' 'hicolor-icon-theme') +makedepends=('tcl' 'perl' 'python2' 'librsvg') +optdepends=('enchant: for spell checking support' 'tcl: for tcl plugin' +            'python2: for python plugin') +options=('!libtool') +install=xchat.install +source=(http://www.xchat.org/files/source/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz +        http://xchat.org/files/icons/xchat-svg.tar.bz2 +        xchat-2.8.8-libnotify07.patch +        xchat-2.8.8-link-against-libnotify.patch +        xchat-2.8.8-glib-2.31.patch) +sha1sums=('e12305da42d1aacc26c2ca25e239f393d4dd3532' +          '0d366346cc11e0efb57fc2648fe423c94a3469bd' +          'a053fba4e1911d1ee6a8248fe19e344797920fe3' +          '70c3cc29fc55ff35f701ef8ac23078b6e3761ce1' +          'aecaf6176a7cfd62555207b02f2793b360aa39da') + +build() { +  cd "${srcdir}/${pkgname}-${pkgver}" +  patch -p1 -i "${srcdir}/xchat-2.8.8-libnotify07.patch" +  patch -p1 -i "${srcdir}/xchat-2.8.8-link-against-libnotify.patch" +  patch -p1 -i "${srcdir}/xchat-2.8.8-glib-2.31.patch" +  autoconf +  autoheader + +  LIBS+="-lgmodule-2.0" ./configure --prefix=/usr --sysconfdir=/etc --datadir=/usr/share \ +    --enable-openssl --enable-dbus --disable-textfe --enable-ipv6 --enable-shm --enable-spell=static +  make +} + +package() { +  cd "${srcdir}/${pkgname}-${pkgver}" +  make DESTDIR="${pkgdir}" install + +  for i in 24 32 48 64 128 256 ; do +    install -d "${pkgdir}/usr/share/icons/hicolor/${i}x${i}/apps" +    rsvg-convert -w $i -h $i -o "${pkgdir}/usr/share/icons/hicolor/${i}x${i}/apps/xchat.png" ../xchat-cloned.svg +  done +  install -D -m644 ../xchat-cloned.svg "${pkgdir}/usr/share/icons/hicolor/scalable/apps/xchat.svg" +  install -D -m644 ../xchat-used.svg "${pkgdir}/usr/share/icons/hicolor/scalable/apps/xchat2.svg" +} diff --git a/abs/extra/xchat/xchat-2.8.8-glib-2.31.patch b/abs/extra/xchat/xchat-2.8.8-glib-2.31.patch new file mode 100644 index 0000000..63f562f --- /dev/null +++ b/abs/extra/xchat/xchat-2.8.8-glib-2.31.patch @@ -0,0 +1,62 @@ +Author: Dominique Leuenberger <dimstar@opensuse.org> + +http://sourceforge.net/tracker/?func=detail&aid=3446968&group_id=239&atid=100239 + +glib got stricter in checking includes. Only glib.h (and a few exceptions) +are to be included directly. + +Index: xchat-2.8.8/src/common/servlist.c +=================================================================== +--- xchat-2.8.8.orig/src/common/servlist.c ++++ xchat-2.8.8/src/common/servlist.c +@@ -24,7 +24,7 @@ + #include <unistd.h> +  + #include "xchat.h" +-#include <glib/ghash.h> ++#include <glib.h> +  + #include "cfgfiles.h" + #include "fe.h" +Index: xchat-2.8.8/src/common/text.c +=================================================================== +--- xchat-2.8.8.orig/src/common/text.c ++++ xchat-2.8.8/src/common/text.c +@@ -28,7 +28,7 @@ + #include <sys/mman.h> +  + #include "xchat.h" +-#include <glib/ghash.h> ++#include <glib.h> + #include "cfgfiles.h" + #include "chanopt.h" + #include "plugin.h" +Index: xchat-2.8.8/src/common/util.c +=================================================================== +--- xchat-2.8.8.orig/src/common/util.c ++++ xchat-2.8.8/src/common/util.c +@@ -39,7 +39,7 @@ + #include <errno.h> + #include "xchat.h" + #include "xchatc.h" +-#include <glib/gmarkup.h> ++#include <glib.h> + #include <ctype.h> + #include "util.h" + #include "../../config.h" +Index: xchat-2.8.8/src/common/xchat.h +=================================================================== +--- xchat-2.8.8.orig/src/common/xchat.h ++++ xchat-2.8.8/src/common/xchat.h +@@ -1,10 +1,6 @@ + #include "../../config.h" +  +-#include <glib/gslist.h> +-#include <glib/glist.h> +-#include <glib/gutils.h> +-#include <glib/giochannel.h> +-#include <glib/gstrfuncs.h> ++#include <glib.h> + #include <time.h>			/* need time_t */ +  + #ifndef XCHAT_H diff --git a/abs/extra/xchat/xchat-2.8.8-libnotify07.patch b/abs/extra/xchat/xchat-2.8.8-libnotify07.patch new file mode 100644 index 0000000..2a6dce9 --- /dev/null +++ b/abs/extra/xchat/xchat-2.8.8-libnotify07.patch @@ -0,0 +1,24 @@ +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/abs/extra/xchat/xchat-2.8.8-link-against-libnotify.patch b/abs/extra/xchat/xchat-2.8.8-link-against-libnotify.patch new file mode 100644 index 0000000..31e6c08 --- /dev/null +++ b/abs/extra/xchat/xchat-2.8.8-link-against-libnotify.patch @@ -0,0 +1,343 @@ +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; + } diff --git a/abs/extra/xchat/xchat.install b/abs/extra/xchat/xchat.install new file mode 100644 index 0000000..eab82d1 --- /dev/null +++ b/abs/extra/xchat/xchat.install @@ -0,0 +1,11 @@ +post_install() { +  gtk-update-icon-cache -q -t -f usr/share/icons/hicolor	 +} + +post_upgrade() { +  post_install $1 +} + +post_remove() { +  post_install $1 +} | 
