[Qgis-psc] Grant report Windows Qt6 builds for QGIS with VCPKG
Régis Haubourg
regis at qgis.org
Thu Oct 24 11:50:43 PDT 2024
Wow that is huge Matthias.
I hope vcpk will simplify the package manager hell we live into.
Bravo
Le jeu. 24 oct. 2024, 17:31, Matthias Kuhn via QGIS-PSC <
qgis-psc at lists.osgeo.org> a écrit :
> Thanks to the grant for the QGIS Enhancement Proposal 292
> <https://github.com/qgis/QGIS-Enhancement-Proposals/issues/292> we were
> able to work on integration of Qt6 and the vcpkg dependency management
> system into QGIS.
> This report gives an overview over what has been accomplished.
>
> *QGIS Build with Qt6 using vcpkg*
>
> Our primary focus has been on transitioning QGIS to build with Qt6 using
> `vcpkg` on Windows. This involved integrating Qt6 and other dependencies
> through the `vcpkg` dependency management to ensure a smoother build
> process. To make the results of this accessible and ensure forward
> security, continuous integration (CI) pipelines have been established:
> - Per Pull Request Build: Each pull request now triggers a Qt6 build via CI
> - Master Branch Build: Continuous builds are also generated for the master
> branch
>
> We have also helped to make the QGIS source code ready for Qt6 on Windows.
>
> Qt6 based packages for Windows are now downloadable for each pull request,
> we hope that this helps the migration process towards Qt6 by making it
> possible for Windows users to test plugins and other functionality.
>
> The check itself has already helped to identify qt6/windows compatibility
> problems of a recent pull request early on.
>
> *Documentation for building using vcpkg*
>
> We have also documented build instructions for building with vcpkg in the
> INSTALL.md file of QGIS.
> We hope that this will help to make it easier for new developers on
> Windows to start developing for QGIS and to improve QGIS on Windows.
>
> *Python Ports in vcpkg Registry*
>
> To manage QGIS's Python dependencies more efficiently, we contributed to
> open-vcpkg/python-registry
> <https://github.com/open-vcpkg/python-registry/>.
> - Python Ports: Developing custom ports for the Python ecosystem in
> `vcpkg`, namely all python packages that are required for QGIS core plugins.
> - Version Bumping Script: To reduce maintenance burdens, we implemented an
> automated script that regularly updates the versions of these Python
> packages to the latest available releases.
>
> *Modernizing CMake Scripts and R**educing Internal Vendored Dependencies*
>
> We continued our long-term efforts to modernize QGIS's CMake build
> scripts. By shifting more packages to detect cmake configuration files and
> using cmake targets, we reduce package dependent "find" and "configuration"
> code that we maintain internally.
> We increased usage of system- (or vcpkg-) provided packages instead of
> internal or vendored versions. For example, `nlohmann-json` can now be used
> directly from vcpkg, for downstream projects this reduces conflicting
> library versions.
> We made strides to reduce the reliance on vendored internal packages.
> Particularly we have tried to make it possible to build with an external
> untwine library, but despite efforts to reduce reliance on the internal
> copy, the closely tied interface between QGIS and this package prevented
> this move at this stage. There are more packages where we could assess the
> deviation from upstream and separate QGIS patches from "bundle it for
> packaging". This remains an area for future improvement.
>
> *Enhancements to the "Comment Bot" in Pull Requests*
>
> To improve the feedback loop within the QGIS development process, we
> enhanced the pull request "comment bot":
> - Modularity: Refactored the bot to be more modular and adaptable.
> - Sticky Comments: Introduced a single "sticky comment" that allows
> multiple CI actions to update a single comment, centralizing feedback and
> status updates for each pull request.
>
> *Version Update Reporting Action*
>
> To keep track of dependency changes transparently, we developed a
> "reporting" action:
> - Version Updates: This action posts updates in the sticky pull request
> comment whenever a dependency is added, removed, or updated.
> - Dependency Tracking: This helps developers stay informed about changes
> in the build environment and dependencies.
> Example here: https://github.com/qgis/QGIS/pull/59191
>
> *Preliminary macOS Build Work*
>
> The effort to transition QGIS to Qt6 on Windows has also paved the way for
> cross-platform support:
> - macOS Support: The same `vcpkg`-based dependency set used for Windows
> has been extended to macOS. Although this work is preliminary, it is
> expected to simplify development for macOS developers and could form the
> basis for future stable macOS packages.
> https://github.com/qgis/QGIS/pull/59177
>
> *Acknowledgments*
>
> We extend our gratitude to the QGIS Project Steering Committee (PSC) and
> the voting community for letting us work on this.
>
> Kind regards
> Matthias Kuhn
> OPENGIS.ch
> _______________________________________________
> QGIS-PSC mailing list
> QGIS-PSC at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/qgis-psc
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-psc/attachments/20241024/f8a90017/attachment.htm>
More information about the QGIS-PSC
mailing list