[Qgis-psc] Grant report Windows Qt6 builds for QGIS with VCPKG
Marco Bernasocchi
marco at qgis.org
Thu Oct 24 12:20:09 PDT 2024
Indeed, thanks a lot Matthias foremost for also paving the way to a
sustainable MacOS packaging.
Cheers Marco
On Thu, 24 Oct 2024, 14:50 Régis Haubourg via QGIS-PSC, <
qgis-psc at lists.osgeo.org> wrote:
> 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
>>
> _______________________________________________
> 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/6d985a10/attachment.htm>
More information about the QGIS-PSC
mailing list