Pass verbose? to Formula#verify_download_integrity.

This commit is contained in:
Markus Reiter 2020-08-02 06:05:53 +02:00
parent 6c964d4a78
commit bace9ecc34
8 changed files with 59 additions and 33 deletions

View File

@ -139,7 +139,13 @@ class Build
formula.update_head_version
formula.brew(fetch: false, keep_tmp: args.keep_tmp?, interactive: args.interactive?, debug: args.debug?) do
formula.brew(
fetch: false,
keep_tmp: args.keep_tmp?,
interactive: args.interactive?,
debug: args.debug?,
verbose: args.verbose?,
) do
# For head builds, HOMEBREW_FORMULA_PREFIX should include the commit,
# which is not known until after the formula has been staged.
ENV["HOMEBREW_FORMULA_PREFIX"] = formula.prefix

View File

@ -133,7 +133,7 @@ module Homebrew
already_fetched = f.cached_download.exist?
begin
download = f.fetch(verify_download_integrity: false)
download = f.fetch(verify_download_integrity: false, verbose: args.verbose?)
rescue DownloadError
retry if retry_fetch?(f, args: args)
raise
@ -144,6 +144,6 @@ module Homebrew
puts "Downloaded to: #{download}" unless already_fetched
puts Checksum::TYPES.map { |t| "#{t.to_s.upcase}: #{download.send(t)}" }
f.verify_download_integrity(download)
f.verify_download_integrity(download, verbose: args.verbose?)
end
end

View File

