From fb2ad2175496b3c6284e5a6964ebc07537ef3b60 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 13 Aug 2020 21:58:51 +0200 Subject: [PATCH 1/9] [vcpkg_find_acquire_program] add version check for ninja --- .../cmake/vcpkg_find_acquire_program.cmake | 37 +++++++++++++++++-- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 8b006990a5e5c2..1a946dc5ea61fc 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -205,7 +205,8 @@ function(vcpkg_find_acquire_program VAR) set(HASH f73b04e2d9f29d4393fde572dcf3c3f0f6fa27e747e5df292294ab7536ae24c239bf917689d71eb10cc49f6b9a4ace26d7c122ee887d93cc935f268c404e9067) elseif(VAR MATCHES "NINJA") set(PROGNAME ninja) - set(SUBDIR "ninja-1.10.0") + set(VERSION 1.10.0) + set(SUBDIR "ninja-${VERSION}") if(CMAKE_HOST_WIN32) set(PATHS "${DOWNLOADS}/tools/${SUBDIR}-windows") list(APPEND PATHS "${DOWNLOADS}/tools/ninja/${SUBDIR}") @@ -218,9 +219,10 @@ function(vcpkg_find_acquire_program VAR) endif() set(BREW_PACKAGE_NAME "ninja") set(APT_PACKAGE_NAME "ninja-build") - set(URL "https://github.com/ninja-build/ninja/releases/download/v1.10.0/ninja-win.zip") - set(ARCHIVE "ninja-win-1.10.0.zip") + set(URL "https://github.com/ninja-build/ninja/releases/download/v${VERSION}/ninja-win.zip") + set(ARCHIVE "ninja-win-${VERSION}.zip") set(HASH a196e243c53daa1df9d287af658d6d38d6b830b614f2d5704e8c88ffc61f179a533ae71cdb6d0d383d1559d65dacccbaaab270fb2a33aa211e5dba42ff046f97) + set(VERSION_CMD --version) elseif(VAR MATCHES "NUGET") set(PROGNAME nuget) set(SUBDIR "5.5.1") @@ -379,10 +381,37 @@ function(vcpkg_find_acquire_program VAR) message(FATAL "unknown tool ${VAR} -- unable to acquire.") endif() + macro(do_version_check) + if(VERSION_CMD) + _execute_process( + COMMAND ${VAR} ${VERSION_CMD} + WORKING_DIRECTORY ${DOWNLOADS} + OUTPUT_VARIABLE ${VAR}_VERSION_OUTPUT + ) + string(STRIP "${${VAR}_VERSION_OUTPUT}" ${VAR}_VERSION_OUTPUT) + #TODO: REGEX MATCH case for more complex cases! + if(NOT ${VAR}_VERSION_OUTPUT VERSION_GREATER_EQUAL VERSION) + message(STATUS "Found ${PROGNAME}('${${VAR}_VERSION_OUTPUT}') but at least version ${VERSION} is required! Trying to use internal version if possible!") + set(${VAR} "${VAR}-NOTFOUND") + set(${VAR} "${VAR}-NOTFOUND" CACHE INTERNAL "") + else() + message(STATUS "Found external ${PROGNAME}('${${VAR}_VERSION_OUTPUT}').") + endif() + endif() + endmacro() + macro(do_find) if(NOT DEFINED REQUIRED_INTERPRETER) find_program(${VAR} ${PROGNAME} PATHS ${PATHS} NO_DEFAULT_PATH) - find_program(${VAR} ${PROGNAME}) + if(NOT ${VAR}) + find_program(${VAR} ${PROGNAME}) + if(${VAR} AND NOT VERSION_CHECKED) + do_version_check() + set(VERSION_CHECKED ON) + elseif(VERSION_CHECKED) + message(FATAL_ERROR "Unable to find ${PROGNAME} with min version of ${VERSION}") + endif() + endif() else() vcpkg_find_acquire_program(${REQUIRED_INTERPRETER}) find_file(SCRIPT_${VAR} ${SCRIPTNAME} PATHS ${PATHS} NO_DEFAULT_PATH) From 7634161327b02421a500e7f1a3c189e81008158f Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Fri, 14 Aug 2020 20:14:36 +0200 Subject: [PATCH 2/9] Change VERSION to NINJA_VERSION --- scripts/cmake/vcpkg_find_acquire_program.cmake | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 1a946dc5ea61fc..f80902e682fb29 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -205,7 +205,7 @@ function(vcpkg_find_acquire_program VAR) set(HASH f73b04e2d9f29d4393fde572dcf3c3f0f6fa27e747e5df292294ab7536ae24c239bf917689d71eb10cc49f6b9a4ace26d7c122ee887d93cc935f268c404e9067) elseif(VAR MATCHES "NINJA") set(PROGNAME ninja) - set(VERSION 1.10.0) + set(NINJA_VERSION 1.10.0) set(SUBDIR "ninja-${VERSION}") if(CMAKE_HOST_WIN32) set(PATHS "${DOWNLOADS}/tools/${SUBDIR}-windows") @@ -219,8 +219,8 @@ function(vcpkg_find_acquire_program VAR) endif() set(BREW_PACKAGE_NAME "ninja") set(APT_PACKAGE_NAME "ninja-build") - set(URL "https://github.com/ninja-build/ninja/releases/download/v${VERSION}/ninja-win.zip") - set(ARCHIVE "ninja-win-${VERSION}.zip") + set(URL "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-win.zip") + set(ARCHIVE "ninja-win-${NINJA_VERSION}.zip") set(HASH a196e243c53daa1df9d287af658d6d38d6b830b614f2d5704e8c88ffc61f179a533ae71cdb6d0d383d1559d65dacccbaaab270fb2a33aa211e5dba42ff046f97) set(VERSION_CMD --version) elseif(VAR MATCHES "NUGET") @@ -405,11 +405,11 @@ function(vcpkg_find_acquire_program VAR) find_program(${VAR} ${PROGNAME} PATHS ${PATHS} NO_DEFAULT_PATH) if(NOT ${VAR}) find_program(${VAR} ${PROGNAME}) - if(${VAR} AND NOT VERSION_CHECKED) + if(${VAR} AND NOT ${VAR}_VERSION_CHECKED) do_version_check() - set(VERSION_CHECKED ON) - elseif(VERSION_CHECKED) - message(FATAL_ERROR "Unable to find ${PROGNAME} with min version of ${VERSION}") + set(${VAR}_VERSION_CHECKED ON) + elseif(${VAR}_VERSION_CHECKED) + message(FATAL_ERROR "Unable to find ${PROGNAME} with min version of ${${VAR}_VERSION}") endif() endif() else() From b292255680d68feb04fa44a6ddab10305d6083fc Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Fri, 14 Aug 2020 20:38:49 +0200 Subject: [PATCH 3/9] Missed VERSION change --- scripts/cmake/vcpkg_find_acquire_program.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index f80902e682fb29..4d673c0ed11231 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -391,7 +391,7 @@ function(vcpkg_find_acquire_program VAR) string(STRIP "${${VAR}_VERSION_OUTPUT}" ${VAR}_VERSION_OUTPUT) #TODO: REGEX MATCH case for more complex cases! if(NOT ${VAR}_VERSION_OUTPUT VERSION_GREATER_EQUAL VERSION) - message(STATUS "Found ${PROGNAME}('${${VAR}_VERSION_OUTPUT}') but at least version ${VERSION} is required! Trying to use internal version if possible!") + message(STATUS "Found ${PROGNAME}('${${VAR}_VERSION_OUTPUT}') but at least version ${${VAR}_VERSION} is required! Trying to use internal version if possible!") set(${VAR} "${VAR}-NOTFOUND") set(${VAR} "${VAR}-NOTFOUND" CACHE INTERNAL "") else() From a84fdf43fcec88487f7c16145bc0919e5b632763 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 14 Aug 2020 21:56:27 +0200 Subject: [PATCH 4/9] some more corrections --- .../cmake/vcpkg_find_acquire_program.cmake | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 4d673c0ed11231..736b194455b1c0 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -206,23 +206,30 @@ function(vcpkg_find_acquire_program VAR) elseif(VAR MATCHES "NINJA") set(PROGNAME ninja) set(NINJA_VERSION 1.10.0) - set(SUBDIR "ninja-${VERSION}") + set(SUBDIR "ninja-${NINJA_VERSION}") if(CMAKE_HOST_WIN32) + set(ARCHIVE "ninja-win-${NINJA_VERSION}.zip") set(PATHS "${DOWNLOADS}/tools/${SUBDIR}-windows") list(APPEND PATHS "${DOWNLOADS}/tools/ninja/${SUBDIR}") + set(URL "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-win.zip") + set(HASH a196e243c53daa1df9d287af658d6d38d6b830b614f2d5704e8c88ffc61f179a533ae71cdb6d0d383d1559d65dacccbaaab270fb2a33aa211e5dba42ff046f97) elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") + set(ARCHIVE "ninja-mac-${NINJA_VERSION}.zip") + set(URL "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-mac.zip") set(PATHS "${DOWNLOADS}/tools/${SUBDIR}-osx") + set(HASH 0) # TODO elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "FreeBSD") set(PATHS "${DOWNLOADS}/tools/${SUBDIR}-freebsd") else() + set(ARCHIVE "ninja-linux-${NINJA_VERSION}.zip") + set(URL "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-linux.zip") set(PATHS "${DOWNLOADS}/tools/${SUBDIR}-linux") + set(HASH ffb179ab8ea315167fcc99a8f13286e1363590185b18cf819cc73e09f2a7553790e9dc45fd1ccd0bd1d2dbf543aee3f6c0951cf9ce453a7168ffd2ac873cdd29) endif() set(BREW_PACKAGE_NAME "ninja") set(APT_PACKAGE_NAME "ninja-build") - set(URL "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-win.zip") - set(ARCHIVE "ninja-win-${NINJA_VERSION}.zip") - set(HASH a196e243c53daa1df9d287af658d6d38d6b830b614f2d5704e8c88ffc61f179a533ae71cdb6d0d383d1559d65dacccbaaab270fb2a33aa211e5dba42ff046f97) set(VERSION_CMD --version) + set(_vfa_SUPPORTED ON) elseif(VAR MATCHES "NUGET") set(PROGNAME nuget) set(SUBDIR "5.5.1") @@ -390,9 +397,8 @@ function(vcpkg_find_acquire_program VAR) ) string(STRIP "${${VAR}_VERSION_OUTPUT}" ${VAR}_VERSION_OUTPUT) #TODO: REGEX MATCH case for more complex cases! - if(NOT ${VAR}_VERSION_OUTPUT VERSION_GREATER_EQUAL VERSION) + if(NOT ${VAR}_VERSION_OUTPUT VERSION_GREATER_EQUAL ${VAR}_VERSION) message(STATUS "Found ${PROGNAME}('${${VAR}_VERSION_OUTPUT}') but at least version ${${VAR}_VERSION} is required! Trying to use internal version if possible!") - set(${VAR} "${VAR}-NOTFOUND") set(${VAR} "${VAR}-NOTFOUND" CACHE INTERNAL "") else() message(STATUS "Found external ${PROGNAME}('${${VAR}_VERSION_OUTPUT}').") @@ -485,8 +491,11 @@ function(vcpkg_find_acquire_program VAR) LOGNAME ${VAR}-tool-post-install ) endif() - + unset(${VAR} CACHE) do_find() + if(NOT ${VAR}) + message(FATAL_ERROR "Unable to find ${VAR}") + endif() endif() set(${VAR} "${${VAR}}" PARENT_SCOPE) From 32a6ac5b6b8dc890b270814ed2b0eb97d8d395e2 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sat, 15 Aug 2020 00:23:20 +0200 Subject: [PATCH 5/9] add missing PACKAGES parameter --- scripts/cmake/vcpkg_find_fortran.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/cmake/vcpkg_find_fortran.cmake b/scripts/cmake/vcpkg_find_fortran.cmake index e6be2722e5d911..daf63ce7279eec 100644 --- a/scripts/cmake/vcpkg_find_fortran.cmake +++ b/scripts/cmake/vcpkg_find_fortran.cmake @@ -35,7 +35,7 @@ function(vcpkg_find_fortran additional_cmake_args_out) else() message(FATAL_ERROR "Unknown architecture '${VCPKG_TARGET_ARCHITECTURE}' for MinGW Fortran build!") endif() - vcpkg_acquire_msys(MSYS_ROOT "mingw-w64-${MSYS_TARGET}-gcc-fortran") + vcpkg_acquire_msys(MSYS_ROOT PACKAGES "mingw-w64-${MSYS_TARGET}-gcc-fortran") set(MINGW_BIN "${MSYS_ROOT}/${MINGW_PATH}/bin") vcpkg_add_to_path(PREPEND "${MINGW_BIN}") list(APPEND ARGS_OUT -DCMAKE_GNUtoMS=ON From f145e069021213a370231d7df1e22ced723c8744 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Sat, 15 Aug 2020 10:31:24 +0200 Subject: [PATCH 6/9] add osx hash MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Wolfgang Stöggl --- scripts/cmake/vcpkg_find_acquire_program.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 736b194455b1c0..4e81e639fab9e9 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -217,7 +217,7 @@ function(vcpkg_find_acquire_program VAR) set(ARCHIVE "ninja-mac-${NINJA_VERSION}.zip") set(URL "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-mac.zip") set(PATHS "${DOWNLOADS}/tools/${SUBDIR}-osx") - set(HASH 0) # TODO + set(HASH 619a1924067a0b30fc5f8887f868d3ee5481838d2f0f158d031f7614a2a10b95a73d4a56b658d5d560283ebf809e2e536b968c6c01ff0108075c3f393f5780ba) elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "FreeBSD") set(PATHS "${DOWNLOADS}/tools/${SUBDIR}-freebsd") else() From e9a7476c785ee06ae714f1d5ddf1b1093be2776f Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Sat, 15 Aug 2020 23:32:58 +0200 Subject: [PATCH 7/9] Remove apt/brew package names Co-authored-by: ras0219 <533828+ras0219@users.noreply.github.com> --- scripts/cmake/vcpkg_find_acquire_program.cmake | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 4e81e639fab9e9..4d03878630d439 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -226,8 +226,6 @@ function(vcpkg_find_acquire_program VAR) set(PATHS "${DOWNLOADS}/tools/${SUBDIR}-linux") set(HASH ffb179ab8ea315167fcc99a8f13286e1363590185b18cf819cc73e09f2a7553790e9dc45fd1ccd0bd1d2dbf543aee3f6c0951cf9ce453a7168ffd2ac873cdd29) endif() - set(BREW_PACKAGE_NAME "ninja") - set(APT_PACKAGE_NAME "ninja-build") set(VERSION_CMD --version) set(_vfa_SUPPORTED ON) elseif(VAR MATCHES "NUGET") From 4c473e7e8c928bd988de1ef68fa05de94634e373 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sat, 15 Aug 2020 23:35:11 +0200 Subject: [PATCH 8/9] move supported around and disable it for freebsd --- scripts/cmake/vcpkg_find_acquire_program.cmake | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 4d03878630d439..e110bfec481413 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -206,7 +206,8 @@ function(vcpkg_find_acquire_program VAR) elseif(VAR MATCHES "NINJA") set(PROGNAME ninja) set(NINJA_VERSION 1.10.0) - set(SUBDIR "ninja-${NINJA_VERSION}") + set(SUBDIR "ninja-${NINJA_VERSION}") + set(_vfa_SUPPORTED ON) if(CMAKE_HOST_WIN32) set(ARCHIVE "ninja-win-${NINJA_VERSION}.zip") set(PATHS "${DOWNLOADS}/tools/${SUBDIR}-windows") @@ -220,6 +221,7 @@ function(vcpkg_find_acquire_program VAR) set(HASH 619a1924067a0b30fc5f8887f868d3ee5481838d2f0f158d031f7614a2a10b95a73d4a56b658d5d560283ebf809e2e536b968c6c01ff0108075c3f393f5780ba) elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "FreeBSD") set(PATHS "${DOWNLOADS}/tools/${SUBDIR}-freebsd") + set(_vfa_SUPPORTED OFF) else() set(ARCHIVE "ninja-linux-${NINJA_VERSION}.zip") set(URL "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-linux.zip") @@ -227,7 +229,6 @@ function(vcpkg_find_acquire_program VAR) set(HASH ffb179ab8ea315167fcc99a8f13286e1363590185b18cf819cc73e09f2a7553790e9dc45fd1ccd0bd1d2dbf543aee3f6c0951cf9ce453a7168ffd2ac873cdd29) endif() set(VERSION_CMD --version) - set(_vfa_SUPPORTED ON) elseif(VAR MATCHES "NUGET") set(PROGNAME nuget) set(SUBDIR "5.5.1") From 1ce48d82ce92d33b1d9a5b3e1147198edfcd35d3 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sat, 15 Aug 2020 23:36:23 +0200 Subject: [PATCH 9/9] fix small command hickup which does not matter for ninja --- scripts/cmake/vcpkg_find_acquire_program.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index e110bfec481413..7f1f419cdca842 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -390,7 +390,7 @@ function(vcpkg_find_acquire_program VAR) macro(do_version_check) if(VERSION_CMD) _execute_process( - COMMAND ${VAR} ${VERSION_CMD} + COMMAND ${${VAR}} ${VERSION_CMD} WORKING_DIRECTORY ${DOWNLOADS} OUTPUT_VARIABLE ${VAR}_VERSION_OUTPUT )