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

Fix WASM #846

Merged
merged 55 commits into from
Jan 6, 2025
Merged

Fix WASM #846

merged 55 commits into from
Jan 6, 2025

Conversation

Kidev
Copy link
Contributor

@Kidev Kidev commented Dec 5, 2024

Description

  • Fix install-qt Qt WASM packages for Qt versions 6.7.0 and above
kidev:~$ aqt install-qt all_os wasm 6.8.1 wasm_singlethread --autodesktop --modules qtquick3d qtshadertools
  • Fix list-qt for Qt WASM packages for Qt versions 6.7.0 and above
kidev:~$ aqt list-qt all_os wasm --arch 6.7.3
wasm_singlethread wasm_multithread
  • Handle the specificity of Qt versions 6.7.0 and above while remaining backward compatible
kidev:~$ aqt install-qt windows desktop 6.7.3 win64_llvm_mingw
kidev:~$ aqt install-qt windows desktop 6.8.0 win64_llvm_mingw
kidev:~$ aqt install-qt windows android 6.7.0 android_arm64_v8a
  • Fix crash and issues with the new Qt version notation
>>> get_semantic_version('51212', False)
Version('5.12.12')
>>> get_semantic_version('600', False)
Version('6.0.0')
>>> get_semantic_version('6_7_3', False)
Version('6.7.3')
  • Adds tests for get_semantic_version, WASM Qt 6.7.3+ and Qt 6.8.0+
  • Make CI use Qt 6.8.0+ and test it in priority in addition to previous versions
  • Make CI use a version of EMSDK & MSVC matching the Qt version being built
  • Make CI use C++20 for relevant Qt versions
  • Update help commands to match the latest version
  • Added comments on obscure functions to make the code easier to follow

Note

For those using jurplel/install-qt-action, until the current PR and this PR are merged, you can use my Action on the market here, and you can use my aqtinstall fork by using the following configuration directly as is:

- name: Install Qt for host architecture
  uses: Kidev/[email protected]
  with:
    version: '6.8.1'
    host: 'all_os'
    target: 'wasm'
    arch: 'wasm_singlethread'
    set-env: 'true'
    modules: 'qtquick3d'
    aqtsource: 'git+https://github.com/Kidev/aqtinstall.git@wasm'
    extra: '--autodesktop'

You can check the successful deploy with Qt WASM 6.8.1 on a project of mine here that is using this config

Once the PRs are merged, you'll be able to use the official one:

- name: Install Qt for host and WASM
  uses: jurplel/install-qt-action@v4.?.?
  with:
    version: '6.8.1'
    host: 'all_os'
    target: 'wasm'
    arch: 'wasm_singlethread'
    modules: 'all'

Fix #779 fix #774 and more

@Kidev
Copy link
Contributor Author

Kidev commented Dec 12, 2024

get_semantic_version is now consistent with preview versions naming, and have the correct error raised with the correct error message

# Before PR (current master branch version)
get_semantic_version('51212', False) -> '5.12.12'
get_semantic_version('600', False) -> '6.0.0'
get_semantic_version('6_7_3', False) -> None
get_semantic_version('51212', True) -> '5.1212-preview'
get_semantic_version('600', True) -> '6.0-preview'
get_semantic_version('6_7_3', True) -> None

# Before commit c4ce9f0
get_semantic_version('51212', False) -> '5.12.12'
get_semantic_version('600', False) -> '6.0.0'
get_semantic_version('6_7_3', False) -> '6.7.3'
get_semantic_version('51212', True) -> None
get_semantic_version('600', True) -> None
get_semantic_version('6_7_3', True) -> None

# Now
get_semantic_version('51212', False) -> '5.12.12'
get_semantic_version('600', False) -> '6.0.0'
get_semantic_version('6_7_3', False) -> '6.7.3'
get_semantic_version('51212', True) -> '5.1212-preview'
get_semantic_version('600', True) -> '6.0-preview'
get_semantic_version('6_7_3', True) -> '6.73-preview'

@miurahr
Copy link
Owner

miurahr commented Dec 12, 2024

Could you add a test case for wasm 6.7.3 and 6.8.0 in the test code?
https://github.com/miurahr/aqtinstall/blob/master/tests/test_list.py#L426

