summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2009-02-06 13:33:52 (GMT)
committerBrad King <brad.king@kitware.com>2009-02-06 13:33:52 (GMT)
commit16fe328dfc65f47e0a4fd1f7f1ac8e2fa3663b51 (patch)
tree71d385a536394b58dc42b7e4162baf3078907097
parent0499ca66aab617409458cc2add56c10c15904e94 (diff)
downloadCMake-16fe328dfc65f47e0a4fd1f7f1ac8e2fa3663b51.zip
CMake-16fe328dfc65f47e0a4fd1f7f1ac8e2fa3663b51.tar.gz
CMake-16fe328dfc65f47e0a4fd1f7f1ac8e2fa3663b51.tar.bz2
BUG: Alternative fix to bug #8423
The patch used to fix this bug used SystemTools::GetRealPath which works only for existing files. It broke the case of using the command get_filename_component for a non-existing file. Also, it changed long-standing behavior in a possibly incompatible way even for existing files. This reverts the original fix and instead updates the documentation to be consistent with the behavior.
-rw-r--r--Source/cmGetFilenameComponentCommand.cxx3
-rw-r--r--Source/cmGetFilenameComponentCommand.h2
-rw-r--r--Tests/CMakeTests/CMakeLists.txt1
-rw-r--r--Tests/CMakeTests/GetFilenameComponentSymlinksTest.cmake.in43
4 files changed, 2 insertions, 47 deletions
diff --git a/Source/cmGetFilenameComponentCommand.cxx b/Source/cmGetFilenameComponentCommand.cxx
index 81d019b..d06efe8 100644
--- a/Source/cmGetFilenameComponentCommand.cxx
+++ b/Source/cmGetFilenameComponentCommand.cxx
@@ -91,8 +91,7 @@ bool cmGetFilenameComponentCommand
}
// Collapse the path to its simplest form.
- filename = cmSystemTools::CollapseFullPath(filename.c_str());
- result = cmSystemTools::GetRealPath(filename.c_str());
+ result = cmSystemTools::CollapseFullPath(filename.c_str());
}
else
{
diff --git a/Source/cmGetFilenameComponentCommand.h b/Source/cmGetFilenameComponentCommand.h
index 66e958f..e058e0b 100644
--- a/Source/cmGetFilenameComponentCommand.h
+++ b/Source/cmGetFilenameComponentCommand.h
@@ -72,7 +72,7 @@ public:
" [CACHE])\n"
"Set VarName to be the path (PATH), file name (NAME), file "
"extension (EXT), file name without extension (NAME_WE) of FileName, "
- "or the full absolute (ABSOLUTE) file name without symlinks. "
+ "or the full path (ABSOLUTE). "
"Note that the path is converted to Unix slashes format and has no "
"trailing slashes. The longest file extension is always considered. "
"If the optional CACHE argument is specified, the result variable is "
diff --git a/Tests/CMakeTests/CMakeLists.txt b/Tests/CMakeTests/CMakeLists.txt
index 981653d..9f91abc 100644
--- a/Tests/CMakeTests/CMakeLists.txt
+++ b/Tests/CMakeTests/CMakeLists.txt
@@ -14,7 +14,6 @@ AddCMakeTest(VariableWatch "")
AddCMakeTest(Include "")
AddCMakeTest(FindBase "")
AddCMakeTest(Toolchain "")
-AddCMakeTest(GetFilenameComponentSymlinks "")
SET(GetPrerequisites_PreArgs
"-DCTEST_CONFIGURATION_TYPE:STRING=\\\${CTEST_CONFIGURATION_TYPE}"
diff --git a/Tests/CMakeTests/GetFilenameComponentSymlinksTest.cmake.in b/Tests/CMakeTests/GetFilenameComponentSymlinksTest.cmake.in
deleted file mode 100644
index 2179911..0000000
--- a/Tests/CMakeTests/GetFilenameComponentSymlinksTest.cmake.in
+++ /dev/null
@@ -1,43 +0,0 @@
-if(UNIX)
- # file1 => file2 => file3 (real)
-
- set(bindir ${CMAKE_CURRENT_BINARY_DIR})
-
- file(WRITE ${bindir}/file3 "test file")
- find_program(LN NAMES "ln")
-
- if(LN)
- # Create symlinks using "ln -s"
- if(NOT EXISTS ${bindir}/file2)
- execute_process(COMMAND ${LN} "-s" "${bindir}/file3" "${bindir}/file2")
- endif()
- if(NOT EXISTS ${bindir}/file1)
- execute_process(COMMAND ${LN} "-s" "${bindir}/file2" "${bindir}/file1")
- endif()
-
- get_filename_component(file1 ${bindir}/file1 ABSOLUTE)
- get_filename_component(file2 ${bindir}/file2 ABSOLUTE)
- get_filename_component(file3 ${bindir}/file3 ABSOLUTE)
-
- if(NOT file3 STREQUAL "${bindir}/file3")
- message(FATAL_ERROR "CMake fails resolving absolute file file3")
- endif()
-
- if(NOT file2 STREQUAL "${bindir}/file3")
- message(FATAL_ERROR "CMake fails resolving simple symlink")
- endif()
-
- if(NOT file1 STREQUAL "${bindir}/file3")
- message(FATAL_ERROR "CMake fails resolving double symlink")
- endif()
-
- # cleanup
- file(REMOVE ${bindir}/file1)
- file(REMOVE ${bindir}/file2)
- file(REMOVE ${bindir}/file3)
- if(EXISTS file1 OR EXISTS file2 OR EXISTS file3)
- message(FATAL_ERROR "removal of file1, file2, or file3 failed")
- endif()
-
- endif(LN)
-endif()