diff --git a/Library/Homebrew/dev-cmd/audit.rb b/Library/Homebrew/dev-cmd/audit.rb index 457df5fc7b..cd55cdf4cb 100644 --- a/Library/Homebrew/dev-cmd/audit.rb +++ b/Library/Homebrew/dev-cmd/audit.rb @@ -1565,6 +1565,9 @@ class ResourceAuditor strategy = DownloadStrategyDetector.detect(url, using) if strategy <= CurlDownloadStrategy && !url.start_with?("file") + # A `brew mirror`'ed URL is usually not yet reachable at the time of + # pull request. + next if url =~ %r{^https://dl.bintray.com/homebrew/mirror/} if http_content_problem = FormulaAuditor.check_http_content(url) problem http_content_problem end diff --git a/Library/Homebrew/dev-cmd/pull.rb b/Library/Homebrew/dev-cmd/pull.rb index 98a62e5780..1bc87add1e 100644 --- a/Library/Homebrew/dev-cmd/pull.rb +++ b/Library/Homebrew/dev-cmd/pull.rb @@ -155,6 +155,13 @@ module Homebrew next end + if f.stable + stable_urls = [f.stable.url] + f.stable.mirrors + stable_urls.grep(%r{^https://dl.bintray.com/homebrew/mirror/}) do |mirror_url| + check_bintray_mirror(f.full_name, mirror_url) + end + end + if ARGV.include? "--bottle" if f.bottle_unneeded? ohai "#{f}: skipping unneeded bottle." @@ -588,4 +595,12 @@ module Homebrew end end end + + def check_bintray_mirror(name, url) + headers = curl_output("--connect-timeout", "15", "--head", url)[0] + status_code = headers.scan(%r{^HTTP\/.* (\d+)}).last.first + return if status_code.start_with?("3") + opoo "The Bintray mirror #{url} is not reachable (HTTP status code #{status_code})." + opoo "Do you need to upload it with `brew mirror #{name}`?" + end end