-
Notifications
You must be signed in to change notification settings - Fork 287
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
Also check if CONTROL is a file #574
Conversation
There might be other places where we check this improperly. Maybe we need an e2e test for this? |
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.
I think the actual fix is that we need to differentiate between a vcpkg.json
that is a user/consumer manifest, vs a vcpkg.json
that is a port. I don't think we want directories named control
in ports either.
Co-authored-by: Billy O'Neal <bion@microsoft.com>
… a consumer manifest. Today, manifest mode works by effectively injecting the manifest directory as an overlay and letting load_port handle the situation. However, this means that the consuming manifest needs to follow all normal port rules, such as not having a CONTROL file. microsoft#574 attempts to partially fix this by not failing of the CONTROL found is a directory rather than a file, but we really shouldn't be having opinions about the consuming location at all. Changes: * Delete namespace PortFileProvider. * Fix OverlayProviderImpl::load_port to be consistent with OverlayProviderImpl::load_all_control_files (reversing the order) * Add ManifestProvider and CombinedProvider which explicitly model the loaded manifest overlay without needing to treat the manifest directory as a port directory * Fix plumbing in install.cpp to use the same overlay provider at all times.
… a consumer manifest. Today, manifest mode works by effectively injecting the manifest directory as an overlay and letting load_port handle the situation. However, this means that the consuming manifest needs to follow all normal port rules, such as not having a CONTROL file. microsoft#574 attempts to partially fix this by not failing of the CONTROL found is a directory rather than a file, but we really shouldn't be having opinions about the consuming location at all. Changes: * Delete namespace PortFileProvider. * Fix OverlayProviderImpl::load_port to be consistent with OverlayProviderImpl::load_all_control_files (reversing the order) * Add ManifestProvider and CombinedProvider which explicitly model the loaded manifest overlay without needing to treat the manifest directory as a port directory * Fix plumbing in install.cpp to use the same overlay provider at all times.
… a consumer manifest. Today, manifest mode works by effectively injecting the manifest directory as an overlay and letting load_port handle the situation. However, this means that the consuming manifest needs to follow all normal port rules, such as not having a CONTROL file. microsoft#574 attempts to partially fix this by not failing of the CONTROL found is a directory rather than a file, but we really shouldn't be having opinions about the consuming location at all. Changes: * Add ManifestProvider and CombinedProvider which explicitly model the loaded manifest overlay without needing to treat the manifest directory as a port directory * Fix plumbing in install.cpp to use the same overlay provider at all times. Competing resolution of microsoft#574 / microsoft/vcpkg#22686
I believe #582 is the correct fix. |
… a consumer manifest. (#582) * Don't complain about CONTROL files or directories in the directory of a consumer manifest. Today, manifest mode works by effectively injecting the manifest directory as an overlay and letting load_port handle the situation. However, this means that the consuming manifest needs to follow all normal port rules, such as not having a CONTROL file. #574 attempts to partially fix this by not failing of the CONTROL found is a directory rather than a file, but we really shouldn't be having opinions about the consuming location at all. Changes: * Add ManifestProvider and CombinedProvider which explicitly model the loaded manifest overlay without needing to treat the manifest directory as a port directory * Fix plumbing in install.cpp to use the same overlay provider at all times. Competing resolution of #574 / microsoft/vcpkg#22686 * Add e2e test and make the manifest file the primary overlay. * Add missing overrides. * Degeneralize IOverlayProvider
Fixes microsoft/vcpkg#22686
We also may want to have
Filesystem::file_exists()
/Filesystem::directory_exists()
.