Also, could you update the CI variation?
https://github.com/miurahr/aqtinstall/blob/master/ci/generate_azure_pipelines_matrices.py#L217
Currently checks Qt 6.4.x and 6.5.x with emsdk 3.1.x

@miurahr
Copy link
Owner

miurahr commented Dec 12, 2024

Is it possible to add a unit test for the get_semantic_version to check values you notified?

get_semantic_version is now consistent with preview versions naming, and have the correct error raised with the correct error message

get_semantic_version('51212', False) -> '5.12.12'
get_semantic_version('600', False) -> '6.0.0'
get_semantic_version('6_7_3', False) -> '6.7.3'
get_semantic_version('51212', True) -> '5.1212-preview'
get_semantic_version('600', True) -> '6.0-preview'
get_semantic_version('6_7_3', True) -> '6.73-preview'

The chunk you added is not tested, on test coverage visualization on coveralls.io service.
https://coveralls.io/builds/71332638/source?filename=aqt%2Fmetadata.py#L187

@miurahr
Copy link
Owner

miurahr commented Dec 12, 2024

Please confirm the coverage of your additions also for archives.py. That is why I asked to add test case for both 6.7.3 and 6.8.0.
https://coveralls.io/builds/71332638/source?filename=aqt%2Farchives.py#L390

@miurahr
Copy link
Owner

miurahr commented Dec 13, 2024

Also, could you update the CI variation? https://github.com/miurahr/aqtinstall/blob/master/ci/generate_azure_pipelines_matrices.py#L217 Currently checks Qt 6.4.x and 6.5.x with emsdk 3.1.x

From my short research, Qt LTS under the support duration is version 6.5.x and 6.8.x. It may be better to check these two on CI.

@Kidev
Copy link
Contributor Author

Kidev commented Dec 13, 2024

Working on it!

MaintenanceTool useful commands

For reference, some useful commands for the MaintenanceTool binary of Qt:

# List extensions for version 6.8.0 (to add to the expect json after 6.8.0 included since those are listed in the list-qt modules utility)
./MaintenanceTool search 'extensions.*.680$'

# List addons for version 6.7.3
./MaintenanceTool search '.*673.addons' 

Sadly this seem to not be able to install for other arch than the one running the CLI

Note

I wrote this scrap tool to print the qtsdkrepository repository in a tree format, very nice to list addons, builds and so on for each arch. The usage in the gist is to list extensions for each arch, but its simple and documented, so it's easy to scrap whatever with it

Relative to Qt LTS

Show Qt LTS timeline chart

6.5 LTS seems supported only for commercial users now 12

And according to a recent article from Qt3, they will extend their commercial LTS support to 5 years but will stop doing it for open source users. They will support extensions using another model (explaining the recent repo changes I guess, since they will decouple Qt version from the extensions versions).

Warning

It seems that Qt LTS versions will only be for commercial users from now on

So maybe supporting only the latest Qt LTS commercial version (current is 6.8) is not a bad idea going forward

Footnotes

  1. endoflife.date/qt

  2. Extended lifetime for Qt 5.15

  3. Ensuring Product Longevity With Qt Long-Term Support:

@Kidev
Copy link
Contributor Author

Kidev commented Dec 15, 2024

Done. The tests now install and checks Qt 6.8.1 with mprofile, I've added tests for the latests and special WASM versions (6.7.3, 6.8.1), and most importantly completely rewrote my approach. I chose to stick to the Qt team's logic rather than trying to create an impression of continuity. Since 6.7.x, Qt decided that WASM was host=all_os target=wasm, so be it. Still need to update the azure CI to match your request, fix a little URL issue with Qt 6.7.x that will remain a special case, a liminal Qt WASM version.

Show console commands, the new help text, examples...
kidev:~$ aqt list-qt all_os wasm --arch 6.8.1 
wasm_singlethread wasm_multithread

kidev:~$ aqt list-qt all_os wasm --arch 6.7.3
wasm_singlethread wasm_multithread

