summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMart Raudsepp <leio@gentoo.org>2018-12-11 20:05:12 +0200
committerMart Raudsepp <leio@gentoo.org>2018-12-11 20:09:03 +0200
commit0d63624f08af0799d2634447f5198dc5f27fc016 (patch)
tree4e5b4c0a232d063b87f3724e818d5a44557db794 /gnome-base/nautilus/files
parentgnome-base/nautilus-3.24.2.1: preparation for tracker-2 (diff)
downloadgentoo-0d63624f08af0799d2634447f5198dc5f27fc016.tar.gz
gentoo-0d63624f08af0799d2634447f5198dc5f27fc016.tar.bz2
gentoo-0d63624f08af0799d2634447f5198dc5f27fc016.zip
gnome-base/nautilus: bump to 3.26.4
Revision r2 to show up as an upgrade to gnome overlay users, as this one includes a crash fix patch from upstream branch. Re-enabled tests - they seem to work with meson now. Signed-off-by: Mart Raudsepp <leio@gentoo.org> Package-Manager: Portage-2.3.52, Repoman-2.3.11
Diffstat (limited to 'gnome-base/nautilus/files')
-rw-r--r--gnome-base/nautilus/files/3.26.4-file-view-crash-fix.patch81
-rw-r--r--gnome-base/nautilus/files/3.26.4-optional-introspection.patch49
-rw-r--r--gnome-base/nautilus/files/3.26.4-optional-tracker.patch264
3 files changed, 394 insertions, 0 deletions
diff --git a/gnome-base/nautilus/files/3.26.4-file-view-crash-fix.patch b/gnome-base/nautilus/files/3.26.4-file-view-crash-fix.patch
new file mode 100644
index 000000000000..72077f4a9fa4
--- /dev/null
+++ b/gnome-base/nautilus/files/3.26.4-file-view-crash-fix.patch
@@ -0,0 +1,81 @@
+From 834c4e7fe39f7053efdb126f9e1835e6b8e529f4 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
+Date: Thu, 26 Jul 2018 02:55:19 +0000
+Subject: [PATCH 1/3] file-view: Always unset pending_selection after freeing
+ it
+
+When a file view was loaded with a pending selection, and not all the files were
+seen yet, the private pending_selection list was properly free'd, but the pointer
+was not cleared, causing a crash when `nautilus_files_view_set_selection` was
+called again, as it was trying to deeply copy a list pointed by this invalid
+reference.
+
+So, removing the unneeded `pending_selection` temporary pointer from the main
+function scope, as it only confuses, while use it (with an autolist) when we
+need to pass the previous `priv->pending_selection` (stealing its ownership)
+to set_selection again.
+
+Eventually use a g_clear_pointer to free the list and nullify its priv reference
+
+Fixes #295
+
+(cherry picked from commit ae3382a281b018337a8032ef13663ec2d9c7fd6c)
+---
+ src/nautilus-files-view.c | 16 +++++++---------
+ 1 file changed, 7 insertions(+), 9 deletions(-)
+
+diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
+index 8784f63f8..36d791f80 100644
+--- a/src/nautilus-files-view.c
++++ b/src/nautilus-files-view.c
+@@ -3556,7 +3556,6 @@ done_loading (NautilusFilesView *view,
+ gboolean all_files_seen)
+ {
+ NautilusFilesViewPrivate *priv;
+- GList *pending_selection;
+ GList *selection;
+ gboolean do_reveal = FALSE;
+
+@@ -3577,21 +3576,23 @@ done_loading (NautilusFilesView *view,
+ nautilus_files_view_update_toolbar_menus (view);
+ reset_update_interval (view);
+
+- pending_selection = priv->pending_selection;
+ selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
+
+ if (nautilus_view_is_searching (NAUTILUS_VIEW (view)) &&
+- all_files_seen && !selection && !pending_selection)
++ all_files_seen && selection == NULL && priv->pending_selection == NULL)
+ {
+ nautilus_files_view_select_first (view);
+ do_reveal = TRUE;
+ }
+- else if (pending_selection != NULL && all_files_seen)
++ else if (priv->pending_selection != NULL && all_files_seen)
+ {
+- priv->pending_selection = NULL;
++ GList *pending_selection;
++ pending_selection = g_steal_pointer (&priv->pending_selection);
+
+ nautilus_files_view_call_set_selection (view, pending_selection);
+ do_reveal = TRUE;
++
++ nautilus_file_list_free (pending_selection);
+ }
+
+ if (selection)
+@@ -3599,10 +3600,7 @@ done_loading (NautilusFilesView *view,
+ g_list_free_full (selection, g_object_unref);
+ }
+
+- if (pending_selection)
+- {
+- g_list_free_full (pending_selection, g_object_unref);
+- }
++ g_clear_pointer (&priv->pending_selection, nautilus_file_list_free);
+
+ if (do_reveal)
+ {
+--
+2.17.0
+
diff --git a/gnome-base/nautilus/files/3.26.4-optional-introspection.patch b/gnome-base/nautilus/files/3.26.4-optional-introspection.patch
new file mode 100644
index 000000000000..54bf5ac95fe4
--- /dev/null
+++ b/gnome-base/nautilus/files/3.26.4-optional-introspection.patch
@@ -0,0 +1,49 @@
+From 5058b09996181fbd398c799eeba6a1d83b083186 Mon Sep 17 00:00:00 2001
+From: Mart Raudsepp <leio@gentoo.org>
+Date: Tue, 11 Dec 2018 16:14:11 +0200
+Subject: [PATCH 3/3] Make introspection support optional
+
+Upstream has it optional again with commit 200a5869b5c1dc8 as well,
+but that's included only since nautilus-3.29.90
+---
+ libnautilus-extension/meson.build | 2 ++
+ meson_options.txt | 4 ++++
+ 2 files changed, 6 insertions(+)
+
+diff --git a/libnautilus-extension/meson.build b/libnautilus-extension/meson.build
+index 067ad2414..4702964a9 100644
+--- a/libnautilus-extension/meson.build
++++ b/libnautilus-extension/meson.build
+@@ -41,12 +41,14 @@ libnautilus_extension = shared_library ('nautilus-extension',
+ version: nautilus_extension_version,
+ install: true)
+
++if get_option('introspection')
+ gnome.generate_gir (libnautilus_extension,
+ sources: libnautilus_extension_headers + libnautilus_extension_sources,
+ nsversion: '3.0',
+ namespace: 'Nautilus',
+ includes: ['Gtk-3.0', 'Gio-2.0', 'GLib-2.0'],
+ install: true)
++endif
+
+ nautilus_extension = declare_dependency (link_with: libnautilus_extension,
+ dependencies: libnautilus_extension_deps,
+diff --git a/meson_options.txt b/meson_options.txt
+index 0c23c7921..6ad3a72de 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -1,6 +1,10 @@
+ option ('enable-profiling',
+ type: 'boolean',
+ value: false)
++option ('introspection',
++ type: 'boolean',
++ value: true,
++ description: 'Build GObject introspection data for extension library')
+ option ('enable-nst-extension',
+ type: 'boolean',
+ value: true)
+--
+2.17.0
+
diff --git a/gnome-base/nautilus/files/3.26.4-optional-tracker.patch b/gnome-base/nautilus/files/3.26.4-optional-tracker.patch
new file mode 100644
index 000000000000..037919967708
--- /dev/null
+++ b/gnome-base/nautilus/files/3.26.4-optional-tracker.patch
@@ -0,0 +1,264 @@
+From 74a7d02eb342416194dcc3c676199d8f5266a481 Mon Sep 17 00:00:00 2001
+From: Gilles Dartiguelongue <eva@gentoo.org>
+Date: Sun, 27 May 2018 13:54:38 +0200
+Subject: [PATCH 2/3] Make tracker support optional
+
+---
+ config.h.meson | 1 +
+ meson.build | 9 ++++++---
+ meson_options.txt | 4 ++++
+ src/meson.build | 19 ++++++++++++-------
+ src/nautilus-file-undo-operations.c | 4 ++++
+ src/nautilus-file.c | 2 ++
+ src/nautilus-files-view.c | 4 ++++
+ src/nautilus-search-engine.c | 14 ++++++++++++++
+ 8 files changed, 47 insertions(+), 10 deletions(-)
+
+diff --git a/config.h.meson b/config.h.meson
+index 4f5cb5848..58d71e96f 100644
+--- a/config.h.meson
++++ b/config.h.meson
+@@ -4,6 +4,7 @@
+ #mesondefine HAVE_EXEMPI
+ #mesondefine HAVE_EXIF
+ #mesondefine HAVE_SELINUX
++#mesondefine HAVE_TRACKER
+ #mesondefine ENABLE_DESKTOP
+ #mesondefine ENABLE_PACKAGEKIT
+ #mesondefine LOCALEDIR
+diff --git a/meson.build b/meson.build
+index 0b8a6f1b0..559c3dbfd 100644
+--- a/meson.build
++++ b/meson.build
+@@ -81,9 +81,12 @@ if get_option ('enable-selinux')
+ conf.set10 ('HAVE_SELINUX', true)
+ endif
+
+-tracker_sparql = dependency ('tracker-sparql-2.0', required: false)
+-if not tracker_sparql.found()
+- tracker_sparql = dependency ('tracker-sparql-1.0')
++if get_option ('tracker')
++ tracker_sparql = dependency ('tracker-sparql-2.0', required: false)
++ if not tracker_sparql.found()
++ tracker_sparql = dependency ('tracker-sparql-1.0')
++ endif
++ conf.set10 ('HAVE_TRACKER', true)
+ endif
+
+ if get_option ('enable-xmp')
+diff --git a/meson_options.txt b/meson_options.txt
+index c934dd8b1..0c23c7921 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -8,6 +8,10 @@ option ('enable-exif',
+ type: 'boolean',
+ value: false,
+ description: 'enable EXIF support')
++option ('tracker',
++ type: 'boolean',
++ value: true,
++ description: 'enable bulk renames and search using Tracker')
+ option ('enable-xmp',
+ type: 'boolean',
+ value: false,
+diff --git a/src/meson.build b/src/meson.build
+index cc08345d8..8ea10b16b 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -254,12 +254,6 @@ libnautilus_sources = [
+ 'nautilus-file-undo-operations.h',
+ 'nautilus-file-undo-manager.c',
+ 'nautilus-file-undo-manager.h',
+- 'nautilus-batch-rename-dialog.c',
+- 'nautilus-batch-rename-dialog.h',
+- 'nautilus-batch-rename-utilities.c',
+- 'nautilus-batch-rename-utilities.h',
+- 'nautilus-search-engine-tracker.c',
+- 'nautilus-search-engine-tracker.h'
+ ]
+
+ nautilus_deps = [glib,
+@@ -274,7 +268,6 @@ nautilus_deps = [glib,
+ nautilus_extension,
+ x11,
+ gmodule_no_export,
+- tracker_sparql,
+ gio_unix]
+
+ if get_option ('enable-exif')
+@@ -289,6 +282,18 @@ if get_option ('enable-xmp')
+ nautilus_deps += exempi
+ endif
+
++if get_option ('tracker')
++ libnautilus_sources += [
++ 'nautilus-batch-rename-dialog.c',
++ 'nautilus-batch-rename-dialog.h',
++ 'nautilus-batch-rename-utilities.c',
++ 'nautilus-batch-rename-utilities.h',
++ 'nautilus-search-engine-tracker.c',
++ 'nautilus-search-engine-tracker.h'
++ ]
++ nautilus_deps += tracker_sparql
++endif
++
+ libnautilus = static_library ('nautilus',
+ libnautilus_sources,
+ dependencies: nautilus_deps,
+diff --git a/src/nautilus-file-undo-operations.c b/src/nautilus-file-undo-operations.c
+index e833d0578..d6e407ca5 100644
+--- a/src/nautilus-file-undo-operations.c
++++ b/src/nautilus-file-undo-operations.c
+@@ -31,8 +31,10 @@
+ #include "nautilus-file-operations.h"
+ #include "nautilus-file.h"
+ #include "nautilus-file-undo-manager.h"
++#ifdef HAVE_TRACKER
+ #include "nautilus-batch-rename-dialog.h"
+ #include "nautilus-batch-rename-utilities.h"
++#endif
+
+
+ /* Since we use g_get_current_time for setting "orig_trash_time" in the undo
+@@ -1087,6 +1089,7 @@ nautilus_file_undo_info_rename_set_data_post (NautilusFileUndoInfoRename *self,
+ }
+
+ /* batch rename */
++#ifdef HAVE_TRACKER
+ G_DEFINE_TYPE (NautilusFileUndoInfoBatchRename, nautilus_file_undo_info_batch_rename, NAUTILUS_TYPE_FILE_UNDO_INFO);
+
+ struct _NautilusFileUndoInfoBatchRenameDetails
+@@ -1303,6 +1306,7 @@ nautilus_file_undo_info_batch_rename_set_data_post (NautilusFileUndoInfoBatchRen
+
+ self->priv->new_display_names = g_list_reverse (self->priv->new_display_names);
+ }
++#endif
+
+ /* trash */
+ G_DEFINE_TYPE (NautilusFileUndoInfoTrash, nautilus_file_undo_info_trash, NAUTILUS_TYPE_FILE_UNDO_INFO)
+diff --git a/src/nautilus-file.c b/src/nautilus-file.c
+index 0ac53984b..549e1eb39 100644
+--- a/src/nautilus-file.c
++++ b/src/nautilus-file.c
+@@ -2407,6 +2407,7 @@ real_batch_rename (GList *files,
+ }
+ }
+
++#ifdef HAVE_TRACKER
+ /* Tell the undo manager a batch rename is taking place if at least
+ * a file has been renamed*/
+ if (!nautilus_file_undo_manager_is_operating () && op->skipped_files != g_list_length (files))
+@@ -2421,6 +2422,7 @@ real_batch_rename (GList *files,
+
+ nautilus_file_undo_manager_set_action (op->undo_info);
+ }
++#endif
+
+ if (op->skipped_files == g_list_length (files))
+ {
+diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
+index 36d791f80..691d5606d 100644
+--- a/src/nautilus-files-view.c
++++ b/src/nautilus-files-view.c
+@@ -28,8 +28,10 @@
+ #include "nautilus-files-view.h"
+
+ #include "nautilus-application.h"
++#ifdef HAVE_TRACKER
+ #include "nautilus-batch-rename-dialog.h"
+ #include "nautilus-batch-rename-utilities.h"
++#endif
+ #include "nautilus-error-reporting.h"
+ #include "nautilus-file-undo-manager.h"
+ #include "nautilus-floating-bar.h"
+@@ -6264,6 +6266,7 @@ real_action_rename (NautilusFilesView *view)
+ {
+ invoke_external_bulk_rename_utility (view, selection);
+ }
++#ifdef HAVE_TRACKER
+ else
+ {
+ GdkCursor *cursor;
+@@ -6281,6 +6284,7 @@ real_action_rename (NautilusFilesView *view)
+
+ gtk_widget_show (GTK_WIDGET (dialog));
+ }
++#endif
+ }
+ else
+ {
+diff --git a/src/nautilus-search-engine.c b/src/nautilus-search-engine.c
+index 209bd4f80..436cd7471 100644
+--- a/src/nautilus-search-engine.c
++++ b/src/nautilus-search-engine.c
+@@ -28,11 +28,15 @@
+ #include "nautilus-search-engine-model.h"
+ #define DEBUG_FLAG NAUTILUS_DEBUG_SEARCH
+ #include "nautilus-debug.h"
++#ifdef HAVE_TRACKER
+ #include "nautilus-search-engine-tracker.h"
++#endif
+
+ typedef struct
+ {
++#ifdef HAVE_TRACKER
+ NautilusSearchEngineTracker *tracker;
++#endif
+ NautilusSearchEngineSimple *simple;
+ NautilusSearchEngineModel *model;
+
+@@ -73,7 +77,9 @@ nautilus_search_engine_set_query (NautilusSearchProvider *provider,
+ engine = NAUTILUS_SEARCH_ENGINE (provider);
+ priv = nautilus_search_engine_get_instance_private (engine);
+
++#ifdef HAVE_TRACKER
+ nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (priv->tracker), query);
++#endif
+ nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (priv->model), query);
+ nautilus_search_provider_set_query (NAUTILUS_SEARCH_PROVIDER (priv->simple), query);
+ }
+@@ -95,8 +101,10 @@ search_engine_start_real (NautilusSearchEngine *engine)
+
+ g_object_ref (engine);
+
++#ifdef HAVE_TRACKER
+ nautilus_search_provider_start (NAUTILUS_SEARCH_PROVIDER (priv->tracker));
+ priv->providers_running++;
++#endif
+
+ if (nautilus_search_engine_model_get_model (priv->model))
+ {
+@@ -158,7 +166,9 @@ nautilus_search_engine_stop (NautilusSearchProvider *provider)
+
+ DEBUG ("Search engine stop");
+
++#ifdef HAVE_TRACKER
+ nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (priv->tracker));
++#endif
+ nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (priv->model));
+ nautilus_search_provider_stop (NAUTILUS_SEARCH_PROVIDER (priv->simple));
+
+@@ -333,7 +343,9 @@ nautilus_search_engine_finalize (GObject *object)
+
+ g_hash_table_destroy (priv->uris);
+
++#ifdef HAVE_TRACKER
+ g_clear_object (&priv->tracker);
++#endif
+ g_clear_object (&priv->model);
+ g_clear_object (&priv->simple);
+
+@@ -387,8 +399,10 @@ nautilus_search_engine_init (NautilusSearchEngine *engine)
+ priv = nautilus_search_engine_get_instance_private (engine);
+ priv->uris = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+
++#ifdef HAVE_TRACKER
+ priv->tracker = nautilus_search_engine_tracker_new ();
+ connect_provider_signals (engine, NAUTILUS_SEARCH_PROVIDER (priv->tracker));
++#endif
+
+ priv->model = nautilus_search_engine_model_new ();
+ connect_provider_signals (engine, NAUTILUS_SEARCH_PROVIDER (priv->model));
+--
+2.17.0
+