From 46b3d24dd3a28bc9f3b6208957aaf848ec4f9633 Mon Sep 17 00:00:00 2001 From: Xuehai Pan Date: Fri, 16 Sep 2022 01:50:44 +0800 Subject: [PATCH 1/3] resource: automatic determine mirrors for glibc-bootstrap --- Library/Homebrew/resource.rb | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/resource.rb b/Library/Homebrew/resource.rb index 1c6c5b2342..d09025f804 100644 --- a/Library/Homebrew/resource.rb +++ b/Library/Homebrew/resource.rb @@ -78,8 +78,11 @@ class Resource end def downloader - @downloader ||= download_strategy.new(url, download_name, version, - mirrors: mirrors.dup, **specs) + return @downloader if @downloader.present? + + url, *mirrors = determine_url_mirrors + @downloader = download_strategy.new(url, download_name, version, + mirrors: mirrors, **specs) end # Removes /s from resource names; this allows Go package names @@ -277,6 +280,23 @@ class Resource version unless version.null? end + def determine_url_mirrors + extra_urls = [] + + # glibc-bootstrap + if url.start_with?("https://github.com/Homebrew/glibc-bootstrap/releases/download") + if Homebrew::EnvConfig.artifact_domain.present? + extra_urls << url.sub("https://github.com", Homebrew::EnvConfig.artifact_domain) + end + if Homebrew::EnvConfig.bottle_domain != HOMEBREW_BOTTLE_DEFAULT_DOMAIN + tag, filename = url.split("/").last(2) + extra_urls << "#{Homebrew::EnvConfig.bottle_domain}/glibc-bootstrap/#{tag}/#{filename}" + end + end + + [*extra_urls, url, *mirrors].uniq + end + # A resource containing a Go package. class Go < Resource def stage(target, &block) From d3093cd2607555234ff018b34fd3747d9b49def4 Mon Sep 17 00:00:00 2001 From: Xuehai Pan Date: Fri, 16 Sep 2022 01:57:19 +0800 Subject: [PATCH 2/3] resource: automatic determine mirrors for PyPI resources --- Library/Homebrew/env_config.rb | 4 ++++ Library/Homebrew/resource.rb | 8 ++++++++ Library/Homebrew/sorbet/rbi/hidden-definitions/hidden.rbi | 2 ++ 3 files changed, 14 insertions(+) diff --git a/Library/Homebrew/env_config.rb b/Library/Homebrew/env_config.rb index 0d637caa45..82adde4d39 100644 --- a/Library/Homebrew/env_config.rb +++ b/Library/Homebrew/env_config.rb @@ -318,6 +318,10 @@ module Homebrew "outdated.", boolean: true, }, + HOMEBREW_PIP_INDEX_URL: { + description: "If set, `brew install ` will use this URL to download PyPI package resources.", + default_text: "`https://pypi.org/simple`.", + }, HOMEBREW_PRY: { description: "If set, use Pry for the `brew irb` command.", boolean: true, diff --git a/Library/Homebrew/resource.rb b/Library/Homebrew/resource.rb index d09025f804..9c00389161 100644 --- a/Library/Homebrew/resource.rb +++ b/Library/Homebrew/resource.rb @@ -294,6 +294,14 @@ class Resource end end + # PyPI packages: PEP 503 – Simple Repository API + if Homebrew::EnvConfig.pip_index_url.present? + pip_index_base_url = Homebrew::EnvConfig.pip_index_url.chomp("/").chomp("/simple") + %w[https://files.pythonhosted.org https://pypi.org].each do |base_url| + extra_urls << url.sub(base_url, pip_index_base_url) if url.start_with?("#{base_url}/packages") + end + end + [*extra_urls, url, *mirrors].uniq end diff --git a/Library/Homebrew/sorbet/rbi/hidden-definitions/hidden.rbi b/Library/Homebrew/sorbet/rbi/hidden-definitions/hidden.rbi index 5b933bf983..c08494377a 100644 --- a/Library/Homebrew/sorbet/rbi/hidden-definitions/hidden.rbi +++ b/Library/Homebrew/sorbet/rbi/hidden-definitions/hidden.rbi @@ -2655,6 +2655,8 @@ module Homebrew::EnvConfig def self.no_proxy(); end + def self.pip_index_url(); end + def self.pry?(); end def self.simulate_macos_on_linux?(); end From 46736c5e8101e8f4568303eacab6a0cfaaad9298 Mon Sep 17 00:00:00 2001 From: Xuehai Pan Date: Sat, 17 Sep 2022 16:40:00 +0800 Subject: [PATCH 3/3] cask/audit: fix audit error when homepage is missing --- Library/Homebrew/cask/audit.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Library/Homebrew/cask/audit.rb b/Library/Homebrew/cask/audit.rb index dc7ad2ad83..a8ad81cdfa 100644 --- a/Library/Homebrew/cask/audit.rb +++ b/Library/Homebrew/cask/audit.rb @@ -793,6 +793,9 @@ module Cask else host_uri.host end + + return false if homepage.blank? + home = homepage.downcase if (split_host = host.split(".")).length >= 3 host = split_host[-2..].join(".")