summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Fergeau <cfergeau@redhat.com>2011-05-24 11:56:59 +0200
committerChristophe Fergeau <cfergeau@redhat.com>2011-05-25 11:40:28 +0200
commit508da75d23fc6f8345407afac29bd73a775d35dd (patch)
treefb455272d1e734929391e8a30b3b19f141be6cca
parentc96a1d03f6a026c40b089b4e5fd50dfa9e334b03 (diff)
add patches to fix build with glib 2.22el6
spice-gtk configure checks for glib >= 2.22, but a few uses of features from glibs newer than 2.22 have crept in. These patches fixes these. They have been integrated upstream and should be part of the next spice-gtk release
-rw-r--r--spice-gtk-0.6-g_define_boxed.patch76
-rw-r--r--spice-gtk-0.6-g_object_notify_param_spec.patch21
-rw-r--r--spice-gtk-0.6-link-with-gthread.patch54
-rw-r--r--spice-gtk-0.6-vala-glib-226.patch83
-rw-r--r--spice-gtk.spec10
5 files changed, 244 insertions, 0 deletions
diff --git a/spice-gtk-0.6-g_define_boxed.patch b/spice-gtk-0.6-g_define_boxed.patch
new file mode 100644
index 0000000..1f566cd
--- /dev/null
+++ b/spice-gtk-0.6-g_define_boxed.patch
@@ -0,0 +1,76 @@
+From 866b8c784e346f6b131e6b95a60b30a05fdfd8cb Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>
+Date: Mon, 23 May 2011 10:43:47 +0200
+Subject: [PATCH] display: fix build error GLib <2.26
+
+https://bugs.freedesktop.org/show_bug.cgi?id=37443
+---
+ gtk/display/gnome-rr.c | 46 +++++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 45 insertions(+), 1 deletions(-)
+
+diff --git a/gtk/display/gnome-rr.c b/gtk/display/gnome-rr.c
+index beaf96e..ced073f 100644
+--- a/gtk/display/gnome-rr.c
++++ b/gtk/display/gnome-rr.c
+@@ -75,6 +75,50 @@ static void gnome_rr_screen_initable_iface_init (GInitableIface *iface);
+ G_DEFINE_TYPE_WITH_CODE (GnomeRRScreen, gnome_rr_screen, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE, gnome_rr_screen_initable_iface_init))
+
++#if !GLIB_CHECK_VERSION(2,26,0)
++#define G_DEFINE_BOXED_TYPE(TypeName, type_name, copy_func, free_func) G_DEFINE_BOXED_TYPE_WITH_CODE (TypeName, type_name, copy_func, free_func, {})
++#define G_DEFINE_BOXED_TYPE_WITH_CODE(TypeName, type_name, copy_func, free_func, _C_) _G_DEFINE_BOXED_TYPE_BEGIN (TypeName, type_name, copy_func, free_func) {_C_;} _G_DEFINE_TYPE_EXTENDED_END()
++#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
++#define _G_DEFINE_BOXED_TYPE_BEGIN(TypeName, type_name, copy_func, free_func) \
++GType \
++type_name##_get_type (void) \
++{ \
++ static volatile gsize g_define_type_id__volatile = 0; \
++ if (g_once_init_enter (&g_define_type_id__volatile)) \
++ { \
++ GType (* _g_register_boxed) \
++ (const gchar *, \
++ union \
++ { \
++ TypeName * (*do_copy_type) (TypeName *); \
++ TypeName * (*do_const_copy_type) (const TypeName *); \
++ GBoxedCopyFunc do_copy_boxed; \
++ } __attribute__((__transparent_union__)), \
++ union \
++ { \
++ void (* do_free_type) (TypeName *); \
++ GBoxedFreeFunc do_free_boxed; \
++ } __attribute__((__transparent_union__)) \
++ ) = g_boxed_type_register_static; \
++ GType g_define_type_id = \
++ _g_register_boxed (g_intern_static_string (#TypeName), copy_func, free_func); \
++ { /* custom code follows */
++#else
++#define _G_DEFINE_BOXED_TYPE_BEGIN(TypeName, type_name, copy_func, free_func) \
++GType \
++type_name##_get_type (void) \
++{ \
++ static volatile gsize g_define_type_id__volatile = 0; \
++ if (g_once_init_enter (&g_define_type_id__volatile)) \
++ { \
++ GType g_define_type_id = \
++ g_boxed_type_register_static (g_intern_static_string (#TypeName), \
++ (GBoxedCopyFunc) copy_func, \
++ (GBoxedFreeFunc) free_func); \
++ { /* custom code follows */
++#endif /* __GNUC__ */
++#endif /* glib 2.26 */
++
+ G_DEFINE_BOXED_TYPE (GnomeRRCrtc, gnome_rr_crtc, crtc_copy, crtc_free)
+ G_DEFINE_BOXED_TYPE (GnomeRROutput, gnome_rr_output, output_copy, output_free)
+ G_DEFINE_BOXED_TYPE (GnomeRRMode, gnome_rr_mode, mode_copy, mode_free)
+@@ -497,7 +541,7 @@ gnome_rr_screen_get_timestamps (GnomeRRScreen *screen,
+ guint32 *change_timestamp_ret,
+ guint32 *config_timestamp_ret)
+ {
+- GnomeRRScreenPrivate *priv;
++ GnomeRRScreenPrivate *priv G_GNUC_UNUSED;
+
+ g_return_if_fail (GNOME_IS_RR_SCREEN (screen));
+
+--
+1.7.5.1 \ No newline at end of file
diff --git a/spice-gtk-0.6-g_object_notify_param_spec.patch b/spice-gtk-0.6-g_object_notify_param_spec.patch
new file mode 100644
index 0000000..1072dd9
--- /dev/null
+++ b/spice-gtk-0.6-g_object_notify_param_spec.patch
@@ -0,0 +1,21 @@
+commit e99a572494c6c785703fa007eab80697e765edab
+Author: Christophe Fergeau <cfergeau@redhat.com>
+Date: Mon May 23 14:15:53 2011 +0200
+
+ use g_object_notify instead of g_object_notify_by_spec
+
+ The latter was added in glib 2.26, and we only require glib 2.22
+
+diff --git a/gtk/display/gnome-rr.c b/gtk/display/gnome-rr.c
+index beaf96e..1f8ef37 100644
+--- a/gtk/display/gnome-rr.c
++++ b/gtk/display/gnome-rr.c
+@@ -340,7 +340,7 @@ gnome_rr_screen_set_property (GObject *gobject, guint property_id, const GValue
+ {
+ case SCREEN_PROP_GDK_SCREEN:
+ priv->gdk_screen = g_value_get_object (value);
+- g_object_notify_by_pspec (gobject, screen_properties[SCREEN_PROP_GDK_SCREEN]);
++ g_object_notify (gobject, "gdk-screen");
+ return;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, property_id, property);
diff --git a/spice-gtk-0.6-link-with-gthread.patch b/spice-gtk-0.6-link-with-gthread.patch
new file mode 100644
index 0000000..e62023a
--- /dev/null
+++ b/spice-gtk-0.6-link-with-gthread.patch
@@ -0,0 +1,54 @@
+diff --git a/configure b/configure
+index 285ff7b..1a8e24a 100755
+--- a/configure
++++ b/configure
+@@ -19495,12 +19495,12 @@ if test -n "$GLIB2_CFLAGS"; then
+ pkg_cv_GLIB2_CFLAGS="$GLIB2_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.22\""; } >&5
+- ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.22") 2>&5
++ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0 glib-2.0 >= 2.22\""; } >&5
++ ($PKG_CONFIG --exists --print-errors "gthread-2.0 glib-2.0 >= 2.22") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+- pkg_cv_GLIB2_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.22" 2>/dev/null`
++ pkg_cv_GLIB2_CFLAGS=`$PKG_CONFIG --cflags "gthread-2.0 glib-2.0 >= 2.22" 2>/dev/null`
+ else
+ pkg_failed=yes
+ fi
+@@ -19511,12 +19511,12 @@ if test -n "$GLIB2_LIBS"; then
+ pkg_cv_GLIB2_LIBS="$GLIB2_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.22\""; } >&5
+- ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.22") 2>&5
++ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gthread-2.0 glib-2.0 >= 2.22\""; } >&5
++ ($PKG_CONFIG --exists --print-errors "gthread-2.0 glib-2.0 >= 2.22") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+- pkg_cv_GLIB2_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.22" 2>/dev/null`
++ pkg_cv_GLIB2_LIBS=`$PKG_CONFIG --libs "gthread-2.0 glib-2.0 >= 2.22" 2>/dev/null`
+ else
+ pkg_failed=yes
+ fi
+@@ -19536,14 +19536,14 @@ else
+ _pkg_short_errors_supported=no
+ fi
+ if test $_pkg_short_errors_supported = yes; then
+- GLIB2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "glib-2.0 >= 2.22" 2>&1`
++ GLIB2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gthread-2.0 glib-2.0 >= 2.22" 2>&1`
+ else
+- GLIB2_PKG_ERRORS=`$PKG_CONFIG --print-errors "glib-2.0 >= 2.22" 2>&1`
++ GLIB2_PKG_ERRORS=`$PKG_CONFIG --print-errors "gthread-2.0 glib-2.0 >= 2.22" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GLIB2_PKG_ERRORS" >&5
+
+- as_fn_error $? "Package requirements (glib-2.0 >= 2.22) were not met:
++ as_fn_error $? "Package requirements (gthread-2.0 glib-2.0 >= 2.22) were not met:
+
+ $GLIB2_PKG_ERRORS
+
diff --git a/spice-gtk-0.6-vala-glib-226.patch b/spice-gtk-0.6-vala-glib-226.patch
new file mode 100644
index 0000000..65e374a
--- /dev/null
+++ b/spice-gtk-0.6-vala-glib-226.patch
@@ -0,0 +1,83 @@
+--- a/gtk/controller/controller-0.6.c 2011-05-20 13:17:58.163125353 +0200
++++ a/gtk/controller/controller.c 2011-05-20 13:17:35.111706219 +0200
+@@ -1,4 +1,4 @@
+-/* controller.c generated by valac 0.11.7, the Vala compiler
++/* controller.c generated by valac 0.12.0, the Vala compiler
+ * generated from controller.vala, do not modify */
+
+ /* Copyright (C) 2011 Red Hat, Inc.*/
+@@ -169,14 +169,13 @@
+ GError* _tmp2_;
+ GSocketListener* _tmp3_;
+ GSocketListener* listener;
+- gint _tmp4_;
++ GUnixSocketAddress* _tmp4_;
+ GUnixSocketAddress* _tmp5_;
+- GUnixSocketAddress* _tmp6_;
+- gboolean _tmp7_;
++ gboolean _tmp6_;
++ GSocketConnection* _tmp7_;
+ GSocketConnection* _tmp8_;
+- GSocketConnection* _tmp9_;
+ GSocketConnection* c;
+- GSocketConnection* _tmp10_;
++ GSocketConnection* _tmp9_;
+ GError * e;
+ GError * _inner_error_;
+ };
+@@ -950,12 +949,11 @@
+ data->_tmp3_ = NULL;
+ data->_tmp3_ = g_socket_listener_new ();
+ data->listener = data->_tmp3_;
+- data->_tmp4_ = strlen (data->addr);
+- data->_tmp5_ = NULL;
+- data->_tmp5_ = (GUnixSocketAddress*) g_unix_socket_address_new_with_type (data->addr, data->_tmp4_, G_UNIX_SOCKET_ADDRESS_PATH);
+- data->_tmp6_ = data->_tmp5_;
+- g_socket_listener_add_address (data->listener, (GSocketAddress*) data->_tmp6_, G_SOCKET_TYPE_STREAM, G_SOCKET_PROTOCOL_DEFAULT, NULL, NULL, &data->_inner_error_);
+- _g_object_unref0 (data->_tmp6_);
++ data->_tmp4_ = NULL;
++ data->_tmp4_ = (GUnixSocketAddress*) g_unix_socket_address_new (data->addr);
++ data->_tmp5_ = data->_tmp4_;
++ g_socket_listener_add_address (data->listener, (GSocketAddress*) data->_tmp5_, G_SOCKET_TYPE_STREAM, G_SOCKET_PROTOCOL_DEFAULT, NULL, NULL, &data->_inner_error_);
++ _g_object_unref0 (data->_tmp5_);
+ if (data->_inner_error_ != NULL) {
+ g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_);
+ g_error_free (data->_inner_error_);
+@@ -969,19 +967,19 @@
+ return FALSE;
+ }
+ {
+- data->_tmp7_ = TRUE;
++ data->_tmp6_ = TRUE;
+ while (TRUE) {
+- if (!data->_tmp7_) {
++ if (!data->_tmp6_) {
+ }
+- data->_tmp7_ = FALSE;
++ data->_tmp6_ = FALSE;
+ data->_state_ = 1;
+ g_socket_listener_accept_async (data->listener, NULL, spice_controller_listen_ready, data);
+ return FALSE;
+ _state_1:
+- data->_tmp8_ = NULL;
+- data->_tmp8_ = g_socket_listener_accept_finish (data->listener, data->_res_, NULL, &data->_inner_error_);
+- data->_tmp9_ = _g_object_ref0 (data->_tmp8_);
+- data->c = data->_tmp9_;
++ data->_tmp7_ = NULL;
++ data->_tmp7_ = g_socket_listener_accept_finish (data->listener, data->_res_, NULL, &data->_inner_error_);
++ data->_tmp8_ = _g_object_ref0 (data->_tmp7_);
++ data->c = data->_tmp8_;
+ if (data->_inner_error_ != NULL) {
+ g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_);
+ g_error_free (data->_inner_error_);
+@@ -995,8 +993,8 @@
+ return FALSE;
+ }
+ data->self->priv->nclients = data->self->priv->nclients + 1;
+- data->_tmp10_ = _g_object_ref0 (data->c);
+- data->self->priv->clients = g_list_append (data->self->priv->clients, data->_tmp10_);
++ data->_tmp9_ = _g_object_ref0 (data->c);
++ data->self->priv->clients = g_list_append (data->self->priv->clients, data->_tmp9_);
+ data->_state_ = 2;
+ spice_controller_handle_client (data->self, data->c, spice_controller_listen_ready, data);
+ return FALSE;
diff --git a/spice-gtk.spec b/spice-gtk.spec
index 6c1ae90..fa5e8d6 100644
--- a/spice-gtk.spec
+++ b/spice-gtk.spec
@@ -28,7 +28,13 @@ BuildRequires: libtool
ExclusiveArch: %{ix86} x86_64
+# Patches to fix build issues with glib 2.22, they have all been merged upstream
Patch0: spice-gtk-controller-includes.patch
+Patch1: spice-gtk-0.6-vala-glib-226.patch
+Patch2: spice-gtk-0.6-g_define_boxed.patch
+Patch3: spice-gtk-0.6-g_object_notify_param_spec.patch
+Patch4: spice-gtk-0.6-link-with-gthread.patch
+
%description
Client libraries for SPICE desktop servers.
@@ -87,6 +93,10 @@ snappy is a tool to capture screen-shots of a SPICE desktop.
%prep
%setup -q
%patch0 -p1 -b .controller-includes
+%patch1 -p1 -b .vala
+%patch2 -p1 -b .gdefineboxed
+%patch3 -p1 -b .gobjectnotify
+%patch4 -p1 -b .gthread
%build