@ -57,6 +57,7 @@ class Formula
extend Enumerable
extend Forwardable
extend Cachable
extend Predicable
# @!method inreplace(paths, before = nil, after = nil)
# Actually implemented in {Utils::Inreplace.inreplace}.
@ -1167,17 +1168,22 @@ class Formula
patchlist.each(&:apply)
end
# @private
attr_predicate :debug?, :verbose?
# yields |self,staging| with current working directory set to the uncompressed tarball
# where staging is a Mktemp staging context
# @private
def brew(fetch: true, keep_tmp: false, interactive: false, debug: false)
def brew(fetch: true, keep_tmp: false, interactive: false, debug: false, verbose: false)
@debug = debug
@verbose = verbose
@prefix_returns_versioned_prefix = true
active_spec.fetch if fetch
stage(interactive: interactive) do |staging|
staging.retain! if keep_tmp
prepare_patches
fetch_patches if fetch
fetch_patches(verbose: verbose) if fetch
begin
yield self, staging
@ -1189,6 +1195,8 @@ class Formula
end
end
ensure
@debug = nil
@verbose = nil
@prefix_returns_versioned_prefix = false
end
@ -1793,17 +1801,19 @@ class Formula
end
# @private
def fetch(verify_download_integrity: true)
active_spec.fetch(verify_download_integrity: verify_download_integrity)
def fetch(verify_download_integrity: true, verbose: false)
active_spec.fetch(verify_download_integrity: verify_download_integrity, verbose: verbose)
end
# @private
def verify_download_integrity(fn)
active_spec.verify_download_integrity(fn)
def verify_download_integrity(fn, verbose: false)
active_spec.verify_download_integrity(fn, verbose: verbose)
end
# @private
def run_test(keep_tmp: false, debug: false)
def run_test(keep_tmp: false, debug: false, verbose: false)
@debug = debug
@verbose = verbose
@prefix_returns_versioned_prefix = true
test_env = {
@ -1836,8 +1846,10 @@ class Formula
end
end
ensure
@testpath = nil
@debug = nil
@verbose = nil
@prefix_returns_versioned_prefix = false
@testpath = nil
end
# @private
@ -1927,13 +1939,12 @@ class Formula
# # If there is a "make", "install" available, please use it!
# system "make", "install"</pre>
def system(cmd, *args)
verbose = Homebrew.args.verbose?
verbose_using_dots = Homebrew::EnvConfig.verbose_using_dots?
# remove "boring" arguments so that the important ones are more likely to
# be shown considering that we trim long ohai lines to the terminal width
pretty_args = args.dup
unless verbose
unless verbose?
case cmd
when "./configure"
pretty_args -= %w[--disable-dependency-tracking --disable-debug --disable-silent-rules]
@ -1961,7 +1972,7 @@ class Formula
log.puts Time.now, "", cmd, args, ""
log.flush
if verbose
if verbose?
rd, wr = IO.pipe
begin
pid = fork do
@ -2004,7 +2015,7 @@ class Formula
log_lines = Homebrew::EnvConfig.fail_log_lines
log.flush
if !verbose || verbose_using_dots
if !verbose? || verbose_using_dots
puts "Last #{log_lines} lines from #{logfn}:"
Kernel.system "/usr/bin/tail", "-n", log_lines, logfn
end
@ -2092,8 +2103,10 @@ class Formula
ENV.update(removed)
end
def fetch_patches
patchlist.select(&:external?).each(&:fetch)
def fetch_patches(verbose: false)
patchlist.select(&:external?).each do |p|
p.fetch(verbose: verbose)
end
end
private

View File

@ -1027,8 +1027,10 @@ class FormulaInstaller
end
return if pour_bottle?
formula.fetch_patches
formula.resources.each(&:fetch)
formula.fetch_patches(verbose: verbose?)
formula.resources.each do |r|
r.fetch(verbose: verbose?)
end
downloader.fetch
end

View File

@ -179,12 +179,12 @@ class LegacyPatch < ExternalPatch
resource.download_strategy = CurlDownloadStrategy
end
def fetch
def fetch(verbose: false)
clear_cache
super
end
def verify_download_integrity(_fn)
def verify_download_integrity(_fn, verbose: false)
# no-op
end

View File

@ -74,9 +74,10 @@ class Resource
def stage(target = nil, &block)
raise ArgumentError, "target directory or block is required" if !target && block.blank?
verbose = owner.owner.verbose?
prepare_patches
fetch_patches(skip_downloaded: true)
fetch unless downloaded?
fetch_patches(skip_downloaded: true, verbose: verbose)
fetch(verbose: owner.owner.verbose?) unless downloaded?
unpack(target, &block)
end
@ -85,10 +86,12 @@ class Resource
patches.grep(DATAPatch) { |p| p.path = owner.owner.path }
end
def fetch_patches(skip_downloaded: false)
def fetch_patches(skip_downloaded: false, verbose: false)
external_patches = patches.select(&:external?)
external_patches.reject!(&:downloaded?) if skip_downloaded
external_patches.each(&:fetch)
external_patches.each do |p|
p.fetch(verbose: verbose)
end
end
def apply_patches
@ -122,10 +125,10 @@ class Resource
Partial.new(self, files)
end
def fetch(verify_download_integrity: true)
def fetch(verify_download_integrity: true, verbose: false)
HOMEBREW_CACHE.mkpath
fetch_patches
fetch_patches(verbose: verbose)
begin
downloader.fetch
@ -134,13 +137,13 @@ class Resource
end
download = cached_download
verify_download_integrity(download) if verify_download_integrity
verify_download_integrity(download, verbose: verbose) if verify_download_integrity
download
end
def verify_download_integrity(fn)
def verify_download_integrity(fn, verbose: false)
if fn.file?
ohai "Verifying #{fn.basename} checksum" if Homebrew.args.verbose?
ohai "Verifying #{fn.basename} checksum" if verbose
fn.verify_checksum(checksum)
end
rescue ChecksumMissingError

View File

@ -239,8 +239,8 @@ class HeadSoftwareSpec < SoftwareSpec
@resource.version = Version.create("HEAD")
end
def verify_download_integrity(_fn)
nil
def verify_download_integrity(_fn, verbose: false)
# no-op
end
end

View File

@ -34,7 +34,9 @@ begin
# tests can also return false to indicate failure
Timeout.timeout TEST_TIMEOUT_SECONDS do
raise "test returned false" if formula.run_test(keep_tmp: args.keep_tmp?, debug: args.debug?) == false
if formula.run_test(keep_tmp: args.keep_tmp?, debug: args.debug?, verbose: args.verbose?) == false
raise "test returned false"
end
end
rescue Exception => e # rubocop:disable Lint/RescueException
error_pipe.puts e.to_json