kidev:~$ aqt install-qt all_os wasm 6.7.3 wasm_singlethread
INFO    : aqtinstall(aqt) v0.1.dev1822 on Python 3.12.7 [CPython GCC 14.2.1 20240910]
WARNING : You are installing the Qt6-WASM version of Qt, which requires that the desktop version of Qt is also installed. You can install it with the following command:
          `aqt install-qt linux desktop 6.7.3 linux_gcc_64`
INFO    : Downloading qttools...
INFO    : Downloading qtbase...
INFO    : Downloading qtsvg...

kidev:~$ aqt list-qt -h
usage: aqt list-qt [-h] [--extension {,armv7,x86_64,wasm,x86,src_doc_examples,arm64_v8a,wasm_singlethread,wasm_multithread}] [--spec SPECIFICATION]
                   [--modules (VERSION | latest) ARCHITECTURE | --long-modules (VERSION | latest) ARCHITECTURE | --extensions (VERSION | latest) | --arch (VERSION | latest) | --latest-version | --archives ARCHIVES [ARCHIVES ...]]
                   {linux,linux_arm64,mac,windows,windows_arm64,all_os} [{desktop,winrt,android,ios,wasm}]

positional arguments:
  {linux,linux_arm64,mac,windows,windows_arm64,all_os}
                        host os name
  {desktop,winrt,android,ios,wasm}
                        Target SDK. When omitted, this prints all the targets available for a host OS.

options:
  -h, --help            show this help message and exit
  --extension {,armv7,x86_64,wasm,x86,src_doc_examples,arm64_v8a,wasm_singlethread,wasm_multithread}
                        Deprecated since aqt v3.1.0. Use of this flag will emit a warning, but will otherwise be ignored.
  --spec SPECIFICATION  Filter output so that only versions that match the specification are printed. IE: `aqt list-qt windows desktop --spec "5.12"` prints all versions beginning with 5.12
  --modules (VERSION | latest) ARCHITECTURE
                        First arg: Qt version in the format of "5.X.Y", or the keyword "latest". Second arg: an architecture, which may be printed with the "--arch" flag. When set, this prints all the modules available for either Qt
                        5.X.Y or the latest version of Qt.
  --long-modules (VERSION | latest) ARCHITECTURE
                        First arg: Qt version in the format of "5.X.Y", or the keyword "latest". Second arg: an architecture, which may be printed with the "--arch" flag. When set, this prints a table that describes all the modules
                        available for either Qt 5.X.Y or the latest version of Qt.
  --extensions (VERSION | latest)
                        Deprecated since v3.1.0. Prints a list of valid arguments for the '--extension' flag. Since the '--extension' flag is now deprecated, this will always print an empty list.
  --arch (VERSION | latest)
                        Qt version in the format of "5.X.Y", or the keyword "latest". When set, this prints all architectures available for either Qt 5.X.Y or the latest version of Qt.
  --latest-version      print only the newest version available
  --archives ARCHIVES [ARCHIVES ...]
                        print the archives available for Qt base or modules. If two arguments are provided, the first two arguments must be 'VERSION | latest' and 'ARCHITECTURE', and this command will print all archives associated with
                        the base Qt package. If more than two arguments are provided, the remaining arguments will be interpreted as modules, and this command will print all archives associated with those modules. At least two arguments
                        are required.

Examples:
$ aqt list-qt mac                                                # print all targets for Mac OS
$ aqt list-qt mac desktop                                        # print all versions of Qt 5
$ aqt list-qt mac desktop --spec "5.9"                           # print all versions of Qt 5.9
$ aqt list-qt mac desktop --spec "5.9" --latest-version          # print latest Qt 5.9
$ aqt list-qt mac desktop --modules 5.12.0 clang_64              # print modules for 5.12.0
$ aqt list-qt mac desktop --spec 5.9 --modules latest clang_64   # print modules for latest 5.9
$ aqt list-qt mac desktop --arch 5.9.9                           # print architectures for 5.9.9/mac/desktop
$ aqt list-qt mac desktop --arch latest                          # print architectures for the latest Qt 5
$ aqt list-qt mac desktop --archives 5.9.0 clang_64              # list archives in base Qt installation
$ aqt list-qt mac desktop --archives 5.14.0 clang_64 debug_info  # list archives in debug_info module
$ aqt list-qt all_os wasm --arch 6.7.3                           # print architectures for Qt WASM 6.7.3

