miurahr / aqtinstall

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

[Bug]: Missing Qt6GuiTools in QT6 package for MinGW (Windows) #793

Open pktiuk opened 3 months ago

pktiuk commented 3 months ago

Bug description

Hello,
I have 4 workflows in my CI involving QT6 on Windows:

There is a problem with QT 6.7 (win64_mingw). There is a problem only with this configuration (workflows use the same code, the same base image). I think that package may miss something.

Cmake reports Error:

 CMake Warning at C:/msys64/mingw64/share/cmake/Modules/CMakeFindDependencyMacro.cmake:76 (find_package):
  By not providing "FindQt6GuiTools.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "Qt6GuiTools", but CMake did not find one.

  Could not find a package configuration file provided by "Qt6GuiTools"
  (requested version 6.7.1) with any of the following names:

    Qt6GuiToolsConfig.cmake
    qt6guitools-config.cmake

MinGW doesn't work also with 6.5, 6.6 and 6.2 releases (so I guess all the 6.X versions are broken)

All of the logs can be found in the logs from GitHub Actions on my repository: https://github.com/AntiMicroX/antimicrox/actions/runs/9408049153/job/25915160132

Reproduction

Expected behavior

QT6 with MinGW should work like remaining variants.

aqt and python version

Python 3.11, aqt 3.1.15

Operating System

Windows

Relevant log output

No response

Code of Conduct

pzhlkj6612 commented 3 months ago

Hi! Did you try installing Qt6 MinGW with the official installer on Windows locally? If the official installation is broken, too, I think you could raise an issue on Qt's bug tracker: https://bugreports.qt.io/.

And I guess this change is not only for MinGW, but also macOS: Could NOT find EGL (missing: EGL_INCLUDE_DIR HAVE_EGL EGL_LIBRARY) - Pastebin.com.

pktiuk commented 3 months ago

Hello @pzhlkj6612 , I don't have Windows. That's why the only contact I have with this system is via runners used in Continous Integration.

pktiuk commented 3 months ago

@pzhlkj6612
Is there any official way of installing QT on windows purely by CLI? Which could be replicated inside a GitHub runner?
In such a case I could figure out whether the source of problem lies in QT or in AQT

pzhlkj6612 commented 3 months ago

@pktiuk

There might be a way to install Qt with its online installer by CLI, but I didn't succeed.

My command in PowerShell on Windows 11:

.\qt-unified-windows-x64-online.exe `
  --email '<email>' `
  --password '<password>' `
  --no-save-account `
  --accept-licenses `
  --accept-obligations `
  --default-answer `
  --confirm-command `
  install qt.qt6.671.win64_mingw 

ATTENTION: use Secrets in GitHub Actions to protect your credentials.

Always failed due to this error:

[526488] perform qt.tools.qtdesignstudio operation: Execute
[526491]        - arguments: C:\\Qt\\Tools\QtDesignStudio\bin\sdktool.exe, -s, C:\\Qt\\Tools\QtDesignStudio\share\qtcreator\\QtProject\qtdesignstudio, addTC, --id, ProjectExplorer.ToolChain.Custom:{9799e31f-e3d0-47cb-8bc1-1d0806d0ed23}, --language, C, --name, mock C compiler, --abi, x86-windows-msvc2019-pe-64bit, --path, not_existing, ProjectExplorer.CustomToolChain.TargetAbi, QString:x86-windows-msvc2019-pe-64bit, UNDOEXECUTE, {0,2}, C:\\Qt\\Tools\QtDesignStudio\bin\sdktool.exe, -s, C:\\Qt\\Tools\QtDesignStudio\share\qtcreator\\QtProject\qtdesignstudio, rmTC, --id, ProjectExplorer.ToolChain.Custom:{9799e31f-e3d0-47cb-8bc1-1d0806d0ed23}
[526645] C:\\\\Qt\\\\Tools\\QtDesignStudio\\bin\\sdktool.exe" started, arguments: "-s C:\\\\Qt\\\\Tools\\QtDesignStudio\\share\\qtcreator\\\\QtProject\\qtdesignstudio addTC --id ProjectExplorer.ToolChain.Custom:{9799e31f-e3d0-47cb-8bc1-1d0806d0ed23} --language C --name mock C compiler --abi x86-windows-msvc2019-pe-64bit --path not_existing ProjectExplorer.CustomToolChain.TargetAbi QString:x86-windows-msvc2019-pe-64bit
[529361] Warning: SOFT ASSERT [17:09:26.661]: "false" in C:\Users\qt\work\build\qt-creator\src\libs\utils\filepath.cpp:927
SOFT ASSERT [17:09:26.661]: "false" in C:\Users\qt\work\build\qt-creator\src\libs\utils\filepath.cpp:991
SOFT ASSERT [17:09:29.360]: "false" in C:\Users\qt\work\build\qt-creator\src\libs\utils\filepath.cpp:991
SOFT ASSERT [17:09:29.360]: "false" in C:\Users\qt\work\build\qt-creator\src\libs\utils\filepath.cpp:991
SOFT ASSERT [17:09:29.360]: "false" in C:\Users\qt\work\build\qt-creator\src\libs\utils\filepath.cpp:991
Error: Could not save settings C://Qt//Tools/QtDesignStudio/share/qtcreator//QtProject/qtdesignstudio/toolchains.xml.

