<div dir="auto">Wow that is huge Matthias. <div dir="auto">I hope vcpk will simplify the package manager hell we live into. </div><div dir="auto">Bravo</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le jeu. 24 oct. 2024, 17:31, Matthias Kuhn via QGIS-PSC <<a href="mailto:qgis-psc@lists.osgeo.org">qgis-psc@lists.osgeo.org</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr">Thanks to the grant for the <a href="https://github.com/qgis/QGIS-Enhancement-Proposals/issues/292" target="_blank" rel="noreferrer">QGIS Enhancement Proposal 292</a> we were able to work on integration of Qt6 and the vcpkg dependency management system into QGIS.</div><div>This report gives an overview over what has been accomplished.</div><div dir="ltr"><br><b>QGIS Build with Qt6 using vcpkg</b><br><br>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:<br>- Per Pull Request Build: Each pull request now triggers a Qt6 build via CI<br>- Master Branch Build: Continuous builds are also generated for the master branch<br><br>We have also helped to make the QGIS source code ready for Qt6 on Windows.<br><br>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.<br><br>The check itself has already helped to identify qt6/windows compatibility problems of a recent pull request early on.<br><br><b>Documentation for building using vcpkg</b><br><br>We have also documented build instructions for building with vcpkg in the INSTALL.md file of QGIS.</div><div dir="ltr"><div>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.</div><div><br><b>Python Ports in vcpkg Registry</b><br><br>To manage QGIS's Python dependencies more efficiently, we contributed to <a href="https://github.com/open-vcpkg/python-registry/" target="_blank" rel="noreferrer">open-vcpkg/python-registry</a>.<br>- Python Ports: Developing custom ports for the Python ecosystem in `vcpkg`, namely all python packages that are required for QGIS core plugins.<br>- 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.<div><br><b>Modernizing CMake Scripts and R</b><b>educing Internal Vendored Dependencies</b><br><br>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.<br>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.<br>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.<br><br><b>Enhancements to the "Comment Bot" in Pull Requests</b><br><br>To improve the feedback loop within the QGIS development process, we enhanced the pull request "comment bot":<br>- Modularity: Refactored the bot to be more modular and adaptable.<br>- 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.<br><br><b>Version Update Reporting Action</b><br><br>To keep track of dependency changes transparently, we developed a "reporting" action:<br>- Version Updates: This action posts updates in the sticky pull request comment whenever a dependency is added, removed, or updated.<br>- Dependency Tracking: This helps developers stay informed about changes in the build environment and dependencies.</div><div>Example here: <a href="https://github.com/qgis/QGIS/pull/59191" target="_blank" rel="noreferrer">https://github.com/qgis/QGIS/pull/59191</a><br><br><b>Preliminary macOS Build Work</b><br><br>The effort to transition QGIS to Qt6 on Windows has also paved the way for cross-platform support:<br>- 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. <a href="https://github.com/qgis/QGIS/pull/59177" target="_blank" rel="noreferrer">https://github.com/qgis/QGIS/pull/59177</a><br><br><b>Acknowledgments</b><br><br>We extend our gratitude to the QGIS Project Steering Committee (PSC) and the voting community for letting us work on this.<br><br></div></div><div>Kind regards</div><div>Matthias Kuhn</div><div>OPENGIS.ch</div></div>
</div>
_______________________________________________<br>
QGIS-PSC mailing list<br>
<a href="mailto:QGIS-PSC@lists.osgeo.org" target="_blank" rel="noreferrer">QGIS-PSC@lists.osgeo.org</a><br>
<a href="https://lists.osgeo.org/mailman/listinfo/qgis-psc" rel="noreferrer noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/qgis-psc</a><br>
</blockquote></div>