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

[qt5] MinGW build fixes #29505

Merged
merged 6 commits into from
Feb 22, 2023
Merged

[qt5] MinGW build fixes #29505

merged 6 commits into from
Feb 22, 2023

Conversation

koprok
Copy link
Contributor

@koprok koprok commented Feb 7, 2023

  • Changes comply with the maintainer guide
  • SHA512s are updated for each updated download
  • The "supports" clause reflects platforms that may be fixed by this new version
  • Any fixed CI baseline entries are removed from that file.
  • Any patches that are no longer applied are deleted from the port's directory.
  • The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
  • Only one version is added to each modified port's versions file.

github-actions[bot]
github-actions bot previously approved these changes Feb 7, 2023
Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

You have modified or added at least one portfile where deprecated functions are used.

If you feel able to do so, please consider migrating them to the new functions:
vcpkg_install_cmake -> vcpkg_cmake_install (from port vcpkg-cmake)
vcpkg_build_cmake -> vcpkg_cmake_build (from port vcpkg-cmake)
vcpkg_configure_cmake -> vcpkg_cmake_configure (Please remove the option PREFER_NINJA) (from port vcpkg-cmake)
vcpkg_fixup_cmake_targets -> vcpkg_cmake_config_fixup (from port vcpkg-cmake-config)
vcpkg_extract_source_archive_ex -> vcpkg_extract_source_archive
vcpkg_build_msbuild -> vcpkg_install_msbuild
vcpkg_copy_tool_dependencies -> vcpkg_copy_tools
vcpkg_apply_patches should be replaced by the PATCHES arguments to the "extract" helpers (e.g. vcpkg_from_github())

In the ports that use the new function, you have to add the corresponding dependencies:

{
  "name": "vcpkg-cmake",
  "host": true
},
{
  "name": "vcpkg-cmake-config",
  "host": true
}

The following files are affected:

  • ports/qt5-base/portfile.cmake

@koprok koprok marked this pull request as ready for review February 7, 2023 20:02
@FrankXie05 FrankXie05 added the category:port-feature The issue is with a library, which is requesting new capabilities that didn’t exist label Feb 8, 2023
FrankXie05
FrankXie05 previously approved these changes Feb 8, 2023
@FrankXie05 FrankXie05 added the info:reviewed Pull Request changes follow basic guidelines label Feb 8, 2023
Copy link
Contributor

@dg0yt dg0yt left a comment

Choose a reason for hiding this comment

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

I will test it soon.

Comment on lines 1 to 18
From 4ddbfb68f858aee45cf7c33718f16b6c7b5beed7 Mon Sep 17 00:00:00 2001
From: Jonas Kvinge <jonas@jkvinge.net>
Date: Mon, 16 Aug 2021 22:01:39 +0200
Subject: [PATCH] Fix compile with MinGW-W64 9.0.0: Redefinition of 'struct
_FILE_ID_INFO'

With MinGW-W64 9.0.0, _WIN32_WINNT is set to Windows 10 by default, so
_FILE_ID_INFO is already defined.

Fixes: QTBUG-94031
Pick-to: 6.2
Change-Id: I0b29a4a1932425e1c4079aba6768fe94460c60af
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
---
src/corelib/io/qfilesystemengine_win.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Copy link
Contributor

Choose a reason for hiding this comment

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

In vcpkg, these headers are not desired.

@FrankXie05 FrankXie05 added requires:author-response and removed info:reviewed Pull Request changes follow basic guidelines labels Feb 8, 2023
@koprok koprok dismissed stale reviews from FrankXie05 and GitHub Actions via 202a484 February 8, 2023 09:13
github-actions[bot]
github-actions bot previously approved these changes Feb 8, 2023
Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

You have modified or added at least one portfile where deprecated functions are used.

If you feel able to do so, please consider migrating them to the new functions:
vcpkg_install_cmake -> vcpkg_cmake_install (from port vcpkg-cmake)
vcpkg_build_cmake -> vcpkg_cmake_build (from port vcpkg-cmake)
vcpkg_configure_cmake -> vcpkg_cmake_configure (Please remove the option PREFER_NINJA) (from port vcpkg-cmake)
vcpkg_fixup_cmake_targets -> vcpkg_cmake_config_fixup (from port vcpkg-cmake-config)
vcpkg_extract_source_archive_ex -> vcpkg_extract_source_archive
vcpkg_build_msbuild -> vcpkg_install_msbuild
vcpkg_copy_tool_dependencies -> vcpkg_copy_tools
vcpkg_apply_patches should be replaced by the PATCHES arguments to the "extract" helpers (e.g. vcpkg_from_github())

In the ports that use the new function, you have to add the corresponding dependencies:

{
  "name": "vcpkg-cmake",
  "host": true
},
{
  "name": "vcpkg-cmake-config",
  "host": true
}

The following files are affected:

  • ports/qt5-base/portfile.cmake

github-actions[bot]
github-actions bot previously approved these changes Feb 9, 2023
Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

