summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Cole <david.cole@kitware.com>2010-05-26 21:42:56 (GMT)
committerDavid Cole <david.cole@kitware.com>2010-05-26 21:42:56 (GMT)
commitf5e8ce522e5b37f29d5ef89aa79e1b82e192466f (patch)
tree22978f98732ade74ff25559413d83b4839a80ec4
parent515339f3138721be5cd15dd7dee9ef5fe4f50b1b (diff)
downloadCMake-f5e8ce522e5b37f29d5ef89aa79e1b82e192466f.zip
CMake-f5e8ce522e5b37f29d5ef89aa79e1b82e192466f.tar.gz
CMake-f5e8ce522e5b37f29d5ef89aa79e1b82e192466f.tar.bz2
Use RENAME, not COPY, to extract .tar.gz files.
Use ABSOLUTE file name for the RENAME operation. (Thanks to Marcus for figuring out that it doesn't work on Linux without the ABSOLUTE bit.)
-rw-r--r--Modules/ExternalProject.cmake19
1 files changed, 10 insertions, 9 deletions
diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake
index 0302d5c..7f29147 100644
--- a/Modules/ExternalProject.cmake
+++ b/Modules/ExternalProject.cmake
@@ -243,7 +243,7 @@ message(STATUS \"downloading... done\")
endfunction(_ep_write_downloadfile_script)
-function(_ep_write_extractfile_script script_filename filename tmp directory)
+function(_ep_write_extractfile_script script_filename filename directory)
set(args "")
if(filename MATCHES ".tar$")
@@ -267,7 +267,6 @@ function(_ep_write_extractfile_script script_filename filename tmp directory)
"# Make file names absolute:
#
get_filename_component(filename \"${filename}\" ABSOLUTE)
-get_filename_component(tmp \"${tmp}\" ABSOLUTE)
get_filename_component(directory \"${directory}\" ABSOLUTE)
message(STATUS \"extracting...
@@ -276,11 +275,11 @@ message(STATUS \"extracting...
# Prepare a space for extracting:
#
-set(i 1)
-while(EXISTS \"\${tmp}/extract\${i}\")
+set(i 1234)
+while(EXISTS \"\${directory}/../ex\${i}\")
math(EXPR i \"\${i} + 1\")
endwhile()
-set(ut_dir \"\${tmp}/extract\${i}\")
+set(ut_dir \"\${directory}/../ex\${i}\")
file(MAKE_DIRECTORY \"\${ut_dir}\")
# Extract it:
@@ -305,10 +304,12 @@ if(NOT n EQUAL 1 OR NOT IS_DIRECTORY \"\${contents}\")
set(contents \"\${ut_dir}\")
endif()
-# Copy \"the one\" directory to the final directory:
+# Move \"the one\" directory to the final directory:
#
-message(STATUS \"extracting... [copy]\")
-file(COPY \"\${contents}/\" DESTINATION \${directory})
+message(STATUS \"extracting... [rename]\")
+file(REMOVE_RECURSE \${directory})
+get_filename_component(contents \${contents} ABSOLUTE)
+file(RENAME \${contents} \${directory})
# Clean up:
#
@@ -710,7 +711,7 @@ function(_ep_add_download_command name)
set(comment "Performing download step (extract) for '${name}'")
endif()
# TODO: Support other archive formats.
- _ep_write_extractfile_script("${stamp_dir}/extract-${name}.cmake" "${file}" "${tmp_dir}" "${source_dir}")
+ _ep_write_extractfile_script("${stamp_dir}/extract-${name}.cmake" "${file}" "${source_dir}")
list(APPEND cmd ${CMAKE_COMMAND} -P ${stamp_dir}/extract-${name}.cmake)
endif()
else()