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

Windows Qt6 builds based on vcpkg #57414

Open
wants to merge 29 commits into
base: master
Choose a base branch
from
Open

Windows Qt6 builds based on vcpkg #57414

wants to merge 29 commits into from

Conversation

m-kuhn
Copy link
Member

@m-kuhn m-kuhn commented May 13, 2024

Description

Refs qgis/QGIS-Enhancement-Proposals#292

This adds windows builds with Qt6, based on vcpkg dependencies.

The features WITH_BINDINGS, WITH_3D and WITH_GUI are supported and appropriately enable or disable building the required dependencies. Feature dependencies for server, opencl and quick are prepared but not yet wired.

Python support is consumed from https://github.com/open-vcpkg/python-registry/ . This is currently focused on shipping python dependencies that contain native code (dll's). Other dependencies can be installed using pip.

It is currently based on Qt 6.7.0.

Various Qt6 compatibility patches have been ported from #56980 and #56841 (QGIS code is now wchar / unicode aware for Qt6, external dependencies are patched to make them build).

TODO:

  • Create an SDK to make local development easier
  • Expand the developer documentation to make it easy to get started with local windows development
  • Unvendor at least one "external" dependency into an overlay port, this will reduce build time and make it clear which version of external dependencies we want and what patches we added on top.
  • Install psycopg2 (and other python dependencies that should be shipped)
  • Check why some exes are installed in top level instead of bin

More ideas:

  • Eventually use X_VCPKG_APPLOCAL_DEPS_INSTALL instead of blindly copying all .dll's, probably in a followup PR

@github-actions github-actions bot added this to the 3.38.0 milestone May 13, 2024
@nyalldawson
Copy link
Collaborator

Nice work @m-kuhn !

Could you adapt the logic from https://github.com/qgis/QGIS/blob/master/.github/workflows/mingw64.yml#L97 to tag the artifact with the corresponding pr number and sha, and then update https://github.com/qgis/QGIS/blob/master/.github/workflows/build_artifact_comment.yml#L5 so that we get a PR comment with a direct link to download the qt6 artifacts?

Copy link

github-actions bot commented May 13, 2024

🪟 Windows builds ready!

Windows builds of this PR are available for testing here. Debug symbols for this build are available here.

(Built from commit 9332fba)

Copy link
Contributor

@troopa81 troopa81 left a comment

Choose a reason for hiding this comment

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

Great work!

It looks good! (Though I'm not a Vcpkg expert)

src/app/mainwinqt5.cpp Show resolved Hide resolved
@Guts
Copy link
Contributor

Guts commented May 16, 2024

After discussing it in Grenoble, it's really great to see all this work come to maturity and take the form of a PR!

@m-kuhn
Copy link
Member Author

m-kuhn commented May 16, 2024

Could you adapt the logic from https://github.com/qgis/QGIS/blob/master/.github/workflows/mingw64.yml#L97 to tag the artifact with the corresponding pr number and sha, and then update https://github.com/qgis/QGIS/blob/master/.github/workflows/build_artifact_comment.yml#L5 so that we get a PR comment with a direct link to download the qt6 artifacts?

I tried but it doesn't seem to be triggered. Is it possible that this only runs once it's in master? Do you have any recommendation on developing such an action script and testing changes efficiently?

@nyalldawson
Copy link
Collaborator

@m-kuhn

The changes to the build artifact comment workflows must be applied in master before it'll work on a pull request.

I'd say do what everyone has to do in this situation and just directly modify the workflow on master 😂

@m-kuhn
Copy link
Member Author

m-kuhn commented May 16, 2024

I'd say do what everyone has to do in this situation and just directly modify the workflow on master 😂

😱 I have close to 0 confidence in my js skills, so I'll have to do multiple commits to debug 😱

@nyalldawson
Copy link
Collaborator

@m-kuhn

so I'll have to do multiple commits to debug 😱

image

@rouault
Copy link
Contributor

rouault commented May 16, 2024

I'd say do what everyone has to do in this situation and just directly modify the workflow on master 😂

or push your branch to your own fork but as the master branch ?

@jef-n
Copy link
Member

jef-n commented May 17, 2024

or push your branch to your own fork but as the master branch ?

That only helps half way jef-n#19 - the second workflow is not required then.

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.

None yet

6 participants