add patches to fix build with glib 2.22

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
remotes/origin/el6
Christophe Fergeau 2011-05-24 11:56:59 +02:00
parent c96a1d03f6
commit 508da75d23
5 changed files with 244 additions and 0 deletions

View File

@ -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

View File

@ -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);

View File

@ -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

View File

@ -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;

View File

@ -28,7 +28,13 @@ BuildRequires: libtool
ExclusiveArch: %{ix86} x86_64 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 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 %description
Client libraries for SPICE desktop servers. Client libraries for SPICE desktop servers.
@ -87,6 +93,10 @@ snappy is a tool to capture screen-shots of a SPICE desktop.
%prep %prep
%setup -q %setup -q
%patch0 -p1 -b .controller-includes %patch0 -p1 -b .controller-includes
%patch1 -p1 -b .vala
%patch2 -p1 -b .gdefineboxed
%patch3 -p1 -b .gobjectnotify
%patch4 -p1 -b .gthread
%build %build