Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support linux_gcc_arm64 arch in 6.7.0 via new linux_arm64 host #766

Merged
merged 6 commits into from
Apr 10, 2024

Conversation

rectalogic
Copy link
Contributor

Alternative implementation to #765
Fixes #750

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`
@ddalcino
Copy link
Contributor

ddalcino commented Mar 5, 2024

This is probably a better solution than #765. I'm sure it will be easier to maintain.

However, a few things will need to be addressed:

  • Update tests: Currently, none of our tests are doing anything to test that the linux_arm64 host works on any of the aqt list-* or install-* commands. It would be bad to merge this without adding such tests.
  • The ci/generate_combinations.py script doesn't know anything about linux_arm64, and it won't be able to make automatic changes to aqt/combinations.json on its own. Personally, I think it makes more sense to accept your aqt/combinations.json as-is than to update the script, and just wait for resolution of Topic: deprecate offline parameter validation and "combinations.json" #748, which should make combinations.json and generate_combinations.py unnecessary in the first place.
  • I'd really like to test this with the Azure pipelines, to make sure it didn't break anything. However, the pipelines appear to be broken right now and since chore: update CI execution trigger/schedule #735 I'm not sure how to trigger them to run.
  • I'd also like to see an automated end-to-end test, like the existing tests in the Azure pipeline, that installs Qt for arm and compiles a simple project. Whether we want to do that in GH Actions or an Azure pipeline is an open question.

@rectalogic
Copy link
Contributor Author

* Update tests: Currently, none of our tests are doing anything to test that the `linux_arm64` host works on any of the `aqt list-*` or `install-*` commands. It would be bad to merge this without adding such tests.

Added some tests (and some fixes for bugs the tests uncovered).

* I'd really like to test this with the Azure pipelines, to make sure it didn't break anything. However, the pipelines appear to be broken right now and since [chore: update CI execution trigger/schedule #735](https://github.com/miurahr/aqtinstall/pull/735) I'm not sure how to trigger them to run.

I added Azure pipeline support, using a docker image running emulated arm64. But this is all untested since I don't know how to trigger it either...

@miurahr miurahr self-requested a review March 6, 2024 04:24
@miurahr miurahr added the enhancement New feature or request label Mar 6, 2024
ci/generate_azure_pipelines_matrices.py Show resolved Hide resolved
ci/generate_azure_pipelines_matrices.py Outdated Show resolved Hide resolved
@ddalcino
Copy link
Contributor

ddalcino commented Mar 6, 2024

I forgot to mention, our documentation will need to be updated as well. So far, all the docs mention that the 'host' argument is only allowed to be Mac, Windows, or Linux; this won't be true anymore.

It's probably worthwhile to explain somewhere why Linux is now split between two different hosts: linux and linux_arm64, and why that isn't the case for Mac and Windows. As I understand it, after a certain version of Qt 6 (6.2 maybe?), all the Mac Qt binaries became 'universal' binaries that include both x64 and arm64. I could be wrong about that; it's been a while since I looked.

I'm not sure if there are any remaining places in the docs, or CLI help text messages, that refer to 'host' and 'operating system' interchangeably, but if there are, that should probably be cleaned up. Do linux and linux_arm64 count as different operating systems? IMHO, 'host' expresses the tuple [OS, processor architecture], and that's distinct from our 'architecture' parameter, which expresses the tuple [compiler, processor architecture]. It's a bit messy, and deserves a clear explanation of what all these terms mean.

@rectalogic
Copy link
Contributor Author

6.7 is released
https://www.qt.io/blog/qt-6.7-released

Should we merge this and do a new aqtinstall release?

@rectalogic
Copy link
Contributor Author

@miurahr can you merge this? Currently even amd64 linux 6.7.0 is not installable with aqt 3.1.12 even if you use the new arch name (linux_gcc_64 instead of gcc_64):

> aqt install-qt linux desktop 6.7.0 -O /tmp/qt
INFO    : aqtinstall(aqt) v3.1.12 on Python 3.11.8 [CPython Clang 15.0.0 (clang-1500.1.0.2.5)]
ERROR   : The packages ['qt_base'] were not found while parsing XML of package information!
==============================Suggested follow-up:==============================
* Please use 'aqt list-qt linux desktop --arch 6.7.0' to show architectures available.

> aqt install-qt linux desktop 6.7.0 linux_gcc_64 -O /tmp/qt
INFO    : aqtinstall(aqt) v3.1.12 on Python 3.11.8 [CPython Clang 15.0.0 (clang-1500.1.0.2.5)]
INFO    : Downloading qtsvg...
INFO    : Downloading qttools...
INFO    : Downloading qtdeclarative...
INFO    : Downloading qtbase...
INFO    : Redirected: qt.mirror.constant.com
INFO    : Redirected: qt.mirror.constant.com
INFO    : Redirected: qt.mirror.constant.com
INFO    : Redirected: qt.mirror.constant.com
INFO    : Finished installation of qtsvg-Linux-RHEL_8_8-GCC-Linux-RHEL_8_8-X86_64.7z in 1.18460154
INFO    : Downloading qttranslations...
INFO    : Redirected: qt.mirror.constant.com
INFO    : Finished installation of qttranslations-Linux-RHEL_8_8-GCC-Linux-RHEL_8_8-X86_64.7z in 1.32922746
INFO    : Downloading qtwayland...
INFO    : Redirected: qt.mirror.constant.com
INFO    : Finished installation of qtwayland-Linux-RHEL_8_8-GCC-Linux-RHEL_8_8-X86_64.7z in 1.12197392
INFO    : Downloading icu...
INFO    : Finished installation of qtbase-Linux-RHEL_8_8-GCC-Linux-RHEL_8_8-X86_64.7z in 4.41483796
INFO    : Redirected: qt.mirror.constant.com
INFO    : Finished installation of qttools-Linux-RHEL_8_8-GCC-Linux-RHEL_8_8-X86_64.7z in 5.18647496
INFO    : Finished installation of icu-linux-Rhel8.6-x86_64.7z in 2.62416004
INFO    : Finished installation of qtdeclarative-Linux-RHEL_8_8-GCC-Linux-RHEL_8_8-X86_64.7z in 11.03515671
ERROR   : Updater caused an IO error: [Errno 2] No such file or directory: '/tmp/qt/6.7.0/linux_gcc_64/mkspecs/qconfig.pri'

@miurahr miurahr merged commit cf4bda9 into miurahr:master Apr 10, 2024
18 checks passed
@rectalogic rectalogic deleted the arm64 branch April 11, 2024 15:11
miurahr added a commit that referenced this pull request Apr 13, 2024
Added
-----
- Add support for arm64 architecture on linux desktop (#766)

Changed
-------
- Add Qt 6.6.3 as known version (#773)

Document
--------
- Add example command line that show combinations of sub-commands (#759)

Signed-off-by: Hiroshi Miura <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Issue with linux_arm64 builds
3 participants