diff options
author | Christophe Fergeau <cfergeau@redhat.com> | 2011-05-24 11:56:59 +0200 |
---|---|---|
committer | Christophe Fergeau <cfergeau@redhat.com> | 2011-05-25 11:40:28 +0200 |
commit | 508da75d23fc6f8345407afac29bd73a775d35dd (patch) | |
tree | fb455272d1e734929391e8a30b3b19f141be6cca | |
parent | c96a1d03f6a026c40b089b4e5fd50dfa9e334b03 (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.patch | 76 | ||||
-rw-r--r-- | spice-gtk-0.6-g_object_notify_param_spec.patch | 21 | ||||
-rw-r--r-- | spice-gtk-0.6-link-with-gthread.patch | 54 | ||||
-rw-r--r-- | spice-gtk-0.6-vala-glib-226.patch | 83 | ||||
-rw-r--r-- | spice-gtk.spec | 10 |
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 |