Use long/readable tar flags.

Also, use `--no-same-permissions` instead of `-o` (which does nothing
without `-p` being passed and run as `root`) for the more explicit
description of the behaviour we want.
This commit is contained in:
Mike McQuaid 2021-04-15 12:17:55 +01:00
parent 96cd1c058e
commit b57fe84f81
No known key found for this signature in database
GPG Key ID: 48A898132FD8EE70
4 changed files with 8 additions and 6 deletions

View File

@ -32,7 +32,7 @@ describe UnpackStrategy do
(mktmpdir/"file.tar").tap do |path|
mktmpdir do |dir|
(dir/directories).mkpath
system "tar", "-c", "-f", path, "-C", dir, "A/"
system "tar", "--create", "--file", path, "--directory", dir, "A/"
end
end
}
@ -49,7 +49,7 @@ describe UnpackStrategy do
(mktmpdir/basename).tap do |path|
mktmpdir do |dir|
FileUtils.touch dir/"file.txt"
system "tar", "-c", "-f", path, "-C", dir, "file.txt"
system "tar", "--create", "--file", path, "--directory", dir, "file.txt"
end
end
}

View File

@ -30,7 +30,7 @@ module UnpackStrategy
return false unless [Bzip2, Gzip, Lzip, Xz].any? { |s| s.can_extract?(path) }
# Check if `tar` can list the contents, then it can also extract it.
stdout, _, status = system_command("tar", args: ["tf", path], print_stderr: false)
stdout, _, status = system_command("tar", args: ["--list", "--file", path], print_stderr: false)
status.success? && !stdout.empty?
end
@ -48,7 +48,9 @@ module UnpackStrategy
end
system_command! "tar",
args: ["xof", tar_path, "-C", unpack_dir],
args: ["--extract", "--no-same-owner",
"--file", tar_path,
"--directory", unpack_dir],
verbose: verbose
end
end

View File

@ -47,7 +47,7 @@ module Utils
end
def file_from_bottle(bottle_file, file_path)
Utils.popen_read("tar", "--extract", "--stdout", "--file", bottle_file, file_path)
Utils.popen_read("tar", "--extract", "--to-stdout", "--file", bottle_file, file_path)
end
def resolve_formula_names(bottle_file)

View File

@ -26,7 +26,7 @@ module Utils
path = Pathname.new(path)
return unless TAR_FILE_EXTENSIONS.include? path.extname
return if Utils.popen_read(executable, "-tf", path).match?(%r{/.*\.})
return if Utils.popen_read(executable, "--list", "--file", path).match?(%r{/.*\.})
odie "#{path} is not a valid tar file!"
end