kidev:~$ aqt install-qt -h
usage: aqt install-qt [-h] [-O [OUTPUTDIR]] [-b [BASE]] [--timeout [TIMEOUT]] [-E [EXTERNAL]] [--internal] [-k] [-d ARCHIVE_DEST] [-m [MODULES ...]] [--archives [ARCHIVES ...]] [--noarchives] [--autodesktop]
                      {linux,linux_arm64,mac,windows,windows_arm64,all_os} {desktop,winrt,android,ios,wasm,qt} (VERSION | SPECIFICATION) [arch]

Install Qt.

positional arguments:
  {linux,linux_arm64,mac,windows,windows_arm64,all_os}
                        host os name
  {desktop,winrt,android,ios,wasm,qt}
                        Target SDK
  (VERSION | SPECIFICATION)
                        Qt version in the format of "5.X.Y" or SimpleSpec like "5.X" or "<6.X"
  arch                  
                        target linux/desktop: gcc_64, wasm_32
                        target mac/desktop:   clang_64, wasm_32
                        target mac/ios:       ios
                        windows/desktop:      win64_msvc2019_64, win32_msvc2019
                                              win64_msvc2017_64, win32_msvc2017
                                              win64_msvc2015_64, win32_msvc2015
                                              win64_mingw81, win32_mingw81
                                              win64_mingw73, win32_mingw73
                                              win32_mingw53
                                              wasm_32
                        windows/winrt:        win64_msvc2019_winrt_x64, win64_msvc2019_winrt_x86
                                              win64_msvc2017_winrt_x64, win64_msvc2017_winrt_x86
                                              win64_msvc2019_winrt_armv7
                                              win64_msvc2017_winrt_armv7
                        android:              Qt 5.14:          android (optional)
                                              Qt 5.13 or below: android_x86_64, android_arm64_v8a
                                                                android_x86, android_armv7
                        target all_os/wasm:   wasm_singlethread, wasm_multithread

options:
  -h, --help            show this help message and exit
  -O [OUTPUTDIR], --outputdir [OUTPUTDIR]
                        Target output directory(default current directory)
  -b [BASE], --base [BASE]
                        Specify mirror base url such as http://mirrors.ocf.berkeley.edu/qt/, where 'online' folder exist.
  --timeout [TIMEOUT]   Specify connection timeout for download site.(default: 5 sec)
  -E [EXTERNAL], --external [EXTERNAL]
                        Specify external 7zip command path.
  --internal            Use internal extractor.
  -k, --keep            Keep downloaded archive when specified, otherwise remove after install
  -d ARCHIVE_DEST, --archive-dest ARCHIVE_DEST
                        Set the destination path for downloaded archives (temp directory by default).
  -m [MODULES ...], --modules [MODULES ...]
                        Specify extra modules to install
  --archives [ARCHIVES ...]
                        Specify subset of archives to install. Affects the base module and the debug_info module. (Default: all archives).
  --noarchives          No base packages; allow mod amendment with --modules option.
  --autodesktop         For Qt6 android, ios, wasm, and msvc_arm64 installations, an additional desktop Qt installation is required. When enabled, this option installs the required desktop version automatically. It has no effect when the desktop installation is not required.

It is much more consistent with the current code and logic of aqt, adds much less magic branches with random versions, and uses more of the existing code architecture.

It is also more explicit that Qt requires another version when using WASM. The usage of --autodesktop is much more intuitive, since we do not install Qt for a random OS when installing for WASM, but just for WASM. --autodesktop installs Qt for the current OS as host, and desktop target.

Note

For the users of Install Qt, to install Qt for WASM and with the current runner OS as host:

- name: Install Qt for host and WASM
  uses: jurplel/[email protected]
  with:
    version: '6.8.1'
    host: 'all_os'
    target: 'wasm'
    arch: 'wasm_singlethread'
    modules: 'all'
    extra: '--autodesktop'

@Kidev
Copy link
Contributor Author

Kidev commented Dec 16, 2024

Moved to latest version as described in previous comment. I'm not very familiar with Azure CI so we'll see. Otherwise, tox returns a 100% tests passing, and I added the tests requested.

