Merge topic 'rvm_refactor'
f06b2af291
Tests/FindRuby/Rvm: Honor Ruby_FIND_VIRTUALENV ONLYa023377b86
FindRuby: Move checking of RVM and System Ruby to separate functions. Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !10071
This commit is contained in:
commit
ed0baf1ec5
@ -137,24 +137,13 @@ if(NOT Ruby_FIND_VERSION_EXACT)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
# virtual environments handling (eg RVM)
|
||||
if (DEFINED ENV{MY_RUBY_HOME})
|
||||
if(_Ruby_DEBUG_OUTPUT)
|
||||
message("My ruby home is defined: $ENV{MY_RUBY_HOME}")
|
||||
endif()
|
||||
|
||||
if (DEFINED Ruby_FIND_VIRTUALENV)
|
||||
if (NOT Ruby_FIND_VIRTUALENV MATCHES "^(FIRST|ONLY|STANDARD)$")
|
||||
message (AUTHOR_WARNING "FindRuby: ${Ruby_FIND_VIRTUALENV}: invalid value for 'Ruby_FIND_VIRTUALENV'. 'FIRST', 'ONLY' or 'STANDARD' expected. 'FIRST' will be used instead.")
|
||||
set (_Ruby_FIND_VIRTUALENV "FIRST")
|
||||
else()
|
||||
set (_Ruby_FIND_VIRTUALENV ${Ruby_FIND_VIRTUALENV})
|
||||
endif()
|
||||
else()
|
||||
set (_Ruby_FIND_VIRTUALENV FIRST)
|
||||
endif()
|
||||
else()
|
||||
set (_Ruby_FIND_VIRTUALENV STANDARD)
|
||||
# Virtual environment handling
|
||||
if (DEFINED Ruby_FIND_VIRTUALENV AND NOT Ruby_FIND_VIRTUALENV MATCHES "^(FIRST|ONLY|STANDARD)$")
|
||||
message (AUTHOR_WARNING "FindRuby: ${Ruby_FIND_VIRTUALENV}: invalid value for 'Ruby_FIND_VIRTUALENV'. 'FIRST', 'ONLY' or 'STANDARD' expected. 'FIRST' will be used instead.")
|
||||
set (Ruby_FIND_VIRTUALENV "FIRST")
|
||||
elseif (NOT DEFINED Ruby_FIND_VIRTUALENV)
|
||||
# Default is to search for virtual environments first
|
||||
set (Ruby_FIND_VIRTUALENV "FIRST")
|
||||
endif()
|
||||
|
||||
function (_RUBY_VALIDATE_INTERPRETER)
|
||||
@ -209,46 +198,53 @@ function(_RUBY_CONFIG_VAR RBVAR OUTVAR)
|
||||
set(${OUTVAR} "${_Ruby_OUTPUT}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
while(1)
|
||||
# Virtual environments handling
|
||||
if(_Ruby_FIND_VIRTUALENV MATCHES "^(FIRST|ONLY)$")
|
||||
if(_Ruby_DEBUG_OUTPUT)
|
||||
message("Inside Matches")
|
||||
endif()
|
||||
find_program (Ruby_EXECUTABLE
|
||||
NAMES ${_Ruby_POSSIBLE_EXECUTABLE_NAMES}
|
||||
NAMES_PER_DIR
|
||||
PATHS ENV MY_RUBY_HOME
|
||||
PATH_SUFFIXES bin Scripts
|
||||
NO_CMAKE_PATH
|
||||
NO_CMAKE_ENVIRONMENT_PATH
|
||||
NO_SYSTEM_ENVIRONMENT_PATH
|
||||
NO_CMAKE_SYSTEM_PATH)
|
||||
|
||||
if(_Ruby_DEBUG_OUTPUT)
|
||||
message("Ruby_EXECUTABLE=${Ruby_EXECUTABLE}")
|
||||
endif()
|
||||
|
||||
_RUBY_VALIDATE_INTERPRETER (${Ruby_FIND_VERSION}})
|
||||
if(Ruby_EXECUTABLE)
|
||||
break()
|
||||
endif()
|
||||
if(NOT _Ruby_FIND_VIRTUALENV STREQUAL "ONLY")
|
||||
break()
|
||||
endif()
|
||||
elseif(_Ruby_DEBUG_OUTPUT)
|
||||
message("_Ruby_FIND_VIRTUALENV doesn't match: ${_Ruby_FIND_VIRTUALENV}")
|
||||
#### Check RMV virtual environment ###
|
||||
function (_RUBY_CHECK_RVM)
|
||||
if (NOT DEFINED ENV{MY_RUBY_HOME})
|
||||
return()
|
||||
endif()
|
||||
|
||||
# try using standard paths
|
||||
find_program (Ruby_EXECUTABLE
|
||||
NAMES ${_Ruby_POSSIBLE_EXECUTABLE_NAMES}
|
||||
NAMES_PER_DIR
|
||||
PATHS ENV MY_RUBY_HOME
|
||||
PATH_SUFFIXES bin Scripts
|
||||
NO_CMAKE_PATH
|
||||
NO_CMAKE_ENVIRONMENT_PATH
|
||||
NO_SYSTEM_ENVIRONMENT_PATH
|
||||
NO_CMAKE_SYSTEM_PATH)
|
||||
|
||||
_RUBY_VALIDATE_INTERPRETER (${Ruby_FIND_VERSION}})
|
||||
|
||||
if(Ruby_EXECUTABLE)
|
||||
set(Ruby_ENV "RVM" CACHE INTERNAL "Ruby environment")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
#### Check system installed Ruby ###
|
||||
function (_RUBY_CHECK_SYSTEM)
|
||||
find_program (Ruby_EXECUTABLE
|
||||
NAMES ${_Ruby_POSSIBLE_EXECUTABLE_NAMES}
|
||||
NAMES_PER_DIR)
|
||||
|
||||
_RUBY_VALIDATE_INTERPRETER (${Ruby_FIND_VERSION})
|
||||
|
||||
# We have either found Ruby or not so break out of the loop
|
||||
break()
|
||||
endwhile()
|
||||
if(Ruby_EXECUTABLE)
|
||||
set(Ruby_ENV "Standard" CACHE INTERNAL "Ruby environment")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# Find Ruby! First check virtual environments
|
||||
if(Ruby_FIND_VIRTUALENV MATCHES "^(FIRST|ONLY)$")
|
||||
if(NOT Ruby_EXECUTABLE)
|
||||
_RUBY_CHECK_RVM()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# If we did not find a virtual environment then look for a system installed Ruby
|
||||
if(NOT ${Ruby_FIND_VIRTUALENV} STREQUAL "ONLY" AND NOT Ruby_EXECUTABLE)
|
||||
_RUBY_CHECK_SYSTEM()
|
||||
endif()
|
||||
|
||||
if(Ruby_EXECUTABLE AND NOT Ruby_VERSION_MAJOR)
|
||||
# query the ruby version
|
||||
@ -410,7 +406,8 @@ if(_Ruby_DEBUG_OUTPUT)
|
||||
message(STATUS "_Ruby_POSSIBLE_EXECUTABLE_NAMES: ${_Ruby_POSSIBLE_EXECUTABLE_NAMES}")
|
||||
message(STATUS "_Ruby_POSSIBLE_LIB_DIR: ${_Ruby_POSSIBLE_LIB_DIR}")
|
||||
message(STATUS "_Ruby_POSSIBLE_LIB_NAMES: ${_Ruby_POSSIBLE_LIB_NAMES}")
|
||||
message(STATUS "_Ruby_FIND_VIRTUALENV=${_Ruby_FIND_VIRTUALENV}")
|
||||
message(STATUS "Ruby_FIND_VIRTUALENV=${Ruby_FIND_VIRTUALENV}")
|
||||
message(STATUS "Ruby_ENV: ${Ruby_ENV}")
|
||||
message(STATUS "Found Ruby_VERSION: \"${Ruby_VERSION}\"")
|
||||
message(STATUS "Ruby_EXECUTABLE: ${Ruby_EXECUTABLE}")
|
||||
message(STATUS "Ruby_LIBRARY: ${Ruby_LIBRARY}")
|
||||
|
@ -21,21 +21,17 @@ endif()
|
||||
# Test: FindRuby.UnsetRvmOnly
|
||||
if (NOT RUBY_HOME)
|
||||
|
||||
# If ENV{MY_RUBY_HOME} isn't defined, it should default back to "STANDARD"
|
||||
# At which point:
|
||||
# If ENV{MY_RUBY_HOME} isn't defined and Ruby_FIND_VIRTUALENV is set to ONLY
|
||||
# then Ruby should not be found
|
||||
|
||||
# It shouldn't find the RVM ruby
|
||||
find_package (Ruby ${RVM_RUBY_VERSION} EXACT QUIET)
|
||||
if(Ruby_FOUND)
|
||||
message(FATAL_ERROR "Found RVM ruby when expecting system")
|
||||
message (FATAL_ERROR "RVM Ruby unexpectedly found.")
|
||||
endif()
|
||||
|
||||
# it should find the system ruby
|
||||
# it should *not* find the system ruby
|
||||
find_package (Ruby ${SYSTEM_RUBY_VERSION} EXACT QUIET)
|
||||
if(NOT Ruby_FOUND)
|
||||
message (FATAL_ERROR "Ruby not found.")
|
||||
endif()
|
||||
if (Ruby_FOUND MATCHES "^${RUBY_HOME}/.+")
|
||||
message(FATAL_ERROR "Failed to find system ruby")
|
||||
if(Ruby_FOUND)
|
||||
message (FATAL_ERROR "Ruby unexpectedly found.")
|
||||
endif()
|
||||
endif()
|
||||
|
Loading…
Reference in New Issue
Block a user