I don't know why. I was running the installer with the Admin right.

References:

pzhlkj6612 commented 3 months ago

@pktiuk , you can try to deploy a Windows VM on Linux. Debugging build system on CI looks painful to me. If you have Windows users, making a Windows test environment may not hurt.

I've viewed the directory hierarchy of Qt 6.7.0, 6.7.1 and 6.7.2 official installations on a Windows 11:

$ find . -iname '*Qt6GuiTools*'
./6.7.0/mingw_64/lib/cmake/Qt6GuiTools
./6.7.0/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsAdditionalTargetInfo.cmake
./6.7.0/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsConfig.cmake
./6.7.0/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsConfigVersion.cmake
./6.7.0/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsConfigVersionImpl.cmake
./6.7.0/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsDependencies.cmake
./6.7.0/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsTargets-relwithdebinfo.cmake
./6.7.0/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsTargets.cmake
./6.7.0/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsVersionlessTargets.cmake
./6.7.0/msvc2019_64/lib/cmake/Qt6GuiTools
./6.7.0/msvc2019_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsAdditionalTargetInfo.cmake
./6.7.0/msvc2019_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsConfig.cmake
./6.7.0/msvc2019_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsConfigVersion.cmake
./6.7.0/msvc2019_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsConfigVersionImpl.cmake
./6.7.0/msvc2019_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsDependencies.cmake
./6.7.0/msvc2019_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsTargets-debug.cmake
./6.7.0/msvc2019_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsTargets-relwithdebinfo.cmake
./6.7.0/msvc2019_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsTargets.cmake
./6.7.0/msvc2019_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsVersionlessTargets.cmake

$ grep -rn 'Qt6GuiTools' .
./6.7.0/mingw_64/lib/cmake/Qt6Gui/Qt6GuiDependencies.cmake:36:set(__qt_Gui_tool_deps "Qt6GuiTools\;6.7.0")
./6.7.0/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsAdditionalTargetInfo.cmake:1:# Additional target information for Qt6GuiTools
./6.7.0/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsConfig.cmake:35:if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/Qt6GuiToolsDependencies.cmake")
  <more results from "Qt6GuiToolsConfig.cmake">
./6.7.0/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsConfigVersion.cmake:5:include("${CMAKE_CURRENT_LIST_DIR}/Qt6GuiToolsConfigVersionImpl.cmake")
./6.7.0/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsDependencies.cmake:5:set(Qt6GuiTools_FOUND FALSE)
./6.7.0/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsDependencies.cmake:16:set(Qt6GuiTools_FOUND TRUE)
./6.7.0/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsTargets.cmake:69:file(GLOB _cmake_config_files "${CMAKE_CURRENT_LIST_DIR}/Qt6GuiToolsTargets-*.cmake")
./6.7.0/mingw_64/lib/cmake/Qt6WidgetsTools/Qt6WidgetsToolsDependencies.cmake:6:set(__qt_WidgetsTools_tool_deps "Qt6CoreTools\;6.7.0;Qt6GuiTools\;6.7.0")
./6.7.0/msvc2019_64/lib/cmake/Qt6Gui/Qt6GuiDependencies.cmake:36:set(__qt_Gui_tool_deps "Qt6GuiTools\;6.7.0")
./6.7.0/msvc2019_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsAdditionalTargetInfo.cmake:1:# Additional target information for Qt6GuiTools
./6.7.0/msvc2019_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsConfig.cmake:35:if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/Qt6GuiToolsDependencies.cmake")
  <more results from "Qt6GuiToolsConfig.cmake">
./6.7.0/msvc2019_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsConfigVersion.cmake:5:include("${CMAKE_CURRENT_LIST_DIR}/Qt6GuiToolsConfigVersionImpl.cmake")
./6.7.0/msvc2019_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsDependencies.cmake:5:set(Qt6GuiTools_FOUND FALSE)
./6.7.0/msvc2019_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsDependencies.cmake:16:set(Qt6GuiTools_FOUND TRUE)
./6.7.0/msvc2019_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsTargets.cmake:69:file(GLOB _cmake_config_files "${CMAKE_CURRENT_LIST_DIR}/Qt6GuiToolsTargets-*.cmake")
./6.7.0/msvc2019_64/lib/cmake/Qt6WidgetsTools/Qt6WidgetsToolsDependencies.cmake:6:set(__qt_WidgetsTools_tool_deps "Qt6CoreTools\;6.7.0;Qt6GuiTools\;6.7.0")

Versions 6.7.0, 6.7.1 and 6.7.2 all have the same structure.

pktiuk commented 1 week ago

@pzhlkj6612

This is really strange: https://github.com/AntiMicroX/antimicrox/actions/runs/10945179079/job/30388800737?pr=1001

These files seem to be already placed in a proper location. Maybe I should prepare some kind of minimal reproduction.

Run find D:/a/antimicrox/antimicrox/Qt/6.4.2/ -iname '*Qt6GuiTools*'
D:/a/antimicrox/antimicrox/Qt/6.4.2/mingw_64/lib/cmake/Qt6GuiTools
D:/a/antimicrox/antimicrox/Qt/6.4.2/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsAdditionalTargetInfo.cmake
D:/a/antimicrox/antimicrox/Qt/6.4.2/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsConfig.cmake
D:/a/antimicrox/antimicrox/Qt/6.4.2/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsConfigVersion.cmake
D:/a/antimicrox/antimicrox/Qt/6.4.2/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsConfigVersionImpl.cmake
D:/a/antimicrox/antimicrox/Qt/6.4.2/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsDependencies.cmake
D:/a/antimicrox/antimicrox/Qt/6.4.2/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsTargets-relwithdebinfo.cmake
D:/a/antimicrox/antimicrox/Qt/6.4.2/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsTargets.cmake
D:/a/antimicrox/antimicrox/Qt/6.4.2/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsVersionlessTargets.cmake
-- Building for: Ninja

........

CMake Warning at C:/msys64/mingw64/share/cmake/Modules/CMakeFindDependencyMacro.cmake:76 (find_package):
  By not providing "FindQt6GuiTools.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "Qt6GuiTools", but CMake did not find one.
  Could not find a package configuration file provided by "Qt6GuiTools"
  (requested version 6.4.2) with any of the following names:
    Qt6GuiToolsConfig.cmake
    qt6guitools-config.cmake
  Add the installation prefix of "Qt6GuiTools" to CMAKE_PREFIX_PATH or set
  "Qt6GuiTools_DIR" to a directory containing one of the above files.  If
  "Qt6GuiTools" provides a separate development package or SDK, be sure it
  has been installed.
Call Stack (most recent call first):
  Qt/6.4.2/mingw_64/lib/cmake/Qt6WidgetsTools/Qt6WidgetsToolsDependencies.cmake:9 (find_dependency)
  Qt/6.4.2/mingw_64/lib/cmake/Qt6WidgetsTools/Qt6WidgetsToolsConfig.cmake:34 (include)
  Qt/6.4.2/mingw_64/lib/cmake/Qt6/QtPublicDependencyHelpers.cmake:62 (find_package)
  Qt/6.4.2/mingw_64/lib/cmake/Qt6Widgets/Qt6WidgetsDependencies.cmake:34 (_qt_internal_find_tool_dependencies)
  Qt/6.4.2/mingw_64/lib/cmake/Qt6Widgets/Qt6WidgetsConfig.cmake:40 (include)
  Qt/6.4.2/mingw_64/lib/cmake/Qt6/Qt6Config.cmake:157 (find_package)
  CMakeLists.txt:536 (find_package)
pzhlkj6612 commented 1 week ago
Run find D:/a/antimicrox/antimicrox/Qt/6.4.2/ -iname '*Qt6GuiTools*'
D:/a/antimicrox/antimicrox/Qt/6.4.2/mingw_64/lib/cmake/Qt6GuiTools/Qt6GuiToolsConfig.cmake
...
  Could not find a package configuration file provided by "Qt6GuiTools"
  (requested version 6.4.2) with any of the following names:
    Qt6GuiToolsConfig.cmake
    qt6guitools-config.cmake
  Add the installation prefix of "Qt6GuiTools" to CMAKE_PREFIX_PATH or set
  "Qt6GuiTools_DIR" to a directory containing one of the above files.  If
  "Qt6GuiTools" provides a separate development package or SDK, be sure it
  has been installed.

Look at https://github.com/AntiMicroX/antimicrox/blob/4f053c687b017a84e7eb0fde6226343139472301/.github/workflows/main.yml#L144-L150:

            - name: Configure CMake
              run: |
                find D:/a/antimicrox/antimicrox/Qt/6.4.2/ -iname '*Qt6GuiTools*'
                cmake -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} -B "${{ github.workspace }}/build" ${{ matrix.cmake-args }}
              env:
                  CMAKE_PREFIX_PATH: ${{ env.Qt5_Dir }}
                  WORKSPACE_DIR: ${{ github.workspace }}

I think you can try this:

env:
    CMAKE_PREFIX_PATH: ${{ env.Qt6_Dir }}/lib/cmake/Qt6GuiTools

Is there a GuiTools in Qt 5? I don't know.