miurahr / aqtinstall

aqt: Another (unofficial) Qt CLI Installer on multi-platforms
https://aqtinstall.readthedocs.io/en/latest/
MIT License
893 stars 83 forks source link

Error when use qmake with Qt 6 #710

Closed paulocoutinhox closed 10 months ago

paulocoutinhox commented 10 months ago

Describe the bug Hi,

Im trying use qmake with Qt 6 on Windows, but i always get error:

https://github.com/paulocoutinhox/prprojector/actions/runs/6080974346/job/16495785923#step:9:239

Can you help me understand?

To Reproduce

git clone https://github.com/paulocoutinhox/prprojector.git
cd prprojector
python3 -m pip install -r requirements.txt
python3 make.py run build-win-x64

Expected behavior

Run qmake without problems.

Desktop (please complete the following information):

ddalcino commented 10 months ago

This comes from your logs:

WARNING : Caught OSError, terminating installer workers
ERROR   : Insufficient disk space to complete installation.
==============================Suggested follow-up:==============================
* Check available disk space.
* Check size requirements for installation.

I looked at your build script briefly, and it looks like it installs all modules available. This is usually a bad idea in CI, because they take up so much space. The debuginfo module alone often takes up 10GB+ after installation, and you probably aren't using it. I recommend only installing the modules you are actually using.

I also recommend printing in your log exactly what commands you are running with aqt. It can be nearly impossible to debug aqt if we don't know what commands you're running.

EDIT oops, this comment refers to the failing win-x86 build: https://github.com/paulocoutinhox/prprojector/actions/runs/6086571995/job/16513229793#step:9:253

pzhlkj6612 commented 10 months ago

Have a glance at the code and log:

python3 make.py run build-win-arm64

...

> Validating data...
> Building Qt...

> FINISHED!
The system cannot find the path specified.
> Validating data...
> Building libraries...
> Building Qt to arch "arm64" and mode "release"...
> Generating files to arch "arm64" and mode "release"...
Traceback (most recent call last):
  File "D:\a\prprojector\prprojector\make.py", line 112, in <module>
    main(args)
  File "D:\a\prprojector\prprojector\make.py", line 95, in main
    windows.run_task_build(c.targets_win_arm64)
  File "D:\a\prprojector\prprojector\modules\windows.py", line 77, in run_task_build
    check_call(command, cwd=build_dir, shell=True)
  File "C:\hostedtoolcache\windows\Python\3.10.11\x64\lib\subprocess.py", line 369, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command 'D:\a\prprojector\prprojector\build\qt\6.5.2\msvc2019_arm64\bin\qmake -project D:\a\prprojector\prprojector\PRProjector.pro' returned non-zero exit status 1.

Hmm, you were not using python3 make.py run build-win-x64.

To see what error happens, I think you may have to replace check_call with check_output to get the output of qmake. An "exit status 1" is not helpful.

paulocoutinhox commented 10 months ago

I tried that, but the only message is this: https://github.com/paulocoutinhox/prprojector/actions/runs/6086899704/job/16514293934#step:9:239

Message: The system cannot find the path specified.

I think that the path inside qmake.bat is wrong.

ddalcino commented 10 months ago

