formula*: add source download support for download queue.
This should allow downloading the formula files from GitHub in parallel too.
This commit is contained in:
parent
b63669c92b
commit
5d01b22d38
@ -28,8 +28,8 @@ module Homebrew
|
|||||||
Homebrew::API.fetch "formula/#{name}.json"
|
Homebrew::API.fetch "formula/#{name}.json"
|
||||||
end
|
end
|
||||||
|
|
||||||
sig { params(formula: ::Formula).returns(::Formula) }
|
sig { params(formula: ::Formula, download_queue: T.nilable(Homebrew::DownloadQueue)).returns(Homebrew::API::SourceDownload) }
|
||||||
def self.source_download(formula)
|
def self.source_download(formula, download_queue: nil)
|
||||||
path = formula.ruby_source_path || "Formula/#{formula.name}.rb"
|
path = formula.ruby_source_path || "Formula/#{formula.name}.rb"
|
||||||
git_head = formula.tap_git_head || "HEAD"
|
git_head = formula.tap_git_head || "HEAD"
|
||||||
tap = formula.tap&.full_name || "Homebrew/homebrew-core"
|
tap = formula.tap&.full_name || "Homebrew/homebrew-core"
|
||||||
@ -39,7 +39,19 @@ module Homebrew
|
|||||||
formula.ruby_source_checksum,
|
formula.ruby_source_checksum,
|
||||||
cache: HOMEBREW_CACHE_API_SOURCE/"#{tap}/#{git_head}/Formula",
|
cache: HOMEBREW_CACHE_API_SOURCE/"#{tap}/#{git_head}/Formula",
|
||||||
)
|
)
|
||||||
download.fetch
|
|
||||||
|
if download_queue
|
||||||
|
download_queue.enqueue(download)
|
||||||
|
elsif !download.cache.exist?
|
||||||
|
download.fetch
|
||||||
|
end
|
||||||
|
|
||||||
|
download
|
||||||
|
end
|
||||||
|
|
||||||
|
sig { params(formula: ::Formula).returns(::Formula) }
|
||||||
|
def self.source_download_formula(formula)
|
||||||
|
download = source_download(formula)
|
||||||
|
|
||||||
with_env(HOMEBREW_FORBID_PACKAGES_FROM_PATHS: nil) do
|
with_env(HOMEBREW_FORBID_PACKAGES_FROM_PATHS: nil) do
|
||||||
Formulary.factory(download.symlink_location,
|
Formulary.factory(download.symlink_location,
|
||||||
|
|||||||
@ -317,8 +317,12 @@ class FormulaInstaller
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# Needs to be done before expand_dependencies for compute_dependencies
|
if pour_bottle?
|
||||||
fetch_bottle_tab if pour_bottle?
|
# Needs to be done before expand_dependencies for compute_dependencies
|
||||||
|
fetch_bottle_tab
|
||||||
|
elsif formula.loaded_from_api?
|
||||||
|
Homebrew::API::Formula.source_download(formula, download_queue:)
|
||||||
|
end
|
||||||
|
|
||||||
fetch_fetch_deps unless ignore_deps?
|
fetch_fetch_deps unless ignore_deps?
|
||||||
|
|
||||||
@ -1446,7 +1450,7 @@ on_request: installed_on_request?, options:)
|
|||||||
|
|
||||||
!downloadable_object.cached_download.exist?
|
!downloadable_object.cached_download.exist?
|
||||||
else
|
else
|
||||||
@formula = Homebrew::API::Formula.source_download(formula) if formula.loaded_from_api?
|
@formula = Homebrew::API::Formula.source_download_formula(formula) if formula.loaded_from_api?
|
||||||
|
|
||||||
if (download_queue = self.download_queue)
|
if (download_queue = self.download_queue)
|
||||||
formula.enqueue_resources_and_patches(download_queue:)
|
formula.enqueue_resources_and_patches(download_queue:)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user