diff --git a/0004-Workaround-on-zip-archiver-for-contents-info.patch b/0004-Workaround-on-zip-archiver-for-contents-info.patch new file mode 100644 index 0000000..bac20a9 --- /dev/null +++ b/0004-Workaround-on-zip-archiver-for-contents-info.patch @@ -0,0 +1,29 @@ +From 8fcab042bb7c7c8d012a07515e276a3b5e7df5da Mon Sep 17 00:00:00 2001 +From: Mamoru TASAKA +Date: Sat, 17 Aug 2024 12:53:56 +0900 +Subject: [PATCH] Workaround on zip archiver for contents info + +--- + mcomix/mcomix/archive/zip_py.py | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/mcomix/mcomix/archive/zip_py.py b/mcomix/mcomix/archive/zip_py.py +index f579759..41fd8ac 100644 +--- a/mcomix/mcomix/archive/zip_py.py ++++ b/mcomix/mcomix/archive/zip_py.py +@@ -38,7 +38,11 @@ class ZipArchive(archive_base.NonUnicodeArchive): + else: + # zipfile use cp437 to decode non-utf8 filename + # revert to bytes before guessing encode +- fn_bytes = info.filename.encode('cp437') ++ try: ++ fn_bytes = info.filename.encode('cp437') ++ except UnicodeEncodeError: ++ # try as it is ++ fn_bytes = info.filename + self._contents_info[self._unicode_filename(fn_bytes)] = info + + self.is_encrypted = self._has_encryption() +-- +2.46.0 + diff --git a/0005-Rescue-when-creating-thumbnail-fails-in-load_pixbuf_.patch b/0005-Rescue-when-creating-thumbnail-fails-in-load_pixbuf_.patch new file mode 100644 index 0000000..fc69844 --- /dev/null +++ b/0005-Rescue-when-creating-thumbnail-fails-in-load_pixbuf_.patch @@ -0,0 +1,44 @@ +From 31f6d516fc044d4748dac98ab6117035d938389e Mon Sep 17 00:00:00 2001 +From: Mamoru TASAKA +Date: Tue, 3 Jun 2025 14:02:01 +0900 +Subject: [PATCH] Rescue when creating thumbnail fails in load_pixbuf_size + +--- + mcomix/mcomix/thumbnail_tools.py | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/mcomix/mcomix/thumbnail_tools.py b/mcomix/mcomix/thumbnail_tools.py +index 35b4692..3b51cd2 100644 +--- a/mcomix/mcomix/thumbnail_tools.py ++++ b/mcomix/mcomix/thumbnail_tools.py +@@ -142,8 +142,11 @@ class Thumbnailer(object): + if not os.path.isfile(image_path): + return None, None + +- pixbuf = image_tools.load_pixbuf_size(image_path, self.width, self.height) +- if self.store_on_disk: ++ try: ++ pixbuf = image_tools.load_pixbuf_size(image_path, self.width, self.height) ++ except: ++ pixbuf = None ++ if pixbuf and self.store_on_disk: + tEXt_data = self._get_text_data(image_path) + # Use the archive's mTime instead of the extracted file's mtime + tEXt_data['tEXt::Thumb::MTime'] = str(os.stat(filepath).st_mtime) +@@ -153,8 +156,11 @@ class Thumbnailer(object): + return pixbuf, tEXt_data + + elif image_tools.is_image_file(filepath, check_mimetype=True): +- pixbuf = image_tools.load_pixbuf_size(filepath, self.width, self.height) +- if self.store_on_disk: ++ try: ++ pixbuf = image_tools.load_pixbuf_size(filepath, self.width, self.height) ++ except: ++ pixbuf = None ++ if pixbuf and self.store_on_disk: + tEXt_data = self._get_text_data(filepath) + else: + tEXt_data = None +-- +2.49.0 + diff --git a/0006-sqlite3.py-support-python-3.14.patch b/0006-sqlite3.py-support-python-3.14.patch new file mode 100644 index 0000000..7b2a899 --- /dev/null +++ b/0006-sqlite3.py-support-python-3.14.patch @@ -0,0 +1,27 @@ +From 077f2ad403bfc47ceb4e4961ad9a4fb1e883d904 Mon Sep 17 00:00:00 2001 +From: mcomix3 Fedora maintainer +Date: Wed, 20 Aug 2025 17:20:58 +0900 +Subject: [PATCH] sqlite3.py: support python 3.14 + +ref: https://github.com/python/cpython/issues/93370 +sqlite3.version is deprecated +--- + mcomix/mcomix/sqlite3.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mcomix/mcomix/sqlite3.py b/mcomix/mcomix/sqlite3.py +index 212cc84..58608bf 100644 +--- a/mcomix/mcomix/sqlite3.py ++++ b/mcomix/mcomix/sqlite3.py +@@ -2,7 +2,7 @@ from mcomix import log + + try: + import sqlite3 +- log.debug(f'SQLite: {sqlite3.sqlite_version} sqlite3 version: {sqlite3.version}') ++ log.debug(f'SQLite: {sqlite3.sqlite_version} sqlite3 version: {sqlite3.sqlite_version}') + except ImportError: + log.warning( _('! Could find sqlite3.') ) + sqlite3 = None +-- +2.50.1 + diff --git a/0007-Workaround-to-restore-space-pageup-button-behavior-i.patch b/0007-Workaround-to-restore-space-pageup-button-behavior-i.patch new file mode 100644 index 0000000..f3df5dd --- /dev/null +++ b/0007-Workaround-to-restore-space-pageup-button-behavior-i.patch @@ -0,0 +1,29 @@ +From 2c49b1239bde5c789aea1a03beb098539ee01e49 Mon Sep 17 00:00:00 2001 +From: Mamoru TASAKA +Date: Sat, 3 Jan 2026 17:36:44 +0900 +Subject: [PATCH] Workaround to restore space / pageup button behavior in + recent GTK + +--- + mcomix/mcomix/keybindings.py | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/mcomix/mcomix/keybindings.py b/mcomix/mcomix/keybindings.py +index 02c586f..725cc82 100644 +--- a/mcomix/mcomix/keybindings.py ++++ b/mcomix/mcomix/keybindings.py +@@ -165,7 +165,10 @@ class _KeybindingManager(object): + # so limit possible states to begin with? + for stored_binding, action in self._binding_to_action.items(): + stored_keycode, stored_flags = stored_binding +- if stored_keycode == keybinding[0] and stored_flags & keybinding[1]: ++ if stored_keycode == keybinding[0] and ( ++ (stored_flags & keybinding[1]) or ++ ((not stored_flags) and (not keybinding[1])) ++ ): + func, args, kwargs = self._action_to_callback[action] + self._window.stop_emission_by_name('key_press_event') + return func(*args, **kwargs) +-- +2.52.0 + diff --git a/mcomix3.spec b/mcomix3.spec index 889cd20..ea05906 100644 --- a/mcomix3.spec +++ b/mcomix3.spec @@ -15,10 +15,11 @@ It has been forked from the original MComix project and ported to python3. Name: mcomix3 # For now, choose version 0 Version: 0 -Release: 0.29.D%{gitdate}git%{shortcommit}%{?dist} +Release: 0.43.D%{gitdate}git%{shortcommit}%{?dist} Summary: %base_summary # GPL version info is from mcomix/mcomixstarter.py -License: GPLv2+ +# Automatically converted from old format: GPLv2+ - review is highly recommended. +License: GPL-2.0-or-later URL: https://github.com/multiSnow/mcomix3 # Use git repository directly - with it when modifying source # we can do it *in git repository* and then we can directly submit @@ -31,6 +32,16 @@ Source2: mcomix3starter.sh.in # Patches Patch2: 0002-Change-domain-name-for-gettext.patch Patch3: 0003-Search-gettext-files-in-system-wide-directory.patch +Patch4: 0004-Workaround-on-zip-archiver-for-contents-info.patch +# Rescue when creating thumbnail fails in load_pixbuf_size +# (ref: bug 2368354, 2369016) +Patch5: 0005-Rescue-when-creating-thumbnail-fails-in-load_pixbuf_.patch +# sqlite3.py: support python 3.14 +# ref: https://github.com/python/cpython/issues/9337 +Patch6: 0006-sqlite3.py-support-python-3.14.patch +# Restore space / pageup button behavior in recent GTK +# (ref: bug 2426924 +Patch7: 0007-Workaround-to-restore-space-pageup-button-behavior-i.patch BuildRequires: python3-devel BuildRequires: %{_bindir}/appstream-util @@ -80,6 +91,10 @@ git checkout -b %{version}-%{release}-fedora %{gitcommit} # Apply patches cat %{PATCH2} | git am cat %{PATCH3} | git am +cat %{PATCH4} | git am +cat %{PATCH5} | git am +cat %{PATCH6} | git am +cat %{PATCH7} | git am %build pushd %{name} @@ -226,6 +241,49 @@ appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/%{name}.appdat %changelog +* Sat Jan 03 2026 Mamoru TASAKA - 0-0.43.D20211016git483f4b3 +- Restore space / pageup button behavior (bug 2426924) + +* Fri Sep 19 2025 Python Maint - 0-0.42.D20211016git483f4b3 +- Rebuilt for Python 3.14.0rc3 bytecode + +* Wed Aug 20 2025 Mamoru TASAKA - 0-0.41.D20211016git483f4b3 +- sqlite3.py: support python 3.14 + +* Fri Aug 15 2025 Python Maint - 0-0.40.D20211016git483f4b3 +- Rebuilt for Python 3.14.0rc2 bytecode + +* Thu Jul 24 2025 Fedora Release Engineering - 0-0.39.D20211016git483f4b3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Tue Jun 03 2025 Mamoru TASAKA - 0-0.38.D20211016git483f4b3 +- Rescue when creating thumbnail fails in load_pixbuf_size + (ref: bug 2368354, 2369016) + +* Mon Jun 02 2025 Python Maint - 0-0.37.D20211016git483f4b3 +- Rebuilt for Python 3.14 + +* Fri Jan 17 2025 Fedora Release Engineering - 0-0.36.D20211016git483f4b3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Sat Aug 17 2024 Mamoru TASAKA - 0-0.35.D20211016git483f4b3 +- Workaround for zip archiver for contents info + +* Fri Jul 26 2024 Miroslav Suchý - 0-0.34.D20211016git483f4b3 +- convert license to SPDX + +* Thu Jul 18 2024 Fedora Release Engineering - 0-0.33.D20211016git483f4b3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Fri Jun 07 2024 Python Maint - 0-0.32.D20211016git483f4b3 +- Rebuilt for Python 3.13 + +* Thu Jan 25 2024 Fedora Release Engineering - 0-0.31.D20211016git483f4b3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 0-0.30.D20211016git483f4b3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Thu Jul 20 2023 Fedora Release Engineering - 0-0.29.D20211016git483f4b3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild