From cbb788bd17b5508d013a60e3adee43ba26d18aca Mon Sep 17 00:00:00 2001 From: Rylan Polster Date: Sat, 29 May 2021 18:08:42 -0400 Subject: [PATCH 1/2] dependency: don't merge formula and cask cache in `::expand` --- Library/Homebrew/dependency.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/dependency.rb b/Library/Homebrew/dependency.rb index 0bde58aa70..7ac088dc16 100644 --- a/Library/Homebrew/dependency.rb +++ b/Library/Homebrew/dependency.rb @@ -96,7 +96,7 @@ class Dependency if cache_key.present? cache[cache_key] ||= {} - return cache[cache_key][dependent.full_name].dup if cache[cache_key][dependent.full_name] + return cache[cache_key][cache_id dependent].dup if cache[cache_key][cache_id dependent] end expanded_deps = [] @@ -122,7 +122,7 @@ class Dependency end expanded_deps = merge_repeats(expanded_deps) - cache[cache_key][dependent.full_name] = expanded_deps.dup if cache_key.present? + cache[cache_key][cache_id dependent] = expanded_deps.dup if cache_key.present? expanded_deps ensure @expand_stack.pop @@ -170,6 +170,10 @@ class Dependency private + def cache_id(dependent) + "#{dependent.full_name}_#{dependent.class}" + end + def merge_tags(deps) other_tags = deps.flat_map(&:option_tags).uniq other_tags << :test if deps.flat_map(&:tags).include?(:test) From 70d020b6b3681200cf05b3befceaef8fa1c8819c Mon Sep 17 00:00:00 2001 From: Rylan Polster Date: Mon, 31 May 2021 02:46:45 -0400 Subject: [PATCH 2/2] requirement: don't merge formula and cask cache in `::expand` --- Library/Homebrew/requirement.rb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/requirement.rb b/Library/Homebrew/requirement.rb index 1531852c07..33e97cf28f 100644 --- a/Library/Homebrew/requirement.rb +++ b/Library/Homebrew/requirement.rb @@ -223,7 +223,7 @@ class Requirement def expand(dependent, cache_key: nil, &block) if cache_key.present? cache[cache_key] ||= {} - return cache[cache_key][dependent.full_name].dup if cache[cache_key][dependent.full_name] + return cache[cache_key][cache_id dependent].dup if cache[cache_key][cache_id dependent] end reqs = Requirements.new @@ -239,7 +239,7 @@ class Requirement end end - cache[cache_key][dependent.full_name] = reqs.dup if cache_key.present? + cache[cache_key][cache_id dependent] = reqs.dup if cache_key.present? reqs end @@ -258,5 +258,11 @@ class Requirement def prune throw(:prune, true) end + + private + + def cache_id(dependent) + "#{dependent.full_name}_#{dependent.class}" + end end end