From 8a47da668e8730b285e411e6b964509a5b6b1452 Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Thu, 27 Oct 2022 18:49:42 -0700 Subject: [PATCH] fix: ensure that the given vcpkg remote is the current remote --- src/Vcpkg.cmake | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/Vcpkg.cmake b/src/Vcpkg.cmake index f1b2c0d2..4f689c29 100644 --- a/src/Vcpkg.cmake +++ b/src/Vcpkg.cmake @@ -47,13 +47,13 @@ macro(run_vcpkg) STREQUAL "") # detect if the head is detached, if so, switch back before calling git pull on a detached head - set(GIT_STATUS "") + set(_vcpkg_git_status "") execute_process( COMMAND "${GIT_EXECUTABLE}" "rev-parse" "--abbrev-ref" "--symbolic-full-name" "HEAD" - OUTPUT_VARIABLE GIT_STATUS + OUTPUT_VARIABLE _vcpkg_git_status WORKING_DIRECTORY "${_vcpkg_args_VCPKG_DIR}" OUTPUT_STRIP_TRAILING_WHITESPACE) - if("${GIT_STATUS}" STREQUAL "HEAD") + if("${_vcpkg_git_status}" STREQUAL "HEAD") message(STATUS "Switching back before updating") execute_process(COMMAND "${GIT_EXECUTABLE}" "switch" "-" WORKING_DIRECTORY "${_vcpkg_args_VCPKG_DIR}") endif() @@ -65,12 +65,24 @@ macro(run_vcpkg) else() message(STATUS "Installing vcpkg at ${_vcpkg_args_VCPKG_DIR}") # clone vcpkg from Github + if("${_vcpkg_args_VCPKG_URL}" STREQUAL "") + set(_vcpkg_args_VCPKG_URL "https://github.com/microsoft/vcpkg.git") + endif() if(NOT EXISTS "${_vcpkg_args_VCPKG_DIR}") - if("${_vcpkg_args_VCPKG_URL}" STREQUAL "") - set(_vcpkg_args_VCPKG_URL "https://github.com/microsoft/vcpkg.git") - endif() execute_process(COMMAND "${GIT_EXECUTABLE}" "clone" "${_vcpkg_args_VCPKG_URL}" WORKING_DIRECTORY "${VCPKG_PARENT_DIR}" COMMAND_ERROR_IS_FATAL LAST) + else() + # ensure that the given vcpkg remote is the current remote + execute_process( + COMMAND "${GIT_EXECUTABLE}" "remote" "-v" + WORKING_DIRECTORY "${VCPKG_PARENT_DIR}" COMMAND_ERROR_IS_FATAL LAST + OUTPUT_VARIABLE _vcpkg_git_remote_info) + string(FIND "${_vcpkg_git_remote_info}" "${_vcpkg_args_VCPKG_URL}" _vcpkg_has_remote) + if(NOT ${_vcpkg_has_remote}) + message( + FATAL + "The current vcpkg remote at ${_vcpkg_args_VCPKG_DIR} does not match the given URL ${_vcpkg_args_VCPKG_URL}") + endif() endif() # Run vcpkg bootstrap if(WIN32)