From c7c856ec6d52e8a57216b611cf0115b2a2b2e87b Mon Sep 17 00:00:00 2001 From: toofar Date: Fri, 3 Nov 2023 13:43:31 +1300 Subject: Add log messages, catch parse errors. The "doesn't exist at expected location" error message is a bit misleading, it actually prints the location in the directory we copied stuff to instead of the source one. Oh well, it's good enough. --- qutebrowser/misc/pakjoy.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/qutebrowser/misc/pakjoy.py b/qutebrowser/misc/pakjoy.py index ba0c216c4..ce856bea7 100644 --- a/qutebrowser/misc/pakjoy.py +++ b/qutebrowser/misc/pakjoy.py @@ -32,7 +32,7 @@ import dataclasses from typing import ClassVar, IO, Optional, Dict, Tuple from qutebrowser.misc import binparsing -from qutebrowser.utils import qtutils, standarddir, version, utils +from qutebrowser.utils import qtutils, standarddir, version, utils, log HANGOUTS_MARKER = b"// Extension ID: nkeimhogjdpnpccoofpliimaahmaaome" HANGOUTS_ID = 36197 # as found by toofar @@ -150,6 +150,11 @@ def copy_webengine_resources(): resources_dir = qtutils.library_path(qtutils.LibraryPath.data) / "resources" work_dir = pathlib.Path(standarddir.cache()) / "webengine_resources_pak_quirk" + log.misc.debug( + "Copying webengine resources for quirk patching: " + f"{resources_dir} -> {work_dir}" + ) + if work_dir.exists(): # TODO: make backup? shutil.rmtree(work_dir) @@ -169,13 +174,23 @@ def patch(file_to_patch: pathlib.Path = None): if not file_to_patch: file_to_patch = copy_webengine_resources() / "qtwebengine_resources.pak" - assert file_to_patch.exists() + + if not file_to_patch.exists(): + log.misc.error( + "Resource pak doesn't exist at expected location! " + f"Not applying quirks. Expected location: {file_to_patch}" + ) + return with open(file_to_patch, "r+b") as f: - parser = PakParser(f) - offset = parser.find_patch_offset() - f.seek(offset) - f.write(REPLACEMENT_URL) + try: + parser = PakParser(f) + log.misc.debug(f"Patching pak entry: {parser.manifest_entry}") + offset = parser.find_patch_offset() + f.seek(offset) + f.write(REPLACEMENT_URL) + except binparsing.ParseError: + log.misc.exception("Failed to apply quirk to resources pak.") if __name__ == "__main__": -- cgit v1.2.3-54-g00ecf