Merge pull request #15889 from MikeMcQuaid/gnu_tar_deps_bottling

dev-cmd/bottle: install gnu-tar before keg lock.
This commit is contained in:
Mike McQuaid 2023-08-18 12:42:42 +01:00 committed by GitHub
commit 3cd72905ce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -98,6 +98,8 @@ module Homebrew
return merge(args: args) return merge(args: args)
end end
gnu_tar_formula_ensure_installed_if_needed!(only_json_tab: args.only_json_tab?)
args.named.to_resolved_formulae(uniq: false).each do |formula| args.named.to_resolved_formulae(uniq: false).each do |formula|
bottle_formula formula, args: args bottle_formula formula, args: args
end end
@ -257,20 +259,30 @@ module Homebrew
].freeze ].freeze
end end
sig { params(only_json_tab: T::Boolean).returns(T.nilable(Formula)) }
def self.gnu_tar_formula_ensure_installed_if_needed!(only_json_tab:)
gnu_tar_formula = begin
Formula["gnu-tar"]
rescue FormulaUnavailableError
nil
end
return if gnu_tar_formula.blank?
ensure_formula_installed!(gnu_tar_formula, reason: "bottling")
gnu_tar_formula
end
sig { params(args: T.untyped, mtime: String).returns([String, T::Array[String]]) } sig { params(args: T.untyped, mtime: String).returns([String, T::Array[String]]) }
def self.setup_tar_and_args!(args, mtime) def self.setup_tar_and_args!(args, mtime)
# Without --only-json-tab bottles are never reproducible # Without --only-json-tab bottles are never reproducible
default_tar_args = ["tar", tar_args].freeze default_tar_args = ["tar", tar_args].freeze
return default_tar_args unless args.only_json_tab? return default_tar_args unless args.only_json_tab?
# Use gnu-tar as it can be set up for reproducibility better than libarchive. # Use gnu-tar as it can be set up for reproducibility better than libarchive
begin # and to be consistent between macOS and Linux.
gnu_tar_formula = Formula["gnu-tar"] gnu_tar_formula = gnu_tar_formula_ensure_installed_if_needed!(only_json_tab: args.only_json_tab?)
rescue FormulaUnavailableError return default_tar_args if gnu_tar_formula.blank?
return default_tar_args
end
ensure_formula_installed!(gnu_tar_formula, reason: "bottling")
[gnu_tar(gnu_tar_formula), reproducible_gnutar_args(mtime)].freeze [gnu_tar(gnu_tar_formula), reproducible_gnutar_args(mtime)].freeze
end end