mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-09-25 04:09:36 +03:00
Merge topic 'revert-extract-symlink'
4397f89c16Restore archive extraction between directory symlinks6e638ce109Tests/File_Archive: Relax stderr line matching Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Merge-request: !11931
This commit is contained in:
@@ -2492,8 +2492,8 @@ bool extract_tar(std::string const& arFileName,
|
||||
struct archive* a = archive_read_new();
|
||||
struct archive* ext = archive_write_disk_new();
|
||||
if (extract) {
|
||||
int flags = ARCHIVE_EXTRACT_SECURE_NODOTDOT |
|
||||
ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS | ARCHIVE_EXTRACT_SECURE_SYMLINKS;
|
||||
int flags =
|
||||
ARCHIVE_EXTRACT_SECURE_NODOTDOT | ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS;
|
||||
if (extractTimestamps == cmSystemTools::cmTarExtractTimestamps::Yes) {
|
||||
flags |= ARCHIVE_EXTRACT_TIME;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
# Test that cmake -E tar can extract to a symlinked directory
|
||||
|
||||
set(OUTPUT_NAME "test.tar.gz")
|
||||
|
||||
set(COMPRESSION_FLAGS -cvzf)
|
||||
set(COMPRESSION_OPTIONS --format=gnutar)
|
||||
|
||||
set(DECOMPRESSION_FLAGS -xvzf)
|
||||
|
||||
set(DESTINATION_SYMLINK ON)
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/roundtrip.cmake)
|
||||
@@ -45,7 +45,13 @@ endif()
|
||||
|
||||
file(REMOVE ${FULL_OUTPUT_NAME})
|
||||
file(REMOVE_RECURSE ${FULL_DECOMPRESS_DIR})
|
||||
file(MAKE_DIRECTORY ${FULL_DECOMPRESS_DIR})
|
||||
if(DESTINATION_SYMLINK AND UNIX)
|
||||
file(MAKE_DIRECTORY ${FULL_DECOMPRESS_DIR}-dir)
|
||||
execute_process(COMMAND ln -sf
|
||||
${FULL_DECOMPRESS_DIR}-dir ${FULL_DECOMPRESS_DIR})
|
||||
else()
|
||||
file(MAKE_DIRECTORY ${FULL_DECOMPRESS_DIR})
|
||||
endif()
|
||||
|
||||
run_tar(${CMAKE_CURRENT_BINARY_DIR} ${COMPRESSION_FLAGS} ${FULL_OUTPUT_NAME} ${COMPRESSION_OPTIONS} ${COMPRESS_DIR})
|
||||
run_tar(${FULL_DECOMPRESS_DIR} ${DECOMPRESSION_FLAGS} ${FULL_OUTPUT_NAME} ${DECOMPRESSION_OPTIONS} -- ${DECOMPRESSION_PATHNAMES})
|
||||
|
||||
@@ -93,3 +93,5 @@ if(Python_EXECUTABLE)
|
||||
run_cmake_script(path-absolute -DPython_EXECUTABLE=${Python_EXECUTABLE})
|
||||
run_cmake_script(path-traversal -DPython_EXECUTABLE=${Python_EXECUTABLE})
|
||||
endif()
|
||||
|
||||
run_cmake(extract-through-symlink)
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
# Test that file(ARCHIVE_EXTRACT) can extract to a symlinked directory
|
||||
|
||||
set(OUTPUT_NAME "test.tar.gz")
|
||||
|
||||
set(ARCHIVE_FORMAT gnutar)
|
||||
set(COMPRESSION_TYPE GZip)
|
||||
set(DESTINATION_SYMLINK ON)
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/roundtrip.cmake)
|
||||
@@ -34,7 +34,13 @@ endif()
|
||||
|
||||
file(REMOVE ${FULL_OUTPUT_NAME})
|
||||
file(REMOVE_RECURSE ${FULL_DECOMPRESS_DIR})
|
||||
file(MAKE_DIRECTORY ${FULL_DECOMPRESS_DIR})
|
||||
if(DESTINATION_SYMLINK AND UNIX)
|
||||
file(MAKE_DIRECTORY ${FULL_DECOMPRESS_DIR}-dir)
|
||||
execute_process(COMMAND ln -sf
|
||||
${FULL_DECOMPRESS_DIR}-dir ${FULL_DECOMPRESS_DIR})
|
||||
else()
|
||||
file(MAKE_DIRECTORY ${FULL_DECOMPRESS_DIR})
|
||||
endif()
|
||||
|
||||
set(ENCODING_OPTIONS "")
|
||||
if (ENCODING)
|
||||
|
||||
Reference in New Issue
Block a user