From b7b97785ebbb2f11d24d14dab8b81ed274f4ce6a Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Tue, 19 Mar 2019 11:37:34 +0000 Subject: gentoo resync : 19.03.2019 --- .../files/3.30.5-thumbnailer-updates.patch | 113 +++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 gnome-base/nautilus/files/3.30.5-thumbnailer-updates.patch (limited to 'gnome-base/nautilus/files/3.30.5-thumbnailer-updates.patch') diff --git a/gnome-base/nautilus/files/3.30.5-thumbnailer-updates.patch b/gnome-base/nautilus/files/3.30.5-thumbnailer-updates.patch new file mode 100644 index 000000000000..84d0bfc1d5af --- /dev/null +++ b/gnome-base/nautilus/files/3.30.5-thumbnailer-updates.patch @@ -0,0 +1,113 @@ +From 2e36d4bacc3cffebe62161adc375bb9ec64099f5 Mon Sep 17 00:00:00 2001 +From: Timothy OBrien +Date: Fri, 18 Jan 2019 19:42:46 +1100 +Subject: [PATCH 1/2] gnome-desktop: update to latest version of upstream + thumbnail code + +The thumbnail code in gnome-desktop had recent bug fixes that needed to be carried across to the Nautilus implementation. Issues for the three related upstream fixes can be found at: https://gitlab.gnome.org/GNOME/gnome-desktop/issues/4 | https://gitlab.gnome.org/GNOME/gnome-desktop/issues/89 | https://gitlab.gnome.org/GNOME/gnome-desktop/issues/87 + +This patch includes the latest thumbnail code from the gnome-desktop repository to include the fixes. + +Fixes #836 + +(cherry picked from commit e88b2dc8783833c4263ad5d84567a67dbc7bc6de) +--- + .../gnome-desktop-thumbnail-script.c | 54 +++++++++++++++++-- + src/gnome-desktop/gnome-desktop-thumbnail.c | 4 +- + 2 files changed, 52 insertions(+), 6 deletions(-) + +diff --git a/src/gnome-desktop/gnome-desktop-thumbnail-script.c b/src/gnome-desktop/gnome-desktop-thumbnail-script.c +index 14e2fed3a..525766388 100644 +--- a/src/gnome-desktop/gnome-desktop-thumbnail-script.c ++++ b/src/gnome-desktop/gnome-desktop-thumbnail-script.c +@@ -506,22 +506,68 @@ setup_seccomp (GPtrArray *argv_array, + #endif + + #ifdef HAVE_BWRAP ++static gboolean ++path_is_usrmerged (const char *dir) ++{ ++ /* does /dir point to /usr/dir? */ ++ g_autofree char *target = NULL; ++ GStatBuf stat_buf_src, stat_buf_target; ++ ++ if (g_stat (dir, &stat_buf_src) < 0) ++ return FALSE; ++ ++ target = g_strdup_printf ("/usr/%s", dir); ++ ++ if (g_stat (target, &stat_buf_target) < 0) ++ return FALSE; ++ ++ return (stat_buf_src.st_dev == stat_buf_target.st_dev) && ++ (stat_buf_src.st_ino == stat_buf_target.st_ino); ++} ++ + static gboolean + add_bwrap (GPtrArray *array, + ScriptExec *script) + { ++ const char * const usrmerged_dirs[] = { "bin", "lib64", "lib", "sbin" }; ++ int i; ++ + g_return_val_if_fail (script->outdir != NULL, FALSE); + g_return_val_if_fail (script->s_infile != NULL, FALSE); + + add_args (array, + "bwrap", + "--ro-bind", "/usr", "/usr", +- "--ro-bind", "/lib", "/lib", +- "--ro-bind", "/lib64", "/lib64", ++ "--ro-bind", "/etc/ld.so.cache", "/etc/ld.so.cache", ++ NULL); ++ ++ /* These directories might be symlinks into /usr/... */ ++ for (i = 0; i < G_N_ELEMENTS (usrmerged_dirs); i++) ++ { ++ g_autofree char *absolute_dir = g_strdup_printf ("/%s", usrmerged_dirs[i]); ++ ++ if (!g_file_test (absolute_dir, G_FILE_TEST_EXISTS)) ++ continue; ++ ++ if (path_is_usrmerged (absolute_dir)) ++ { ++ g_autofree char *symlink_target = g_strdup_printf ("/usr/%s", absolute_dir); ++ ++ add_args (array, ++ "--symlink", symlink_target, absolute_dir, ++ NULL); ++ } ++ else ++ { ++ add_args (array, ++ "--ro-bind", absolute_dir, absolute_dir, ++ NULL); ++ } ++ } ++ ++ add_args (array, + "--proc", "/proc", + "--dev", "/dev", +- "--symlink", "usr/bin", "/bin", +- "--symlink", "usr/sbin", "/sbin", + "--chdir", "/", + "--setenv", "GIO_USE_VFS", "local", + "--unshare-all", +diff --git a/src/gnome-desktop/gnome-desktop-thumbnail.c b/src/gnome-desktop/gnome-desktop-thumbnail.c +index b31bad58d..f48fd461a 100644 +--- a/src/gnome-desktop/gnome-desktop-thumbnail.c ++++ b/src/gnome-desktop/gnome-desktop-thumbnail.c +@@ -967,8 +967,8 @@ get_preview_thumbnail (const char *uri, + if (file_info == NULL) + return NULL; + +- object = g_file_info_get_attribute_object (file_info, +- G_FILE_ATTRIBUTE_PREVIEW_ICON); ++ object = g_object_ref (g_file_info_get_attribute_object (file_info, ++ G_FILE_ATTRIBUTE_PREVIEW_ICON)); + g_object_unref (file_info); + + if (!object) +-- +2.17.0 + -- cgit v1.2.3