I cannot verify this, but I have heard that qt6 windows arm64 builds require a parallel installation of the x86-64 desktop version of Qt. Maybe that accounts for the missing file path. I think we added a CLI flag (--autodesktop in #540) to solve this for wasm and android builds, but I haven't tried win-arm64 yet.

Reference: https://github.com/jurplel/install-qt-action/pull/202

paulocoutinhox commented 10 months ago

Both x64 and arm64 are with problems on Github.

Locally it build without problems: image

ddalcino commented 10 months ago

Both x64 and arm64 are with problems on Github.

Locally it build without problems:

image

This is consistent with the ideas that:

It's certainly possible that there's another explanation, but I recommend fixing these two issues first to rule them out.

ddalcino commented 10 months ago

I can confirm that there is a bug in the way aqtinstall handles the win64_msvc2019_arm64 architecture.

I installed Qt using this command:

$ aqt install-qt windows desktop 6.5.2 win64_msvc2019_arm64

... which installed this unpatched, non-functioning qmake.bat file:

$ cat 6.5.2/msvc2019_arm64/bin/qmake.bat
@echo off
\Users\qt\work\install\bin\qmake6.exe -qtconf "%~dp0\target_qt.conf" %*

I suspect that this broken qmake.bat file is the cause of the The system cannot find the path specified. error message; you certainly don't have a file at \Users\qt\work\install\bin\qmake6.exe.

Did you install Qt locally using aqtinstall, or the official Qt installer? Can you show us the contents of your 6.5.2/msvc2019_arm64/bin/qmake.bat file? I am expecting that you used the official Qt installer locally, because aqtinstall isn't capable of patching this qmake.bat file properly yet.

paulocoutinhox commented 10 months ago

Hi,

I solve the problem in Windows x64 and space problems: https://github.com/paulocoutinhox/prprojector/actions/runs/6099663521

Now only left the ARM64.

paulocoutinhox commented 10 months ago

The arm64 qmake.bat has wrong content:

INFO    : Finished installation of qtdeclarative-Windows-Windows_10_22H2-MSVC2019-Windows-Windows_10_22H2-ARM64.7z in 60.26321170
INFO    : Finished installation
INFO    : Time elapsed: 290.67859310 second

> FINISHED!
> Generating files to arch "arm64" and mode "release"...
O sistema não pode encontrar o caminho especificado.
Traceback (most recent call last):
  File "C:\Users\rebec\Developer\workspaces\cpp\prprojector\make.py", line 113, in <module>
    main(args)
  File "C:\Users\rebec\Developer\workspaces\cpp\prprojector\make.py", line 96, in main
    windows.run_task_build(c.targets_win_arm64)
  File "C:\Users\rebec\Developer\workspaces\cpp\prprojector\modules\windows.py", line 77, in run_task_build
    run(command, cwd=build_dir, shell=True, check=True)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.1520.0_x64__qbz5n2kfra8p0\Lib\subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command 'C:\Qt\6.5.2\msvc2019_arm64\bin\qmake -project C:\Users\rebec\Developer\workspaces\cpp\prprojector\PRProjector.pro' returned non-zero exit status 1.

Content:

C:\Users\rebec\Developer\workspaces\cpp\prprojector>type C:\Qt\6.5.2\msvc2019_arm64\bin\qmake.bat
@echo off
\Users\qt\work\install\bin\qmake6.exe -qtconf "%~dp0\target_qt.conf" %*

Message: The system cannot find the path specified.

In both case the only Qt on machine is installed by aqt tool.

pzhlkj6612 commented 10 months ago

@ddalcino

... I have heard that qt6 windows arm64 builds require a parallel installation of the x86-64 desktop version of Qt.

Right.

I've tried installing Qt 6.5.2 msvc2019_arm64 to "C:\Qt" with online installer 4.6.1 and found both "msvc2019_64" and "msvc2019_arm64" directories. The content of the "qmake.bat" files in "msvc2019_arm64" is:

@echo off
C:\Qt\6.5.2\msvc2019_64\bin\qmake6.exe -qtconf "%~dp0\target_qt.conf" %*

A simple list for ".exe" and ".bat" files in the "bin" directories of "msvc2019_64" and "msvc2019_arm64":

 Directory of C:\Qt\6.5.2\msvc2019_arm64\bin

07/07/2023  06:36 AM            74,240 qdbus.exe
07/07/2023  06:37 AM           292,352 qdbusviewer.exe
07/07/2023  03:56 AM            75,776 qml.exe
07/07/2023  03:56 AM           136,192 qmleasing.exe
07/07/2023  03:57 AM         2,006,528 qmlls.exe
07/07/2023  03:56 AM            98,304 qmlpreview.exe
07/07/2023  03:56 AM            56,832 qmlscene.exe
07/07/2023  06:37 AM            80,384 qtdiag.exe
07/07/2023  06:37 AM            80,384 qtdiag6.exe
07/07/2023  06:36 AM            27,136 qtplugininfo.exe

09/07/2023  01:18 AM                85 qmake.bat
09/07/2023  01:18 AM                85 qmake6.bat
09/07/2023  01:18 AM               493 qt-cmake-private.bat
07/06/2023  12:48 PM               217 qt-cmake-standalone-test.bat
09/07/2023  01:18 AM               471 qt-cmake.bat
07/06/2023  12:48 PM             1,106 qt-configure-module.bat
07/06/2023  12:48 PM               960 qt-internal-configure-tests.bat
09/07/2023  01:18 AM                87 qtpaths.bat
09/07/2023  01:18 AM                87 qtpaths6.bat
              19 File(s)      2,931,719 bytes
               0 Dir(s)  22,529,896,448 bytes free

 Directory of C:\Qt\6.5.2\msvc2019_64\bin

07/06/2023  12:06 PM           242,832 androiddeployqt.exe
07/06/2023  12:06 PM           242,832 androiddeployqt6.exe
07/06/2023  12:06 PM            76,432 androidtestrunner.exe
07/07/2023  06:31 AM         1,591,952 assistant.exe
07/06/2023  12:06 PM           923,280 cmake_automoc_parser.exe
07/07/2023  06:31 AM           660,624 designer.exe
07/07/2023  06:31 AM           291,984 lconvert.exe
07/07/2023  06:31 AM         1,085,584 linguist.exe
07/07/2023  06:31 AM           404,624 lprodump.exe
07/07/2023  06:31 AM            49,296 lrelease-pro.exe
07/07/2023  06:31 AM           306,320 lrelease.exe
07/07/2023  06:31 AM            49,296 lupdate-pro.exe
07/07/2023  06:31 AM        23,290,512 lupdate.exe
07/06/2023  12:06 PM         1,284,240 moc.exe
07/07/2023  06:31 AM            70,288 pixeltool.exe
07/07/2023  06:31 AM            84,624 qdbus.exe
07/06/2023  12:06 PM           267,408 qdbuscpp2xml.exe
07/07/2023  06:31 AM           303,248 qdbusviewer.exe
07/06/2023  12:06 PM            97,424 qdbusxml2cpp.exe
07/07/2023  06:31 AM           198,288 qdistancefieldgenerator.exe
07/07/2023  06:31 AM        43,228,816 qdoc.exe
07/07/2023  06:31 AM           187,536 qhelpgenerator.exe
07/06/2023  12:07 PM           130,704 qlalr.exe
07/06/2023  12:07 PM         1,458,320 qmake.exe
07/06/2023  12:07 PM         1,458,320 qmake6.exe
07/07/2023  02:38 AM            90,768 qml.exe
07/07/2023  02:38 AM            58,000 qmlcachegen.exe
07/07/2023  02:38 AM         1,956,496 qmldom.exe
07/07/2023  02:38 AM           153,744 qmleasing.exe
07/07/2023  02:38 AM         1,960,080 qmlformat.exe
07/07/2023  02:38 AM           134,288 qmlimportscanner.exe
07/07/2023  02:38 AM            93,328 qmllint.exe
07/07/2023  02:38 AM         2,210,960 qmlls.exe
07/07/2023  02:38 AM           199,824 qmlplugindump.exe
07/07/2023  02:38 AM           119,440 qmlpreview.exe
07/07/2023  02:38 AM           218,256 qmlprofiler.exe
07/07/2023  02:38 AM            74,384 qmlscene.exe
07/07/2023  02:38 AM           578,192 qmltc.exe
07/07/2023  02:38 AM            24,208 qmltestrunner.exe
07/07/2023  02:38 AM            45,200 qmltime.exe
07/07/2023  02:38 AM           187,024 qmltyperegistrar.exe
07/07/2023  06:31 AM           116,880 qtattributionsscanner.exe
07/07/2023  06:31 AM            92,304 qtdiag.exe
07/07/2023  06:31 AM            92,304 qtdiag6.exe
07/06/2023  12:07 PM            91,792 qtpaths.exe
07/06/2023  12:07 PM            91,792 qtpaths6.exe
07/07/2023  06:31 AM            41,104 qtplugininfo.exe
07/06/2023  12:07 PM            72,848 qvkgen.exe
07/06/2023  12:07 PM           137,872 rcc.exe
07/06/2023  12:07 PM           587,408 syncqt.exe
07/06/2023  12:07 PM           904,336 tracegen.exe
07/06/2023  12:07 PM           860,304 tracepointgen.exe
07/06/2023  12:07 PM           482,448 uic.exe
07/06/2023  12:07 PM           247,952 windeployqt.exe
07/06/2023  12:07 PM           247,952 windeployqt6.exe

07/06/2023  11:49 AM               481 qt-cmake-private.bat
07/06/2023  11:49 AM               217 qt-cmake-standalone-test.bat
07/06/2023  11:49 AM               459 qt-cmake.bat
07/06/2023  11:49 AM             1,106 qt-configure-module.bat
07/06/2023  11:49 AM               960 qt-internal-configure-tests.bat
09/07/2023  01:18 AM               200 qtenv2.bat
              61 File(s)     90,159,695 bytes
               0 Dir(s)  22,529,896,448 bytes free
ddalcino commented 10 months ago

Do you think we could change the title of this issue to something more like 'errors installing Qt 6 with arch=win64_msvc2019_arm64', or similar? That's the real bug here, and making the title more specific will make this problem much easier to track in the future.

ddalcino commented 10 months ago

@paulocoutinhox, can you try using #711? If I understand the problem correctly, this PR should fix your arm64 build. Just make sure to add the --autodesktop flag when you run aqt install-qt.

ddalcino commented 10 months ago

@paulocoutinhox, can you try using #711? If I understand the problem correctly, this PR should fix your arm64 build. Just make sure to add the --autodesktop flag when you run aqt install-qt.

Ok, I got tired of waiting for a response to see if my PR works for your project, so I answered it myself. The short answer is, yes, it will work for your project. However, you need to make some changes to the project to get your CI builds to work. Please see CI run: https://github.com/ddalcino/prprojector/actions/runs/6132364215/job/16643166565

Necessary changes:

Optional change (I don't know if this is necessary, but I don't care because it cuts build time in half):

Please see https://github.com/paulocoutinhox/prprojector/compare/master...ddalcino:prprojector:master for a working example of these changes.

My branch does not do anything about windeployqt, and in fact my CI build fails because windeployqt is missing, but that's beyond the scope of this issue. There will be a copy installed at C:\Qt\6.5.2\msvc2019_64\bin\windeployqt, but I don't know if that will work for arm64 builds. If you need an arm64 version of windeployqt, you may need to contact the Qt maintainers. aqtinstall can only deliver binaries hosted at download.qt.io, and it doesn't appear to be present there.

paulocoutinhox commented 10 months ago

Thanks. Here in Brazil it was a national holiday, so we stopped for a few days. I saw your PR, but it turned out that I removed support for Windows ARM64, because as you said, it doesn't have windeployqt which is necessary to automatically copy everything needed for the final .EXE to work.

pzhlkj6612 commented 9 months ago

@paulocoutinhox fwiw, you may have a look at QuasarApp/CQtDeployer. This project claims to support ARM64.