summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPacho Ramos <pacho@gentoo.org>2018-06-24 13:53:24 +0200
committerPacho Ramos <pacho@gentoo.org>2018-06-24 14:19:59 +0200
commit4cef9b669be9e01435b050309826b1c6af2f4e6b (patch)
tree6458d2d4cb8b5b65dc9026e3bfdd46e6d049f553 /media-sound/rhythmbox
parentdev-python/gcs-oauth2-boto-plugin: Add missing depend and python3.6 support (diff)
downloadgentoo-4cef9b669be9e01435b050309826b1c6af2f4e6b.tar.gz
gentoo-4cef9b669be9e01435b050309826b1c6af2f4e6b.tar.bz2
gentoo-4cef9b669be9e01435b050309826b1c6af2f4e6b.zip
media-sound/rhythmbox: Fix building with latest gstreamer (#658750)
Package-Manager: Portage-2.3.40, Repoman-2.3.9
Diffstat (limited to 'media-sound/rhythmbox')
-rw-r--r--media-sound/rhythmbox/files/rhythmbox-3.4.2-gstreamer-1.14.patch455
-rw-r--r--media-sound/rhythmbox/rhythmbox-3.4.2.ebuild4
2 files changed, 459 insertions, 0 deletions
diff --git a/media-sound/rhythmbox/files/rhythmbox-3.4.2-gstreamer-1.14.patch b/media-sound/rhythmbox/files/rhythmbox-3.4.2-gstreamer-1.14.patch
new file mode 100644
index 000000000000..86ed17ba98ea
--- /dev/null
+++ b/media-sound/rhythmbox/files/rhythmbox-3.4.2-gstreamer-1.14.patch
@@ -0,0 +1,455 @@
+From 36a648db0af05be579190d98c96cfb6b7bcc6ebd Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess@hadess.net>
+Date: Mon, 9 Oct 2017 13:11:47 +0200
+Subject: [PATCH 01/12] fmradio: Fix build with GStreamer master
+
+The plugin description is not supposed to be a string constant, but an
+unescaped string, to be concatenated with function names.
+
+This used to be acceptable (though would have warned), but breaks with
+the GStreamer 1.13 development branch.
+
+rb-fm-radio-gst-src.c:181:6: error: pasting ""rbsilencesrc"" and "_get_desc" does not give a valid preprocessing token
+ "rbsilencesrc",
+ ^
+
+https://bugzilla.gnome.org/show_bug.cgi?id=788706
+---
+ plugins/fmradio/rb-fm-radio-gst-src.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/plugins/fmradio/rb-fm-radio-gst-src.c b/plugins/fmradio/rb-fm-radio-gst-src.c
+index 09d709c28..88abdaf35 100644
+--- a/plugins/fmradio/rb-fm-radio-gst-src.c
++++ b/plugins/fmradio/rb-fm-radio-gst-src.c
+@@ -178,7 +178,7 @@ plugin_init (GstPlugin *plugin)
+
+ GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+- "rbsilencesrc",
++ rbsilencesrc,
+ "element to output silence",
+ plugin_init,
+ VERSION,
+--
+2.17.0
+
+
+From 355e3c40efe47f6f90d12afb6590caf85db62487 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess@hadess.net>
+Date: Mon, 24 Apr 2017 16:21:41 +0200
+Subject: [PATCH 02/12] mmkeys: media-player-keys: Fix usage to match API
+ documentation
+
+See https://bugzilla.gnome.org/show_bug.cgi?id=781326
+
+https://bugzilla.gnome.org/show_bug.cgi?id=781664
+---
+ plugins/mmkeys/rb-mmkeys-plugin.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/plugins/mmkeys/rb-mmkeys-plugin.c b/plugins/mmkeys/rb-mmkeys-plugin.c
+index 46431584f..058b82f0e 100644
+--- a/plugins/mmkeys/rb-mmkeys-plugin.c
++++ b/plugins/mmkeys/rb-mmkeys-plugin.c
+@@ -385,7 +385,7 @@ impl_activate (PeasActivatable *pplugin)
+ plugin->proxy = g_dbus_proxy_new_sync (bus,
+ G_DBUS_PROXY_FLAGS_NONE,
+ NULL,
+- "org.gnome.SettingsDaemon",
++ "org.gnome.SettingsDaemon.MediaKeys",
+ "/org/gnome/SettingsDaemon/MediaKeys",
+ "org.gnome.SettingsDaemon.MediaKeys",
+ NULL,
+--
+2.17.0
+
+
+From 19d604093667139c6660d9452b4037a761bf75e0 Mon Sep 17 00:00:00 2001
+From: gkrithi8 <gkrithi8@gmail.com>
+Date: Thu, 26 Oct 2017 02:27:38 +0530
+Subject: [PATCH 03/12] brasero-disc-recorder: Fix invalid object reference
+ warnings
+
+https://bugzilla.gnome.org/show_bug.cgi?id=789494
+---
+ plugins/brasero-disc-recorder/rb-disc-recorder-plugin.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/plugins/brasero-disc-recorder/rb-disc-recorder-plugin.c b/plugins/brasero-disc-recorder/rb-disc-recorder-plugin.c
+index 8608e84fd..a89d87a70 100644
+--- a/plugins/brasero-disc-recorder/rb-disc-recorder-plugin.c
++++ b/plugins/brasero-disc-recorder/rb-disc-recorder-plugin.c
+@@ -558,7 +558,7 @@ update_source (RBDiscRecorderPlugin *pi,
+ RBDisplayPage *selected_page;
+ const char *page_type;
+
+- if (pi->selected_page != NULL && RB_IS_SOURCE (pi->selected_page)) {
++ if (pi->selected_page != NULL && RB_IS_PLAYLIST_SOURCE (pi->selected_page)) {
+ RhythmDBQueryModel *model;
+
+ g_object_get (pi->selected_page, "query-model", &model, NULL);
+--
+2.17.0
+
+
+From 00970203e760f9ae43c31087706bd31b2b395dcb Mon Sep 17 00:00:00 2001
+From: gkrithi8 <gkrithi8@gmail.com>
+Date: Mon, 30 Oct 2017 02:25:09 +0530
+Subject: [PATCH 04/12] song-info: fix the signal name used for entry deletion
+
+https://bugzilla.gnome.org/show_bug.cgi?id=789632
+---
+ widgets/rb-song-info.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/widgets/rb-song-info.c b/widgets/rb-song-info.c
+index 54810e0b7..202f3d36e 100644
+--- a/widgets/rb-song-info.c
++++ b/widgets/rb-song-info.c
+@@ -733,6 +733,7 @@ rb_song_info_set_source_internal (RBSongInfo *song_info,
+
+ g_object_get (G_OBJECT (song_info->priv->query_model), "db", &song_info->priv->db, NULL);
+
++ rb_song_info_query_model_changed_cb (G_OBJECT (song_info->priv->source), NULL, song_info);
+ rb_song_info_base_query_model_changed_cb (G_OBJECT (song_info->priv->source), NULL, song_info);
+ }
+
+@@ -1514,7 +1515,7 @@ rb_song_info_query_model_changed_cb (GObject *source,
+ "row-changed", G_CALLBACK (rb_song_info_query_model_inserted_cb),
+ song_info, 0);
+ g_signal_connect_object (G_OBJECT (song_info->priv->query_model),
+- "entry-deleted", G_CALLBACK (rb_song_info_query_model_deleted_cb),
++ "post-entry-delete", G_CALLBACK (rb_song_info_query_model_deleted_cb),
+ song_info, 0);
+ g_signal_connect_object (G_OBJECT (song_info->priv->query_model),
+ "rows-reordered", G_CALLBACK (rb_song_info_query_model_reordered_cb),
+--
+2.17.0
+
+
+From 223bafcc98a33262d70adc325f3393ac8f4b3ecc Mon Sep 17 00:00:00 2001
+From: gkrithi8 <gkrithi8@gmail.com>
+Date: Tue, 31 Oct 2017 17:06:58 +0530
+Subject: [PATCH 05/12] shell: remove extra pixbuf unref
+
+https://bugzilla.gnome.org/show_bug.cgi?id=789706
+---
+ shell/rb-shell.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/shell/rb-shell.c b/shell/rb-shell.c
+index 7ae022795..734b90dcb 100644
+--- a/shell/rb-shell.c
++++ b/shell/rb-shell.c
+@@ -375,7 +375,6 @@ load_external_art_cb (RBExtDB *store, GValue *value, RBShell *shell)
+
+ pixbuf = gdk_pixbuf_loader_get_pixbuf (loader);
+ if (accept_art_pixbuf (pixbuf) == FALSE) {
+- g_object_unref (pixbuf);
+ g_object_unref (loader);
+ return NULL;
+ }
+--
+2.17.0
+
+
+From 2604eeb2338a4da7a95f9b6d46223323c864ddf2 Mon Sep 17 00:00:00 2001
+From: gkrithi8 <gkrithi8@gmail.com>
+Date: Mon, 27 Nov 2017 13:31:39 +0530
+Subject: [PATCH 06/12] ext-db: fix crash when store request processing fails
+
+https://bugzilla.gnome.org/show_bug.cgi?id=727670
+---
+ metadata/rb-ext-db.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/metadata/rb-ext-db.c b/metadata/rb-ext-db.c
+index 3e241e609..7d8e01573 100644
+--- a/metadata/rb-ext-db.c
++++ b/metadata/rb-ext-db.c
+@@ -954,7 +954,11 @@ do_store_request (GSimpleAsyncResult *result, GObject *object, GCancellable *can
+ */
+ g_signal_emit (store, signals[STORE], 0, req->value, &req->data);
+
+- rb_debug ("stored value into encoded data of type %s", G_VALUE_TYPE_NAME (req->data));
++ if (req->data != NULL) {
++ rb_debug ("stored value into encoded data of type %s", G_VALUE_TYPE_NAME (req->data));
++ } else {
++ rb_debug ("failed to store value");
++ }
+ } else {
+ /* indicates we actually didn't get anything, as opposed to communication errors etc.
+ * providers just shouldn't call rb_ext_db_store_* in that case.
+--
+2.17.0
+
+
+From a6f696f195b3c0aba63267c250ee15ccb058a8a9 Mon Sep 17 00:00:00 2001
+From: Jonathan Matthew <jonathan@d14n.org>
+Date: Tue, 30 Jan 2018 08:20:31 +1000
+Subject: [PATCH 07/12] xfade: schedule stream reap after EOS
+
+This stops streams hanging around in pending-remove state until
+the stream after the following stream starts,
+---
+ backends/gstreamer/rb-player-gst-xfade.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/backends/gstreamer/rb-player-gst-xfade.c b/backends/gstreamer/rb-player-gst-xfade.c
+index d553397ce..420cf7f65 100644
+--- a/backends/gstreamer/rb-player-gst-xfade.c
++++ b/backends/gstreamer/rb-player-gst-xfade.c
+@@ -1831,6 +1831,7 @@ rb_player_gst_xfade_bus_cb (GstBus *bus, GstMessage *message, RBPlayerGstXFade *
+ * message on the stream thread and now.
+ */
+ start_waiting_eos_streams (player);
++ schedule_stream_reap (player);
+ } else {
+ /* no need to emit EOS here, we already know what to do next */
+ rb_debug ("got EOS message for stream %s in REUSING state", stream->uri);
+--
+2.17.0
+
+
+From f984934cfcbda9253bf26460163a546d8da69a01 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess@hadess.net>
+Date: Wed, 6 Jun 2018 10:48:52 +0200
+Subject: [PATCH 08/12] daap: Fix build warning
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Replace strncpy with memcpy to avoid adding a NUL-byte in the string.
+
+rhythmbox/plugins/daap/rb-daap-src.c: In function ‘rb_daap_src_change_state’:
+rhythmbox/plugins/daap/rb-daap-src.c:286:4: error: ‘strncpy’ output truncated before terminating nul copying 4 bytes from a string of the same length [-Werror=stringop-truncation]
+ strncpy (httpuri, http, 4);
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~
+---
+ plugins/daap/rb-daap-src.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/plugins/daap/rb-daap-src.c b/plugins/daap/rb-daap-src.c
+index 99a55caf4..002ac6a00 100644
+--- a/plugins/daap/rb-daap-src.c
++++ b/plugins/daap/rb-daap-src.c
+@@ -283,7 +283,7 @@ rb_daap_src_change_state (GstElement *element, GstStateChange transition)
+
+ /* Set daap://... URI as http:// on souphttpsrc to ready connection. */
+ httpuri = g_strdup (src->daap_uri);
+- strncpy (httpuri, http, 4);
++ memcpy (httpuri, http, 4);
+
+ g_object_set (src->souphttpsrc, "location", httpuri, NULL);
+ g_free (httpuri);
+--
+2.17.0
+
+
+From a73dbae82e3b3a782d36261fa2676cce1f589e45 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess@hadess.net>
+Date: Wed, 6 Jun 2018 11:34:52 +0200
+Subject: [PATCH 09/12] build: Remove -Wcast-align warning
+
+It generates a false positive error message when trying to compile on
+ARM:
+/usr/include/gstreamer-1.0/gst/gstbuffer.h: In function 'gst_buffer_ref':
+/usr/include/gstreamer-1.0/gst/gstbuffer.h:429:10: error: cast increases required alignment of target type [-Werror=cast-align]
+ return (GstBuffer *) gst_mini_object_ref (GST_MINI_OBJECT_CAST (buf));
+ ^
+
+See https://bugzilla.gnome.org/show_bug.cgi?id=767255
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 746dfb49e..7124db904 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -469,7 +469,7 @@ if test "$GCC" = "yes" -a "$set_more_warnings" != "no"; then
+ -Wunused-label -Wunused-value \
+ -Wchar-subscripts -Wmissing-declarations -Wmissing-prototypes \
+ -Wnested-externs -Wpointer-arith \
+- -Wcast-align -Wformat-security -Wall \
++ -Wformat-security -Wall \
+ -Werror -Wno-deprecated-declarations -std=gnu89"
+
+ if echo "$CFLAGS" | grep -q -- '-O' && echo "$CFLAGS" | grep -q -v -- '-O0'; then
+--
+2.17.0
+
+
+From 9871ddcce16cae60535523ab8c229319927f6d75 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess@hadess.net>
+Date: Fri, 8 Jun 2018 16:09:05 +0200
+Subject: [PATCH 10/12] artsearch: Fix TypeError when returning results
+
+eg. Traceback (most recent call last):
+ File "/usr/lib64/rhythmbox/plugins/artsearch/local.py", line 136, in _enum_children_cb
+ self.callback(self.callback_args)
+TypeError: Argument 1 does not allow None as a value
+---
+ plugins/artsearch/embedded.py | 2 +-
+ plugins/artsearch/lastfm.py | 2 +-
+ plugins/artsearch/local.py | 2 +-
+ 3 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/plugins/artsearch/embedded.py b/plugins/artsearch/embedded.py
+index 206df547f..646da0a24 100644
+--- a/plugins/artsearch/embedded.py
++++ b/plugins/artsearch/embedded.py
+@@ -56,7 +56,7 @@ class EmbeddedSearch(object):
+ return
+
+
+- def search (self, key, last_time, store, callback, args):
++ def search (self, key, last_time, store, callback, *args):
+ location = key.get_info("location")
+ if location is None:
+ print("not searching, we don't have a location")
+diff --git a/plugins/artsearch/lastfm.py b/plugins/artsearch/lastfm.py
+index ff1966eae..2169ebab2 100644
+--- a/plugins/artsearch/lastfm.py
++++ b/plugins/artsearch/lastfm.py
+@@ -145,7 +145,7 @@ class LastFMSearch (object):
+ l.get_url(url, self.album_info_cb)
+
+
+- def search(self, key, last_time, store, callback, args):
++ def search(self, key, last_time, store, callback, *args):
+ if last_time > (time.time() - REPEAT_SEARCH_PERIOD):
+ print("we already tried this one")
+ callback (args)
+diff --git a/plugins/artsearch/local.py b/plugins/artsearch/local.py
+index 58214037e..4d28bf0e8 100644
+--- a/plugins/artsearch/local.py
++++ b/plugins/artsearch/local.py
+@@ -136,7 +136,7 @@ class LocalSearch:
+ self.callback(self.callback_args)
+
+
+- def search (self, key, last_time, store, callback, args):
++ def search (self, key, last_time, store, callback, *args):
+ # ignore last_time
+
+ location = key.get_info("location")
+--
+2.17.0
+
+
+From 68fb588544a094a27127fe50c95e18019065b793 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess@hadess.net>
+Date: Fri, 8 Jun 2018 16:10:00 +0200
+Subject: [PATCH 11/12] artsearch: Ignore unsupported scheme
+
+When trying to play an HTTP stream, the local artsearch backend would
+throw an error. We can safely ignore it though.
+
+Traceback (most recent call last):
+ File "/usr/lib64/rhythmbox/plugins/artsearch/local.py", line 129, in _enum_children_cb
+ enumfiles = parent.enumerate_children_finish(result)
+GLib.Error: g-io-error-quark: Operation not supported by backend (15)
+---
+ plugins/artsearch/local.py | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/plugins/artsearch/local.py b/plugins/artsearch/local.py
+index 4d28bf0e8..074795a76 100644
+--- a/plugins/artsearch/local.py
++++ b/plugins/artsearch/local.py
+@@ -130,10 +130,12 @@ class LocalSearch:
+ enumfiles.next_files_async(ITEMS_PER_NOTIFICATION, GLib.PRIORITY_DEFAULT, None, self._enum_dir_cb, [])
+ except Exception as e:
+ print("okay, probably done: %s" % e)
+- if not isinstance(e, GLib.GError):
++ if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_SUPPORTED):
++ self.callback(self.callback_args)
++ elif not isinstance(e, GLib.GError):
+ import sys
+ sys.excepthook(*sys.exc_info())
+- self.callback(self.callback_args)
++ self.callback(self.callback_args)
+
+
+ def search (self, key, last_time, store, callback, *args):
+--
+2.17.0
+
+
+From 0994e76b65d0533bd148cab5631362202602b28f Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess@hadess.net>
+Date: Tue, 12 Jun 2018 15:16:29 +0200
+Subject: [PATCH 12/12] sources: Fix state of initial import not reflecting
+ reality
+
+When rhythmbox is started with an empty "locations" setting, it will
+rewrite the setting with the user's music folder as the only location.
+This will start an import job from the setting's "changed" signal. But
+we already start another import job from the "load-complete" signal of
+the database.
+
+Make sure only the load-complete signal triggers an import when setting
+the "locations" setting is empty on startup.
+---
+ sources/rb-library-source.c | 29 +++++++++++++----------------
+ 1 file changed, 13 insertions(+), 16 deletions(-)
+
+diff --git a/sources/rb-library-source.c b/sources/rb-library-source.c
+index 15ba523d2..378a3e006 100644
+--- a/sources/rb-library-source.c
++++ b/sources/rb-library-source.c
+@@ -284,6 +284,10 @@ db_load_complete_cb (RhythmDB *db, RBLibrarySource *source)
+ if (source->priv->do_initial_import) {
+ const char *music_dir;
+ char *music_dir_uri;
++ const char *set_locations[2];
++
++ g_signal_handlers_block_by_func (source->priv->db_settings,
++ G_CALLBACK (db_settings_changed_cb), source);
+
+ music_dir = rb_music_dir ();
+ music_dir_uri = g_filename_to_uri (music_dir, NULL, NULL);
+@@ -293,6 +297,13 @@ db_load_complete_cb (RhythmDB *db, RBLibrarySource *source)
+ g_mkdir_with_parents (music_dir, 0700);
+ }
+
++ set_locations[0] = music_dir_uri;
++ set_locations[1] = NULL;
++ g_settings_set_strv (source->priv->db_settings, "locations", set_locations);
++
++ g_signal_handlers_unblock_by_func (source->priv->db_settings,
++ G_CALLBACK (db_settings_changed_cb), source);
++
+ /* import anything that's already in there */
+ job = maybe_create_import_job (source);
+ rhythmdb_import_job_add_uri (job, music_dir_uri);
+@@ -344,22 +355,8 @@ rb_library_source_constructed (GObject *object)
+
+ /* Set up the default library location if there's no library location set */
+ locations = g_settings_get_strv (source->priv->db_settings, "locations");
+- if (g_strv_length (locations) == 0) {
+- char *music_dir_uri;
+-
+- music_dir_uri = g_filename_to_uri (rb_music_dir (), NULL, NULL);
+- if (music_dir_uri != NULL) {
+- const char *set_locations[2];
+-
+- set_locations[0] = music_dir_uri;
+- set_locations[1] = NULL;
+- g_settings_set_strv (source->priv->db_settings, "locations", set_locations);
+-
+- source->priv->do_initial_import = TRUE;
+-
+- g_free (music_dir_uri);
+- }
+- }
++ if (g_strv_length (locations) == 0)
++ source->priv->do_initial_import = TRUE;
+ g_strfreev (locations);
+
+ songs = rb_source_get_entry_view (RB_SOURCE (source));
+--
+2.17.0
+
diff --git a/media-sound/rhythmbox/rhythmbox-3.4.2.ebuild b/media-sound/rhythmbox/rhythmbox-3.4.2.ebuild
index a22f0e68af97..258f18663802 100644
--- a/media-sound/rhythmbox/rhythmbox-3.4.2.ebuild
+++ b/media-sound/rhythmbox/rhythmbox-3.4.2.ebuild
@@ -84,6 +84,10 @@ DEPEND="${COMMON_DEPEND}
test? ( dev-libs/check )
"
+PATCHES=(
+ "${FILESDIR}"/${P}-gstreamer-1.14.patch
+)
+
pkg_setup() {
use python && python-single-r1_pkg_setup
}