From 00e95c912983a3bd1150f4ba640ad787c3b1d81d Mon Sep 17 00:00:00 2001 From: "J.D. Purcell" Date: Sat, 14 Dec 2024 15:25:36 -0500 Subject: [PATCH 1/2] Patch additional Qt scripts Patches qtpath (introduced by QTBUG-97821) and the versioned variant of the tool wrapper scripts (introduced by QTBUG-109024) --- aqt/updater.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/aqt/updater.py b/aqt/updater.py index 2aef07f..b4f953e 100644 --- a/aqt/updater.py +++ b/aqt/updater.py @@ -184,13 +184,22 @@ class Updater: newpath=bytes(str(self.prefix), "UTF-8"), ) - def patch_qmake_script(self, base_dir, qt_version: str, os_name: str, desktop_arch_dir: str): + def patch_qt_scripts(self, base_dir, version_dir: str, os_name: str, desktop_arch_dir: str, version: Version): sep = "\\" if os_name == "windows" else "/" - patched = sep.join([base_dir, qt_version, desktop_arch_dir, "bin"]) - qmake_path = self.prefix / "bin" / ("qmake.bat" if os_name == "windows" else "qmake") - self.logger.info(f"Patching {qmake_path}") - for unpatched in unpatched_paths(): - self._patch_textfile(qmake_path, f"{unpatched}bin", patched, is_executable=True) + patched = sep.join([base_dir, version_dir, desktop_arch_dir, "bin"]) + + def patch_script(script_name): + script_path = self.prefix / "bin" / (script_name + ".bat" if os_name == "windows" else script_name) + self.logger.info(f"Patching {script_path}") + for unpatched in unpatched_paths(): + self._patch_textfile(script_path, f"{unpatched}bin", patched, is_executable=True) + + patch_script("qmake") + if version >= Version("6.2.2"): + patch_script("qtpaths") + if version >= Version("6.5.0"): + patch_script("qmake6") + patch_script("qtpaths6") def patch_qtcore(self, target): """patch to QtCore""" @@ -327,7 +336,7 @@ class Updater: meta = MetadataFactory(ArchiveId("qt", os_name, "desktop")) desktop_arch_dir = meta.fetch_default_desktop_arch(version, is_msvc="msvc" in target.arch) - updater.patch_qmake_script(base_dir, version_dir, target.os_name, desktop_arch_dir) + updater.patch_qt_scripts(base_dir, version_dir, target.os_name, desktop_arch_dir, version) updater.patch_target_qt_conf(base_dir, version_dir, arch_dir, target.os_name, desktop_arch_dir) updater.patch_qdevice_file(base_dir, version_dir, arch_dir, target.os_name) except IOError as e: From 2e7a1cb4b93673c67a87c752354d5fccbcad9f4f Mon Sep 17 00:00:00 2001 From: "J.D. Purcell" Date: Sat, 14 Dec 2024 18:46:44 -0500 Subject: [PATCH 2/2] Update test script to recognize new patch behavior --- tests/test_install.py | 62 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/tests/test_install.py b/tests/test_install.py index 4dfcb12..ecc5a82 100644 --- a/tests/test_install.py +++ b/tests/test_install.py @@ -724,6 +724,33 @@ def tool_archive(host: str, tool_name: str, variant: str, date: datetime = datet "{base_dir}\\6.5.2\\msvc2019_64\\bin\n" "... blah blah blah ...\n", ), + PatchedFile( + filename="bin/qtpaths.bat", + unpatched_content="... blah blah blah ...\n" + "/Users/qt/work/install/bin\n" + "... blah blah blah ...\n", + patched_content="... blah blah blah ...\n" + "{base_dir}\\6.5.2\\msvc2019_64\\bin\n" + "... blah blah blah ...\n", + ), + PatchedFile( + filename="bin/qmake6.bat", + unpatched_content="... blah blah blah ...\n" + "/Users/qt/work/install/bin\n" + "... blah blah blah ...\n", + patched_content="... blah blah blah ...\n" + "{base_dir}\\6.5.2\\msvc2019_64\\bin\n" + "... blah blah blah ...\n", + ), + PatchedFile( + filename="bin/qtpaths6.bat", + unpatched_content="... blah blah blah ...\n" + "/Users/qt/work/install/bin\n" + "... blah blah blah ...\n", + patched_content="... blah blah blah ...\n" + "{base_dir}\\6.5.2\\msvc2019_64\\bin\n" + "... blah blah blah ...\n", + ), ), ), ], @@ -738,6 +765,9 @@ def tool_archive(host: str, tool_name: str, variant: str, date: datetime = datet r"INFO : Downloading qtbase...\n" r"Finished installation of qtbase-windows-win64_msvc2019_64.7z in .*\n" r"INFO : Patching .*6\.5\.2[/\\]msvc2019_arm64[/\\]bin[/\\]qmake.bat\n" + r"INFO : Patching .*6\.5\.2[/\\]msvc2019_arm64[/\\]bin[/\\]qtpaths.bat\n" + r"INFO : Patching .*6\.5\.2[/\\]msvc2019_arm64[/\\]bin[/\\]qmake6.bat\n" + r"INFO : Patching .*6\.5\.2[/\\]msvc2019_arm64[/\\]bin[/\\]qtpaths6.bat\n" r"INFO : Finished installation\n" r"INFO : Time elapsed: .* second" ), @@ -801,6 +831,17 @@ def tool_archive(host: str, tool_name: str, variant: str, date: datetime = datet "{base_dir}/6.4.1/gcc_64/bin\n" "... blah blah blah ...\n", ), + PatchedFile( + filename="bin/qtpaths", + unpatched_content="... blah blah blah ...\n" + "/home/qt/work/install/bin\n" + "/Users/qt/work/install/bin\n" + "... blah blah blah ...\n", + patched_content="... blah blah blah ...\n" + "{base_dir}/6.4.1/gcc_64/bin\n" + "{base_dir}/6.4.1/gcc_64/bin\n" + "... blah blah blah ...\n", + ), ), ), ] @@ -813,6 +854,7 @@ def tool_archive(host: str, tool_name: str, variant: str, date: datetime = datet r"INFO : Downloading qtbase\.\.\.\n" r"Finished installation of qtbase-MacOS-MacOS_12-Clang-Android-Android_ANY-ARM64\.7z in .*\n" r"INFO : Patching .*6\.4\.1[/\\]android_arm64_v8a[/\\]bin[/\\]qmake\n" + r"INFO : Patching .*6\.4\.1[/\\]android_arm64_v8a[/\\]bin[/\\]qtpaths\n" r"INFO : Finished installation\n" r"INFO : Time elapsed: .* second" ), @@ -861,6 +903,15 @@ def tool_archive(host: str, tool_name: str, variant: str, date: datetime = datet "{base_dir}/6.3.0/gcc_64/bin\n" "... blah blah blah ...\n", ), + PatchedFile( + filename="bin/qtpaths", + unpatched_content="... blah blah blah ...\n" + "/home/qt/work/install/bin\n" + "... blah blah blah ...\n", + patched_content="... blah blah blah ...\n" + "{base_dir}/6.3.0/gcc_64/bin\n" + "... blah blah blah ...\n", + ), ), ), ] @@ -873,6 +924,7 @@ def tool_archive(host: str, tool_name: str, variant: str, date: datetime = datet r"INFO : Downloading qtbase...\n" r"Finished installation of qtbase-linux-android_arm64_v8a.7z in .*\n" r"INFO : Patching .*6\.3\.0[/\\]android_arm64_v8a[/\\]bin[/\\]qmake\n" + r"INFO : Patching .*6\.3\.0[/\\]android_arm64_v8a[/\\]bin[/\\]qtpaths\n" r"INFO : Finished installation\n" r"INFO : Time elapsed: .* second" ), @@ -1043,6 +1095,15 @@ def tool_archive(host: str, tool_name: str, variant: str, date: datetime = datet "{base_dir}\\6.2.4\\mingw1234_64\\bin\n" "... blah blah blah ...\n", ), + PatchedFile( + filename="bin/qtpaths.bat", + unpatched_content="... blah blah blah ...\n" + "/Users/qt/work/install/bin\n" + "... blah blah blah ...\n", + patched_content="... blah blah blah ...\n" + "{base_dir}\\6.2.4\\mingw1234_64\\bin\n" + "... blah blah blah ...\n", + ), ), ), ], @@ -1055,6 +1116,7 @@ def tool_archive(host: str, tool_name: str, variant: str, date: datetime = datet r"INFO : Downloading qtbase...\n" r"Finished installation of qtbase-windows-wasm_32\.7z in .*\n" r"INFO : Patching .*6\.2\.4[/\\]wasm_32[/\\]bin[/\\]qmake.bat\n" + r"INFO : Patching .*6\.2\.4[/\\]wasm_32[/\\]bin[/\\]qtpaths.bat\n" r"INFO : Finished installation\n" r"INFO : Time elapsed: .* second" ),