dev-cmd/bottle: use default tar when bottling gnu-tar

This commit is contained in:
Michael Cho 2024-08-23 11:14:34 -04:00
parent 7bb07b88a4
commit f627c70b71
No known key found for this signature in database
GPG Key ID: 55E85E28A7CD1E85

View File

@ -359,11 +359,11 @@ module Homebrew
gnu_tar_formula
end
sig { params(mtime: String).returns([String, T::Array[String]]) }
def setup_tar_and_args!(mtime)
sig { params(mtime: String, default_tar: T::Boolean).returns([String, T::Array[String]]) }
def setup_tar_and_args!(mtime, default_tar: false)
# Without --only-json-tab bottles are never reproducible
default_tar_args = ["tar", tar_args].freeze
return default_tar_args unless args.only_json_tab?
return default_tar_args if !args.only_json_tab? || default_tar
# Use gnu-tar as it can be set up for reproducibility better than libarchive
# and to be consistent between macOS and Linux.
@ -540,7 +540,7 @@ module Homebrew
sudo_purge
# Tar then gzip for reproducible bottles.
tar_mtime = tab.source_modified_time.strftime("%Y-%m-%d %H:%M:%S")
tar, tar_args = setup_tar_and_args!(tar_mtime)
tar, tar_args = setup_tar_and_args!(tar_mtime, default_tar: formula.name == "gnu-tar")
safe_system tar, "--create", "--numeric-owner",
*tar_args,
"--file", tar_path, "#{formula.name}/#{formula.pkg_version}"