From d0603a2555774b52459f9a3183c3423665541ece Mon Sep 17 00:00:00 2001 From: Andrew Wason Date: Mon, 1 Jan 2024 16:40:30 -0500 Subject: [PATCH 1/6] Handle linux desktop arm64 arch with Qt 6.7.0 via new linux_arm64 host. Top level directories are `qtsdkrepository/linux_x64` or `qtsdkrepository/linux_arm64` qtsdkrepository files are suffixed with `.linux_gcc_64` or `.linux_gcc_arm64` Installation directory is `gcc_64` or `gcc_arm64` --- aqt/archives.py | 4 ++-- aqt/combinations.json | 7 ++++++- aqt/installer.py | 20 ++++++++++++++------ aqt/metadata.py | 20 ++++++++++++++------ 4 files changed, 36 insertions(+), 15 deletions(-) diff --git a/aqt/archives.py b/aqt/archives.py index 65598447..1c8ba1b7 100644 --- a/aqt/archives.py +++ b/aqt/archives.py @@ -367,7 +367,7 @@ def _get_archives(self): def _append_depends_tool(self, arch, tool_name): os_target_folder = posixpath.join( "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, tool_name, ) @@ -379,7 +379,7 @@ def _append_depends_tool(self, arch, tool_name): def _get_archives_base(self, name, target_packages): os_target_folder = posixpath.join( "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, # tools_ifw/ name, diff --git a/aqt/combinations.json b/aqt/combinations.json index 9a1a49cf..df67b0bf 100644 --- a/aqt/combinations.json +++ b/aqt/combinations.json @@ -434,6 +434,11 @@ "os_name": "linux", "target": "desktop" }, + { + "arch": "linux_gcc_arm64", + "os_name": "linux_arm64", + "target": "desktop" + }, { "arch": "wasm_32", "os_name": "linux", @@ -1296,4 +1301,4 @@ "6.7.0" ] } -] \ No newline at end of file +] diff --git a/aqt/installer.py b/aqt/installer.py index 458e2178..df1d8f70 100644 --- a/aqt/installer.py +++ b/aqt/installer.py @@ -261,7 +261,15 @@ def _set_arch(arch: Optional[str], os_name: str, target: str, qt_version_or_spec if arch is not None and arch != "": return arch 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": return "clang_64" elif os_name == "mac" and target == "ios": @@ -730,7 +738,7 @@ def _set_install_qt_parser(self, install_qt_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.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: install_tool_parser.add_argument( "target", @@ -787,7 +795,7 @@ def make_parser_sde(cmd: str, desc: str, is_legacy: bool, action, is_add_kde: bo def make_parser_list_sde(cmd: str, desc: str, cmd_type: str): 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( "qt_version_spec", metavar="(VERSION | SPECIFICATION)", @@ -835,7 +843,7 @@ def _make_list_qt_parser(self, subparsers: argparse._SubParsersAction): "$ 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", ) - 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( "target", nargs="?", @@ -919,7 +927,7 @@ def _make_list_tool_parser(self, subparsers: argparse._SubParsersAction): "$ 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", ) - 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( "target", nargs="?", @@ -1006,7 +1014,7 @@ def _set_common_arguments(self, subparser, *, is_legacy: bool, is_target_depreca """ if is_legacy: 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: subparser.add_argument( "target", diff --git a/aqt/metadata.py b/aqt/metadata.py index 77b2a901..43048c56 100644 --- a/aqt/metadata.py +++ b/aqt/metadata.py @@ -199,11 +199,12 @@ def get_semantic_version(qt_ver: str, is_preview: bool) -> Optional[Version]: class ArchiveId: CATEGORIES = ("tools", "qt") - HOSTS = ("windows", "mac", "linux") + HOSTS = ("windows", "mac", "linux", "linux_arm64") TARGETS_FOR_HOST = { "windows": ["android", "desktop", "winrt"], "mac": ["android", "desktop", "ios"], "linux": ["android", "desktop"], + "linux_arm64": ["desktop"], } EXTENSIONS_REQUIRED_ANDROID_QT6 = {"x86_64", "x86", "armv7", "arm64_v8a"} ALL_EXTENSIONS = {"", "wasm", "src_doc_examples", *EXTENSIONS_REQUIRED_ANDROID_QT6} @@ -231,7 +232,7 @@ def is_tools(self) -> bool: def to_url(self) -> str: return "online/qtsdkrepository/{os}{arch}/{target}/".format( 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, ) @@ -384,12 +385,16 @@ def get_arch_dir_name(host: str, arch: str, version: Version) -> str: return arch[6:] elif host == "mac" and arch == "clang_64": 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" and arch == "linux_gcc_arm64": + return "gcc_arm64" else: return arch @staticmethod - def default_linux_desktop_arch_dir() -> str: - return "gcc_64" + def default_linux_desktop_arch_dir() -> tuple[str, str]: + return ("gcc_64", "gcc_arm64") @staticmethod def default_win_msvc_desktop_arch_dir(_version: Version) -> str: @@ -476,8 +481,11 @@ def find_installed_desktop_qt_dir(host: str, base_path: Path, version: 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 elif host == "linux": - arch_path = installed_qt_version_dir / QtRepoProperty.default_linux_desktop_arch_dir() - return arch_path if (arch_path / "bin/qmake").is_file() else None + for arch_dir in QtRepoProperty.default_linux_desktop_arch_dir(): + 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: 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 From 452c85cd649dadcc722068e2c8082e08deafbc1e Mon Sep 17 00:00:00 2001 From: Andrew Wason Date: Tue, 5 Mar 2024 08:33:13 -0500 Subject: [PATCH 2/6] Fix workflows failing when fetching tags --- .github/workflows/check.yml | 2 +- .github/workflows/test-install-qt.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index bd21e1f2..c991ddca 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -19,7 +19,7 @@ jobs: - uses: actions/checkout@v3 with: fetch-depth: 20 - - run: git fetch --depth=1 origin +refs/tags/*:refs/tags/* + fetch-tags: true - name: Set up Python 3.9 uses: actions/setup-python@v4 with: diff --git a/.github/workflows/test-install-qt.yml b/.github/workflows/test-install-qt.yml index d9ad1c1c..a2a1b7ee 100644 --- a/.github/workflows/test-install-qt.yml +++ b/.github/workflows/test-install-qt.yml @@ -35,7 +35,7 @@ jobs: - uses: actions/checkout@v3 with: fetch-depth: 20 - - run: git fetch --depth=1 origin +refs/tags/*:refs/tags/* + fetch-tags: true - name: Set up Python uses: actions/setup-python@v4 with: From 1615782c258ec8dfae1c355e915d8643df73f211 Mon Sep 17 00:00:00 2001 From: Andrew Wason Date: Tue, 5 Mar 2024 18:24:02 -0500 Subject: [PATCH 3/6] Fixes and tests. Untested Azure pipeline support. --- aqt/metadata.py | 9 +++- azure-pipelines.yml | 12 +++++ ci/generate_azure_pipelines_matrices.py | 62 +++++++++++++--------- tests/data/linux_arm64-desktop-expect.json | 15 ++++++ tests/data/linux_arm64-desktop.html | 20 +++++++ tests/test_install.py | 29 +++++++++- tests/test_list.py | 1 + 7 files changed, 118 insertions(+), 30 deletions(-) create mode 100644 tests/data/linux_arm64-desktop-expect.json create mode 100644 tests/data/linux_arm64-desktop.html diff --git a/aqt/metadata.py b/aqt/metadata.py index 43048c56..6708c825 100644 --- a/aqt/metadata.py +++ b/aqt/metadata.py @@ -387,7 +387,7 @@ def get_arch_dir_name(host: str, arch: str, version: Version) -> str: 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" and arch == "linux_gcc_arm64": + elif host == "linux_arm64" and arch == "linux_gcc_arm64": return "gcc_arm64" else: return arch @@ -936,7 +936,12 @@ def describe_filters(self) -> 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" 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": return "clang_64" elif self.archive_id.host == "windows" and is_msvc: diff --git a/azure-pipelines.yml b/azure-pipelines.yml index a61c2bdb..ac712409 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -53,3 +53,15 @@ jobs: matrix: $[ dependencies.MatricesGenerator.outputs['mtrx.linux'] ] steps: - 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 \ No newline at end of file diff --git a/ci/generate_azure_pipelines_matrices.py b/ci/generate_azure_pipelines_matrices.py index 6d51a9d1..1d5e09cf 100644 --- a/ci/generate_azure_pipelines_matrices.py +++ b/ci/generate_azure_pipelines_matrices.py @@ -92,11 +92,13 @@ def __init__(self, platform, build_jobs): qt_versions = ["5.12.12", "5.15.14", "6.5.3"] linux_build_jobs = [] +linux_arm64_build_jobs = [] mac_build_jobs = [] windows_build_jobs = [] all_platform_build_jobs = [ PlatformBuildJobs("linux", linux_build_jobs), + PlatformBuildJobs("linux_arm64", linux_arm64_build_jobs), PlatformBuildJobs("mac", mac_build_jobs), PlatformBuildJobs("windows", windows_build_jobs), ] @@ -106,6 +108,7 @@ def __init__(self, platform, build_jobs): linux_build_jobs.append( 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 for qt_version in qt_versions: @@ -368,32 +371,36 @@ def __init__(self, platform, build_jobs): ) # Test binary patch of qmake -linux_build_jobs.extend( - [ - # New output dir is shorter than the default value; qmake could fail to - # locate prefix dir if the value is patched wrong - BuildJob( - "install-qt", - "5.12.11", - "linux", - "desktop", - "gcc_64", - "gcc_64", - output_dir="/t/Q", - ), - # New output dir is longer than the default value. - # This case is meant to work without any bugfix; if this fails, the test is setup wrong - BuildJob( - "install-qt", - "5.12.11", - "linux", - "desktop", - "gcc_64", - "gcc_64", - output_dir="/some/super/long/arbitrary/path/to" * 5, - ), - ] -) +for lst, os_name, version, arch, arch_dir in ( + (linux_build_jobs, "linux", "5.12.11", "gcc_64", "gcc_64"), + (linux_arm64_build_jobs, "linux_arm64", "6.7.0", "linux_gcc_arm64", "gcc_arm64"), +): + lst.extend( + [ + # New output dir is shorter than the default value; qmake could fail to + # locate prefix dir if the value is patched wrong + BuildJob( + "install-qt", + version, + os_name, + "desktop", + arch, + arch_dir, + output_dir="/t/Q", + ), + # New output dir is longer than the default value. + # This case is meant to work without any bugfix; if this fails, the test is setup wrong + BuildJob( + "install-qt", + version, + os_name, + "desktop", + arch, + arch_dir, + output_dir="/some/super/long/arbitrary/path/to" * 5, + ), + ] + ) qt_creator_bin_path = "./Tools/QtCreator/bin/" qt_creator_mac_bin_path = "./Qt Creator.app/Contents/MacOS/" @@ -480,6 +487,9 @@ def __init__(self, platform, build_jobs): print( 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( f"##vso[task.setVariable variable=windows;isOutput=true]{json.dumps(matrices['windows'])}" ) diff --git a/tests/data/linux_arm64-desktop-expect.json b/tests/data/linux_arm64-desktop-expect.json new file mode 100644 index 00000000..4cdac533 --- /dev/null +++ b/tests/data/linux_arm64-desktop-expect.json @@ -0,0 +1,15 @@ +{ + "qt": { + "qt": [ + "6.7.0" + ], + "preview": [ + ] + }, + "tools": [ + "tools_maintenance", + "tools_ifw", + "tools_cmake", + "sdktool" + ] +} diff --git a/tests/data/linux_arm64-desktop.html b/tests/data/linux_arm64-desktop.html new file mode 100644 index 00000000..a515e7ad --- /dev/null +++ b/tests/data/linux_arm64-desktop.html @@ -0,0 +1,20 @@ + + + + Index of /online/qtsdkrepository/linux_arm64/desktop + + +

Index of /online/qtsdkrepository/linux_arm64/desktop

+ + + + + + + + + +
 NameLast modifiedSizeMetadata

 Parent Directory  -  
 tools_maintenance/19-Feb-2024 12:34 -  
 tools_ifw/19-Feb-2024 12:10 -  
 tools_cmake/15-Feb-2024 11:39 -  
 sdktool/07-Feb-2024 14:36 -  
 qt6_dev/08-Feb-2024 09:30 -  
 qt6_670/16-Feb-2024 07:43 -  

+
MirrorBrain powered by Apache
+ diff --git a/tests/test_install.py b/tests/test_install.py index 0d386f67..0aa3202a 100644 --- a/tests/test_install.py +++ b/tests/test_install.py @@ -1464,6 +1464,25 @@ def mock_extractor_that_fails(*args, **kwargs): 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( @@ -1491,7 +1510,13 @@ def test_installer_passes_base_to_metadatafactory( def mock_get_url(url: str, *args, **kwargs) -> str: # 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") # Intercept and check the base url, but only if it's not a hash. @@ -1517,4 +1542,4 @@ def mock_get_url(url: str, *args, **kwargs) -> str: sys.stdout.write(out) sys.stderr.write(err) - assert expect_out.match(err) + assert expect_out.match(err), err diff --git a/tests/test_list.py b/tests/test_list.py index fc0c5cda..9c1a6871 100644 --- a/tests/test_list.py +++ b/tests/test_list.py @@ -128,6 +128,7 @@ def spec_regex(): ("windows", "winrt", "windows-winrt.html", "windows-winrt-expect.json"), ("linux", "android", "linux-android.html", "linux-android-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", "desktop", "mac-desktop.html", "mac-desktop-expect.json"), ("mac", "ios", "mac-ios.html", "mac-ios-expect.json"), From abc34559101f0de005da7978e363ce56616e4e10 Mon Sep 17 00:00:00 2001 From: Andrew Wason Date: Wed, 6 Mar 2024 11:25:29 -0500 Subject: [PATCH 4/6] Remove arm64 qmake patch azure test --- ci/generate_azure_pipelines_matrices.py | 56 ++++++++++++------------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/ci/generate_azure_pipelines_matrices.py b/ci/generate_azure_pipelines_matrices.py index 1d5e09cf..d3dfc442 100644 --- a/ci/generate_azure_pipelines_matrices.py +++ b/ci/generate_azure_pipelines_matrices.py @@ -371,36 +371,32 @@ def __init__(self, platform, build_jobs): ) # Test binary patch of qmake -for lst, os_name, version, arch, arch_dir in ( - (linux_build_jobs, "linux", "5.12.11", "gcc_64", "gcc_64"), - (linux_arm64_build_jobs, "linux_arm64", "6.7.0", "linux_gcc_arm64", "gcc_arm64"), -): - lst.extend( - [ - # New output dir is shorter than the default value; qmake could fail to - # locate prefix dir if the value is patched wrong - BuildJob( - "install-qt", - version, - os_name, - "desktop", - arch, - arch_dir, - output_dir="/t/Q", - ), - # New output dir is longer than the default value. - # This case is meant to work without any bugfix; if this fails, the test is setup wrong - BuildJob( - "install-qt", - version, - os_name, - "desktop", - arch, - arch_dir, - output_dir="/some/super/long/arbitrary/path/to" * 5, - ), - ] - ) +linux_build_jobs.extend( + [ + # New output dir is shorter than the default value; qmake could fail to + # locate prefix dir if the value is patched wrong + BuildJob( + "install-qt", + "5.12.11", + "linux", + "desktop", + "gcc_64", + "gcc_64", + output_dir="/t/Q", + ), + # New output dir is longer than the default value. + # This case is meant to work without any bugfix; if this fails, the test is setup wrong + BuildJob( + "install-qt", + "5.12.11", + "linux", + "desktop", + "gcc_64", + "gcc_64", + output_dir="/some/super/long/arbitrary/path/to" * 5, + ), + ] +) qt_creator_bin_path = "./Tools/QtCreator/bin/" qt_creator_mac_bin_path = "./Qt Creator.app/Contents/MacOS/" From 305abad941783dcbc74e0887625f66ee777819ef Mon Sep 17 00:00:00 2001 From: Andrew Wason Date: Wed, 6 Mar 2024 13:04:28 -0500 Subject: [PATCH 5/6] Update docs --- docs/CHANGELOG.rst | 3 +++ docs/cli.rst | 32 ++++++++++++++++++++------------ docs/getting_started.rst | 10 ++++++++-- 3 files changed, 31 insertions(+), 14 deletions(-) diff --git a/docs/CHANGELOG.rst b/docs/CHANGELOG.rst index 7295bfce..7bcca513 100644 --- a/docs/CHANGELOG.rst +++ b/docs/CHANGELOG.rst @@ -13,6 +13,9 @@ All notable changes to this project will be documented in this file. `Unreleased`_ ============= +Added +----- +- Add support for arm64 architecture on linux desktop (#766) `v3.1.12`_ (2, Mar. 2024) ========================= diff --git a/docs/cli.rst b/docs/cli.rst index 756e61cc..5104d5a5 100644 --- a/docs/cli.rst +++ b/docs/cli.rst @@ -54,7 +54,7 @@ List available versions of Qt, targets, modules, and architectures. .. describe:: host - linux, windows or mac + linux, linux_arm64, windows or mac .. describe:: target @@ -177,7 +177,7 @@ List source archives available for installation using the `install-src command`_ .. describe:: host - linux, windows or mac + linux, linux_arm64, windows or mac .. describe:: Qt version @@ -217,7 +217,7 @@ installation using the `install-doc command`_, with the ``--archives`` option. .. describe:: host - linux, windows or mac + linux, linux_arm64, windows or mac .. describe:: Qt version @@ -262,7 +262,7 @@ installation using the `install-example command`_, with the ``--archives`` optio .. describe:: host - linux, windows or mac + linux, linux_arm64, windows or mac .. describe:: Qt version @@ -300,7 +300,7 @@ List available tools .. describe:: host - linux, windows or mac + linux, linux_arm64, windows or mac .. describe:: target @@ -502,7 +502,7 @@ There are various combinations to accept according to Qt version. .. 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 @@ -533,7 +533,9 @@ There are various combinations to accept according to Qt version. 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 @@ -587,7 +589,7 @@ Install Qt source code for the specified version and target. .. describe:: host - linux, windows or mac + linux, linux_arm64, windows or mac .. describe:: target @@ -647,7 +649,7 @@ Install Qt documentation for the specified version and target. .. describe:: host - linux, windows or mac + linux, linux_arm64, windows or mac .. describe:: target @@ -701,7 +703,7 @@ Install Qt examples for the specified version and target. .. describe:: host - linux, windows or mac + linux, linux_arm64, windows or mac .. describe:: target @@ -753,7 +755,7 @@ Install tools like QtIFW, mingw, Cmake, Conan, and vcredist. .. describe:: host - linux, windows or mac + linux, linux_arm64, windows or mac .. describe:: target @@ -802,8 +804,14 @@ Example: Installing the newest LTS version of Qt 5.12: .. code-block:: console 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: diff --git a/docs/getting_started.rst b/docs/getting_started.rst index 39b42518..b2d523b6 100644 --- a/docs/getting_started.rst +++ b/docs/getting_started.rst @@ -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: -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) 3. The version of Qt you would like to install 4. The target architecture @@ -99,6 +99,12 @@ instead of an explicit version: $ 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 ------------------------ @@ -458,7 +464,7 @@ probably the compiler you want to install (see `long_modules explanation`_). Now let's install ``mingw``, using the :ref:`aqt install-tool ` command. 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) 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 From b51d200c32fd948f6e918c5ecada1dc621e68161 Mon Sep 17 00:00:00 2001 From: Andrew Wason Date: Wed, 6 Mar 2024 13:17:40 -0500 Subject: [PATCH 6/6] more docs --- docs/getting_started.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/getting_started.rst b/docs/getting_started.rst index b2d523b6..ab8cde27 100644 --- a/docs/getting_started.rst +++ b/docs/getting_started.rst @@ -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 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 `. This command will print all versions of Qt available for Windows Desktop: