Details
-
User Story
-
Resolution: Unresolved
-
P3: Somewhat important
-
None
-
None
Description
Motivation
Qt currently bundles a long list of Third-Party Components inside our git repositories. This is mostly for convenience, because there's no easy cross-platform way to retrieve and compile these.
Anyhow, this means that Third-Party components - even if critical - only get updated as part of Qt, and that we are struggling with maintaining these ourselves.
Instead, we should try to leverage one of the known C++ package managers out there, and use that to provide and/or build Third-Party components. The current plan is to tackle this as part of the CMake port.
Requirements
Offline builds
We cannot expect an online connection when Qt is built. It must be possible to fetch dependencies separately.
System Packages
For Linux distributions it must be still possible to use only system libraries.
Version Pinning
While regular updates for upstream recipes is nice, we still need a way to fix dependencies for reproducible builds.
Own Hosting
For the same reason we need to be able to reproduce builds even without any online servers that's not under our control. That is, this probably means we have to be able to host our own recipes and server.
Binary Builds
To avoid excessive rebuilds the package manager should have the option to share binary builds.
Custom patches
Even if we there are active upstream recipes, we need an easy way to apply custom patches on short notice.
Package Managers
The most popular alternatives right now are:
- Conan
- vcpkg
- hunter
Attachments
Issue Links
- is duplicated by
-
QTBUG-132284 Consider using vcpkg to handle dependencies and tools to build Qt (Ninja, Perl, Python, Clang, ...).
- Closed
- relates to
-
QTBUG-69655 Make LLVM/clang detection compatible with vcpkg
- Closed
-
QTBUG-115715 Use vcpkg for 3rdparty libs in CI
- In Progress
-
QTIFW-1214 Create POC using conan.io and VCPKG
- Closed
-
QTBUG-68816 Use Vcpkg to provide third-party libs for Qt builds
- Withdrawn