@@ -435,7 +478,6 @@ def expected_windows_desktop_plus_wasm_5140(is_wasm_threaded: bool) -> Dict:
("--modules 5.14.0 win64_msvc2017_64", False, ["modules_by_arch", "win64_msvc2017_64"]),
("--modules 6.5.0 wasm_singlethread", True, ["modules_by_arch", "wasm_singlethread"]),
("--modules 6.5.0 wasm_multithread", True, ["modules_by_arch", "wasm_multithread"]),
("--arch latest", True, ["architectures"]),
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This used to work, but now it refers to 6.8.1, where there are less archs available when going to all_os wasm: only wasm_singlethread wasm_multithread, and this was still excepting the other standard archs. Hence the removal. Tell me if I missed something and that it should be kept

@Kidev
Copy link
Contributor Author

Kidev commented Dec 16, 2024

@miurahr Please review my changes to the tests.
I'll also happily take critics for the changes done to generate_azure_pipelines_matrices.py as I am not very familiar with Azure CI

Important

Most (if not all) check errors are due to the bug on master that we discussed here, my mitigation was too weak (testing for target != 'wasm' worked but only on my set of tests). Should be an easy fix though.

A merge of #852 into master would also solve this once I sync my PR.

Kidev and others added 7 commits December 16, 2024 14:55
for example with windows desktop 6.8.1 win64_msvc2022_arm64_cross_compiled
both qtwebengine and qtpdf don't exist.

Signed-off-by: Alexandre 'Kidev' Poumaroux <[email protected]>
Signed-off-by: Alexandre 'Kidev' Poumaroux <[email protected]>
Signed-off-by: Alexandre 'Kidev' Poumaroux <[email protected]>
@Kidev
Copy link
Contributor Author

Kidev commented Dec 16, 2024

Ok so it was not only the issue of the extensions. Looks like --autodesktop creates the wrong URL for the host: since 6.8, the version folder is doubled: /qt6_681/qt6_681/. Fixing it

@Kidev
Copy link
Contributor Author

Kidev commented Dec 24, 2024

There was a mistake in the autodesktop logic. It's all fixed, and the output log while installing with --autodesktop is much more clear about what it is doing

kidev:~$ aqt install-qt all_os wasm 6.8.0 wasm_singlethread -m qtcharts qtquick3d --autodesktop
INFO    : aqtinstall(aqt) v0.1.dev1895 on Python 3.12.7 [CPython GCC 14.2.1 20240910]
INFO    : You are installing the Qt6-WASM version of Qt
INFO    : Downloading qtsvg...
INFO    : Finished installation of qtbase-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z in 1.47429098
INFO    : Downloading qtdeclarative...
...
INFO    : Finished installation of qttranslations-Windows-Windows_10_22H2-Clang-Windows-WebAssembly-X86_64.7z in 29.81369975
INFO    : Patching /home/kidev/Work/perso/github/aqtinstall/6.8.0/wasm_singlethread/bin/qmake
...
INFO    : 
INFO    : Autodesktop will now install linux desktop 6.8.0 linux_gcc_64 as required by Qt6-WASM
INFO    : aqtinstall(aqt) v0.1.dev1895 on Python 3.12.7 [CPython GCC 14.2.1 20240910]
INFO    : Found extension qtwebengine
INFO    : Found extension qtpdf
INFO    : Downloading qtsvg...
...
INFO    : Finished installation of qtsvg-Linux-RHEL_8_8-GCC-Linux-RHEL_8_8-X86_64.7z in 0.55990804
INFO    : Finished installation of qtcharts-Linux-RHEL_8_8-GCC-Linux-RHEL_8_8-X86_64.7z in 0.62825039
INFO    : Finished installation of icu-linux-Rhel8.6-x86_64.7z in 0.91268714
INFO    : Finished installation of qtdeclarative-Linux-RHEL_8_8-GCC-Linux-RHEL_8_8-X86_64.7z in 7.66840250
INFO    : Patching /home/kidev/Work/perso/github/aqtinstall/6.8.0/gcc_64/bin/qmake
/Work/perso/github/aqtinstall/6.8.0/gcc_64/lib/libQt6QuickWidgets.prl
...
INFO    : Finished installation
INFO    : Time elapsed: 9.64619071 second

