Merge pull request #766 from rectalogic/arm64

Support linux_gcc_arm64 arch in 6.7.0 via new linux_arm64 host
This commit is contained in:
Hiroshi Miura
2024-04-10 20:51:03 +09:00
committed by GitHub
15 changed files with 160 additions and 34 deletions

View File

@@ -19,7 +19,7 @@ jobs:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
with: with:
fetch-depth: 20 fetch-depth: 20
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/* fetch-tags: true
- name: Set up Python 3.9 - name: Set up Python 3.9
uses: actions/setup-python@v4 uses: actions/setup-python@v4
with: with:

View File

@@ -35,7 +35,7 @@ jobs:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
with: with:
fetch-depth: 20 fetch-depth: 20
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/* fetch-tags: true
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v4 uses: actions/setup-python@v4
with: with:

View File

@@ -367,7 +367,7 @@ class QtArchives:
def _append_depends_tool(self, arch, tool_name): def _append_depends_tool(self, arch, tool_name):
os_target_folder = posixpath.join( os_target_folder = posixpath.join(
"online/qtsdkrepository", "online/qtsdkrepository",
self.os_name + ("_x86" if self.os_name == "windows" else "_x64"), self.os_name + ("_x86" if self.os_name == "windows" else ("" if self.os_name == "linux_arm64" else "_x64")),
self.target, self.target,
tool_name, tool_name,
) )
@@ -379,7 +379,7 @@ class QtArchives:
def _get_archives_base(self, name, target_packages): def _get_archives_base(self, name, target_packages):
os_target_folder = posixpath.join( os_target_folder = posixpath.join(
"online/qtsdkrepository", "online/qtsdkrepository",
self.os_name + ("_x86" if self.os_name == "windows" else "_x64"), self.os_name + ("_x86" if self.os_name == "windows" else ("" if self.os_name == "linux_arm64" else "_x64")),
self.target, self.target,
# tools_ifw/ # tools_ifw/
name, name,

View File

@@ -439,6 +439,11 @@
"os_name": "linux", "os_name": "linux",
"target": "desktop" "target": "desktop"
}, },
{
"arch": "linux_gcc_arm64",
"os_name": "linux_arm64",
"target": "desktop"
},
{ {
"arch": "wasm_32", "arch": "wasm_32",
"os_name": "linux", "os_name": "linux",
@@ -1302,4 +1307,4 @@
"6.7.0" "6.7.0"
] ]
} }
] ]

View File

@@ -261,7 +261,15 @@ class Cli:
if arch is not None and arch != "": if arch is not None and arch != "":
return arch return arch
if os_name == "linux" and target == "desktop": if os_name == "linux" and target == "desktop":
return "gcc_64" try:
if Version(qt_version_or_spec) >= Version("6.7.0"):
return "linux_gcc_64"
else:
return "gcc_64"
except ValueError:
return "gcc_64"
elif os_name == "linux_arm64" and target == "desktop":
return "linux_gcc_arm64"
elif os_name == "mac" and target == "desktop": elif os_name == "mac" and target == "desktop":
return "clang_64" return "clang_64"
elif os_name == "mac" and target == "ios": elif os_name == "mac" and target == "ios":
@@ -730,7 +738,7 @@ class Cli:
def _set_install_tool_parser(self, install_tool_parser, *, is_legacy: bool): def _set_install_tool_parser(self, install_tool_parser, *, is_legacy: bool):
install_tool_parser.set_defaults(func=self.run_install_tool, is_legacy=is_legacy) install_tool_parser.set_defaults(func=self.run_install_tool, is_legacy=is_legacy)
install_tool_parser.add_argument("host", choices=["linux", "mac", "windows"], help="host os name") install_tool_parser.add_argument("host", choices=["linux", "linux_arm64", "mac", "windows"], help="host os name")
if not is_legacy: if not is_legacy:
install_tool_parser.add_argument( install_tool_parser.add_argument(
"target", "target",
@@ -787,7 +795,7 @@ class Cli:
def make_parser_list_sde(cmd: str, desc: str, cmd_type: str): def make_parser_list_sde(cmd: str, desc: str, cmd_type: str):
parser = subparsers.add_parser(cmd, description=desc) parser = subparsers.add_parser(cmd, description=desc)
parser.add_argument("host", choices=["linux", "mac", "windows"], help="host os name") parser.add_argument("host", choices=["linux", "linux_arm64", "mac", "windows"], help="host os name")
parser.add_argument( parser.add_argument(
"qt_version_spec", "qt_version_spec",
metavar="(VERSION | SPECIFICATION)", metavar="(VERSION | SPECIFICATION)",
@@ -835,7 +843,7 @@ class Cli:
"$ aqt list-qt mac desktop --archives 5.9.0 clang_64 # list archives in base Qt installation\n" "$ aqt list-qt mac desktop --archives 5.9.0 clang_64 # list archives in base Qt installation\n"
"$ aqt list-qt mac desktop --archives 5.14.0 clang_64 debug_info # list archives in debug_info module\n", "$ aqt list-qt mac desktop --archives 5.14.0 clang_64 debug_info # list archives in debug_info module\n",
) )
list_parser.add_argument("host", choices=["linux", "mac", "windows"], help="host os name") list_parser.add_argument("host", choices=["linux", "linux_arm64", "mac", "windows"], help="host os name")
list_parser.add_argument( list_parser.add_argument(
"target", "target",
nargs="?", nargs="?",
@@ -919,7 +927,7 @@ class Cli:
"$ aqt list-tool mac desktop tools_ifw --long # print tool variant names with metadata for QtIFW\n" "$ aqt list-tool mac desktop tools_ifw --long # print tool variant names with metadata for QtIFW\n"
"$ aqt list-tool mac desktop ifw --long # print tool variant names with metadata for QtIFW\n", "$ aqt list-tool mac desktop ifw --long # print tool variant names with metadata for QtIFW\n",
) )
list_parser.add_argument("host", choices=["linux", "mac", "windows"], help="host os name") list_parser.add_argument("host", choices=["linux", "linux_arm64", "mac", "windows"], help="host os name")
list_parser.add_argument( list_parser.add_argument(
"target", "target",
nargs="?", nargs="?",
@@ -1006,7 +1014,7 @@ class Cli:
""" """
if is_legacy: if is_legacy:
subparser.add_argument("qt_version", help='Qt version in the format of "5.X.Y"') subparser.add_argument("qt_version", help='Qt version in the format of "5.X.Y"')
subparser.add_argument("host", choices=["linux", "mac", "windows"], help="host os name") subparser.add_argument("host", choices=["linux", "linux_arm64", "mac", "windows"], help="host os name")
if is_target_deprecated: if is_target_deprecated:
subparser.add_argument( subparser.add_argument(
"target", "target",

View File

@@ -199,11 +199,12 @@ def get_semantic_version(qt_ver: str, is_preview: bool) -> Optional[Version]:
class ArchiveId: class ArchiveId:
CATEGORIES = ("tools", "qt") CATEGORIES = ("tools", "qt")
HOSTS = ("windows", "mac", "linux") HOSTS = ("windows", "mac", "linux", "linux_arm64")
TARGETS_FOR_HOST = { TARGETS_FOR_HOST = {
"windows": ["android", "desktop", "winrt"], "windows": ["android", "desktop", "winrt"],
"mac": ["android", "desktop", "ios"], "mac": ["android", "desktop", "ios"],
"linux": ["android", "desktop"], "linux": ["android", "desktop"],
"linux_arm64": ["desktop"],
} }
EXTENSIONS_REQUIRED_ANDROID_QT6 = {"x86_64", "x86", "armv7", "arm64_v8a"} EXTENSIONS_REQUIRED_ANDROID_QT6 = {"x86_64", "x86", "armv7", "arm64_v8a"}
ALL_EXTENSIONS = {"", "wasm", "src_doc_examples", *EXTENSIONS_REQUIRED_ANDROID_QT6} ALL_EXTENSIONS = {"", "wasm", "src_doc_examples", *EXTENSIONS_REQUIRED_ANDROID_QT6}
@@ -231,7 +232,7 @@ class ArchiveId:
def to_url(self) -> str: def to_url(self) -> str:
return "online/qtsdkrepository/{os}{arch}/{target}/".format( return "online/qtsdkrepository/{os}{arch}/{target}/".format(
os=self.host, os=self.host,
arch="_x86" if self.host == "windows" else "_x64", arch=("_x86" if self.host == "windows" else ("" if self.host == "linux_arm64" else "_x64")),
target=self.target, target=self.target,
) )
@@ -384,12 +385,16 @@ class QtRepoProperty:
return arch[6:] return arch[6:]
elif host == "mac" and arch == "clang_64": elif host == "mac" and arch == "clang_64":
return QtRepoProperty.default_mac_desktop_arch_dir(version) return QtRepoProperty.default_mac_desktop_arch_dir(version)
elif host == "linux" and arch in ("gcc_64", "linux_gcc_64"):
return "gcc_64"
elif host == "linux_arm64" and arch == "linux_gcc_arm64":
return "gcc_arm64"
else: else:
return arch return arch
@staticmethod @staticmethod
def default_linux_desktop_arch_dir() -> str: def default_linux_desktop_arch_dir() -> tuple[str, str]:
return "gcc_64" return ("gcc_64", "gcc_arm64")
@staticmethod @staticmethod
def default_win_msvc_desktop_arch_dir(_version: Version) -> str: def default_win_msvc_desktop_arch_dir(_version: Version) -> str:
@@ -476,8 +481,11 @@ class QtRepoProperty:
arch_path = installed_qt_version_dir / QtRepoProperty.default_mac_desktop_arch_dir(version) arch_path = installed_qt_version_dir / QtRepoProperty.default_mac_desktop_arch_dir(version)
return arch_path if (arch_path / "bin/qmake").is_file() else None return arch_path if (arch_path / "bin/qmake").is_file() else None
elif host == "linux": elif host == "linux":
arch_path = installed_qt_version_dir / QtRepoProperty.default_linux_desktop_arch_dir() for arch_dir in QtRepoProperty.default_linux_desktop_arch_dir():
return arch_path if (arch_path / "bin/qmake").is_file() else None arch_path = installed_qt_version_dir / arch_dir
if (arch_path / "bin/qmake").is_file():
return arch_path
return None
elif host == "windows" and is_msvc: elif host == "windows" and is_msvc:
arch_path = installed_qt_version_dir / QtRepoProperty.default_win_msvc_desktop_arch_dir(version) arch_path = installed_qt_version_dir / QtRepoProperty.default_win_msvc_desktop_arch_dir(version)
return arch_path if (arch_path / "bin/qmake.exe").is_file() else None return arch_path if (arch_path / "bin/qmake.exe").is_file() else None
@@ -928,7 +936,12 @@ class MetadataFactory:
def fetch_default_desktop_arch(self, version: Version, is_msvc: bool = False) -> str: def fetch_default_desktop_arch(self, version: Version, is_msvc: bool = False) -> str:
assert self.archive_id.target == "desktop", "This function is meant to fetch desktop architectures" assert self.archive_id.target == "desktop", "This function is meant to fetch desktop architectures"
if self.archive_id.host == "linux": if self.archive_id.host == "linux":
return "gcc_64" if version >= Version("6.7.0"):
return "linux_gcc_64"
else:
return "gcc_64"
elif self.archive_id.host == "linux_arm64":
return "linux_gcc_arm64"
elif self.archive_id.host == "mac": elif self.archive_id.host == "mac":
return "clang_64" return "clang_64"
elif self.archive_id.host == "windows" and is_msvc: elif self.archive_id.host == "windows" and is_msvc:

View File

@@ -53,3 +53,15 @@ jobs:
matrix: $[ dependencies.MatricesGenerator.outputs['mtrx.linux'] ] matrix: $[ dependencies.MatricesGenerator.outputs['mtrx.linux'] ]
steps: steps:
- template: ci/steps.yml - template: ci/steps.yml
- job: Linux ARM64
dependsOn: MatricesGenerator
pool:
vmImage: 'ubuntu-22.04'
container:
image: ubuntu:22.04
options: --platform linux/arm64
strategy:
matrix: $[ dependencies.MatricesGenerator.outputs['mtrx.linux_arm64'] ]
steps:
- template: ci/steps.yml

View File

@@ -92,11 +92,13 @@ python_versions = ["3.9", "3.11", "3.12"]
qt_versions = ["5.12.12", "5.15.14", "6.5.3"] qt_versions = ["5.12.12", "5.15.14", "6.5.3"]
linux_build_jobs = [] linux_build_jobs = []
linux_arm64_build_jobs = []
mac_build_jobs = [] mac_build_jobs = []
windows_build_jobs = [] windows_build_jobs = []
all_platform_build_jobs = [ all_platform_build_jobs = [
PlatformBuildJobs("linux", linux_build_jobs), PlatformBuildJobs("linux", linux_build_jobs),
PlatformBuildJobs("linux_arm64", linux_arm64_build_jobs),
PlatformBuildJobs("mac", mac_build_jobs), PlatformBuildJobs("mac", mac_build_jobs),
PlatformBuildJobs("windows", windows_build_jobs), PlatformBuildJobs("windows", windows_build_jobs),
] ]
@@ -106,6 +108,7 @@ for qt_version in qt_versions:
linux_build_jobs.append( linux_build_jobs.append(
BuildJob("install-qt", qt_version, "linux", "desktop", "gcc_64", "gcc_64") BuildJob("install-qt", qt_version, "linux", "desktop", "gcc_64", "gcc_64")
) )
linux_arm64_build_jobs.append(BuildJob("install-qt", "6.7.0", "linux_arm64", "desktop", "linux_gcc_arm64", "gcc_arm64"))
# Mac Desktop # Mac Desktop
for qt_version in qt_versions: for qt_version in qt_versions:
@@ -480,6 +483,9 @@ print("Setting Variables below")
print( print(
f"##vso[task.setVariable variable=linux;isOutput=true]{json.dumps(matrices['linux'])}" f"##vso[task.setVariable variable=linux;isOutput=true]{json.dumps(matrices['linux'])}"
) )
print(
f"##vso[task.setVariable variable=linux_arm64;isOutput=true]{json.dumps(matrices['linux_arm64'])}"
)
print( print(
f"##vso[task.setVariable variable=windows;isOutput=true]{json.dumps(matrices['windows'])}" f"##vso[task.setVariable variable=windows;isOutput=true]{json.dumps(matrices['windows'])}"
) )

View File

@@ -13,6 +13,9 @@ All notable changes to this project will be documented in this file.
`Unreleased`_ `Unreleased`_
============= =============
Added
-----
- Add support for arm64 architecture on linux desktop (#766)
`v3.1.12`_ (2, Mar. 2024) `v3.1.12`_ (2, Mar. 2024)
========================= =========================

View File

@@ -54,7 +54,7 @@ List available versions of Qt, targets, modules, and architectures.
.. describe:: host .. describe:: host
linux, windows or mac linux, linux_arm64, windows or mac
.. describe:: target .. describe:: target
@@ -177,7 +177,7 @@ List source archives available for installation using the `install-src command`_
.. describe:: host .. describe:: host
linux, windows or mac linux, linux_arm64, windows or mac
.. describe:: Qt version .. describe:: Qt version
@@ -217,7 +217,7 @@ installation using the `install-doc command`_, with the ``--archives`` option.
.. describe:: host .. describe:: host
linux, windows or mac linux, linux_arm64, windows or mac
.. describe:: Qt version .. describe:: Qt version
@@ -262,7 +262,7 @@ installation using the `install-example command`_, with the ``--archives`` optio
.. describe:: host .. describe:: host
linux, windows or mac linux, linux_arm64, windows or mac
.. describe:: Qt version .. describe:: Qt version
@@ -300,7 +300,7 @@ List available tools
.. describe:: host .. describe:: host
linux, windows or mac linux, linux_arm64, windows or mac
.. describe:: target .. describe:: target
@@ -502,7 +502,7 @@ There are various combinations to accept according to Qt version.
.. describe:: host .. describe:: host
linux, windows or mac. The operating system on which the Qt development tools will run. linux, linux_arm64, windows or mac. The operating system on which the Qt development tools will run.
.. describe:: target .. describe:: target
@@ -533,7 +533,9 @@ There are various combinations to accept according to Qt version.
The compiler architecture for which you are developing. Options: The compiler architecture for which you are developing. Options:
* gcc_64 for linux desktop * gcc_64 or linux_gcc_64 for linux desktop
* linux_gcc_arm64 for linux_arm64 desktop
* clang_64 for mac desktop * clang_64 for mac desktop
@@ -587,7 +589,7 @@ Install Qt source code for the specified version and target.
.. describe:: host .. describe:: host
linux, windows or mac linux, linux_arm64, windows or mac
.. describe:: target .. describe:: target
@@ -647,7 +649,7 @@ Install Qt documentation for the specified version and target.
.. describe:: host .. describe:: host
linux, windows or mac linux, linux_arm64, windows or mac
.. describe:: target .. describe:: target
@@ -701,7 +703,7 @@ Install Qt examples for the specified version and target.
.. describe:: host .. describe:: host
linux, windows or mac linux, linux_arm64, windows or mac
.. describe:: target .. describe:: target
@@ -753,7 +755,7 @@ Install tools like QtIFW, mingw, Cmake, Conan, and vcredist.
.. describe:: host .. describe:: host
linux, windows or mac linux, linux_arm64, windows or mac
.. describe:: target .. describe:: target
@@ -802,8 +804,14 @@ Example: Installing the newest LTS version of Qt 5.12:
.. code-block:: console .. code-block:: console
pip install aqtinstall pip install aqtinstall
sudo aqt install-qt linux desktop 5.12 win64_mingw73 sudo aqt install-qt linux desktop 5.12 gcc_64
Example: Installing the newest LTS version of Qt 6.7 for linux arm64:
.. code-block:: console
pip install aqtinstall
sudo aqt install-qt linux_arm64 desktop 6.7
Example: Installing Android (armv7) Qt 5.13.2: Example: Installing Android (armv7) Qt 5.13.2:

View File

@@ -29,7 +29,7 @@ Some older operating systems may require you to specify Python version 3, like t
To use ``aqt`` to install Qt, you will need to tell ``aqt`` four things: To use ``aqt`` to install Qt, you will need to tell ``aqt`` four things:
1. The host operating system (windows, mac, or linux) 1. The host operating system (windows, mac, linux, or linux_arm64)
2. The target SDK (desktop, android, ios, or winrt) 2. The target SDK (desktop, android, ios, or winrt)
3. The version of Qt you would like to install 3. The version of Qt you would like to install
4. The target architecture 4. The target architecture
@@ -37,6 +37,10 @@ To use ``aqt`` to install Qt, you will need to tell ``aqt`` four things:
Keep in mind that Qt for IOS is only available on Mac OS, and Qt for WinRT is Keep in mind that Qt for IOS is only available on Mac OS, and Qt for WinRT is
only available on Windows. only available on Windows.
In current versions of Qt, mac binaries are universal.
As of Qt 6.7.0, Linux desktop now supports the arm64 architecture.
This is implemented as a new host type - ``linux`` is amd64, ``linux_arm64`` is arm64.
To find out what versions of Qt are available, you can use the :ref:`aqt list-qt command <list-qt command>`. To find out what versions of Qt are available, you can use the :ref:`aqt list-qt command <list-qt command>`.
This command will print all versions of Qt available for Windows Desktop: This command will print all versions of Qt available for Windows Desktop:
@@ -99,6 +103,12 @@ instead of an explicit version:
$ aqt install-qt windows desktop 6.2 win64_mingw81 $ aqt install-qt windows desktop 6.2 win64_mingw81
As of Qt 6.7.0, arm64 architecture is now supported for linux desktop.
It is implemented using both a different host (``linux_arm64``) and architecture (``linux_gcc_arm64``).
.. code-block:: console
$ aqt install-qt linux_arm64 desktop 6.7.0 linux_gcc_arm64
External 7-zip extractor External 7-zip extractor
------------------------ ------------------------
@@ -464,7 +474,7 @@ probably the compiler you want to install (see `long_modules explanation`_).
Now let's install ``mingw``, using the :ref:`aqt install-tool <tools installation command>` command. Now let's install ``mingw``, using the :ref:`aqt install-tool <tools installation command>` command.
This command receives four parameters: This command receives four parameters:
1. The host operating system (windows, mac, or linux) 1. The host operating system (windows, mac, linux, or linux_arm64)
2. The target SDK (desktop, android, ios, or winrt) 2. The target SDK (desktop, android, ios, or winrt)
3. The name of the tool (this is ``tools_mingw`` in our case) 3. The name of the tool (this is ``tools_mingw`` in our case)
4. (Optional) The tool variant name. We saw a list of these when we ran 4. (Optional) The tool variant name. We saw a list of these when we ran

View File

@@ -0,0 +1,15 @@
{
"qt": {
"qt": [
"6.7.0"
],
"preview": [
]
},
"tools": [
"tools_maintenance",
"tools_ifw",
"tools_cmake",
"sdktool"
]
}

View File

@@ -0,0 +1,20 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Index of /online/qtsdkrepository/linux_arm64/desktop</title>
<meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" type="text/css" href="/static/normalize.css"><link rel="stylesheet" type="text/css" href="/static/style.css"><link rel="stylesheet" href="/static/bootstrap.css" type="text/css"><link rel="stylesheet" href="/static/bootstrap-download-index.css" type="text/css"><script type="text/javascript" src="/static/jquery.js"></script> <script type="text/javascript" src="/static/javascript-index.js"></script> <script type="text/javascript" src="/static/javascript-mirrorlist.js"></script> </head>
<body>
<h1>Index of /online/qtsdkrepository/linux_arm64/desktop</h1>
<table><tr><th>&nbsp;</th><th><a href="?C=N;O=A">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th>Metadata</th></tr><tr><th colspan="5"><hr /></th></tr>
<tr><td valign="top">&nbsp;</td><td><a href="/online/qtsdkrepository/linux_arm64/">Parent Directory</a></td><td>&nbsp;</td><td align="right"> - </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="tools_maintenance/">tools_maintenance/</a></td><td align="right">19-Feb-2024 12:34 </td><td align="right"> - </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="tools_ifw/">tools_ifw/</a></td><td align="right">19-Feb-2024 12:10 </td><td align="right"> - </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="tools_cmake/">tools_cmake/</a></td><td align="right">15-Feb-2024 11:39 </td><td align="right"> - </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="sdktool/">sdktool/</a></td><td align="right">07-Feb-2024 14:36 </td><td align="right"> - </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="qt6_dev/">qt6_dev/</a></td><td align="right">08-Feb-2024 09:30 </td><td align="right"> - </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="qt6_670/">qt6_670/</a></td><td align="right">16-Feb-2024 07:43 </td><td align="right"> - </td><td>&nbsp;</td></tr>
<tr><th colspan="5"><hr /></th></tr>
</table>
<br/><address><a href="http://mirrorbrain.org/">MirrorBrain</a> powered by <a href="http://httpd.apache.org/">Apache</a></address>
</body></html>

View File

@@ -1464,6 +1464,25 @@ def test_install_installer_archive_extraction_err(monkeypatch):
r"INFO : Time elapsed: .* second" r"INFO : Time elapsed: .* second"
), ),
), ),
(
"install-qt linux_arm64 desktop 6.7 linux_gcc_arm64".split(),
"linux_arm64",
"desktop",
"6.7.0",
"linux_gcc_arm64",
"gcc_arm64",
"https://www.alt.qt.mirror.com",
"linux_arm64/desktop/qt6_670/Updates.xml",
[plain_qtbase_archive("qt.qt6.670.linux_gcc_arm64", "linux_gcc_arm64", host="linux_arm64")],
re.compile(
r"^INFO : aqtinstall\(aqt\) v.* on Python 3.*\n"
r"INFO : Resolved spec '6\.7' to 6\.7\.0\n"
r"INFO : Downloading qtbase\.\.\.\n"
r"Finished installation of qtbase-linux_arm64-linux_gcc_arm64\.7z in .*\n"
r"INFO : Finished installation\n"
r"INFO : Time elapsed: .* second"
),
),
), ),
) )
def test_installer_passes_base_to_metadatafactory( def test_installer_passes_base_to_metadatafactory(
@@ -1491,7 +1510,13 @@ def test_installer_passes_base_to_metadatafactory(
def mock_get_url(url: str, *args, **kwargs) -> str: def mock_get_url(url: str, *args, **kwargs) -> str:
# If we are fetching an index.html file, get it from tests/data/ # If we are fetching an index.html file, get it from tests/data/
if url == f"{base_url}/online/qtsdkrepository/{host}_x{'86' if host == 'windows' else '64'}/{target}/": if host == "linux_arm64":
repo_dir = "linux_arm64"
elif host == "windows":
repo_dir = "windows_x86"
else:
repo_dir = f"{host}_x64"
if url == f"{base_url}/online/qtsdkrepository/{repo_dir}/{target}/":
return (Path(__file__).parent / "data" / f"{host}-{target}.html").read_text("utf-8") return (Path(__file__).parent / "data" / f"{host}-{target}.html").read_text("utf-8")
# Intercept and check the base url, but only if it's not a hash. # Intercept and check the base url, but only if it's not a hash.
@@ -1517,4 +1542,4 @@ def test_installer_passes_base_to_metadatafactory(
sys.stdout.write(out) sys.stdout.write(out)
sys.stderr.write(err) sys.stderr.write(err)
assert expect_out.match(err) assert expect_out.match(err), err

View File

@@ -128,6 +128,7 @@ def spec_regex():
("windows", "winrt", "windows-winrt.html", "windows-winrt-expect.json"), ("windows", "winrt", "windows-winrt.html", "windows-winrt-expect.json"),
("linux", "android", "linux-android.html", "linux-android-expect.json"), ("linux", "android", "linux-android.html", "linux-android-expect.json"),
("linux", "desktop", "linux-desktop.html", "linux-desktop-expect.json"), ("linux", "desktop", "linux-desktop.html", "linux-desktop-expect.json"),
("linux_arm64", "desktop", "linux_arm64-desktop.html", "linux_arm64-desktop-expect.json"),
("mac", "android", "mac-android.html", "mac-android-expect.json"), ("mac", "android", "mac-android.html", "mac-android-expect.json"),
("mac", "desktop", "mac-desktop.html", "mac-desktop-expect.json"), ("mac", "desktop", "mac-desktop.html", "mac-desktop-expect.json"),
("mac", "ios", "mac-ios.html", "mac-ios-expect.json"), ("mac", "ios", "mac-ios.html", "mac-ios-expect.json"),