summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2025-04-11 15:44:04 +0800
committerGitHub <[email protected]>2025-04-11 15:44:04 +0800
commit4d20b980c0d3826641a7b0481145a5e495417f6e (patch)
treeb1f03bb10c2d90d0d1793eeeb010d1c83481f5de
parentfd49b7754c6709a87b5beb5526788bbc1a663965 (diff)
parent47c472d605b3c0dce1678b5ea2fe2006961beb9a (diff)
Merge pull request #6312 from xmake-io/extract
improve extract
-rw-r--r--xmake/modules/utils/archive/extract.lua37
1 files changed, 14 insertions, 23 deletions
diff --git a/xmake/modules/utils/archive/extract.lua b/xmake/modules/utils/archive/extract.lua
index edf75eaf8..65d846413 100644
--- a/xmake/modules/utils/archive/extract.lua
+++ b/xmake/modules/utils/archive/extract.lua
@@ -166,9 +166,7 @@ function _extract_using_7z(archivefile, outputdir, extension, opt)
-- https://github.com/xmake-io/xmake-repo/pull/2673
os.tryrm(path.join(outputdir, "*.paxheader"))
end
-
- _extract_uncompressed_tar(outputdir_old, outputdir, opt)
- return true
+ return _extract_uncompressed_tar(outputdir_old, outputdir, opt)
end
-- extract archivefile using gzip
@@ -210,9 +208,7 @@ function _extract_using_gzip(archivefile, outputdir, extension, opt)
-- extract it
os.vrunv(program, argv, {curdir = outputdir})
-
- _extract_uncompressed_tar(outputdir_old, outputdir, opt)
- return true
+ return _extract_uncompressed_tar(outputdir_old, outputdir, opt)
end
-- extract archivefile using xz
@@ -254,9 +250,7 @@ function _extract_using_xz(archivefile, outputdir, extension, opt)
-- extract it
os.vrunv(program, argv, {curdir = outputdir})
-
- _extract_uncompressed_tar(outputdir_old, outputdir, opt)
- return true
+ return _extract_uncompressed_tar(outputdir_old, outputdir, opt)
end
-- extract archivefile using zstd
@@ -298,9 +292,7 @@ function _extract_using_zstd(archivefile, outputdir, extension, opt)
-- extract it
os.vrunv(program, argv, {curdir = outputdir})
-
- _extract_uncompressed_tar(outputdir_old, outputdir, opt)
- return true
+ return _extract_uncompressed_tar(outputdir_old, outputdir, opt)
end
-- extract archivefile using unzip
@@ -346,9 +338,7 @@ function _extract_using_unzip(archivefile, outputdir, extension, opt)
-- extract it
os.vrunv(program, argv)
-
- _extract_uncompressed_tar(outputdir_old, outputdir, opt)
- return true
+ return _extract_uncompressed_tar(outputdir_old, outputdir, opt)
end
-- extract archivefile using powershell
@@ -379,12 +369,9 @@ function _extract_using_powershell(archivefile, outputdir, extension, opt)
-- extract it
local argv = {"-ExecutionPolicy", "Bypass", "-File", scriptfile, archivefile, outputdir}
os.vrunv(powershell.program, argv)
-
- _extract_uncompressed_tar(outputdir_old, outputdir, opt)
- return true
+ return _extract_uncompressed_tar(outputdir_old, outputdir, opt)
end
-
-- extract archivefile using bzip2
function _extract_using_bzip2(archivefile, outputdir, extension, opt)
@@ -429,9 +416,7 @@ function _extract_using_bzip2(archivefile, outputdir, extension, opt)
-- extract it
os.vrunv(program, argv, {curdir = outputdir})
-
- _extract_uncompressed_tar(outputdir_old, outputdir, opt)
- return true
+ return _extract_uncompressed_tar(outputdir_old, outputdir, opt)
end
-- extract *.tar after decompress
@@ -439,9 +424,15 @@ function _extract_uncompressed_tar(outputdir_old, outputdir, opt)
if outputdir_old then
local tarfile = find_file("**.tar", outputdir)
if tarfile and os.isfile(tarfile) then
- return _extract(tarfile, outputdir_old, ".tar", {_extract_using_7z, _extract_using_tar}, opt)
+ local ok = _extract(tarfile, outputdir_old, ".tar", {_extract_using_7z, _extract_using_tar}, opt)
+ -- remove the temporary tar file
+ -- @see https://github.com/xmake-io/xmake/issues/6311
+ os.rm(tarfile)
+ os.rm(outputdir, {emptydirs = true})
+ return ok
end
end
+ return true
end
-- extract archive file using extractors