ExternalProject: Recognize lzma-compressed files (#13515)

Add .7z, .tar.xz, and .txz file extensions.

Inspired-by: Joke de Buhr <joke@seiken.de>
Inspired-by: David Cole <DLRdave@aol.com>
This commit is contained in:
Brad King 2014-07-23 15:54:04 -04:00
parent 98ea03443b
commit 56e6975ce9
2 changed files with 10 additions and 5 deletions

View File

@ -0,0 +1,5 @@
ExternalProject-add-lzma
------------------------
* The :module:`ExternalProject` module learned to support lzma-compressed
source tarballs with ``.7z``, ``.tar.xz``, and ``.txz`` extensions.

View File

@ -737,7 +737,7 @@ endfunction()
function(_ep_write_extractfile_script script_filename name filename directory) function(_ep_write_extractfile_script script_filename name filename directory)
set(args "") set(args "")
if(filename MATCHES "(\\.|=)(tar\\.bz2|tar\\.gz|tbz2|tgz|zip)$") if(filename MATCHES "(\\.|=)(7z|tar\\.bz2|tar\\.gz|tar\\.xz|tbz2|tgz|txz|zip)$")
set(args xfz) set(args xfz)
endif() endif()
@ -746,7 +746,7 @@ function(_ep_write_extractfile_script script_filename name filename directory)
endif() endif()
if(args STREQUAL "") if(args STREQUAL "")
message(SEND_ERROR "error: do not know how to extract '${filename}' -- known types are .tar, .tar.bz2, .tar.gz, .tbz2, .tgz and .zip") message(SEND_ERROR "error: do not know how to extract '${filename}' -- known types are .7z, .tar, .tar.bz2, .tar.gz, .tar.xz, .tbz2, .tgz, .txz and .zip")
return() return()
endif() endif()
@ -1540,11 +1540,11 @@ function(_ep_add_download_command name)
if("x${fname}" STREQUAL "x") if("x${fname}" STREQUAL "x")
string(REGEX MATCH "[^/\\?]*$" fname "${url}") string(REGEX MATCH "[^/\\?]*$" fname "${url}")
endif() endif()
if(NOT "${fname}" MATCHES "(\\.|=)(tar|tar\\.bz2|tar\\.gz|tbz2|tgz|zip)$") if(NOT "${fname}" MATCHES "(\\.|=)(7z|tar|tar\\.bz2|tar\\.gz|tar\\.xz|tbz2|tgz|txz|zip)$")
string(REGEX MATCH "([^/\\?]+(\\.|=)(tar|tar\\.bz2|tar\\.gz|tbz2|tgz|zip))/.*$" match_result "${url}") string(REGEX MATCH "([^/\\?]+(\\.|=)(7z|tar|tar\\.bz2|tar\\.gz|tar\\.xz|tbz2|tgz|txz|zip))/.*$" match_result "${url}")
set(fname "${CMAKE_MATCH_1}") set(fname "${CMAKE_MATCH_1}")
endif() endif()
if(NOT "${fname}" MATCHES "(\\.|=)(tar|tar\\.bz2|tar\\.gz|tbz2|tgz|zip)$") if(NOT "${fname}" MATCHES "(\\.|=)(7z|tar|tar\\.bz2|tar\\.gz|tar\\.xz|tbz2|tgz|txz|zip)$")
message(FATAL_ERROR "Could not extract tarball filename from url:\n ${url}") message(FATAL_ERROR "Could not extract tarball filename from url:\n ${url}")
endif() endif()
string(REPLACE ";" "-" fname "${fname}") string(REPLACE ";" "-" fname "${fname}")