[grilo-plugins] add patch for newer libgdata

Bastien Nocera hadess at fedoraproject.org
Tue Jul 5 10:19:46 UTC 2011


commit 77250ebf3307bd4153eb906afd0c2b8d984e085f
Author: Bastien Nocera <hadess at hadess.net>
Date:   Tue Jul 5 11:19:33 2011 +0100

    add patch for newer libgdata

 0001-youtube-Fix-ISO-C90-warnings.patch |  382 +++++++++++++++++++++++++++++++
 grilo-plugins.spec                      |   12 +-
 2 files changed, 392 insertions(+), 2 deletions(-)
---
diff --git a/0001-youtube-Fix-ISO-C90-warnings.patch b/0001-youtube-Fix-ISO-C90-warnings.patch
new file mode 100644
index 0000000..c01d4bf
--- /dev/null
+++ b/0001-youtube-Fix-ISO-C90-warnings.patch
@@ -0,0 +1,382 @@
+From e1e81916715b68e7808b09e2353ccd80c87d2bd5 Mon Sep 17 00:00:00 2001
+From: Philip Withnall <philip at tecnocode.co.uk>
+Date: Mon, 4 Jul 2011 22:53:18 +0100
+Subject: [PATCH] youtube: Fix ISO C90 warnings
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Can't mix declarations and code.
+
+youtube: Fix old-style function declarations
+
+youtube: Fix variable shadowing a parameter
+
+youtube: Add support for compiling against libgdata ≥ 0.9.0
+
+This adds conditional support for compiling against libgdata ≥ 0.9.0, which
+broke various APIs from 0.8.x.
+
+youtube: Add a missing case to a switch statement
+
+https://bugzilla.gnome.org/show_bug.cgi?id=653975
+---
+ configure.ac                    |    4 +
+ src/media/youtube/grl-youtube.c |  129 +++++++++++++++++++++++++++++++--------
+ 2 files changed, 108 insertions(+), 25 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 9e1a7f7..ed34ae5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -159,6 +159,10 @@ if test "x$HAVE_GDATA" = "xyes"; then
+    if test $gdata_version_major -eq 0 -a $gdata_version_minor -ge 7; then
+       GDATA_CFLAGS="$GDATA_CFLAGS -DGDATA_API_SUBJECT_TO_CHANGE"
+    fi
++
++   if `$PKG_CONFIG --atleast-version=0.9.1 libgdata`; then
++      AC_DEFINE(HAVE_LIBGDATA_0_9, 1, [libgdata is 0.9.1 or higher])
++   fi
+ fi
+ 
+ # ----------------------------------------------------------
+diff --git a/src/media/youtube/grl-youtube.c b/src/media/youtube/grl-youtube.c
+index 19b68c5..2cdf36f 100644
+--- a/src/media/youtube/grl-youtube.c
++++ b/src/media/youtube/grl-youtube.c
+@@ -250,6 +250,7 @@ grl_youtube_plugin_init (GrlPluginRegistry *registry,
+   gchar *api_key;
+   GrlConfig *config;
+   gint config_count;
++  GrlYoutubeSource *source;
+ 
+   GRL_LOG_DOMAIN_INIT (youtube_log_domain, "youtube");
+ 
+@@ -277,8 +278,7 @@ grl_youtube_plugin_init (GrlPluginRegistry *registry,
+     g_thread_init (NULL);
+   }
+ 
+-  GrlYoutubeSource *source =
+-    grl_youtube_source_new (api_key, YOUTUBE_CLIENT_ID);
++  source = grl_youtube_source_new (api_key, YOUTUBE_CLIENT_ID);
+ 
+   grl_plugin_registry_register_source (registry,
+                                        plugin,
+@@ -301,12 +301,16 @@ G_DEFINE_TYPE (GrlYoutubeSource, grl_youtube_source, GRL_TYPE_MEDIA_SOURCE);
+ static GrlYoutubeSource *
+ grl_youtube_source_new (const gchar *api_key, const gchar *client_id)
+ {
+-  GRL_DEBUG ("grl_youtube_source_new");
+-
+   GrlYoutubeSource *source;
+   GDataYouTubeService *service;
+ 
++  GRL_DEBUG ("grl_youtube_source_new");
++
++#ifdef HAVE_LIBGDATA_0_9
++  service = gdata_youtube_service_new (api_key, NULL);
++#else /* HAVE_LIBGDATA_0_9 */
+   service = gdata_youtube_service_new (api_key, client_id);
++#endif /* !HAVE_LIBGDATA_0_9 */
+   if (!service) {
+     GRL_WARNING ("Failed to initialize gdata service");
+     return NULL;
+@@ -424,11 +428,15 @@ release_operation_data (GrlMetadataSource *source,
+ }
+ 
+ static OperationSpec *
+-operation_spec_new ()
++operation_spec_new (void)
+ {
++  OperationSpec *os;
++
+   GRL_DEBUG ("Allocating new spec");
+-  OperationSpec *os =  g_slice_new0 (OperationSpec);
++
++  os =  g_slice_new0 (OperationSpec);
+   os->ref_count = 1;
++
+   return os;
+ }
+ 
+@@ -453,7 +461,7 @@ operation_spec_ref (OperationSpec *os)
+ }
+ 
+ inline static GrlNetWc *
+-get_wc ()
++get_wc (void)
+ {
+   if (ytsrc && !ytsrc->priv->wc)
+     ytsrc->priv->wc = grl_net_wc_new ();
+@@ -601,9 +609,9 @@ build_media_from_entry (GrlYoutubeSource *source,
+ 	gdata_youtube_video_look_up_content (video,
+ 					     "application/x-shockwave-flash");
+       if (youtube_content != NULL) {
+-	GDataMediaContent *content = GDATA_MEDIA_CONTENT (youtube_content);
+-	grl_media_set_external_player (media,
+-				       gdata_media_content_get_uri (content));
++        const gchar *uri =
++          gdata_media_content_get_uri (GDATA_MEDIA_CONTENT (youtube_content));
++	grl_media_set_external_player (media, uri);
+       }
+     }
+     iter = g_list_next (iter);
+@@ -615,14 +623,14 @@ build_media_from_entry (GrlYoutubeSource *source,
+ static void
+ parse_categories (xmlDocPtr doc, xmlNodePtr node, OperationSpec *os)
+ {
+-  GRL_DEBUG ("parse_categories");
+-
+   guint total = 0;
+   GList *all = NULL, *iter;
+   CategoryInfo *cat_info;
+   gchar *id;
+   guint index = 0;
+ 
++  GRL_DEBUG ("parse_categories");
++
+   while (node) {
+     cat_info = g_slice_new (CategoryInfo);
+     id = (gchar *) xmlGetProp (node, (xmlChar *) "term");
+@@ -801,14 +809,14 @@ metadata_cb (GObject *object,
+ 	     GAsyncResult *result,
+ 	     gpointer user_data)
+ {
+-  GRL_DEBUG ("metadata_cb");
+-
+   GError *error = NULL;
+   GrlYoutubeSource *source;
+   GDataEntry *video;
+   GDataService *service;
+   GrlMediaSourceMetadataSpec *ms = (GrlMediaSourceMetadataSpec *) user_data;
+ 
++  GRL_DEBUG ("metadata_cb");
++
+   source = GRL_YOUTUBE_SOURCE (ms->source);
+   service = GDATA_SERVICE (source->priv->service);
+ 
+@@ -877,13 +885,13 @@ search_progress_cb (GDataEntry *entry,
+ static void
+ search_cb (GObject *object, GAsyncResult *result, OperationSpec *os)
+ {
+-  GRL_DEBUG ("search_cb");
+-
+   GDataFeed *feed;
+   GError *error = NULL;
+   gboolean need_extra_unref = FALSE;
+   GrlYoutubeSource *source = GRL_YOUTUBE_SOURCE (os->source);
+ 
++  GRL_DEBUG ("search_cb");
++
+   /* Check if operation was cancelled */
+   if (g_cancellable_is_cancelled (os->cancellable)) {
+     GRL_DEBUG ("Search operation has been cancelled");
+@@ -1046,10 +1054,10 @@ produce_container_from_directory (GDataService *service,
+ static void
+ produce_from_directory (CategoryInfo *dir, gint dir_size, OperationSpec *os)
+ {
+-  GRL_DEBUG ("produce_from_directory");
+-
+   guint index, remaining;
+ 
++  GRL_DEBUG ("produce_from_directory");
++
+   /* Youtube's first index is 1, but the directories start at 0 */
+   os->skip--;
+ 
+@@ -1132,14 +1140,28 @@ produce_from_feed (OperationSpec *os)
+   service = GRL_YOUTUBE_SOURCE (os->source)->priv->service;
+   query = gdata_query_new_with_limits (NULL , os->skip, os->count);
+   os->category_info = &feeds_dir[feed_type];
++
++#ifdef HAVE_LIBGDATA_0_9
+   gdata_youtube_service_query_standard_feed_async (GDATA_YOUTUBE_SERVICE (service),
+                                                    feed_type,
+                                                    query,
+                                                    os->cancellable,
+                                                    search_progress_cb,
+                                                    os,
++                                                   NULL,
+                                                    (GAsyncReadyCallback) search_cb,
+                                                    os);
++#else /* HAVE_LIBGDATA_0_9 */
++  gdata_youtube_service_query_standard_feed_async (GDATA_YOUTUBE_SERVICE (service),
++                                                   feed_type,
++                                                   query,
++                                                   os->cancellable,
++                                                   search_progress_cb,
++                                                   os,
++                                                   (GAsyncReadyCallback) search_cb,
++                                                   os);
++#endif /* !HAVE_LIBGDATA_0_9 */
++
+   g_object_unref (query);
+ }
+ 
+@@ -1177,6 +1199,17 @@ produce_from_category (OperationSpec *os)
+   query = gdata_query_new_with_limits (NULL , os->skip, os->count);
+   os->category_info = &categories_dir[category_index];
+   gdata_query_set_categories (query, category_term);
++
++#ifdef HAVE_LIBGDATA_0_9
++  gdata_youtube_service_query_videos_async (GDATA_YOUTUBE_SERVICE (service),
++                                            query,
++                                            NULL,
++                                            search_progress_cb,
++                                            os,
++                                            NULL,
++                                            (GAsyncReadyCallback) search_cb,
++                                            os);
++#else /* HAVE_LIBGDATA_0_9 */
+   gdata_youtube_service_query_videos_async (GDATA_YOUTUBE_SERVICE (service),
+ 					    query,
+ 					    NULL,
+@@ -1184,6 +1217,8 @@ produce_from_category (OperationSpec *os)
+ 					    os,
+ 					    (GAsyncReadyCallback) search_cb,
+ 					    os);
++#endif /* !HAVE_LIBGDATA_0_9 */
++
+   g_object_unref (query);
+ }
+ 
+@@ -1326,6 +1361,17 @@ grl_youtube_source_search (GrlMediaSource *source,
+   grl_operation_set_data (ss->search_id, os->cancellable);
+ 
+   query = gdata_query_new_with_limits (ss->text, os->skip, os->count);
++
++#ifdef HAVE_LIBGDATA_0_9
++  gdata_youtube_service_query_videos_async (GDATA_YOUTUBE_SERVICE (GRL_YOUTUBE_SOURCE (source)->priv->service),
++                                            query,
++                                            os->cancellable,
++                                            search_progress_cb,
++                                            os,
++                                            NULL,
++                                            (GAsyncReadyCallback) search_cb,
++                                            os);
++#else /* HAVE_LIBGDATA_0_9 */
+   gdata_youtube_service_query_videos_async (GDATA_YOUTUBE_SERVICE (GRL_YOUTUBE_SOURCE (source)->priv->service),
+ 					    query,
+ 					    os->cancellable,
+@@ -1333,6 +1379,8 @@ grl_youtube_source_search (GrlMediaSource *source,
+ 					    os,
+ 					    (GAsyncReadyCallback) search_cb,
+ 					    os);
++#endif /* !HAVE_LIBGDATA_0_9 */
++
+   g_object_unref (query);
+ }
+ 
+@@ -1383,6 +1431,7 @@ grl_youtube_source_browse (GrlMediaSource *source,
+     case YOUTUBE_MEDIA_TYPE_CATEGORY:
+       produce_from_category (os);
+       break;
++    case YOUTUBE_MEDIA_TYPE_VIDEO:
+     default:
+       g_assert_not_reached ();
+       break;
+@@ -1449,6 +1498,17 @@ grl_youtube_source_metadata (GrlMediaSource *source,
+ #ifdef GDATA_API_SUBJECT_TO_CHANGE
+     {
+       gchar *entryid = g_strconcat ("tag:youtube.com,2008:video:", id, NULL);
++
++#ifdef HAVE_LIBGDATA_0_9
++      gdata_service_query_single_entry_async (service,
++                                              NULL,
++                                              entryid,
++                                              NULL,
++                                              GDATA_TYPE_YOUTUBE_VIDEO,
++                                              cancellable,
++                                              metadata_cb,
++                                              ms);
++#else /* HAVE_LIBGDATA_0_9 */
+       gdata_service_query_single_entry_async (service,
+                                               entryid,
+                                               NULL,
+@@ -1456,6 +1516,8 @@ grl_youtube_source_metadata (GrlMediaSource *source,
+                                               cancellable,
+                                               metadata_cb,
+                                               ms);
++#endif /* !HAVE_LIBGDATA_0_9 */
++
+       g_free (entryid);
+     }
+ #else
+@@ -1480,11 +1542,11 @@ grl_youtube_source_metadata (GrlMediaSource *source,
+ static gboolean
+ grl_youtube_test_media_from_uri (GrlMediaSource *source, const gchar *uri)
+ {
+-  GRL_DEBUG ("grl_youtube_test_media_from_uri");
+-
+   gchar *video_id;
+   gboolean ok;
+ 
++  GRL_DEBUG ("grl_youtube_test_media_from_uri");
++
+   video_id = get_video_id_from_url (uri);
+   ok = (video_id != NULL);
+   g_free (video_id);
+@@ -1495,12 +1557,15 @@ static void
+ grl_youtube_get_media_from_uri (GrlMediaSource *source,
+ 				 GrlMediaSourceMediaFromUriSpec *mfus)
+ {
+-  GRL_DEBUG ("grl_youtube_get_media_from_uri");
+-
+   gchar *video_id;
+   GError *error;
+   GCancellable *cancellable;
+   GDataService *service;
++#ifdef GDATA_API_SUBJECT_TO_CHANGE
++  gchar *entry_id;
++#endif /* GDATA_API_SUBJECT_TO_CHANGE */
++
++  GRL_DEBUG ("grl_youtube_get_media_from_uri");
+ 
+   video_id = get_video_id_from_url (mfus->uri);
+   if (video_id == NULL) {
+@@ -1517,7 +1582,18 @@ grl_youtube_get_media_from_uri (GrlMediaSource *source,
+   cancellable = g_cancellable_new ();
+   grl_operation_set_data (mfus->media_from_uri_id, cancellable);
+ #ifdef GDATA_API_SUBJECT_TO_CHANGE
+-  gchar *entry_id = g_strconcat ("tag:youtube.com,2008:video:", video_id, NULL);
++  entry_id = g_strconcat ("tag:youtube.com,2008:video:", video_id, NULL);
++
++#ifdef HAVE_LIBGDATA_0_9
++  gdata_service_query_single_entry_async (service,
++                                          NULL,
++                                          entry_id,
++                                          NULL,
++                                          GDATA_TYPE_YOUTUBE_VIDEO,
++                                          cancellable,
++                                          media_from_uri_cb,
++                                          mfus);
++#else /* HAVE_LIBGDATA_0_9 */
+   gdata_service_query_single_entry_async (service,
+ 					  entry_id,
+ 					  NULL,
+@@ -1525,6 +1601,8 @@ grl_youtube_get_media_from_uri (GrlMediaSource *source,
+ 					  cancellable,
+ 					  media_from_uri_cb,
+ 					  mfus);
++#endif /* !HAVE_LIBGDATA_0_9 */
++
+   g_free (entry_id);
+ #else
+   gdata_youtube_service_query_single_video_async (GDATA_YOUTUBE_SERVICE (service),
+@@ -1540,10 +1618,11 @@ static void
+ grl_youtube_source_cancel (GrlMetadataSource *source,
+                            guint operation_id)
+ {
++  GCancellable *cancellable;
++
+   GRL_DEBUG (__FUNCTION__);
+ 
+-  GCancellable *cancellable =
+-    (GCancellable *) grl_operation_get_data (operation_id);
++  cancellable = G_CANCELLABLE (grl_operation_get_data (operation_id));
+ 
+   if (cancellable) {
+     g_cancellable_cancel (cancellable);
+-- 
+1.7.5.4
+
diff --git a/grilo-plugins.spec b/grilo-plugins.spec
index b33b19e..22a03f3 100644
--- a/grilo-plugins.spec
+++ b/grilo-plugins.spec
@@ -12,7 +12,6 @@ Url:		https://live.gnome.org/Grilo
 Source0:	http://ftp.gnome.org/pub/GNOME/sources/grilo-plugins/%{release_version}/grilo-plugins-%{version}.tar.xz
 
 BuildRequires:	grilo-devel >= %{version}
-BuildRequires:	gnome-common
 BuildRequires:	glib2-devel >= 2.26.0
 BuildRequires:	libxml2-devel
 BuildRequires:	gupnp-devel >= 0.13.0
@@ -23,6 +22,12 @@ BuildRequires:	tracker-devel >= 0.9.0
 BuildRequires:	quvi-devel
 BuildRequires:	gmime-devel
 
+BuildRequires:	gnome-common
+BuildRequires:	automake autoconf intltool libtool
+
+# https://bugzilla.gnome.org/show_bug.cgi?id=653975
+Patch0:		0001-youtube-Fix-ISO-C90-warnings.patch
+
 Requires:	grilo >= %{version}
 Requires:	gupnp >= 0.13.0
 Requires:	gupnp-av >= 0.5.0
@@ -50,9 +55,12 @@ This package contains plugins to get information from theses sources:
 
 %prep
 %setup -q
+%patch0 -p1 -b .libgdata-0.9
 
 # https://bugzilla.gnome.org/show_bug.cgi?id=653937
-sed -i -e 's,gmime-2.4,gmime-2.6,g' configure
+sed -i -e 's,gmime-2.4,gmime-2.6,g' configure.ac
+
+autoreconf -f
 
 %build
 %configure				\


More information about the scm-commits mailing list