tests/test_install.py Fixed Show fixed Hide fixed
Copy link
Contributor Author

@Kidev Kidev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requested changes made, added requested tests, all checks and tests pass

@vkuznetsovgn
Copy link

vkuznetsovgn commented Jan 2, 2025

Hi @Kidev .

Thanks for your work!

I'm currently testing your PR. Everything is going great except I cannot figure out how to install WASM now for Qt 6.6 and lower?

When I'm running the command from the doc aqt list-qt linux desktop --arch 6.6.3 it gives me only gcc_64.
However, the same command from the main branch gives me gcc_64 wasm_singlethread wasm_multithread.

@Kidev
Copy link
Contributor Author

Kidev commented Jan 2, 2025

Hi @Kidev .

Thanks for your work!

I'm currently testing your PR. Everything is going great except I cannot figure out how to install WASM now for Qt 6.6 and lower?

When I'm running the command from the doc aqt list-qt linux desktop --arch 6.6.3 it gives me only gcc_64.

However, the same command from the main branch gives me gcc_64 wasm_singlethread wasm_multithread.

Hm weird, nice catch, I'm going to check and fix that this week probably. It should still work to install it the old way though since there are tests passing on old wasm version iirc

Edit: aqt install-qt linux desktop 6.5.0 wasm_multithread --autodesktop
This works in test suite and should work with 6.6.3

@miurahr
Copy link
Owner

miurahr commented Jan 3, 2025

Dear @Kidev and @vkuznetsovgn
Thank you for the hard work and the review efforts.

The code quality looks good for merge, and there is also good coverage.

I'm currently testing your PR. Everything is going great except I cannot figure out how to install WASM now for Qt 6.6 and lower?

When I'm running the command from the doc aqt list-qt linux desktop --arch 6.6.3 it gives me only gcc_64. However, the same command from the main branch gives me gcc_64 wasm_singlethread wasm_multithread.

Actually there are three WASM related folders on download.qt.io site.
You can observe folders on https://download.qt.io/online/qtsdkrepository/linux_x64/desktop/

  • qt6_663
  • qt6_663_wasm_singlethread
  • qt6_663_wasm_multithread

It is why main branch report three.

I think it is not a problem the WASM branch, here, report only gcc_64, if a command like $ aqt list-qt all_os wasm --arch 6.6.3 reports these two WASM related names as same as version 6.7.3 @Kidev suggested, because these two are valuable only for a WASM installation.

sorry I don't test the command line suggested.

@vkuznetsovgn
Copy link

Hi @Kidev .

aqt install-qt linux desktop 6.6.3 wasm_multithread --autodesktop indeed works.

Hi @miurahr.

aqt list-qt all_os wasm --arch 6.6.3 outputs

ERROR   : No architectures available for this request.

I believe it's something with list-qt command only then.

@Kidev
Copy link
Contributor Author

Kidev commented Jan 5, 2025

There is indeed an issue with versions 6.5.x and 6.6.x not reporting wasm_* in desktop while fetching archs. I located the issue and I'm fixing it. It is indeed just an issue on the list-qt. About the fact that aqt list-qt all_os wasm --arch 6.6.3 outputs an error, this is expected, as the "all_os" OS target exists only for versions 6.7.x+

Copy link
Contributor Author

@Kidev Kidev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed list-qt issues for WASM on versions 6.5.x and 6.6.x, and added comment in the CI settings ini file to make it clear why it is a third party mirror that is used

@miurahr
Copy link
Owner

miurahr commented Jan 6, 2025

I would like to merge it as squashed commit.

@miurahr miurahr merged commit a09b5ce into miurahr:master Jan 6, 2025
60 checks passed
@miurahr
Copy link
Owner

miurahr commented Jan 6, 2025

Great appreciation for the hard work @Kidev !!

@Kidev
Copy link
Contributor Author

Kidev commented Jan 6, 2025

Great appreciation for the hard work @Kidev !!

Happy to help on such a nice and useful tool ! :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Installing WebAssembly Qt 6.7.0 fails Unable to install Android 6.7.0
5 participants