You have modified or added at least one portfile where deprecated functions are used.

If you feel able to do so, please consider migrating them to the new functions:
vcpkg_install_cmake -> vcpkg_cmake_install (from port vcpkg-cmake)
vcpkg_build_cmake -> vcpkg_cmake_build (from port vcpkg-cmake)
vcpkg_configure_cmake -> vcpkg_cmake_configure (Please remove the option PREFER_NINJA) (from port vcpkg-cmake)
vcpkg_fixup_cmake_targets -> vcpkg_cmake_config_fixup (from port vcpkg-cmake-config)
vcpkg_extract_source_archive_ex -> vcpkg_extract_source_archive
vcpkg_build_msbuild -> vcpkg_install_msbuild
vcpkg_copy_tool_dependencies -> vcpkg_copy_tools
vcpkg_apply_patches should be replaced by the PATCHES arguments to the "extract" helpers (e.g. vcpkg_from_github())

In the ports that use the new function, you have to add the corresponding dependencies:

{
  "name": "vcpkg-cmake",
  "host": true
},
{
  "name": "vcpkg-cmake-config",
  "host": true
}

The following files are affected:

  • ports/qt5-base/portfile.cmake

github-actions[bot]
github-actions bot previously approved these changes Feb 10, 2023
Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

You have modified or added at least one portfile where deprecated functions are used.

If you feel able to do so, please consider migrating them to the new functions:
vcpkg_install_cmake -> vcpkg_cmake_install (from port vcpkg-cmake)
vcpkg_build_cmake -> vcpkg_cmake_build (from port vcpkg-cmake)
vcpkg_configure_cmake -> vcpkg_cmake_configure (Please remove the option PREFER_NINJA) (from port vcpkg-cmake)
vcpkg_fixup_cmake_targets -> vcpkg_cmake_config_fixup (from port vcpkg-cmake-config)
vcpkg_extract_source_archive_ex -> vcpkg_extract_source_archive
vcpkg_build_msbuild -> vcpkg_install_msbuild
vcpkg_copy_tool_dependencies -> vcpkg_copy_tools
vcpkg_apply_patches should be replaced by the PATCHES arguments to the "extract" helpers (e.g. vcpkg_from_github())

In the ports that use the new function, you have to add the corresponding dependencies:

{
  "name": "vcpkg-cmake",
  "host": true
},
{
  "name": "vcpkg-cmake-config",
  "host": true
}

The following files are affected:

  • ports/qt5-base/portfile.cmake

@dg0yt
Copy link
Contributor

dg0yt commented Feb 11, 2023

How well did it build for you? I had two overcome two problems, and will send you a PR soon:

  • icu libs for x64-mingw-static (a general fix for this port),
  • redirect installation from installed to packages (specific to mingw builds on windows host).

@koprok
Copy link
Contributor Author

koprok commented Feb 11, 2023

@dg0yt, I am building x64-mingw-dynamic triplet. With my changes qt5-base[core] builds without errors and works fine. I have actually never tried the static builds.
I know about the redirection, one of my changes is to fix redirection (in qt_fix_makefile_install.cmake). Doesn't it work for you?

@dg0yt
Copy link
Contributor

dg0yt commented Feb 11, 2023

I know about the redirection, one of my changes is to fix redirection (in qt_fix_makefile_install.cmake). Doesn't it work for you?

No. The point is that I see the Makefiles generated with / path separators (on Windows host, building with mingw32-make from MSYS2), but the fixup is written for \ path separators. What is in your Makefiles?
I know that qt scripts change output if sh is in PATH. We need to handle both cases if you confirm that you see \.

@koprok
Copy link
Contributor Author

koprok commented Feb 11, 2023

What is in your Makefiles? I know that qt scripts change output if sh is in PATH. We need to handle both cases if you confirm that you see \.

Mine are with \ indeed!
I am using this MinGW: https://github.com/niXman/mingw-builds-binaries/releases/tag/12.2.0-rt_v10-rev0

@dg0yt
Copy link
Contributor

dg0yt commented Feb 12, 2023

You are using a mingw toolchain with less extra tools. mingw32-make is for this.
With MSYS2, I use a more complete unixish enviroment. vcpkg already uses msys2 to provide such an environment for building ports based on the autotools build system, using make. I would prefer to use the same make environment for qt5, to limit variations. We download these packages anyways. But first I want to test if I see a significant difference in build time.

@koprok
Copy link
Contributor Author

koprok commented Feb 12, 2023

I would prefer to use the same make environment for qt5, to limit variations. We download these packages anyways.

Ok, I don't mind as long as msys2's make works with niXman compiler. Please, let me know if I can help with something so that Qt 5 MinGW support gets merged sooner.

Windows-shared needs different options. Patch obsolete.
github-actions[bot]
github-actions bot previously approved these changes Feb 12, 2023
Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

You have modified or added at least one portfile where deprecated functions are used.

