From a724fdf1164a28c167b2d35aab0b58f864a6762c Mon Sep 17 00:00:00 2001 From: David King Date: Fri, 7 Jan 2022 13:20:50 +0000 Subject: [PATCH] Update to 0.4.2 --- .gitignore | 1 + ...ix-extraction-of-raw-format-archives.patch | 108 ------------------ ...tor-Fix-extraction-to-root-directory.patch | 44 ------- gnome-autoar.spec | 18 ++- sources | 2 +- ...left-read-only-directory-in-the-tree.patch | 42 ------- 6 files changed, 10 insertions(+), 205 deletions(-) delete mode 100644 extractor-Fix-extraction-of-raw-format-archives.patch delete mode 100644 extractor-Fix-extraction-to-root-directory.patch delete mode 100644 tests-Do-not-left-read-only-directory-in-the-tree.patch diff --git a/.gitignore b/.gitignore index f5f1671..e84fbc6 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ /gnome-autoar-0.3.3.tar.xz /gnome-autoar-0.4.0.tar.xz /gnome-autoar-0.4.1.tar.xz +/gnome-autoar-0.4.2.tar.xz diff --git a/extractor-Fix-extraction-of-raw-format-archives.patch b/extractor-Fix-extraction-of-raw-format-archives.patch deleted file mode 100644 index 45038a4..0000000 --- a/extractor-Fix-extraction-of-raw-format-archives.patch +++ /dev/null @@ -1,108 +0,0 @@ -From b46a189982945d7154a12be59533f6385833a9cb Mon Sep 17 00:00:00 2001 -From: Ondrej Holy -Date: Tue, 30 Nov 2021 13:39:55 +0100 -Subject: [PATCH] extractor: Fix extraction of raw format archives - -An extraction of raw format archives leads to crashes currently. -This is because the generic "data" string is returned from libarchive -instead of the real pathname, which is not expected currently. Let's -handle this case properly and fallback to the source basename. - -Fixes: https://gitlab.gnome.org/GNOME/gnome-autoar/-/issues/38 ---- - gnome-autoar/autoar-extractor.c | 53 +++++++++++++++++++-------------- - 1 file changed, 31 insertions(+), 22 deletions(-) - -diff --git a/gnome-autoar/autoar-extractor.c b/gnome-autoar/autoar-extractor.c -index eb3edda..bb60901 100644 ---- a/gnome-autoar/autoar-extractor.c -+++ b/gnome-autoar/autoar-extractor.c -@@ -964,6 +964,7 @@ autoar_extractor_check_file_conflict (AutoarExtractor *self, - - /* Check also parents for conflict to be sure it is directory. */ - parent = g_file_get_parent (file); -+ g_return_val_if_fail (parent, NULL); - return autoar_extractor_check_file_conflict (self, parent, AE_IFDIR); - } - -@@ -1664,11 +1665,15 @@ autoar_extractor_step_scan_toplevel (AutoarExtractor *self) - return; - } - self->use_raw_format = TRUE; -+ -+ g_debug ("autoar_extractor_step_scan_toplevel: using raw format"); - } - - while ((r = archive_read_next_header (a, &entry)) == ARCHIVE_OK) { - const char *pathname; - g_autofree char *utf8_pathname = NULL; -+ const char *symlink_pathname; -+ const char *hardlink_pathname; - - if (g_cancellable_is_cancelled (self->cancellable)) { - archive_read_free (a); -@@ -1683,28 +1688,26 @@ autoar_extractor_step_scan_toplevel (AutoarExtractor *self) - } - } - -- if (self->use_raw_format) { -- pathname = autoar_common_get_basename_remove_extension (g_file_peek_path (self->source_file)); -- g_debug ("autoar_extractor_step_scan_toplevel: %d: raw pathname = %s", -- self->total_files, pathname); -- } else { -- const char *symlink_pathname; -- const char *hardlink_pathname; -- -- pathname = archive_entry_pathname (entry); -- utf8_pathname = autoar_common_get_utf8_pathname (pathname); -- symlink_pathname = archive_entry_symlink (entry); -- hardlink_pathname = archive_entry_hardlink (entry); -- -- g_debug ("autoar_extractor_step_scan_toplevel: %d: pathname = %s%s%s%s%s%s%s", -- self->total_files, pathname, -- utf8_pathname ? " utf8 pathname = " : "", -- utf8_pathname ? utf8_pathname : "", -- symlink_pathname ? " symlink = " : "", -- symlink_pathname ? symlink_pathname : "", -- hardlink_pathname ? " hardlink = " : "", -- hardlink_pathname ? hardlink_pathname : ""); -- } -+ pathname = archive_entry_pathname (entry); -+ utf8_pathname = autoar_common_get_utf8_pathname (pathname); -+ symlink_pathname = archive_entry_symlink (entry); -+ hardlink_pathname = archive_entry_hardlink (entry); -+ -+ /* The raw format usually doesn't propagate file name and the generic "data" -+ * string is returned instead. Let's use source basename in that case. -+ */ -+ if (self->use_raw_format && g_str_equal (pathname, "data")) -+ pathname = autoar_common_get_basename_remove_extension (self->source_basename); -+ -+ g_debug ("autoar_extractor_step_scan_toplevel: %d: pathname = %s%s%s%s%s%s%s", -+ self->total_files, pathname, -+ utf8_pathname ? " utf8 pathname = " : "", -+ utf8_pathname ? utf8_pathname : "", -+ symlink_pathname ? " symlink = " : "", -+ symlink_pathname ? symlink_pathname : "", -+ hardlink_pathname ? " hardlink = " : "", -+ hardlink_pathname ? hardlink_pathname : ""); -+ - self->files_list = - g_list_prepend (self->files_list, - autoar_extractor_do_sanitize_pathname (self, -@@ -1889,6 +1892,12 @@ autoar_extractor_step_extract (AutoarExtractor *self) { - pathname = archive_entry_pathname (entry); - hardlink = archive_entry_hardlink (entry); - -+ /* The raw format usually doesn't propagate file name and the generic "data" -+ * string is returned instead. Let's use source basename in that case. -+ */ -+ if (self->use_raw_format && g_str_equal (pathname, "data")) -+ pathname = autoar_common_get_basename_remove_extension (self->source_basename); -+ - extracted_filename = - autoar_extractor_do_sanitize_pathname (self, pathname); - --- -2.33.1 - diff --git a/extractor-Fix-extraction-to-root-directory.patch b/extractor-Fix-extraction-to-root-directory.patch deleted file mode 100644 index b457103..0000000 --- a/extractor-Fix-extraction-to-root-directory.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 7237276439281abfedd619ecf6f5c17fae411137 Mon Sep 17 00:00:00 2001 -From: Ondrej Holy -Date: Tue, 30 Nov 2021 13:45:07 +0100 -Subject: [PATCH] extractor: Fix extraction to root directory - -An extraction to the root of an archive which contains the "/" path -leads to crashes. Let's handle this rare corner case. - -Relates: https://gitlab.gnome.org/GNOME/gnome-autoar/-/issues/38 ---- - gnome-autoar/autoar-extractor.c | 10 +++++++++- - 1 file changed, 9 insertions(+), 1 deletion(-) - -diff --git a/gnome-autoar/autoar-extractor.c b/gnome-autoar/autoar-extractor.c -index bb60901..ab68c47 100644 ---- a/gnome-autoar/autoar-extractor.c -+++ b/gnome-autoar/autoar-extractor.c -@@ -857,6 +857,14 @@ autoar_extractor_get_common_prefix (GList *files, - while (!g_file_has_parent (prefix, root)) { - file = g_file_get_parent (prefix); - g_object_unref (prefix); -+ -+ /* This can happen if the archive contains the "/" path and the destination -+ * is "/" as well. -+ */ -+ if (file == NULL) { -+ return NULL; -+ } -+ - prefix = file; - } - -@@ -984,7 +992,7 @@ autoar_extractor_do_write_entry (AutoarExtractor *self, - { - GFile *parent; - parent = g_file_get_parent (dest); -- if (!g_file_query_exists (parent, self->cancellable)) -+ if (parent && !g_file_query_exists (parent, self->cancellable)) - g_file_make_directory_with_parents (parent, - self->cancellable, - NULL); --- -2.33.1 - diff --git a/gnome-autoar.spec b/gnome-autoar.spec index 5e9cf3b..366f711 100644 --- a/gnome-autoar.spec +++ b/gnome-autoar.spec @@ -1,18 +1,12 @@ Name: gnome-autoar -Version: 0.4.1 -Release: 2%{?dist} +Version: 0.4.2 +Release: 1%{?dist} Summary: Archive library License: LGPLv2+ -URL: https://git.gnome.org/browse/gnome-autoar -Source0: https://download.gnome.org/sources/gnome-autoar/0.4/gnome-autoar-%{version}.tar.xz +URL: https://gitlab.gnome.org/GNOME/gnome-autoar +Source0: https://download.gnome.org/sources/%{name}/0.4/%{name}-%{version}.tar.xz -# https://gitlab.gnome.org/GNOME/gnome-autoar/-/issues/38 -Patch0: extractor-Fix-extraction-of-raw-format-archives.patch -Patch1: extractor-Fix-extraction-to-root-directory.patch - -# https://gitlab.gnome.org/GNOME/gnome-autoar/-/issues/34 -Patch2: tests-Do-not-left-read-only-directory-in-the-tree.patch BuildRequires: gcc BuildRequires: meson @@ -60,6 +54,7 @@ developing applications that use %{name}. %files %license COPYING +%doc NEWS %dir %{_libdir}/girepository-1.0 %{_libdir}/girepository-1.0/GnomeAutoar-0.1.typelib %{_libdir}/girepository-1.0/GnomeAutoarGtk-0.1.typelib @@ -84,6 +79,9 @@ developing applications that use %{name}. %changelog +* Fri Jan 07 2022 David King - 0.4.2-1 +- Update to 0.4.2 + * Tue Dec 07 2021 Ondrej Holy - 0.4.1-2 - Fix extraction of raw format archives - Run embedded test suite as a part of the build diff --git a/sources b/sources index 8fab3b9..766259d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gnome-autoar-0.4.1.tar.xz) = 5c082c42342256c3af9dfa49435c1ab884c051a9c47a0313a343a747c2f30de2662505f4d77db20dffbdd39a5d0447d2dfb4ccf3da96a198ea987bc5c0c0dddf +SHA512 (gnome-autoar-0.4.2.tar.xz) = 2ea18164aa836e88457359643c8c35e4bc701a60efd3a0c3af32bf848fcd90cb6421a3042f26b6376d81cf9dc493fa3d7bdae312990a272687d6be9de515b572 diff --git a/tests-Do-not-left-read-only-directory-in-the-tree.patch b/tests-Do-not-left-read-only-directory-in-the-tree.patch deleted file mode 100644 index 4cce892..0000000 --- a/tests-Do-not-left-read-only-directory-in-the-tree.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 0f528ab688d4b01c51c0d33c3893854aae3d80ac Mon Sep 17 00:00:00 2001 -From: Ondrej Holy -Date: Tue, 30 Nov 2021 10:53:22 +0100 -Subject: [PATCH] tests: Do not left read-only directory in the tree - -Currently, various tools fail to remove the read-only directory, which -is created as an output from the test suite. This for example breaks -package building when tests are enabled. Let's make it writable again -when test is done to fix the issue. - -Fixes: https://gitlab.gnome.org/GNOME/gnome-autoar/-/issues/34 ---- - tests/test-extract-unit.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/tests/test-extract-unit.c b/tests/test-extract-unit.c -index 615ba22..5965f48 100644 ---- a/tests/test-extract-unit.c -+++ b/tests/test-extract-unit.c -@@ -1264,6 +1264,7 @@ test_readonly_directory (void) - g_autoptr (ExtractTest) extract_test = NULL; - g_autoptr (ExtractTestData) data = NULL; - g_autoptr (GFile) archive = NULL; -+ g_autoptr (GFile) readonly = NULL; - g_autoptr (AutoarExtractor) extractor = NULL; - - extract_test = extract_test_new ("test-readonly-directory"); -@@ -1285,6 +1286,11 @@ test_readonly_directory (void) - g_assert_no_error (data->error); - g_assert_true (data->completed_signalled); - assert_reference_and_output_match (extract_test); -+ -+ /* Make the directory writable again to avoid issues when deleting. */ -+ readonly = g_file_get_child (extract_test->output, "arextract"); -+ g_file_set_attribute_uint32 (readonly, G_FILE_ATTRIBUTE_UNIX_MODE, 0755, -+ G_FILE_QUERY_INFO_NONE, NULL, NULL); - } - - static void --- -2.33.1 -