mirror of
https://github.com/miurahr/aqtinstall.git
synced 2025-12-17 20:54:38 +03:00
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:
2
.github/workflows/check.yml
vendored
2
.github/workflows/check.yml
vendored
@@ -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:
|
||||||
|
|||||||
2
.github/workflows/test-install-qt.yml
vendored
2
.github/workflows/test-install-qt.yml
vendored
@@ -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:
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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'])}"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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)
|
||||||
=========================
|
=========================
|
||||||
|
|||||||
32
docs/cli.rst
32
docs/cli.rst
@@ -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:
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
15
tests/data/linux_arm64-desktop-expect.json
Normal file
15
tests/data/linux_arm64-desktop-expect.json
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"qt": {
|
||||||
|
"qt": [
|
||||||
|
"6.7.0"
|
||||||
|
],
|
||||||
|
"preview": [
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"tools": [
|
||||||
|
"tools_maintenance",
|
||||||
|
"tools_ifw",
|
||||||
|
"tools_cmake",
|
||||||
|
"sdktool"
|
||||||
|
]
|
||||||
|
}
|
||||||
20
tests/data/linux_arm64-desktop.html
Normal file
20
tests/data/linux_arm64-desktop.html
Normal 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> </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"> </td><td><a href="/online/qtsdkrepository/linux_arm64/">Parent Directory</a></td><td> </td><td align="right"> - </td><td> </td></tr>
|
||||||
|
<tr><td valign="top"> </td><td><a href="tools_maintenance/">tools_maintenance/</a></td><td align="right">19-Feb-2024 12:34 </td><td align="right"> - </td><td> </td></tr>
|
||||||
|
<tr><td valign="top"> </td><td><a href="tools_ifw/">tools_ifw/</a></td><td align="right">19-Feb-2024 12:10 </td><td align="right"> - </td><td> </td></tr>
|
||||||
|
<tr><td valign="top"> </td><td><a href="tools_cmake/">tools_cmake/</a></td><td align="right">15-Feb-2024 11:39 </td><td align="right"> - </td><td> </td></tr>
|
||||||
|
<tr><td valign="top"> </td><td><a href="sdktool/">sdktool/</a></td><td align="right">07-Feb-2024 14:36 </td><td align="right"> - </td><td> </td></tr>
|
||||||
|
<tr><td valign="top"> </td><td><a href="qt6_dev/">qt6_dev/</a></td><td align="right">08-Feb-2024 09:30 </td><td align="right"> - </td><td> </td></tr>
|
||||||
|
<tr><td valign="top"> </td><td><a href="qt6_670/">qt6_670/</a></td><td align="right">16-Feb-2024 07:43 </td><td align="right"> - </td><td> </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>
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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"),
|
||||||
|
|||||||
Reference in New Issue
Block a user