If you feel able to do so, please consider migrating them to the new functions:
vcpkg_install_cmake -> vcpkg_cmake_install (from port vcpkg-cmake)
vcpkg_build_cmake -> vcpkg_cmake_build (from port vcpkg-cmake)
vcpkg_configure_cmake -> vcpkg_cmake_configure (Please remove the option PREFER_NINJA) (from port vcpkg-cmake)
vcpkg_fixup_cmake_targets -> vcpkg_cmake_config_fixup (from port vcpkg-cmake-config)
vcpkg_extract_source_archive_ex -> vcpkg_extract_source_archive
vcpkg_build_msbuild -> vcpkg_install_msbuild
vcpkg_copy_tool_dependencies -> vcpkg_copy_tools
vcpkg_apply_patches should be replaced by the PATCHES arguments to the "extract" helpers (e.g. vcpkg_from_github())

In the ports that use the new function, you have to add the corresponding dependencies:

{
  "name": "vcpkg-cmake",
  "host": true
},
{
  "name": "vcpkg-cmake-config",
  "host": true
}

The following files are affected:

  • ports/qt5-base/portfile.cmake

@dg0yt
Copy link
Contributor

dg0yt commented Feb 13, 2023

The remaing issue is a little bit tricky, but a serious source of trouble which we must resolve:

  • Qt's configure.bat calls mingw32-make.
  • When sh is present, Qt generates unixish makefiles with /.
  • This behaviour is related to mingw32-make which uses sh instead of cmd if present.

I can control all this towards mingw32-make with \separators. But then then there is the next surprise:

  • Qt wants to run a perl script which wants to read from a command which uses < for input...
    Now if msys (unixish) perl is in the PATH, it wants to run msys sh ... and in this step, the path separators hit the wall again.

So the alternatives are:

  • accept both msys and non-msys environments, modify install location accordingly,
  • force \ separators and non-msys perl.
  • force / separators and msys build.

@koprok
Copy link
Contributor Author

koprok commented Feb 13, 2023

I haven't used msys gcc to build Qt, can you please clarify the following for me to understand better:

  • When sh is present, Qt generates unixish makefiles with /.

Vcpkg itself does not put sh in path, right? So sh will be present if the user has sh in path beforehand, for example if the user uses msys gcc to build Qt, correct?

I can control all this towards mingw32-make with \separators.

How can you do this? How will you remove sh from path?

Now if msys (unixish) perl is in the PATH, it wants to run msys sh ... and in this step, the path separators hit the wall again.

Again - Vcpkg itself does not put msys perl in path, i.e. msys perl could be in path only if the user has it beforehand, right?

So the alternatives are:

  • accept both msys and non-msys environments, modify install location accordingly,

Maybe this won't be that difficult. It won't hurt if we try to replace both variants. Only one will get actually replaced.

  • force \ separators and non-msys perl.

I am not sure if this variant is possible at all, see above questions. How can you (selectively) remove msys sh and perl from path...

  • force / separators and msys build.

Maybe this will be ok too - if Vcpkg itself, intentionally, puts msys sh and perl in path.

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

You have modified or added at least one portfile where deprecated functions are used.

If you feel able to do so, please consider migrating them to the new functions:
vcpkg_install_cmake -> vcpkg_cmake_install (from port vcpkg-cmake)
vcpkg_build_cmake -> vcpkg_cmake_build (from port vcpkg-cmake)
vcpkg_configure_cmake -> vcpkg_cmake_configure (Please remove the option PREFER_NINJA) (from port vcpkg-cmake)
vcpkg_fixup_cmake_targets -> vcpkg_cmake_config_fixup (from port vcpkg-cmake-config)
vcpkg_extract_source_archive_ex -> vcpkg_extract_source_archive
vcpkg_build_msbuild -> vcpkg_install_msbuild
vcpkg_copy_tool_dependencies -> vcpkg_copy_tools
vcpkg_apply_patches should be replaced by the PATCHES arguments to the "extract" helpers (e.g. vcpkg_from_github())

In the ports that use the new function, you have to add the corresponding dependencies:

{
  "name": "vcpkg-cmake",
  "host": true
},
{
  "name": "vcpkg-cmake-config",
  "host": true
}

The following files are affected:

  • ports/qt5-base/portfile.cmake

@dg0yt
Copy link
Contributor

dg0yt commented Feb 16, 2023

@FrankXie05 Ready for review.

@FrankXie05 FrankXie05 added info:reviewed Pull Request changes follow basic guidelines and removed requires:author-response labels Feb 17, 2023
@JavierMatosD JavierMatosD merged commit 82e0390 into microsoft:master Feb 22, 2023
@koprok koprok deleted the qt5-mingw branch February 23, 2023 15:47
@dg0yt dg0yt mentioned this pull request Mar 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
category:port-feature The issue is with a library, which is requesting new capabilities that didn’t exist info:reviewed Pull Request changes follow basic guidelines
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants