Sync with F12
This commit is contained in:
parent
d6d0ab4125
commit
cae98f9801
@ -1 +1 @@
|
|||||||
nautilus-2.28.0.tar.bz2
|
nautilus-2.28.1.tar.bz2
|
||||||
|
507
nautilus-2.28.1-dynamic-search.patch
Normal file
507
nautilus-2.28.1-dynamic-search.patch
Normal file
@ -0,0 +1,507 @@
|
|||||||
|
From 62ec35a733aee0a7ce7a820027e8507183ac212d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tomas Bzatek <tbzatek@redhat.com>
|
||||||
|
Date: Wed, 21 Oct 2009 15:23:26 +0200
|
||||||
|
Subject: [PATCH] Load beagle/tracker at runtime
|
||||||
|
|
||||||
|
Dynamically load beagle and tracker client libraries on demand if available.
|
||||||
|
This allows more flexibility for packagers and users.
|
||||||
|
|
||||||
|
See bug 589345 for details.
|
||||||
|
---
|
||||||
|
configure.in | 62 ---------
|
||||||
|
libnautilus-private/Makefile.am | 20 +---
|
||||||
|
.../nautilus-search-engine-beagle.c | 132 ++++++++++++++++++-
|
||||||
|
.../nautilus-search-engine-tracker.c | 142 ++++++++++++++++----
|
||||||
|
libnautilus-private/nautilus-search-engine.c | 4 -
|
||||||
|
5 files changed, 248 insertions(+), 112 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/configure.in b/configure.in
|
||||||
|
index 45f0b26..866e8f3 100644
|
||||||
|
--- a/configure.in
|
||||||
|
+++ b/configure.in
|
||||||
|
@@ -195,66 +195,6 @@ if test "x$enable_xmp" != "xno"; then
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl ==========================================================================
|
||||||
|
-dnl search implementations
|
||||||
|
-dnl ****************************
|
||||||
|
-
|
||||||
|
-AM_CONDITIONAL(HAVE_TRACKER, false)
|
||||||
|
-
|
||||||
|
-dnl libtracker checking
|
||||||
|
-
|
||||||
|
-AC_ARG_ENABLE(tracker,
|
||||||
|
- AC_HELP_STRING([--disable-tracker],
|
||||||
|
- [build without tracker support]))
|
||||||
|
-msg_tracker=no
|
||||||
|
-if test "x$enable_tracker" != "xno"; then
|
||||||
|
- PKG_CHECK_MODULES(TRACKER, tracker-client-0.7, [
|
||||||
|
- AM_CONDITIONAL(HAVE_TRACKER, true)
|
||||||
|
- AC_DEFINE(HAVE_TRACKER, 1, [Define to enable tracker support])
|
||||||
|
- AC_DEFINE(HAVE_TRACKER_0_7, 1, [Define to enable tracker support])
|
||||||
|
- ]
|
||||||
|
- msg_tracker=yes,
|
||||||
|
- [
|
||||||
|
- PKG_CHECK_MODULES(TRACKER, tracker >= tracker_minver, [
|
||||||
|
- AM_CONDITIONAL(HAVE_TRACKER, true)
|
||||||
|
- AC_DEFINE(HAVE_TRACKER, 1, [Define to enable tracker support])
|
||||||
|
- ]
|
||||||
|
- msg_tracker=yes,
|
||||||
|
- [AM_CONDITIONAL(HAVE_TRACKER, false)])
|
||||||
|
- ])
|
||||||
|
- AC_SUBST(TRACKER_CFLAGS)
|
||||||
|
- AC_SUBST(TRACKER_LIBS)
|
||||||
|
-fi
|
||||||
|
-
|
||||||
|
-dnl ==========================================================================
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-AM_CONDITIONAL(HAVE_BEAGLE, false)
|
||||||
|
-
|
||||||
|
-dnl libbeagle checking
|
||||||
|
-
|
||||||
|
-AC_ARG_ENABLE(beagle,
|
||||||
|
- AC_HELP_STRING([--disable-beagle],
|
||||||
|
- [build without beagle support]))
|
||||||
|
-msg_beagle=no
|
||||||
|
-if test "x$enable_beagle" != "xno"; then
|
||||||
|
- BEAGLE_PKGCONFIG=
|
||||||
|
- if $PKG_CONFIG --exists libbeagle-1.0; then
|
||||||
|
- BEAGLE_PKGCONFIG=libbeagle-1.0
|
||||||
|
- else
|
||||||
|
- BEAGLE_PKGCONFIG=libbeagle-0.0
|
||||||
|
- fi
|
||||||
|
-
|
||||||
|
- PKG_CHECK_MODULES(BEAGLE, $BEAGLE_PKGCONFIG >= beagle_minver, [
|
||||||
|
- AM_CONDITIONAL(HAVE_BEAGLE, true)
|
||||||
|
- AC_DEFINE(HAVE_BEAGLE, 1, [Define to enable beagle support])
|
||||||
|
- ]
|
||||||
|
- msg_beagle=yes,
|
||||||
|
- [AM_CONDITIONAL(HAVE_BEAGLE, false)])
|
||||||
|
- AC_SUBST(BEAGLE_CFLAGS)
|
||||||
|
- AC_SUBST(BEAGLE_LIBS)
|
||||||
|
-fi
|
||||||
|
-
|
||||||
|
-dnl ==========================================================================
|
||||||
|
|
||||||
|
dnl ****************************
|
||||||
|
dnl *** Check for libselinux ***
|
||||||
|
@@ -470,8 +410,6 @@ nautilus-$VERSION:
|
||||||
|
prefix: ${prefix}
|
||||||
|
source code location: ${srcdir}
|
||||||
|
compiler: ${CC}
|
||||||
|
- tracker support: $msg_tracker
|
||||||
|
- beagle support: $msg_beagle
|
||||||
|
xmp support: $msg_xmp
|
||||||
|
PackageKit support: $msg_packagekit
|
||||||
|
|
||||||
|
diff --git a/libnautilus-private/Makefile.am b/libnautilus-private/Makefile.am
|
||||||
|
index e831d43..0f817fc 100644
|
||||||
|
--- a/libnautilus-private/Makefile.am
|
||||||
|
+++ b/libnautilus-private/Makefile.am
|
||||||
|
@@ -154,6 +154,10 @@ libnautilus_private_la_SOURCES = \
|
||||||
|
nautilus-search-engine.h \
|
||||||
|
nautilus-search-engine-simple.c \
|
||||||
|
nautilus-search-engine-simple.h \
|
||||||
|
+ nautilus-search-engine-beagle.c \
|
||||||
|
+ nautilus-search-engine-beagle.h \
|
||||||
|
+ nautilus-search-engine-tracker.c \
|
||||||
|
+ nautilus-search-engine-tracker.h \
|
||||||
|
nautilus-sidebar-provider.c \
|
||||||
|
nautilus-sidebar-provider.h \
|
||||||
|
nautilus-sidebar.c \
|
||||||
|
@@ -195,22 +199,6 @@ libnautilus_private_la_SOURCES = \
|
||||||
|
nautilus-window-slot-info.h \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
-BEAGLE_SOURCES = \
|
||||||
|
- nautilus-search-engine-beagle.c \
|
||||||
|
- nautilus-search-engine-beagle.h
|
||||||
|
-
|
||||||
|
-if HAVE_BEAGLE
|
||||||
|
-libnautilus_private_la_SOURCES += $(BEAGLE_SOURCES)
|
||||||
|
-endif
|
||||||
|
-
|
||||||
|
-TRACKER_SOURCES = \
|
||||||
|
- nautilus-search-engine-tracker.c \
|
||||||
|
- nautilus-search-engine-tracker.h
|
||||||
|
-
|
||||||
|
-if HAVE_TRACKER
|
||||||
|
-libnautilus_private_la_SOURCES += $(TRACKER_SOURCES)
|
||||||
|
-endif
|
||||||
|
-
|
||||||
|
$(lib_LTLIBRARIES): $(dependency_static_libs)
|
||||||
|
|
||||||
|
nautilus-marshal.h: nautilus-marshal.list $(GLIB_GENMARSHAL)
|
||||||
|
diff --git a/libnautilus-private/nautilus-search-engine-beagle.c b/libnautilus-private/nautilus-search-engine-beagle.c
|
||||||
|
index 3ab6507..930923f 100644
|
||||||
|
--- a/libnautilus-private/nautilus-search-engine-beagle.c
|
||||||
|
+++ b/libnautilus-private/nautilus-search-engine-beagle.c
|
||||||
|
@@ -23,10 +23,20 @@
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
#include "nautilus-search-engine-beagle.h"
|
||||||
|
-#include <beagle/beagle.h>
|
||||||
|
|
||||||
|
#include <eel/eel-gtk-macros.h>
|
||||||
|
#include <eel/eel-glib-extensions.h>
|
||||||
|
+#include <gmodule.h>
|
||||||
|
+
|
||||||
|
+typedef struct _BeagleHit BeagleHit;
|
||||||
|
+typedef struct _BeagleQuery BeagleQuery;
|
||||||
|
+typedef struct _BeagleClient BeagleClient;
|
||||||
|
+typedef struct _BeagleRequest BeagleRequest;
|
||||||
|
+typedef struct _BeagleFinishedResponse BeagleFinishedResponse;
|
||||||
|
+typedef struct _BeagleHitsAddedResponse BeagleHitsAddedResponse;
|
||||||
|
+typedef struct _BeagleQueryPartProperty BeagleQueryPartProperty;
|
||||||
|
+typedef struct _BeagleQueryPart BeagleQueryPart;
|
||||||
|
+typedef struct _BeagleHitsSubtractedResponse BeagleHitsSubtractedResponse;
|
||||||
|
|
||||||
|
struct NautilusSearchEngineBeagleDetails {
|
||||||
|
BeagleClient *client;
|
||||||
|
@@ -37,6 +47,121 @@ struct NautilusSearchEngineBeagleDetails {
|
||||||
|
gboolean query_finished;
|
||||||
|
};
|
||||||
|
|
||||||
|
+/* We dlopen() all the following from libbeagle at runtime */
|
||||||
|
+#define BEAGLE_HIT(x) ((BeagleHit *)(x))
|
||||||
|
+#define BEAGLE_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), beagle_request_get_type(), BeagleRequest))
|
||||||
|
+#define BEAGLE_QUERY_PART(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), beagle_query_part_get_type(), BeagleQueryPart))
|
||||||
|
+
|
||||||
|
+typedef enum {
|
||||||
|
+ BEAGLE_QUERY_PART_LOGIC_REQUIRED = 1,
|
||||||
|
+ BEAGLE_QUERY_PART_LOGIC_PROHIBITED = 2
|
||||||
|
+} BeagleQueryPartLogic;
|
||||||
|
+
|
||||||
|
+typedef enum {
|
||||||
|
+ BEAGLE_PROPERTY_TYPE_UNKNOWN = 0,
|
||||||
|
+ BEAGLE_PROPERTY_TYPE_TEXT = 1,
|
||||||
|
+ BEAGLE_PROPERTY_TYPE_KEYWORD = 2,
|
||||||
|
+ BEAGLE_PROPERTY_TYPE_DATE = 3,
|
||||||
|
+ BEAGLE_PROPERTY_TYPE_LAST = 4
|
||||||
|
+} BeaglePropertyType;
|
||||||
|
+
|
||||||
|
+/* *static* wrapper function pointers */
|
||||||
|
+static gboolean (*beagle_client_send_request_async) (BeagleClient *client,
|
||||||
|
+ BeagleRequest *request,
|
||||||
|
+ GError **err) = NULL;
|
||||||
|
+static G_CONST_RETURN char *(*beagle_hit_get_uri) (BeagleHit *hit) = NULL;
|
||||||
|
+static GSList *(*beagle_hits_added_response_get_hits) (BeagleHitsAddedResponse *response) = NULL;
|
||||||
|
+static BeagleQuery *(*beagle_query_new) (void) = NULL;
|
||||||
|
+static void (*beagle_query_add_text) (BeagleQuery *query,
|
||||||
|
+ const char *str) = NULL;
|
||||||
|
+static BeagleQueryPartProperty *(*beagle_query_part_property_new) (void) = NULL;
|
||||||
|
+static void (*beagle_query_part_set_logic) (BeagleQueryPart *part,
|
||||||
|
+ BeagleQueryPartLogic logic) = NULL;
|
||||||
|
+static void (*beagle_query_part_property_set_key) (BeagleQueryPartProperty *part,
|
||||||
|
+ const char *key) = NULL;
|
||||||
|
+static void (*beagle_query_part_property_set_value) (BeagleQueryPartProperty *part,
|
||||||
|
+ const char * value) = NULL;
|
||||||
|
+static void (*beagle_query_part_property_set_property_type) (BeagleQueryPartProperty *part,
|
||||||
|
+ BeaglePropertyType prop_type) = NULL;
|
||||||
|
+static void (*beagle_query_add_part) (BeagleQuery *query,
|
||||||
|
+ BeagleQueryPart *part) = NULL;
|
||||||
|
+static GType (*beagle_request_get_type) (void) = NULL;
|
||||||
|
+static GType (*beagle_query_part_get_type) (void) = NULL;
|
||||||
|
+static gboolean (*beagle_util_daemon_is_running) (void) = NULL;
|
||||||
|
+static BeagleClient *(*beagle_client_new_real) (const char *client_name) = NULL;
|
||||||
|
+static void (*beagle_query_set_max_hits) (BeagleQuery *query,
|
||||||
|
+ int max_hits) = NULL;
|
||||||
|
+static GSList *(*beagle_hits_subtracted_response_get_uris) (BeagleHitsSubtractedResponse *response) = NULL;
|
||||||
|
+
|
||||||
|
+static struct BeagleDlMapping
|
||||||
|
+{
|
||||||
|
+ const char *fn_name;
|
||||||
|
+ gpointer *fn_ptr_ref;
|
||||||
|
+} beagle_dl_mapping[] =
|
||||||
|
+{
|
||||||
|
+#define MAP(a) { #a, (gpointer *)&a }
|
||||||
|
+ MAP (beagle_client_send_request_async),
|
||||||
|
+ MAP (beagle_hit_get_uri),
|
||||||
|
+ MAP (beagle_hits_added_response_get_hits),
|
||||||
|
+ MAP (beagle_query_new),
|
||||||
|
+ MAP (beagle_query_add_text),
|
||||||
|
+ MAP (beagle_query_part_property_new),
|
||||||
|
+ MAP (beagle_query_part_set_logic),
|
||||||
|
+ MAP (beagle_query_part_property_set_key),
|
||||||
|
+ MAP (beagle_query_part_property_set_value),
|
||||||
|
+ MAP (beagle_query_part_property_set_property_type),
|
||||||
|
+ MAP (beagle_query_add_part),
|
||||||
|
+ MAP (beagle_request_get_type),
|
||||||
|
+ MAP (beagle_query_part_get_type),
|
||||||
|
+ MAP (beagle_util_daemon_is_running),
|
||||||
|
+ MAP (beagle_query_set_max_hits),
|
||||||
|
+ MAP (beagle_hits_subtracted_response_get_uris),
|
||||||
|
+#undef MAP
|
||||||
|
+ { "beagle_client_new", (gpointer *)&beagle_client_new_real },
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+open_libbeagle (void)
|
||||||
|
+{
|
||||||
|
+ static gboolean done = FALSE;
|
||||||
|
+
|
||||||
|
+ if (!done)
|
||||||
|
+ {
|
||||||
|
+ int i;
|
||||||
|
+ GModule *beagle;
|
||||||
|
+
|
||||||
|
+ done = TRUE;
|
||||||
|
+
|
||||||
|
+ beagle = g_module_open ("libbeagle.so.1", G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
|
||||||
|
+ if (!beagle)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < G_N_ELEMENTS (beagle_dl_mapping); i++)
|
||||||
|
+ {
|
||||||
|
+ if (!g_module_symbol (beagle, beagle_dl_mapping[i].fn_name,
|
||||||
|
+ beagle_dl_mapping[i].fn_ptr_ref))
|
||||||
|
+ {
|
||||||
|
+ g_warning ("Missing symbol '%s' in libbeagle\n",
|
||||||
|
+ beagle_dl_mapping[i].fn_name);
|
||||||
|
+ g_module_close (beagle);
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < G_N_ELEMENTS (beagle_dl_mapping); i++)
|
||||||
|
+ beagle_dl_mapping[i].fn_ptr_ref = NULL;
|
||||||
|
+
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static BeagleClient *
|
||||||
|
+beagle_client_new (const char *client_name)
|
||||||
|
+{
|
||||||
|
+ if (beagle_client_new_real)
|
||||||
|
+ return beagle_client_new_real (client_name);
|
||||||
|
+
|
||||||
|
+ return NULL;
|
||||||
|
+}
|
||||||
|
|
||||||
|
static void nautilus_search_engine_beagle_class_init (NautilusSearchEngineBeagleClass *class);
|
||||||
|
static void nautilus_search_engine_beagle_init (NautilusSearchEngineBeagle *engine);
|
||||||
|
@@ -276,8 +401,11 @@ nautilus_search_engine_beagle_new (void)
|
||||||
|
{
|
||||||
|
NautilusSearchEngineBeagle *engine;
|
||||||
|
BeagleClient *client;
|
||||||
|
+
|
||||||
|
+ open_libbeagle ();
|
||||||
|
|
||||||
|
- if (!beagle_util_daemon_is_running ()) {
|
||||||
|
+ if (beagle_util_daemon_is_running == NULL ||
|
||||||
|
+ !beagle_util_daemon_is_running ()) {
|
||||||
|
/* check whether daemon is running as beagle_client_new
|
||||||
|
* doesn't fail when a stale socket file exists */
|
||||||
|
return NULL;
|
||||||
|
diff --git a/libnautilus-private/nautilus-search-engine-tracker.c b/libnautilus-private/nautilus-search-engine-tracker.c
|
||||||
|
index eec8d74..ff1e2d3 100644
|
||||||
|
--- a/libnautilus-private/nautilus-search-engine-tracker.c
|
||||||
|
+++ b/libnautilus-private/nautilus-search-engine-tracker.c
|
||||||
|
@@ -25,13 +25,103 @@
|
||||||
|
#include "nautilus-search-engine-tracker.h"
|
||||||
|
#include <eel/eel-gtk-macros.h>
|
||||||
|
#include <eel/eel-glib-extensions.h>
|
||||||
|
+#include <gmodule.h>
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+typedef struct _TrackerClient TrackerClient;
|
||||||
|
+
|
||||||
|
+typedef void (*TrackerArrayReply) (char **result, GError *error, gpointer user_data);
|
||||||
|
+
|
||||||
|
+static TrackerClient * (*tracker_connect) (gboolean enable_warnings) = NULL;
|
||||||
|
+static TrackerClient * (*tracker_connect_07) (gboolean enable_warnings,
|
||||||
|
+ gint timeout) = NULL;
|
||||||
|
+static void (*tracker_disconnect) (TrackerClient *client) = NULL;
|
||||||
|
+static void (*tracker_cancel_last_call) (TrackerClient *client) = NULL;
|
||||||
|
+static int (*tracker_get_version) (TrackerClient *client, GError **error) = NULL;
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+static void (*tracker_search_metadata_by_text_async) (TrackerClient *client,
|
||||||
|
+ const char *query,
|
||||||
|
+ TrackerArrayReply callback,
|
||||||
|
+ gpointer user_data) = NULL;
|
||||||
|
+static void (*tracker_search_metadata_by_text_and_mime_async) (TrackerClient *client,
|
||||||
|
+ const char *query,
|
||||||
|
+ const char **mimes,
|
||||||
|
+ TrackerArrayReply callback,
|
||||||
|
+ gpointer user_data) = NULL;
|
||||||
|
+static void (*tracker_search_metadata_by_text_and_location_async) (TrackerClient *client,
|
||||||
|
+ const char *query,
|
||||||
|
+ const char *location,
|
||||||
|
+ TrackerArrayReply callback,
|
||||||
|
+ gpointer user_data) = NULL;
|
||||||
|
+static void (*tracker_search_metadata_by_text_and_mime_and_location_async) (TrackerClient *client,
|
||||||
|
+ const char *query,
|
||||||
|
+ const char **mimes,
|
||||||
|
+ const char *location,
|
||||||
|
+ TrackerArrayReply callback,
|
||||||
|
+ gpointer user_data) = NULL;
|
||||||
|
+
|
||||||
|
+static struct TrackerDlMapping {
|
||||||
|
+ const char *fn_name;
|
||||||
|
+ gpointer *fn_ptr_ref;
|
||||||
|
+ gboolean mandatory;
|
||||||
|
+} tracker_dl_mapping[] =
|
||||||
|
+{
|
||||||
|
+#define MAP(a, b) { #a, (gpointer *)&a, b }
|
||||||
|
+ MAP (tracker_connect, TRUE),
|
||||||
|
+ MAP (tracker_disconnect, TRUE),
|
||||||
|
+ MAP (tracker_cancel_last_call, TRUE),
|
||||||
|
+ MAP (tracker_search_metadata_by_text_async, TRUE),
|
||||||
|
+ MAP (tracker_search_metadata_by_text_and_mime_async, TRUE),
|
||||||
|
+ MAP (tracker_search_metadata_by_text_and_location_async, TRUE),
|
||||||
|
+ MAP (tracker_search_metadata_by_text_and_mime_and_location_async, TRUE),
|
||||||
|
+ MAP (tracker_get_version, FALSE)
|
||||||
|
+#undef MAP
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static gboolean tracker_07;
|
||||||
|
|
||||||
|
-#ifdef HAVE_TRACKER_0_7
|
||||||
|
-#include <libtracker-client/tracker.h>
|
||||||
|
-#else
|
||||||
|
-#include <tracker.h>
|
||||||
|
-#endif
|
||||||
|
+static void
|
||||||
|
+open_libtracker (void)
|
||||||
|
+{
|
||||||
|
+ static gboolean done = FALSE;
|
||||||
|
+
|
||||||
|
+ if (! done) {
|
||||||
|
+ int i;
|
||||||
|
+ GModule *tracker;
|
||||||
|
+
|
||||||
|
+ done = TRUE;
|
||||||
|
+ tracker_07 = TRUE;
|
||||||
|
+ tracker_connect_07 = NULL;
|
||||||
|
+
|
||||||
|
+ tracker = g_module_open ("libtracker-client-0.7.so.0", G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
|
||||||
|
+ if (! tracker) {
|
||||||
|
+ tracker = g_module_open ("libtrackerclient.so.0", G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
|
||||||
|
+ tracker_07 = FALSE;
|
||||||
|
+ }
|
||||||
|
+ if (! tracker)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < G_N_ELEMENTS (tracker_dl_mapping); i++) {
|
||||||
|
+ if (! g_module_symbol (tracker, tracker_dl_mapping[i].fn_name,
|
||||||
|
+ tracker_dl_mapping[i].fn_ptr_ref) &&
|
||||||
|
+ tracker_dl_mapping[i].mandatory) {
|
||||||
|
+ g_warning ("Missing symbol '%s' in libtracker\n",
|
||||||
|
+ tracker_dl_mapping[i].fn_name);
|
||||||
|
+ g_module_close (tracker);
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < G_N_ELEMENTS (tracker_dl_mapping); i++)
|
||||||
|
+ tracker_dl_mapping[i].fn_ptr_ref = NULL;
|
||||||
|
+
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
|
||||||
|
+ if (tracker_07) {
|
||||||
|
+ tracker_connect_07 = (gpointer)tracker_connect;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
|
||||||
|
|
||||||
|
struct NautilusSearchEngineTrackerDetails {
|
||||||
|
@@ -96,11 +186,7 @@ search_callback (char **results, GError *error, gpointer user_data)
|
||||||
|
|
||||||
|
char *uri;
|
||||||
|
|
||||||
|
-#ifdef HAVE_TRACKER_0_7
|
||||||
|
- uri = g_strdup ((char *)*results_p);
|
||||||
|
-#else
|
||||||
|
- uri = g_filename_to_uri ((char *)*results_p, NULL, NULL);
|
||||||
|
-#endif
|
||||||
|
+ uri = tracker_07 ? g_strdup ((char *)*results_p) : g_filename_to_uri ((char *)*results_p, NULL, NULL);
|
||||||
|
if (uri) {
|
||||||
|
hit_uris = g_list_prepend (hit_uris, (char *)uri);
|
||||||
|
}
|
||||||
|
@@ -139,11 +225,7 @@ nautilus_search_engine_tracker_start (NautilusSearchEngine *engine)
|
||||||
|
location_uri = nautilus_query_get_location (tracker->details->query);
|
||||||
|
|
||||||
|
if (location_uri) {
|
||||||
|
-#ifdef HAVE_TRACKER_0_7
|
||||||
|
- location = g_strdup (location_uri);
|
||||||
|
-#else
|
||||||
|
- location = g_filename_from_uri (location_uri, NULL, NULL);
|
||||||
|
-#endif
|
||||||
|
+ location = tracker_07 ? g_strdup (location_uri) : g_filename_from_uri (location_uri, NULL, NULL);
|
||||||
|
g_free (location_uri);
|
||||||
|
} else {
|
||||||
|
location = NULL;
|
||||||
|
@@ -271,27 +353,31 @@ nautilus_search_engine_tracker_new (void)
|
||||||
|
NautilusSearchEngineTracker *engine;
|
||||||
|
TrackerClient *tracker_client;
|
||||||
|
|
||||||
|
-#ifdef HAVE_TRACKER_0_7
|
||||||
|
- tracker_client = tracker_connect (FALSE, -1);
|
||||||
|
-#else
|
||||||
|
- tracker_client = tracker_connect (FALSE);
|
||||||
|
-#endif
|
||||||
|
+ open_libtracker ();
|
||||||
|
+
|
||||||
|
+ if (! tracker_connect)
|
||||||
|
+ return NULL;
|
||||||
|
+
|
||||||
|
+ if (tracker_07)
|
||||||
|
+ tracker_client = tracker_connect_07 (FALSE, -1);
|
||||||
|
+ else
|
||||||
|
+ tracker_client = tracker_connect (FALSE);
|
||||||
|
|
||||||
|
if (!tracker_client) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
-#ifndef HAVE_TRACKER_0_7
|
||||||
|
- GError *err = NULL;
|
||||||
|
+ if (! tracker_07) {
|
||||||
|
+ GError *err = NULL;
|
||||||
|
|
||||||
|
- tracker_get_version (tracker_client, &err);
|
||||||
|
+ tracker_get_version (tracker_client, &err);
|
||||||
|
|
||||||
|
- if (err != NULL) {
|
||||||
|
- g_error_free (err);
|
||||||
|
- tracker_disconnect (tracker_client);
|
||||||
|
- return NULL;
|
||||||
|
+ if (err != NULL) {
|
||||||
|
+ g_error_free (err);
|
||||||
|
+ tracker_disconnect (tracker_client);
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
engine = g_object_new (NAUTILUS_TYPE_SEARCH_ENGINE_TRACKER, NULL);
|
||||||
|
|
||||||
|
diff --git a/libnautilus-private/nautilus-search-engine.c b/libnautilus-private/nautilus-search-engine.c
|
||||||
|
index 2030d95..d225237 100644
|
||||||
|
--- a/libnautilus-private/nautilus-search-engine.c
|
||||||
|
+++ b/libnautilus-private/nautilus-search-engine.c
|
||||||
|
@@ -126,19 +126,15 @@ nautilus_search_engine_new (void)
|
||||||
|
{
|
||||||
|
NautilusSearchEngine *engine;
|
||||||
|
|
||||||
|
-#ifdef HAVE_BEAGLE
|
||||||
|
engine = nautilus_search_engine_beagle_new ();
|
||||||
|
if (engine) {
|
||||||
|
return engine;
|
||||||
|
}
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
-#ifdef HAVE_TRACKER
|
||||||
|
engine = nautilus_search_engine_tracker_new ();
|
||||||
|
if (engine) {
|
||||||
|
return engine;
|
||||||
|
}
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
engine = nautilus_search_engine_simple_new ();
|
||||||
|
return engine;
|
||||||
|
--
|
||||||
|
1.6.5.rc2
|
||||||
|
|
76
nautilus-2.28.1-tracker-0.7-failed-connection.patch
Normal file
76
nautilus-2.28.1-tracker-0.7-failed-connection.patch
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
From 2a1c0cca80bb8a910c0026e0eab1f16c6e4c845b Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tomas Bzatek <tbzatek@redhat.com>
|
||||||
|
Date: Tue, 20 Oct 2009 17:01:55 +0200
|
||||||
|
Subject: [PATCH] Handle failed connection to tracker daemon 0.7 series
|
||||||
|
|
||||||
|
Also, consolidate string memory management, to be consistent and clear
|
||||||
|
on a first sight.
|
||||||
|
|
||||||
|
Related to changes in bug 596082.
|
||||||
|
---
|
||||||
|
.../nautilus-search-engine-tracker.c | 19 ++++++++-----------
|
||||||
|
1 files changed, 8 insertions(+), 11 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/libnautilus-private/nautilus-search-engine-tracker.c b/libnautilus-private/nautilus-search-engine-tracker.c
|
||||||
|
index 3d2b465..eec8d74 100644
|
||||||
|
--- a/libnautilus-private/nautilus-search-engine-tracker.c
|
||||||
|
+++ b/libnautilus-private/nautilus-search-engine-tracker.c
|
||||||
|
@@ -97,7 +97,7 @@ search_callback (char **results, GError *error, gpointer user_data)
|
||||||
|
char *uri;
|
||||||
|
|
||||||
|
#ifdef HAVE_TRACKER_0_7
|
||||||
|
- uri = *results_p;
|
||||||
|
+ uri = g_strdup ((char *)*results_p);
|
||||||
|
#else
|
||||||
|
uri = g_filename_to_uri ((char *)*results_p, NULL, NULL);
|
||||||
|
#endif
|
||||||
|
@@ -109,12 +109,7 @@ search_callback (char **results, GError *error, gpointer user_data)
|
||||||
|
nautilus_search_engine_hits_added (NAUTILUS_SEARCH_ENGINE (tracker), hit_uris);
|
||||||
|
nautilus_search_engine_finished (NAUTILUS_SEARCH_ENGINE (tracker));
|
||||||
|
g_strfreev (results);
|
||||||
|
-#ifdef HAVE_TRACKER_0_7
|
||||||
|
- g_list_free (hit_uris);
|
||||||
|
-#else
|
||||||
|
eel_g_list_free_deep (hit_uris);
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -145,11 +140,11 @@ nautilus_search_engine_tracker_start (NautilusSearchEngine *engine)
|
||||||
|
|
||||||
|
if (location_uri) {
|
||||||
|
#ifdef HAVE_TRACKER_0_7
|
||||||
|
- location = location_uri;
|
||||||
|
+ location = g_strdup (location_uri);
|
||||||
|
#else
|
||||||
|
location = g_filename_from_uri (location_uri, NULL, NULL);
|
||||||
|
- g_free (location_uri);
|
||||||
|
#endif
|
||||||
|
+ g_free (location_uri);
|
||||||
|
} else {
|
||||||
|
location = NULL;
|
||||||
|
}
|
||||||
|
@@ -279,14 +274,16 @@ nautilus_search_engine_tracker_new (void)
|
||||||
|
#ifdef HAVE_TRACKER_0_7
|
||||||
|
tracker_client = tracker_connect (FALSE, -1);
|
||||||
|
#else
|
||||||
|
- GError *err = NULL;
|
||||||
|
-
|
||||||
|
- tracker_client = tracker_connect (FALSE);
|
||||||
|
+ tracker_client = tracker_connect (FALSE);
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
if (!tracker_client) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifndef HAVE_TRACKER_0_7
|
||||||
|
+ GError *err = NULL;
|
||||||
|
+
|
||||||
|
tracker_get_version (tracker_client, &err);
|
||||||
|
|
||||||
|
if (err != NULL) {
|
||||||
|
--
|
||||||
|
1.6.5.rc2
|
||||||
|
|
40
nautilus-2.28.2-infopanel-selection-crash.patch
Normal file
40
nautilus-2.28.2-infopanel-selection-crash.patch
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
From b10717e1634128f08009c11f0a570888ee314350 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Tomas Bzatek <tbzatek@redhat.com>
|
||||||
|
Date: Mon, 2 Nov 2009 17:10:47 +0100
|
||||||
|
Subject: [PATCH] Fall back to display parent folder info when selection is invalid
|
||||||
|
|
||||||
|
See bug 590591.
|
||||||
|
---
|
||||||
|
src/nautilus-information-panel.c | 9 +++++++--
|
||||||
|
1 files changed, 7 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/nautilus-information-panel.c b/src/nautilus-information-panel.c
|
||||||
|
index ce162ef..03e398b 100644
|
||||||
|
--- a/src/nautilus-information-panel.c
|
||||||
|
+++ b/src/nautilus-information-panel.c
|
||||||
|
@@ -1114,15 +1114,20 @@ selection_changed_callback (NautilusWindowInfo *window,
|
||||||
|
selection = nautilus_window_info_get_selection (window);
|
||||||
|
selection_count = g_list_length (selection);
|
||||||
|
|
||||||
|
+ file = NULL;
|
||||||
|
+
|
||||||
|
if (selection_count == 1) {
|
||||||
|
selection = nautilus_window_info_get_selection (window);
|
||||||
|
selected = selection->data;
|
||||||
|
|
||||||
|
- /* this should never fail here, as we're displaying the file */
|
||||||
|
+ /* FIXME: in some cases we're unable to get a NautilusFile
|
||||||
|
+ for the selected file. See bug 590591 for details. */
|
||||||
|
file = nautilus_file_get_existing (selected);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (file) {
|
||||||
|
uri = nautilus_file_get_uri (file);
|
||||||
|
name = nautilus_file_get_display_name (file);
|
||||||
|
-
|
||||||
|
nautilus_file_unref (file);
|
||||||
|
} else {
|
||||||
|
uri = nautilus_window_info_get_current_location (window);
|
||||||
|
--
|
||||||
|
1.6.5.1
|
||||||
|
|
@ -14,8 +14,8 @@
|
|||||||
|
|
||||||
Name: nautilus
|
Name: nautilus
|
||||||
Summary: File manager for GNOME
|
Summary: File manager for GNOME
|
||||||
Version: 2.28.0
|
Version: 2.28.1
|
||||||
Release: 3%{?dist}
|
Release: 2%{?dist}
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
Group: User Interface/Desktops
|
Group: User Interface/Desktops
|
||||||
Source: http://download.gnome.org/sources/%{name}/2.28/%{name}-%{version}.tar.bz2
|
Source: http://download.gnome.org/sources/%{name}/2.28/%{name}-%{version}.tar.bz2
|
||||||
@ -25,7 +25,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
|||||||
Requires: gamin
|
Requires: gamin
|
||||||
Requires: filesystem >= 2.1.1-1
|
Requires: filesystem >= 2.1.1-1
|
||||||
Requires: redhat-menus >= %{redhat_menus_version}
|
Requires: redhat-menus >= %{redhat_menus_version}
|
||||||
Requires: gvfs >= 1.0.3
|
Requires: gvfs >= 1.4.0
|
||||||
Requires: gnome-icon-theme >= %{gnome_icon_theme_version}
|
Requires: gnome-icon-theme >= %{gnome_icon_theme_version}
|
||||||
Requires: libexif >= %{libexif_version}
|
Requires: libexif >= %{libexif_version}
|
||||||
%ifnarch s390 s390x
|
%ifnarch s390 s390x
|
||||||
@ -72,10 +72,12 @@ Obsoletes: gnome-volume-manager < 2.24.0-2.fc10
|
|||||||
# Some changes to default config
|
# Some changes to default config
|
||||||
Patch1: nautilus-config.patch
|
Patch1: nautilus-config.patch
|
||||||
|
|
||||||
Patch5: nautilus-2.23.5-selinux.patch
|
Patch4: nautilus-2.23.5-selinux.patch
|
||||||
|
|
||||||
# Why is this not upstream ?
|
# from upstream
|
||||||
Patch6: nautilus-2.23.5-dynamic-search.patch
|
Patch5: nautilus-2.28.1-tracker-0.7-failed-connection.patch
|
||||||
|
# https://bugzilla.gnome.org/show_bug.cgi?id=589345
|
||||||
|
Patch6: nautilus-2.28.1-dynamic-search.patch
|
||||||
|
|
||||||
Patch7: rtl-fix.patch
|
Patch7: rtl-fix.patch
|
||||||
#Patch8: nautilus-2.22.1-hide-white-screen.patch
|
#Patch8: nautilus-2.22.1-hide-white-screen.patch
|
||||||
@ -88,8 +90,12 @@ Patch17: nautilus-filetype-symlink-fix.patch
|
|||||||
# Need to file upstream and investigate a real fix
|
# Need to file upstream and investigate a real fix
|
||||||
Patch18: nautilus-2.28.0-revert-bg-fade-break.patch
|
Patch18: nautilus-2.28.0-revert-bg-fade-break.patch
|
||||||
|
|
||||||
# from upstream
|
# nautilus crashed with SIGSEGV in nautilus_file_peek_display_name()
|
||||||
Patch19: nautilus-2.28.0-lacks-mount-do-not-use-activation-uri.patch
|
# https://bugzilla.gnome.org/show_bug.cgi?id=590591
|
||||||
|
# https://bugzilla.redhat.com/show_bug.cgi?id=531826
|
||||||
|
# TODO: push upstream once confirmed as fixed
|
||||||
|
Patch19: nautilus-2.28.2-infopanel-selection-crash.patch
|
||||||
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Nautilus is the file manager and graphical shell for the GNOME desktop
|
Nautilus is the file manager and graphical shell for the GNOME desktop
|
||||||
@ -121,14 +127,15 @@ for developing nautilus extensions.
|
|||||||
%setup -q -n %{name}-%{version}
|
%setup -q -n %{name}-%{version}
|
||||||
|
|
||||||
%patch1 -p1 -b .config
|
%patch1 -p1 -b .config
|
||||||
%patch5 -p1 -b .selinux
|
%patch4 -p1 -b .selinux
|
||||||
|
%patch5 -p1 -b .tracker-0.7
|
||||||
%patch6 -p1 -b .dynamic-search
|
%patch6 -p1 -b .dynamic-search
|
||||||
%patch7 -p1 -b .rtl-fix
|
%patch7 -p1 -b .rtl-fix
|
||||||
# %patch8 -p1 -b .hide-white-screen
|
# %patch8 -p1 -b .hide-white-screen
|
||||||
%patch10 -p1 -b .gvfs-desktop-key
|
%patch10 -p1 -b .gvfs-desktop-key
|
||||||
%patch17 -p0 -b .symlink
|
%patch17 -p0 -b .symlink
|
||||||
%patch18 -p1 -b .revert-bg-fade-break
|
%patch18 -p1 -b .revert-bg-fade-break
|
||||||
%patch19 -p1 -b .mount-do-not-use-activation-uri
|
%patch19 -p1 -b .infopanel-crash
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
|
||||||
@ -264,6 +271,12 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Nov 2 2009 Tomas Bzatek <tbzatek@redhat.com> - 2.28.1-2
|
||||||
|
- Don't crash in infopanel on invalid selection (#531826)
|
||||||
|
|
||||||
|
* Wed Oct 21 2009 Tomas Bzatek <tbzatek@redhat.com> - 2.28.1-1
|
||||||
|
- Update to 2.28.1
|
||||||
|
|
||||||
* Thu Sep 24 2009 Matthias Clasen <mclasen@redhat.com> - 2.28.0-3
|
* Thu Sep 24 2009 Matthias Clasen <mclasen@redhat.com> - 2.28.0-3
|
||||||
- Avoid lingering menuitems (#518570)
|
- Avoid lingering menuitems (#518570)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user