summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvangelos Foutras <evangelos@foutrelis.com>2014-12-29 17:02:04 (GMT)
committerBrad King <brad.king@kitware.com>2015-01-11 19:49:51 (GMT)
commit802d0aa0b0a0af72fdc95bf1f69afeb362b6ef95 (patch)
treeb3b3b3f212fe350d08a7035ebc59288fc7f807ab
parentc118816d44e178e4364a0c32aaece81a14511237 (diff)
downloadCMake-802d0aa0b0a0af72fdc95bf1f69afeb362b6ef95.zip
CMake-802d0aa0b0a0af72fdc95bf1f69afeb362b6ef95.tar.gz
CMake-802d0aa0b0a0af72fdc95bf1f69afeb362b6ef95.tar.bz2
FindRuby: Fix output check in _RUBY_CONFIG_VAR
Since commit v2.8.8~173^2 (FindRuby: clean up querying variables from Ruby, 2012-02-17) we query RbConfig::CONFIG first and, if the command fails or its output equates to a false constant, then fall back to querying Config::CONFIG. Due to the above, an error condition exists with Ruby 2.2.0; when querying RbConfig::CONFIG['TEENY'], the output of '0' will be discarded since it matches the false constant '0'. In previous versions this wasn't a problem, but Ruby 2.2 has completely removed Config::CONFIG. This causes RUBY_VERSION_PATCH to be set to an empty string and the Ruby version to be detected as '2.2.' (instead of '2.2.0'). Fix the output check to explicitly look for an empty string before using the fallback query method. (Someone more familiar with Ruby might be able to deem the fallback as unnecessary and fully remove it.)
-rw-r--r--Modules/FindRuby.cmake2
1 files changed, 1 insertions, 1 deletions
diff --git a/Modules/FindRuby.cmake b/Modules/FindRuby.cmake
index b5ac703..0950d15 100644
--- a/Modules/FindRuby.cmake
+++ b/Modules/FindRuby.cmake
@@ -90,7 +90,7 @@ if(RUBY_EXECUTABLE AND NOT RUBY_VERSION_MAJOR)
RESULT_VARIABLE _RUBY_SUCCESS
OUTPUT_VARIABLE _RUBY_OUTPUT
ERROR_QUIET)
- if(_RUBY_SUCCESS OR NOT _RUBY_OUTPUT)
+ if(_RUBY_SUCCESS OR _RUBY_OUTPUT STREQUAL "")
execute_process(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['${RBVAR}']"
RESULT_VARIABLE _RUBY_SUCCESS
OUTPUT_VARIABLE _RUBY_OUTPUT