dev-cmd/bottle: install gnu-tar before keg lock.
This allows the correct bottling of `gnu-tar` dependencies (and `gnu-tar` itself). It also installs `gnu-tar` at a more appropriate time in the `brew bottle` command.
This commit is contained in:
parent
5d4d674713
commit
e7dc14c015
@ -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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user