[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