diff options
author | Pacho Ramos <pacho@gentoo.org> | 2013-10-26 19:09:33 +0000 |
---|---|---|
committer | Pacho Ramos <pacho@gentoo.org> | 2013-10-26 19:09:33 +0000 |
commit | c568ea5cf096c84b16843a59bb4e218723d31d37 (patch) | |
tree | 1ab246c52cc32556a43248a7e8469977fe9dc0c4 /app-arch | |
parent | Fix python dependencies, bug #489230 by Mark R. Pariente and mgorny. Drop old. (diff) | |
download | gentoo-2-c568ea5cf096c84b16843a59bb4e218723d31d37.tar.gz gentoo-2-c568ea5cf096c84b16843a59bb4e218723d31d37.tar.bz2 gentoo-2-c568ea5cf096c84b16843a59bb4e218723d31d37.zip |
Apply upstream patches fixing some problems when unpacking (#489074 by Philipp Leonhardt), drop old.
(Portage version: 2.2.7/cvs/Linux x86_64, signed Manifest commit with key A188FBD4)
Diffstat (limited to 'app-arch')
-rw-r--r-- | app-arch/file-roller/ChangeLog | 12 | ||||
-rw-r--r-- | app-arch/file-roller/file-roller-3.8.4-r2.ebuild (renamed from app-arch/file-roller/file-roller-3.8.4-r1.ebuild) | 11 | ||||
-rw-r--r-- | app-arch/file-roller/file-roller-3.8.4.ebuild | 99 | ||||
-rw-r--r-- | app-arch/file-roller/files/file-roller-3.8.4-extract-failure.patch | 43 | ||||
-rw-r--r-- | app-arch/file-roller/files/file-roller-3.8.4-ignore-errors.patch | 40 | ||||
-rw-r--r-- | app-arch/file-roller/files/file-roller-3.8.4-modifications-time.patch | 186 |
6 files changed, 290 insertions, 101 deletions
diff --git a/app-arch/file-roller/ChangeLog b/app-arch/file-roller/ChangeLog index 0a6cef783982..a9b3babf579d 100644 --- a/app-arch/file-roller/ChangeLog +++ b/app-arch/file-roller/ChangeLog @@ -1,6 +1,16 @@ # ChangeLog for app-arch/file-roller # Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/app-arch/file-roller/ChangeLog,v 1.325 2013/09/09 00:40:44 tetromino Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-arch/file-roller/ChangeLog,v 1.326 2013/10/26 19:09:33 pacho Exp $ + +*file-roller-3.8.4-r2 (26 Oct 2013) + + 26 Oct 2013; Pacho Ramos <pacho@gentoo.org> +file-roller-3.8.4-r2.ebuild, + +files/file-roller-3.8.4-extract-failure.patch, + +files/file-roller-3.8.4-ignore-errors.patch, + +files/file-roller-3.8.4-modifications-time.patch, + -file-roller-3.8.4-r1.ebuild, -file-roller-3.8.4.ebuild: + Apply upstream patches fixing some problems when unpacking (#489074 by Philipp + Leonhardt), drop old. *file-roller-3.8.4-r1 (09 Sep 2013) diff --git a/app-arch/file-roller/file-roller-3.8.4-r1.ebuild b/app-arch/file-roller/file-roller-3.8.4-r2.ebuild index 8b682ea4152e..c72417f4cb78 100644 --- a/app-arch/file-roller/file-roller-3.8.4-r1.ebuild +++ b/app-arch/file-roller/file-roller-3.8.4-r2.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2013 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-arch/file-roller/file-roller-3.8.4-r1.ebuild,v 1.1 2013/09/09 00:40:44 tetromino Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-arch/file-roller/file-roller-3.8.4-r2.ebuild,v 1.1 2013/10/26 19:09:33 pacho Exp $ EAPI="5" GCONF_DEBUG="no" @@ -70,6 +70,15 @@ src_prepare() { # app-arch/{un,}rar-5 support, https://bugzilla.gnome.org/show_bug.cgi?id=707568 epatch "${FILESDIR}"/${PN}-3.8.4-rar-5.patch + # libarchive: fixed failure when extracting some tar archives + epatch "${FILESDIR}"/${PN}-3.8.4-extract-failure.patch + + # libarchive: restore the folders modification time correctly + epatch "${FILESDIR}"/${PN}-3.8.4-modifications-time.patch + + # Ignore errors when setting file attributes + epatch "${FILESDIR}"/${PN}-3.8.4-ignore-errors.patch + # File providing Gentoo package names for various archivers cp -f "${FILESDIR}/3.6.0-packages.match" data/packages.match || die diff --git a/app-arch/file-roller/file-roller-3.8.4.ebuild b/app-arch/file-roller/file-roller-3.8.4.ebuild deleted file mode 100644 index 13aeef25efd2..000000000000 --- a/app-arch/file-roller/file-roller-3.8.4.ebuild +++ /dev/null @@ -1,99 +0,0 @@ -# Copyright 1999-2013 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-arch/file-roller/file-roller-3.8.4.ebuild,v 1.1 2013/08/25 18:43:45 eva Exp $ - -EAPI="5" -GCONF_DEBUG="no" -GNOME2_LA_PUNT="yes" - -inherit eutils gnome2 readme.gentoo - -DESCRIPTION="Archive manager for GNOME" -HOMEPAGE="http://fileroller.sourceforge.net/" - -LICENSE="GPL-2+ CC-BY-SA-3.0" -SLOT="0" -IUSE="nautilus packagekit" -KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux" - -# gdk-pixbuf used extensively in the source -# cairo used in eggtreemultidnd.c -# pango used in fr-window -RDEPEND=" - >=app-arch/libarchive-3:= - >=dev-libs/glib-2.29.14:2 - >=dev-libs/json-glib-0.14 - >=x11-libs/gtk+-3.6:3 - >=x11-libs/libnotify-0.4.3:= - sys-apps/file - x11-libs/cairo - x11-libs/gdk-pixbuf:2 - x11-libs/libICE - x11-libs/libSM - x11-libs/pango - nautilus? ( >=gnome-base/nautilus-3 ) - packagekit? ( app-admin/packagekit-base ) -" -DEPEND="${RDEPEND} - dev-util/desktop-file-utils - >=dev-util/intltool-0.40.0 - sys-devel/gettext - virtual/pkgconfig -" -# eautoreconf needs: -# gnome-base/gnome-common - -DISABLE_AUTOFORMATTING="yes" -DOC_CONTENTS=" -${PN} is a frontend for several archiving utilities. If you want a -particular achive format support, see ${HOMEPAGE} -and install the relevant package. For example: -7-zip - app-arch/p7zip -ace - app-arch/unace -arj - app-arch/arj -cpio - app-arch/cpio -deb - app-arch/dpkg -iso - app-cdr/cdrtools -jar,zip - app-arch/zip and app-arch/unzip -lha - app-arch/lha -lzop - app-arch/lzop -rar - app-arch/unrar or app-arch/unar -rpm - app-arch/rpm -unstuff - app-arch/stuffit -zoo - app-arch/zoo" - -src_prepare() { - # Use absolute path to GNU tar since star doesn't have the same - # options. On Gentoo, star is /usr/bin/tar, GNU tar is /bin/tar - epatch "${FILESDIR}"/${PN}-2.10.3-use_bin_tar.patch - - # File providing Gentoo package names for various archivers - cp -f "${FILESDIR}/3.6.0-packages.match" data/packages.match || die - - gnome2_src_prepare -} - -src_configure() { - DOCS="AUTHORS ChangeLog HACKING MAINTAINERS NEWS README* TODO" - # --disable-debug because enabling it adds -O0 to CFLAGS - gnome2_src_configure \ - --disable-run-in-place \ - --disable-static \ - --disable-debug \ - --enable-magic \ - --enable-libarchive \ - --with-smclient=xsmp \ - $(use_enable nautilus nautilus-actions) \ - $(use_enable packagekit) \ - ITSTOOL=$(type -P true) -} - -src_install() { - gnome2_src_install - readme.gentoo_create_doc -} - -pkg_postinst() { - gnome2_pkg_postinst - readme.gentoo_print_elog -} diff --git a/app-arch/file-roller/files/file-roller-3.8.4-extract-failure.patch b/app-arch/file-roller/files/file-roller-3.8.4-extract-failure.patch new file mode 100644 index 000000000000..fa9d68d2b7bd --- /dev/null +++ b/app-arch/file-roller/files/file-roller-3.8.4-extract-failure.patch @@ -0,0 +1,43 @@ +From 40d2c298a7b938a974fe83b609293348a7d59bbd Mon Sep 17 00:00:00 2001 +From: Paolo Bacchilega <paobac@src.gnome.org> +Date: Sun, 29 Sep 2013 16:30:29 +0000 +Subject: libarchive: fixed failure when extracting some tar archives + +do not try to restore the creation time; +do not set the G_FILE_ATTRIBUTE_TIME_CREATED_USEC attribute + +[bug #709035] +--- +diff --git a/src/fr-archive-libarchive.c b/src/fr-archive-libarchive.c +index 37e3008..e465fe8 100644 +--- a/src/fr-archive-libarchive.c ++++ b/src/fr-archive-libarchive.c +@@ -428,15 +428,8 @@ _g_file_info_create_from_entry (struct archive_entry *entry, + + /* times */ + +- if (archive_entry_ctime_is_set (entry)) { +- g_file_info_set_attribute_uint64 (info, G_FILE_ATTRIBUTE_TIME_CREATED, archive_entry_ctime (entry)); +- g_file_info_set_attribute_uint32 (info, G_FILE_ATTRIBUTE_TIME_CREATED_USEC, archive_entry_ctime_nsec (entry)); +- } +- +- if (archive_entry_mtime_is_set (entry)) { ++ if (archive_entry_mtime_is_set (entry)) + g_file_info_set_attribute_uint64 (info, G_FILE_ATTRIBUTE_TIME_MODIFIED, archive_entry_mtime (entry)); +- g_file_info_set_attribute_uint32 (info, G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC, archive_entry_mtime_nsec (entry)); +- } + + /* username */ + +@@ -529,7 +522,8 @@ restore_modification_time (GHashTable *created_folders, + + info = g_file_info_new (); + g_file_info_set_attribute_uint64 (info, G_FILE_ATTRIBUTE_TIME_MODIFIED, g_file_info_get_attribute_uint64 (original_info, G_FILE_ATTRIBUTE_TIME_MODIFIED)); +- g_file_info_set_attribute_uint32 (info, G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC, g_file_info_get_attribute_uint32 (original_info, G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC)); ++ if (g_file_info_get_attribute_status (original_info, G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC) == G_FILE_ATTRIBUTE_STATUS_SET) ++ g_file_info_set_attribute_uint32 (info, G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC, g_file_info_get_attribute_uint32 (original_info, G_FILE_ATTRIBUTE_TIME_MODIFIED_USEC)); + result = _g_file_set_attributes_from_info (file, info, cancellable, error); + + g_object_unref (info); +-- +cgit v0.9.2 diff --git a/app-arch/file-roller/files/file-roller-3.8.4-ignore-errors.patch b/app-arch/file-roller/files/file-roller-3.8.4-ignore-errors.patch new file mode 100644 index 000000000000..712ba7497001 --- /dev/null +++ b/app-arch/file-roller/files/file-roller-3.8.4-ignore-errors.patch @@ -0,0 +1,40 @@ +From 80c36ae3c84dce8716eb5b74ddb8c73da5824f13 Mon Sep 17 00:00:00 2001 +From: Paolo Bacchilega <paobac@src.gnome.org> +Date: Fri, 11 Oct 2013 19:38:27 +0000 +Subject: ignore errors when setting file attributes + +[bug #709932] +--- +diff --git a/src/fr-archive-libarchive.c b/src/fr-archive-libarchive.c +index 44aaad2..19c5a1d 100644 +--- a/src/fr-archive-libarchive.c ++++ b/src/fr-archive-libarchive.c +@@ -751,7 +751,7 @@ extract_archive_thread (GSimpleAsyncResult *result, + GFileInfo *info; + + info = _g_file_info_create_from_entry (entry, extract_data); +- _g_file_set_attributes_from_info (file, info, cancellable, &load_data->error); ++ _g_file_set_attributes_from_info (file, info, cancellable, NULL); + g_hash_table_insert (created_folders, g_object_ref (file), g_object_ref (info)); + + g_object_unref (info); +@@ -774,7 +774,7 @@ extract_archive_thread (GSimpleAsyncResult *result, + if (r != ARCHIVE_EOF) + load_data->error = g_error_new_literal (FR_ERROR, FR_ERROR_COMMAND_ERROR, archive_error_string (a)); + else +- _g_file_set_attributes_from_entry (file, entry, extract_data, cancellable, &load_data->error); ++ _g_file_set_attributes_from_entry (file, entry, extract_data, cancellable, NULL); + break; + + case AE_IFLNK: +@@ -805,7 +805,7 @@ extract_archive_thread (GSimpleAsyncResult *result, + } + + if (load_data->error == NULL) +- restore_modification_time (created_folders, cancellable, &load_data->error); ++ restore_modification_time (created_folders, cancellable, NULL); + + if ((load_data->error == NULL) && (r != ARCHIVE_EOF)) + load_data->error = g_error_new_literal (FR_ERROR, FR_ERROR_COMMAND_ERROR, archive_error_string (a)); +-- +cgit v0.9.2 diff --git a/app-arch/file-roller/files/file-roller-3.8.4-modifications-time.patch b/app-arch/file-roller/files/file-roller-3.8.4-modifications-time.patch new file mode 100644 index 000000000000..d6c7baa882fe --- /dev/null +++ b/app-arch/file-roller/files/file-roller-3.8.4-modifications-time.patch @@ -0,0 +1,186 @@ +From 4bf8552f8e60c8d4ec65e360451c6998198052db Mon Sep 17 00:00:00 2001 +From: Paolo Bacchilega <paobac@src.gnome.org> +Date: Wed, 04 Sep 2013 10:02:11 +0000 +Subject: libarchive: restore the folders modification time correctly + +when honoring the skip_older and overwrite flags ignore the +directories created during the extraction process. + +[bug #697756] +--- +diff --git a/src/fr-archive-libarchive.c b/src/fr-archive-libarchive.c +index 3b73c48..37e3008 100644 +--- a/src/fr-archive-libarchive.c ++++ b/src/fr-archive-libarchive.c +@@ -33,6 +33,7 @@ + #include "file-utils.h" + #include "fr-error.h" + #include "fr-archive-libarchive.h" ++#include "gio-utils.h" + #include "glib-utils.h" + #include "typedefs.h" + +@@ -547,6 +548,7 @@ extract_archive_thread (GSimpleAsyncResult *result, + LoadData *load_data; + GHashTable *checked_folders; + GHashTable *created_folders; ++ GHashTable *folders_created_during_extraction; + struct archive *a; + struct archive_entry *entry; + int r; +@@ -556,6 +558,7 @@ extract_archive_thread (GSimpleAsyncResult *result, + + checked_folders = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, g_object_unref, NULL); + created_folders = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, g_object_unref, g_object_unref); ++ folders_created_during_extraction = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, g_object_unref, NULL); + fr_archive_progress_set_total_files (load_data->archive, extract_data->n_files_to_extract); + + a = archive_read_new (); +@@ -590,11 +593,14 @@ extract_archive_thread (GSimpleAsyncResult *result, + archive_read_data_skip (a); + continue; + } ++ + file = g_file_get_child (extract_data->destination, relative_path); + + /* honor the skip_older and overwrite options */ + +- if (extract_data->skip_older || ! extract_data->overwrite) { ++ if ((g_hash_table_lookup (folders_created_during_extraction, file) == NULL) ++ && (extract_data->skip_older || ! extract_data->overwrite)) ++ { + GFileInfo *info; + + info = g_file_query_info (file, +@@ -652,7 +658,18 @@ extract_archive_thread (GSimpleAsyncResult *result, + && (g_hash_table_lookup (checked_folders, parent) == NULL) + && ! g_file_query_exists (parent, cancellable)) + { +- if (g_file_make_directory_with_parents (parent, cancellable, &load_data->error)) { ++ if (! _g_file_make_directory_with_parents (parent, ++ folders_created_during_extraction, ++ cancellable, ++ &local_error)) ++ { ++ if (! g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_EXISTS)) ++ load_data->error = local_error; ++ else ++ g_clear_error (&local_error); ++ } ++ ++ if (load_data->error == NULL) { + GFile *grandparent; + + grandparent = g_object_ref (parent); +@@ -736,7 +753,7 @@ extract_archive_thread (GSimpleAsyncResult *result, + load_data->error = g_error_copy (local_error); + g_error_free (local_error); + } +- else { ++ if (load_data->error == NULL) { + GFileInfo *info; + + info = _g_file_info_create_from_entry (entry, extract_data); +@@ -803,6 +820,7 @@ extract_archive_thread (GSimpleAsyncResult *result, + if (load_data->error != NULL) + g_simple_async_result_set_from_error (result, load_data->error); + ++ g_hash_table_unref (folders_created_during_extraction); + g_hash_table_unref (created_folders); + g_hash_table_unref (checked_folders); + archive_read_free (a); +diff --git a/src/gio-utils.c b/src/gio-utils.c +index 9d9f708..b317694 100644 +--- a/src/gio-utils.c ++++ b/src/gio-utils.c +@@ -1483,3 +1483,73 @@ _g_file_load_buffer_finish (GFile *file, + + return TRUE; + } ++ ++ ++static gboolean ++_g_file_make_directory_and_add_to_created_folders (GFile *file, ++ GHashTable *created_folders, ++ GCancellable *cancellable, ++ GError **error) ++{ ++ gboolean result; ++ ++ result = g_file_make_directory (file, cancellable, error); ++ if (result && (g_hash_table_lookup (created_folders, file) == NULL)) ++ g_hash_table_insert (created_folders, g_object_ref (file), GINT_TO_POINTER (1)); ++ ++ return result; ++} ++ ++ ++gboolean ++_g_file_make_directory_with_parents (GFile *file, ++ GHashTable *created_folders, ++ GCancellable *cancellable, ++ GError **error) ++{ ++ GError *local_error = NULL; ++ GFile *work_file = NULL; ++ GList *list = NULL, *l; ++ ++ g_return_val_if_fail (G_IS_FILE (file), FALSE); ++ ++ _g_file_make_directory_and_add_to_created_folders (file, created_folders, cancellable, &local_error); ++ if ((local_error == NULL) || (local_error->code != G_IO_ERROR_NOT_FOUND)) { ++ if (local_error != NULL) ++ g_propagate_error (error, local_error); ++ return local_error == NULL; ++ } ++ ++ work_file = g_object_ref (file); ++ while ((local_error != NULL) && (local_error->code == G_IO_ERROR_NOT_FOUND)) { ++ GFile *parent_file; ++ ++ parent_file = g_file_get_parent (work_file); ++ if (parent_file == NULL) ++ break; ++ ++ g_clear_error (&local_error); ++ _g_file_make_directory_and_add_to_created_folders (parent_file, created_folders, cancellable, &local_error); ++ ++ g_object_unref (work_file); ++ work_file = g_object_ref (parent_file); ++ ++ if ((local_error != NULL) && (local_error->code == G_IO_ERROR_NOT_FOUND)) ++ list = g_list_prepend (list, parent_file); /* Transfer ownership of ref */ ++ else ++ g_object_unref (parent_file); ++ } ++ ++ for (l = list; (local_error == NULL) && (l != NULL); l = l->next) ++ _g_file_make_directory_and_add_to_created_folders ((GFile *) l->data, created_folders, cancellable, &local_error); ++ ++ _g_object_unref (work_file); ++ _g_object_list_unref (list); ++ ++ if (local_error != NULL) { ++ g_propagate_error (error, local_error); ++ return FALSE; ++ } ++ ++ return _g_file_make_directory_and_add_to_created_folders (file, created_folders, cancellable, error); ++} +diff --git a/src/gio-utils.h b/src/gio-utils.h +index f784c41..0d7dd3c 100644 +--- a/src/gio-utils.h ++++ b/src/gio-utils.h +@@ -177,5 +177,10 @@ gboolean _g_file_load_buffer_finish (GFile *file, + char **buffer, + gsize *buffer_size, + GError **error); ++gboolean _g_file_make_directory_with_parents ++ (GFile *file, ++ GHashTable *created_folders, ++ GCancellable *cancellable, ++ GError **error); + + #endif /* _GIO_UTILS_H */ +-- +cgit v0.9.2 |