ENH: Teach UntarFile to preserve file timestamps
After extracting the tarball in a temporary directory we copy the tree to the destination directory. The 'cmake -E copy_directory' command does not preserve file timestamps, so we use file(COPY) instead.
This commit is contained in:
parent
01c669e643
commit
0d40703f49
|
@ -66,31 +66,15 @@ endif()
|
||||||
# Analyze what came out of the tar file:
|
# Analyze what came out of the tar file:
|
||||||
#
|
#
|
||||||
file(GLOB contents "${ut_dir}/*")
|
file(GLOB contents "${ut_dir}/*")
|
||||||
|
|
||||||
set(is_one_directory 0)
|
|
||||||
list(LENGTH contents n)
|
list(LENGTH contents n)
|
||||||
if(n EQUAL 1)
|
if(NOT n EQUAL 1 OR NOT IS_DIRECTORY "${contents}")
|
||||||
if(IS_DIRECTORY "${contents}")
|
set(contents "${ut_dir}")
|
||||||
set(is_one_directory 1)
|
|
||||||
endif()
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
# Copy "the one" directory to the final directory:
|
# Copy "the one" directory to the final directory:
|
||||||
#
|
#
|
||||||
if(is_one_directory EQUAL 1)
|
file(COPY "${contents}/" DESTINATION ${directory})
|
||||||
#message(STATUS "info: (1) copying '${contents}' to '${directory}'...")
|
|
||||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${contents}" "${directory}"
|
|
||||||
RESULT_VARIABLE rv)
|
|
||||||
else()
|
|
||||||
#message(STATUS "info: (more) copying '${ut_dir}' to '${directory}'...")
|
|
||||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${ut_dir}" "${directory}"
|
|
||||||
RESULT_VARIABLE rv)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT rv EQUAL 0)
|
|
||||||
message(FATAL_ERROR "error: copy_directory failed after untar in '${ut_dir}'")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
# Clean up:
|
# Clean up:
|
||||||
|
|
Loading…
Reference in New Issue