-
Notifications
You must be signed in to change notification settings - Fork 6.4k
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
[qt5-base] deploy all platform plugins on Windows #37898
[qt5-base] deploy all platform plugins on Windows #37898
Conversation
This is necessary as consuming applications may use e.g the offscreen plugin for unit tests. There is no real downside to deploying all platform plugins - they are small and qtdeploy.ps1 already deploys all other plugin types than platforms fully. The additional deployed plugins are these: * direct2d.dll * minimal.dll * offscreen.dll Fixes microsoft#37897
I'm mildly against this change. The plugin story is broken anyways, execpt for very few package families.
We can expect them to be copied into all packages which deploy Qt5Gui.dll. At the moment there are app. 15. qminimal is not related to Gui at all - that's why it is useful for tests. |
My application maintains a qt5-base overlay with local patches anyway, so it is not a huge inconvenience if this PR is rejected. Looking at the changes, though, the PR just makes the handling of the plugins simpler and more consistent.
Can you elaborate on this? In cmake what is the recommended/idiomatic way to copy additional plugins to the build directory? is it just something a la this or should it be done at build time via
That's a fair point. These are the files and their sizes in debug and release:
The three extra plugins in debug and release versions together are about 6 MB. I guess that means this change costs an extra 90 MB space when building all 15 packages. |
It is not just ports. This change also affects
Look at applocal.ps1: It has hooks only for Qt, OpenNI2, Magnum and AzureKinectSensorSDK. But there are many more packages with plugins.
I think there is no such thing. |
It does? How so? I have added the following my top-level CMakeLists.txt to install dependencies. Are you telling me I don't have to do that?
You can see I am taking the plugins directly from vcpkg_installed, so I am not affected by qtdeploy.ps1 for my install step. |
I see, it is off by default, and it is "X"perimental: vcpkg/scripts/buildsystems/vcpkg.cmake Lines 717 to 763 in ce19164
|
I need subject matter experts in Qt's help to call this one |
Install is similar. |
@BillyONeal I'm okay with this PR being declined. I have more problems in the same category with qt5-webengine and dbus where VCPKG_APPLOCAL_DEPS=ON is insufficient to deploy all the needed runtime dependencies to the output directory. I'll work around it using something along the lines of what @Osyotr has provided in a comment higher up. |
To be clear, I wasn't trying to say it's declined. I just wanted help from people who have edited this file before as I don't have enough experience enough with it to be making judgement calls |
@BillyONeal, I know. I just decided that since I have to hand-deploy a handful of other resources for qt5-webengine and dbus and the handling of tools/plugins and other runtime resources seem a little underdeveloped I thought I’d not waste your time with this relatively trivial issue. |
This is necessary as consuming applications may use e.g the offscreen plugin for unit tests. There is no real downside to deploying all platform plugins - they are small and qtdeploy.ps1 already deploys all other plugin types than platforms fully. The additional deployed plugins are these:
Fixes #37897
./vcpkg x-add-version --all
and committing the result.