Skip to content
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

[MANIFEST] Does not work with port-overlay feature. #12226

Closed
Neumann-A opened this issue Jul 2, 2020 · 4 comments
Closed

[MANIFEST] Does not work with port-overlay feature. #12226

Neumann-A opened this issue Jul 2, 2020 · 4 comments
Assignees
Labels
info:manifests This PR or Issue pertains to the Manifests feature

Comments

@Neumann-A
Copy link
Contributor

Since vcpkg always throws an error if a port from an overlay is installed and the overlay is not fed into the vcpkg call.
Furthermore ports from an overlay can also not currently be installed since this is missing from the toolchain.

if(VCPKG_MANIFEST_MODE AND VCPKG_MANIFEST_INSTALL AND NOT _CMAKE_IN_TRY_COMPILE)
execute_process(
COMMAND "${_VCPKG_ROOT_DIR}/vcpkg${_VCPKG_EXECUTABLE_SUFFIX}" install
--triplet ${VCPKG_TARGET_TRIPLET}
--vcpkg-root ${_VCPKG_ROOT_DIR}
--x-manifest-root=${_VCPKG_MANIFEST_DIR}
--x-install-root=${_VCPKG_INSTALLED_DIR}
--binarycaching
RESULT_VARIABLE _VCPKG_INSTALL_RESULT)
if (NOT _VCPKG_INSTALL_RESULT EQUAL 0)
message(FATAL_ERROR "vcpkg install failed")
endif()
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS

I would also suggest to move all code related to manifests into a separate cmake file for better separation from what the toolchain normally should do. (Manifests are just a modular addition to it.)

@strega-nil
Copy link
Contributor

Is this a bug, or is it a feature request? Does this break anybody, or is it just that manifests don't work with overlay ports just yet?

@Neumann-A
Copy link
Contributor Author

The problem is if somebody tries to use manifests with a vcpkg which has an (unknown to master) port installed from a port-overlay vcpkg will throw and error on the execution of the command.
Has such you might not be immediately breaking someone but locally sharing vcpkg instances becomes a bit more difficult if you have projects which could use the manifest but have other projects which requires ports from an overlay.

@strega-nil
Copy link
Contributor

strega-nil commented Jul 6, 2020

This shouldn't happen, since the installed directories aren't shared -- if blah is installed from an overlay in vcpkg/installed, then proj/vcpkg_installed can't know or care about blah, since it's a different installed tree.

@strega-nil strega-nil added the info:manifests This PR or Issue pertains to the Manifests feature label Jul 8, 2020
@Neumann-A
Copy link
Contributor Author

Closing since there is a way to define overlays via cmake now and registries will also solve this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
info:manifests This PR or Issue pertains to the Manifests feature
Projects
None yet
Development

No branches or pull requests

3 participants