[wxwidgets] make wxUSE_STL an optional triplet feature disabled by default#19274
[wxwidgets] make wxUSE_STL an optional triplet feature disabled by default#19274strega-nil-ms merged 1 commit intomicrosoft:masterfrom
Conversation
There was a problem hiding this comment.
This is a new experimental fast check for PR issues. Please let us know if this bot is helpful!
After committing all other changes, the version database must be updated
git add -u && git commit
git checkout 261c458af6e3eed5d099144aff95d2b5035f656b -- versions
./vcpkg x-add-version --allDiff
diff --git a/versions/baseline.json b/versions/baseline.json
index 7e64191..b042cca 100644
--- a/versions/baseline.json
+++ b/versions/baseline.json
@@ -6738,7 +6738,7 @@
},
"wxwidgets": {
"baseline": "3.1.5",
- "port-version": 2
+ "port-version": 3
},
"x-plane": {
"baseline": "3.0.3",
diff --git a/versions/w-/wxwidgets.json b/versions/w-/wxwidgets.json
index 72eaf13..38622b9 100644
--- a/versions/w-/wxwidgets.json
+++ b/versions/w-/wxwidgets.json
@@ -1,5 +1,10 @@
{
"versions": [
+ {
+ "git-tree": "3561ee078b11facb11fbd807f03093262cd52f19",
+ "version-semver": "3.1.5",
+ "port-version": 3
+ },
{
"git-tree": "6fa230bffdee1e7d700570c31e6f08367460c0c9",
"version-semver": "3.1.5",|
I would like to ask for clarification whether this feature is additive and compatible with binary caching:
|
|
wxUSE_STL=ON and wxUSE_STL=OFF are not source compatible so I don't imagine they would be ABI compatible.
I suppose so. |
This is the list of "Do not" for features: I get the impression that the proposed feature is in conflict with at least one item. |
|
The only alternatives are:
|
|
https://github.com/microsoft/vcpkg/blob/master/docs/maintainers/maintainer-guide.md#do-not-use-features-to-control-alternatives-in-published-interfaces lists some exceptions made for backwards compatibility. I think this case should have an exception made for backwards compatibility. |
Don't misunderstand backwards compatibility and the existing exceptions: These ports already had a broken feature list. The feature were left for backwards compatibility.
There is more:
|
I don't think this is a good idea because the port currently does not work with downstream codebases that were developed with wxWidgets' default of wxUSE_STL=OFF.
This would be quite cumbersome. I don't know why that would be better than a port feature. |
It creates an entire consistent universe of compatible binaries bound to that particular triplet. With features, this is not possible: The binaries created from |
|
I would be annoyed if I had to use a custom triplet just to use wxWidgets with its upstream defaults. But if that's what the vcpkg maintainers decide, it should be documented. |
|
Do you have a repro? I'm trying to figure out why this is necessary, except for the |
|
I am working with this branch of Tenacity: https://github.com/tenacityteam/tenacity/pull/228 This branch is still very much a work-in-progress and I am force pushing frequently. When I tried to build that branch with the wxwidgets port in wxWidgets/wxWidgets#2402 which uses wxUSE_STL=ON, the build failed with these errors. When I build wxwidgets manually without vcpkg using the default wxUSE_STL=OFF, I am able to build that branch. When I rebuilt wxwidgets manually with wxUSE_STL=ON, I reproduced the compile errors. |
Those failures are due to the upstream doesn't handle the library path. See wxWidgets/wxWidgets#2402. |
|
@JackBoosY Will you help us to continue the PR that solve the problems? |
Yes the first error I posted in https://github.com/tenacityteam/tenacity/pull/228#issuecomment-880113285 was due to that upstream bug. But then I ran into the compile errors because of wxUSE_STL=ON. |
|
https://docs.wxwidgets.org/3.0/classwx_string.html has this note:
I think this is the source of the compile error I encountered with wxUSE_STL=ON. |
|
@Be-ing could you try instead with |
|
That's not an available CMake variable: |
|
urggh... okay, I think the best thing is to default to |
|
So merge this PR? |
|
@Be-ing no, it shouldn't be a feature. Could you turn it off by default, and make turning it back on a triplet option? |
|
Okay, that sounds like a good solution. Is there documentation or an example how to do that? Just set the |
|
Where would I document that the triplet option exists? |
Good question. Documentation exists for global triplet variables, but not for per-port variables. How about adding a sentence to the port's description field? In this way, it would be visible in online package search. E.g. |
wxUSE_STL defaults to OFF so that is how it is in Linux distribution packages. Downstream projects developed with wxUSE_STL=ON are not necessarily compatible with wxUSE_STL=OFF without modification. So, by default, go with wxWidgets' default for compatibility with downstream codebases. vcpkg users who need wxUSE_STL=ON can still do so by simply opting into the new 'stl' feature of this port. https://forums.wxwidgets.org/viewtopic.php?p=165208 Signed-off-by: Be <be@mixxx.org>
|
This has been approved by 3 reviewers. Can it be merged? |
|
Thanks for reviewing. I am glad we found a solution that works with vcpkg's policies. Now, onto #17111... |
I so agree ... |
wxUSE_STL defaults to OFF so that is how it is in Linux
distribution packages. Downstream projects developed with
wxUSE_STL=ON are not necessarily compatible with wxUSE_STL=OFF
without modification. So, by default, go with wxWidgets' default
for compatibility with downstream codebases. vcpkg users who need
wxUSE_STL=ON can still do so by simply opting into the new 'stl'
feature of this port.
https://forums.wxwidgets.org/viewtopic.php?p=165208
Describe the pull request
What does your PR fix?
Fixes downstream applications not building with wxwidgets port
Which triplets are supported/not supported? Have you updated the CI baseline?
all
Does your PR follow the maintainer guide?
yes
If you have added/updated a port: Have you run
./vcpkg x-add-version --alland committed the result?Yes