-
Notifications
You must be signed in to change notification settings - Fork 6.5k
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
[wtl] Remove 'wtl' subdirectory for upstream conformance #25108
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You have modified or added at least one vcpkg.json where you should check the license
field.
If you feel able to do so, please consider adding a "license" field to the following files:
ports/wtl/vcpkg.json
Valid values for the license field can be found in the documentation
This is the wrong approach. The correct one is to change |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You have modified or added at least one vcpkg.json where you should check the license
field.
If you feel able to do so, please consider adding a "license" field to the following files:
ports/wtl/vcpkg.json
Valid values for the license field can be found in the documentation
@chrullrich This is not an upstream bug. Upstream expects that these header files should be installed directly in the folder include, so a direct include is valid. So this is a problem with vcpkg adaptation. |
I don't see what VS has to do with this, and including a header you know to be in the same directory using |
The revisions to this PR are done based on the minimal change guidelines. |
I still don't get it, unless you are saying that since ATL happens not to include headers with colliding names (and certainly does not after patching in the
Is that “When making changes to a library, strive to minimize the final diff”? Changing eight characters seems more minimal to me than adding 16. Finally, and I admit this is not a strong argument (or even really relevant to vcpkg): Any (existing) code that does not use vcpkg's build system integration, e.g. with a Makefile that says "INCLUDE=...\wtl", will not work with the "wtl/" patched in. |
ATL include path is VS_PATH/VC/Tools/MSVC/${TOOLSET_VERSION}/atlmfc/include, and I checked the header names: there is no conflict files.
The "minimal changes" are for modifications in vcpkg, not for source code.
You have to agree that any user who wants to use this port needs to add VCPKG_ROOT/installed/TRIPLET/include to their list of include directories. Therefore, there will be no errors with this modification. |
I must be slow today because I still don't understand your point. Can we leave it be, please?
Then I don't understand this one either.
I have to do nothing of the sort. I was talking about a non-vcpkg-aware project that opportunistically uses vcpkg's WTL includes (and does not use any other vcpkg libraries). I was aware this is a somewhat far-fetched idea, which is why I said so. I don't think continuing this discussion makes much sense because I cannot convince you that your approach is wrong. Mostly, probably, because I do not understand your reasoning. I'm not saying it does not make sense, it's just that I cannot see that sense at this time. |
There is an important difference between
So IMO #25083 clearly was the right approach: Patch exactly the spots which include headers from the same package, using |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
After consideration, I think the right fix is actually to put the headers into the top level directory (include/
). Our original packaging of the library was incorrect with respect to how upstream expects users to consume it and we should mend that to ensure compatibility with other delivery methods (NuGet, etc).
This may break users of wtl
on upgrade, but:
- The fix is easy (just remove
wtl/
from your includes) - It's the right thing to do for long-term health.
It's also possible that users won't be broken, because they couldn't have included the headers today anyway due to #24933 without adding the subdirectory.
I have a philosophical issue with that; I'm not in favor of letting upstream dictate how I'm going to organize myself. Plus, again, the use of
This probably isn't the first time vcpkg has changed its mind about its internal organization, and won't be the last, but it is certainly in the top league in terms of premeditated unnecessary breakage.
How is spamming the Also, the include path is a shared namespace, and getting rid of the
They couldn't have included Can you please wait a bit for upstream to decide whether they want to change the |
This is not a bug. Many popular libraries use angle brackets in public headers. If you use |
The objective of vcpkg, excepting specific points that cause integration pain (see our maintainer guide for more details), is to follow upstream as much as possible. If you would like to privately organize the headers differently than upstream and vcpkg, you can absolutely do that with an overlay port! However, vcpkg's public, curated catalog is intended to model upstream as much as possible.
Regardless of upstream's decision on that, we would still want to eliminate the |
The path to the internal files should add the wtl intermediate folder.
The installed header files that contain "#include <atl" are:
However only wtl/atlribbon.h deals with this issue.
Fixes #24933.
Already tested the usage.