Comments (9)
This can be tested in an arm64 docker container running on GHA amd64 runner, it's just slower.
https://docs.docker.com/build/ci/github-actions/multi-platform/
from aqtinstall.
It makes no sense why they would organize it like this.
LOL welcome to QT, there's a lot of stuff like this at download.qt.io, unfortunately.
from aqtinstall.
Well, I got this working on amd64 and arm64
master...rectalogic:aqtinstall:arm64
But then I realized it broke all versions before 6.7.0. They changed the arch name for both amd and arm I guess.
Even the currently released aqt can't install 6.7.0 on amd64:
root@3168fc2d28f9:/# aqt install-qt linux desktop 6.7.0 -O Qt
INFO : aqtinstall(aqt) v3.1.11 on Python 3.12.1 [CPython GCC 12.2.0]
WARNING : Specified Qt version "6.7.0" did not exist when this version of aqtinstall was released. This may not install properly, but we will try our best.
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.
root@3168fc2d28f9:/# aqt list-qt linux desktop --arch 6.6.1
gcc_64 wasm_singlethread wasm_multithread
root@3168fc2d28f9:/# aqt list-qt linux desktop --arch 6.7.0
linux_gcc_64
Anyway, here were my tests running in amd64 and arm64:
$ docker run --platform linux/arm64 -it --init --rm -v $PWD:/aqt python:bookworm bash
root@3168fc2d28f9:/# venv/bin/aqt list-qt linux desktop
6.7.0
root@3168fc2d28f9:/# venv/bin/aqt list-qt linux desktop --arch 6.7.0
linux_gcc_arm64
root@3168fc2d28f9:/# venv/bin/aqt list-qt linux desktop --long-modules 6.7.0 linux_gcc_arm64
Module Name Display Name
===============================================================
debug_info Desktop arm64 Debug Information Files
qt3d Qt 3D Module for Linux arm64
...
root@3168fc2d28f9:/# venv/bin/aqt install-qt linux desktop 6.7.0 -O Qt
INFO : aqtinstall(aqt) v3.1.12.dev0 on Python 3.12.1 [CPython GCC 12.2.0]
WARNING : Specified Qt version "6.7.0" did not exist when this version of aqtinstall was released. This may not install properly, but we will try our best.
WARNING : Specified target combination "linux desktop linux_gcc_arm64" did not exist when this version of aqtinstall was released. This may not install properly, but we will try our best.
INFO : Downloading qttools...
...
INFO : Patching Qt/6.7.0/gcc_arm64/lib/libQt6QmlCompiler.prl
INFO : Finished installation
INFO : Time elapsed: 30.22630356 second
$ docker run --platform linux/amd64 -it --init --rm -v $PWD:/aqt python:bookworm bash
root@3168fc2d28f9:/# venv/bin/aqt list-qt linux desktop
5.9.0 5.9.1 5.9.2 5.9.3 5.9.4 5.9.5 5.9.6 5.9.7 5.9.8 5.9.9
5.10.0 5.10.1
5.11.0 5.11.1 5.11.2 5.11.3
5.12.0 5.12.1 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.12.10 5.12.11 5.12.12
5.13.0 5.13.1 5.13.2
5.14.0 5.14.1 5.14.2
5.15.0 5.15.1 5.15.2
6.0.0 6.0.1 6.0.2 6.0.3 6.0.4
6.1.0 6.1.1 6.1.2 6.1.3
6.2.0 6.2.1 6.2.2 6.2.3 6.2.4
6.3.0 6.3.1 6.3.2
6.4.0 6.4.1 6.4.2 6.4.3
6.5.0 6.5.1 6.5.2 6.5.3
6.6.0 6.6.1
6.7.0
root@3168fc2d28f9:/# venv/bin/aqt list-qt linux desktop --arch 6.7.0
linux_gcc_64
root@3168fc2d28f9:/# venv/bin/aqt list-qt linux desktop --long-modules 6.7.0 linux_gcc_64
Module Name Display Name
============================================================
debug_info Desktop 64 Debug Information Files
qt3d Qt 3D Module for Linux 64
...
root@3168fc2d28f9:/# venv/bin/aqt install-qt linux desktop 6.7.0 -O Qt
INFO : aqtinstall(aqt) v3.1.12.dev0 on Python 3.12.1 [CPython GCC 12.2.0]
WARNING : Specified Qt version "6.7.0" did not exist when this version of aqtinstall was released. This may not install properly, but we will try our best.
WARNING : Specified target combination "linux desktop linux_gcc_64" did not exist when this version of aqtinstall was released. This may not install properly, but we will try our best.
INFO : Downloading qtbase...
...
INFO : Patching Qt/6.7.0/gcc_64/lib/libQt6QmlCompiler.prl
INFO : Finished installation
INFO : Time elapsed: 29.12089451 second
from aqtinstall.
Great question! As this is a new feature, we don’t support it yet. Clearly, this is something we should support.
Part of the problem is that aqt is set up to look for Linux architectures in https://download.qt.io/online/qtsdkrepository/linux_x64/ alone. To support this, aqt would need to be changed to look in the neighboring folder, linux_arm64
, as well as the original folder. I suspect that a lot of code might need to change in order to get this working, because this assumption (that aqt only needs to check a single folder) exists in lots of places.
Perhaps an easier solution would be to change the list of host names. For example, you could use never mind, I don’t like that idea.aqt install|list-qt linux …
for linux_x64 hosts, and aqt install|list-qt linux_arm64 …
for the arm hosts. It’s an ugly UI, and I like it a lot less than what you’ve suggested, but the change would be a lot easier to make.
Also, testing this could be problematic because we don’t have arm64 testing environments set up anywhere.
from aqtinstall.
Support for linux arm64 gh actions runners is tracked here: actions/runner-images#5631
This feature will be a lot easier to test after 5631 is implemented
from aqtinstall.
From this code, at https://github.com/rectalogic/aqtinstall/blob/arm64/aqt/helper.py#L282-L288:
def os_arch_ext(os_name: str) -> str:
if os_name == "windows":
return "_x86"
elif os_name == "linux" and platform.machine() == "aarch64":
return "_arm64"
else:
return "_x64"
Looks like some logic is missing. Here's some pseudocode that I think might fix the issue:
if host == "linux":
if qt_version >= Version("6.7.0"):
if flavor == "arm64":
arch = "linux_gcc_arm64"
else: # flavor == "x86"
arch = "linux_gcc_64"
else:
arch = "gcc_64"
else:
# handle mac and windows
Also, please keep in mind that we try to give users the ability to install whatever they want, wherever they want it. You're allowed to install Mac binaries on a Windows or Linux machine, etc. I think this is to allow cross compilation. Checking that platform.machine() == "aarch64"
would break that.
from aqtinstall.
Hmm, so src/doc/examples are in qtsdkrepository/linux_x64/desktop/
- so will they be replicating those under qtsdkrepository/linux_arm64/desktop/
- so then we would need an arch to install src?
I think your original idea of a new host - linux
and linux_arm64
(that you didn't like) might be a much simpler way to deal with this. I guess I'll wait and see how they end up organizing all this. It makes no sense why they would organize it like this.
from aqtinstall.
I updated the patch to use linux_arm64
host:
master...rectalogic:aqtinstall:arm64
It seems OK, except when installing on arm64 it's missing a library.
root@4305faf2cd32:~# aqt install-qt linux_arm64 desktop 6.7.0 -O Qt
INFO : aqtinstall(aqt) v3.1.12.dev0 on Python 3.12.1 [CPython GCC 12.2.0]
WARNING : Specified Qt version "6.7.0" did not exist when this version of aqtinstall was released. This may not install properly, but we will try our best.
INFO : Downloading qttools...
INFO : Downloading qtbase...
...
INFO : Finished installation of qtdeclarative-Linux-Debian_11_6-GCC-Linux-Debian_11_6-AARCH64.7z in 31.16426397
Qt/6.7.0/gcc_arm64/bin/qmake: error while loading shared libraries: libdouble-conversion.so.3: cannot open shared object file: No such file or directory
INFO : Finished installation
INFO : Time elapsed: 32.54353152 second
root@4305faf2cd32:~# Qt/6.7.0/gcc_arm64/bin/qmake
Qt/6.7.0/gcc_arm64/bin/qmake: error while loading shared libraries: libdouble-conversion.so.3: cannot open shared object file: No such file or directory
root@4305faf2cd32:~# ldd Qt/6.7.0/gcc_arm64/bin/qmake
linux-vdso.so.1 (0x0000ffff8b844000)
libQt6Core.so.6 => /root/Qt/6.7.0/gcc_arm64/bin/../lib/libQt6Core.so.6 (0x0000ffff8b000000)
libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000ffff8afd0000)
libstdc++.so.6 => /lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000ffff8adb0000)
libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000ffff8ac00000)
libicui18n.so.73 => /root/Qt/6.7.0/gcc_arm64/bin/../lib/libicui18n.so.73 (0x0000ffff8a8b0000)
libicuuc.so.73 => /root/Qt/6.7.0/gcc_arm64/bin/../lib/libicuuc.so.73 (0x0000ffff8a690000)
libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000ffff8a660000)
libglib-2.0.so.0 => /lib/aarch64-linux-gnu/libglib-2.0.so.0 (0x0000ffff8a500000)
libz.so.1 => /lib/aarch64-linux-gnu/libz.so.1 (0x0000ffff8a4c0000)
libdouble-conversion.so.3 => not found
librt.so.1 => /lib/aarch64-linux-gnu/librt.so.1 (0x0000ffff8a490000)
libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000ffff8a3f0000)
libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000ffff8a3b0000)
/lib/ld-linux-aarch64.so.1 (0x0000ffff8b807000)
libicudata.so.73 => /root/Qt/6.7.0/gcc_arm64/bin/../lib/libicudata.so.73 (0x0000ffff88510000)
libpcre2-8.so.0 => /lib/aarch64-linux-gnu/libpcre2-8.so.0 (0x0000ffff88460000)
I guess the user is supposed to install this themselves? apt install libdouble-conversion3
fixed it.
from aqtinstall.
PR #765 is another attempt at supporting this, without changing the linux
host type.
from aqtinstall.
Related Issues (20)
- Feature: support "dry run" mode
- Some documentation archives not found by list-doc HOT 6
- howto list installed modules and where modules are installed HOT 1
- feature request: ability to pass custom options to 7zip
- Failed to locate XML data for the tool 'tools_openssl_x64' HOT 2
- Bundled zlib option?
- Version 5.15.11 is not available HOT 1
- On Linux, wasm installs Windows or macOs packages HOT 4
- Fails to install Qt6 6.7.0 on Linux/Ubuntu HOT 15
- Lots of QDoc Warning Messages show up when building qtcreator-docs with Qt installed by aqtinstall HOT 11
- Unable to install Android 6.7.0 HOT 12
- install-src and install-doc fail for 6.7.0 HOT 9
- aqt v3.0.2 Bug error HOT 1
- When will 3.1.13 be available on pypi? HOT 5
- Installing WebAssembly Qt 6.7.0 fails HOT 7
- CrcError during install (Qt 6.7.0) on Aliyun Server HOT 1
- pip package is missing for 3.1.14 HOT 3
- Caught CrcError, terminating installer workers HOT 3
- Bluetooth Module Missing in Qt 6.6.2 HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from aqtinstall.