From a82dd363737100fd7386875bd5edba6324e82893 Mon Sep 17 00:00:00 2001 From: Zhai Edwin Date: Fri, 3 Jun 2011 10:09:27 +0800 Subject: gnome-vfs: remove gnome-vfs as it is deprecated in favour of GVFS and GIO Remove unnecessary dependency via configure option and make oprofileui use GIO (From OE-Core rev: ad5481f6348d1bc504729efd4321bf1fcac4083b) Signed-off-by: Zhai Edwin Signed-off-by: Richard Purdie --- .../oprofileui/migrate-from-gnomevfs-to-gio.patch | 219 +++++++++++++++++++++ meta/recipes-kernel/oprofile/oprofileui_git.bb | 1 + 2 files changed, 220 insertions(+) create mode 100644 meta/recipes-kernel/oprofile/oprofileui/migrate-from-gnomevfs-to-gio.patch (limited to 'meta/recipes-kernel/oprofile') diff --git a/meta/recipes-kernel/oprofile/oprofileui/migrate-from-gnomevfs-to-gio.patch b/meta/recipes-kernel/oprofile/oprofileui/migrate-from-gnomevfs-to-gio.patch new file mode 100644 index 0000000000..bf3979f0d3 --- /dev/null +++ b/meta/recipes-kernel/oprofile/oprofileui/migrate-from-gnomevfs-to-gio.patch @@ -0,0 +1,219 @@ +migrate from gnome-vfs to gio, as gnome-vfs is obsolete. + +Signed-off-by: Zhai Edwin + +Upstream-Status: Pending + +Index: git/src/main.c +=================================================================== +--- git.orig/src/main.c 2011-06-21 10:35:31.000000000 +0800 ++++ git/src/main.c 2011-06-21 10:44:12.000000000 +0800 +@@ -44,7 +44,6 @@ + #include + #include + #include +-#include + #include + #include + +@@ -1005,8 +1004,7 @@ + /* Cleanup the old archive */ + archive_full_cleanup (); + +- if (gnome_vfs_initialized()) +- gnome_vfs_shutdown (); ++ g_type_init(); + + g_free(opui_config->host); + g_free(opui_config->opcontrol_params); +Index: git/src/archive.c +=================================================================== +--- git.orig/src/archive.c 2011-06-21 10:38:57.000000000 +0800 ++++ git/src/archive.c 2011-06-21 10:54:16.000000000 +0800 +@@ -45,7 +45,6 @@ + #include + #include + #include +-#include + + #include "oprofileui.h" + #include "response.h" +@@ -86,56 +85,113 @@ + + if (ret < 0) + { +- /* Use gnomevfs to copy the file as a fallback */ +- GnomeVFSURI *src_uri, *dst_uri; +- GnomeVFSResult res; +- +- src_uri = gnome_vfs_uri_new (gnome_vfs_get_uri_from_local_path(src)); +- dst_uri = gnome_vfs_uri_new (gnome_vfs_get_uri_from_local_path(dest)); +- res = gnome_vfs_xfer_uri (src_uri, dst_uri, +- GNOME_VFS_XFER_DEFAULT | +- GNOME_VFS_XFER_NEW_UNIQUE_DIRECTORY, +- GNOME_VFS_XFER_ERROR_MODE_ABORT, +- GNOME_VFS_XFER_OVERWRITE_MODE_REPLACE, +- NULL, NULL); +- if (res != GNOME_VFS_OK) ++ /* Use gio to copy the file as a fallback */ ++ GFile *src_file, *dst_file; ++ gboolean res; ++ GError *error = NULL; ++ ++ src_file = g_file_new_for_path (src); ++ dst_file = g_file_new_for_path (dest); ++ ++ res = g_file_copy(src_file, dst_file, ++ G_FILE_COPY_NOFOLLOW_SYMLINKS | ++ G_FILE_COPY_OVERWRITE, ++ NULL, ++ NULL, ++ NULL, ++ &error); ++ ++ if (!res && error) + { +- const gchar *err_string = gnome_vfs_result_to_string (res); ++ printf ("GIO: error %s (%s to %s)\n", error->message, src, dest); + +- printf ("GNOME-VFS: error %s (%s to %s)\n", err_string, src, dest); ++ g_error_free(error); + } ++ ++ g_object_unref(src_file); ++ g_object_unref(dst_file); ++ ++ } ++} ++ ++#define IS_IO_ERROR(__error, KIND) (((__error)->domain == G_IO_ERROR && (__error)->code == G_IO_ERROR_ ## KIND)) ++ ++static gboolean ++remove_target_recursively(GFile *file) ++{ ++ GFileEnumerator *enumerator; ++ GError *error = NULL; ++ GFile *child; ++ GFileInfo *info; ++ gboolean stop = FALSE; ++ ++ enumerator = g_file_enumerate_children(file, ++ G_FILE_ATTRIBUTE_STANDARD_NAME, ++ G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, ++ NULL, ++ &error); ++ ++ if (enumerator) ++ { ++ error = NULL; ++ ++ while ( (info = g_file_enumerator_next_file(enumerator, NULL, &error)) ++ != NULL ) { ++ ++ child = g_file_get_child(file, g_file_info_get_name(info)); ++ if (!remove_target_recursively(child)) ++ { ++ stop = TRUE; ++ break; ++ } ++ g_object_unref(child); ++ g_object_unref(info); ++ } ++ ++ g_object_unref(enumerator); ++ } ++ else if (IS_IO_ERROR(error, NOT_DIRECTORY)) ++ { ++ g_error_free(error); + } ++ else ++ { ++ g_error_free(error); ++ stop = TRUE; ++ } ++ ++ if (stop) ++ return FALSE; ++ ++ error = NULL; ++ if (!g_file_delete(file, NULL, &error)) ++ { ++ char *path = g_file_get_path(file); ++ printf ("GIO: error %s when deleteing file %s.\n", error->message, path); ++ g_free(path); ++ ++ g_error_free(error); ++ return FALSE; ++ } ++ ++ return TRUE; ++ + } + + /* Delete the directory specified by path */ + static void + archive_removedir(gchar *path) + { +- GnomeVFSResult res; +- GnomeVFSURI *src_uri; +- GList uri_list; ++ GFile *src_file; + + if (path == NULL) + return; + +- gnome_vfs_init (); +- +- src_uri = gnome_vfs_uri_new (gnome_vfs_get_uri_from_local_path(path)); +- +- uri_list.data = src_uri; +- uri_list.next = NULL; +- uri_list.prev = NULL; ++ src_file = g_file_new_for_path (path); + +- res = gnome_vfs_xfer_delete_list (&uri_list, +- GNOME_VFS_XFER_ERROR_MODE_ABORT, +- GNOME_VFS_XFER_EMPTY_DIRECTORIES, +- NULL, NULL); +- +- if (res != GNOME_VFS_OK) ++ if (! remove_target_recursively(src_file)) + { +- const gchar *err_string = gnome_vfs_result_to_string (res); +- +- printf ("GNOME-VFS: error %s\n", err_string); ++ printf ("GIO:remove %s failed", path); + } + } + +@@ -242,8 +298,6 @@ + gchar **tmp; + int i; + +- gnome_vfs_init (); +- + tmp = g_strsplit (reply->payload, "\n", 0); + + for (i=0; i < g_strv_length (tmp); i++) +@@ -436,8 +490,6 @@ + { + gint counter; + +- gnome_vfs_init (); +- + downloaded_files = g_slist_append (downloaded_files, g_strdup("/var/lib/oprofile/.converted")); + + archive_save_window_show (g_slist_length (downloaded_files) + +Index: git/configure.ac +=================================================================== +--- git.orig/configure.ac 2011-06-21 10:49:40.000000000 +0800 ++++ git/configure.ac 2011-06-21 10:49:58.000000000 +0800 +@@ -29,7 +29,7 @@ + AM_CONDITIONAL(ENABLE_SERVER, test x$enable_server = xyes) + AM_CONDITIONAL(ENABLE_CLIENT, test x$enable_client = xyes) + +-PKG_CHECK_MODULES(OPROFILEUI, [glib-2.0 libglade-2.0 gtk+-2.0 libxml-2.0 gnome-vfs-2.0 gconf-2.0]) ++PKG_CHECK_MODULES(OPROFILEUI, [glib-2.0 libglade-2.0 gtk+-2.0 libxml-2.0 gconf-2.0]) + AC_SUBST(OPROFILEUI_CFLAGS) + AC_SUBST(OPROFILEUI_LIBS) + diff --git a/meta/recipes-kernel/oprofile/oprofileui_git.bb b/meta/recipes-kernel/oprofile/oprofileui_git.bb index aac33eaefe..0047748b2a 100644 --- a/meta/recipes-kernel/oprofile/oprofileui_git.bb +++ b/meta/recipes-kernel/oprofile/oprofileui_git.bb @@ -8,4 +8,5 @@ S = "${WORKDIR}/git" # Oprofileui at http://labs.o-hand.com/oprofileui/ is not maintained now. SRC_URI = "git://git.yoctoproject.org/oprofileui;protocol=git \ + file://migrate-from-gnomevfs-to-gio.patch \ file://dso_linking_change_build_fix.patch " -- cgit v1.2.3-54-g00ecf