diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb index af41382d3c..cda32afd64 100644 --- a/Library/Homebrew/cmd/install.rb +++ b/Library/Homebrew/cmd/install.rb @@ -219,7 +219,7 @@ module Homebrew end opoo msg if msg elsif !f.any_version_installed? && old_formula = f.old_installed_formulae.first - installed_version = old_formula.opt_or_installed_prefix_keg.version + installed_version = old_formula.any_installed_keg.version msg = "#{old_formula.full_name} #{installed_version} already installed" if !old_formula.linked? && !old_formula.keg_only? msg = <<~EOS diff --git a/Library/Homebrew/compat/formula.rb b/Library/Homebrew/compat/formula.rb index c41f9236e2..2759d9a7f9 100644 --- a/Library/Homebrew/compat/formula.rb +++ b/Library/Homebrew/compat/formula.rb @@ -32,6 +32,12 @@ class Formula # odeprecated "Formula#installed_version" Keg.new(latest_installed_prefix).version end + + def opt_or_installed_prefix_keg + # TODO: deprecate for Homebrew 2.5 + # odeprecated "Formula#opt_or_installed_prefix_keg", "Formula#any_installed_keg" + any_installed_keg + end end prepend Compat diff --git a/Library/Homebrew/dev-cmd/linkage.rb b/Library/Homebrew/dev-cmd/linkage.rb index a95234a57c..e090e413bd 100644 --- a/Library/Homebrew/dev-cmd/linkage.rb +++ b/Library/Homebrew/dev-cmd/linkage.rb @@ -32,7 +32,7 @@ module Homebrew CacheStoreDatabase.use(:linkage) do |db| kegs = if args.named.to_kegs.empty? - Formula.installed.map(&:opt_or_installed_prefix_keg).reject(&:nil?) + Formula.installed.map(&:any_installed_keg).reject(&:nil?) else args.named.to_kegs end diff --git a/Library/Homebrew/dev-cmd/pr-pull.rb b/Library/Homebrew/dev-cmd/pr-pull.rb index be6586ae77..0e46ebbbc3 100644 --- a/Library/Homebrew/dev-cmd/pr-pull.rb +++ b/Library/Homebrew/dev-cmd/pr-pull.rb @@ -73,7 +73,7 @@ module Homebrew else if gnupg.any_version_installed? path = PATH.new(ENV.fetch("PATH")) - path.prepend(gnupg.opt_or_installed_prefix_keg/"bin") + path.prepend(gnupg.any_installed_prefix/"bin") ENV["PATH"] = path end end diff --git a/Library/Homebrew/dev-cmd/pull.rb b/Library/Homebrew/dev-cmd/pull.rb index 9ca64a27ce..687db6b86b 100644 --- a/Library/Homebrew/dev-cmd/pull.rb +++ b/Library/Homebrew/dev-cmd/pull.rb @@ -60,7 +60,7 @@ module Homebrew else if gnupg.any_version_installed? path = PATH.new(ENV.fetch("PATH")) - path.prepend(gnupg.opt_or_installed_prefix_keg/"bin") + path.prepend(gnupg.any_installed_prefix/"bin") ENV["PATH"] = path end end diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index cfdaaaa579..10ea1bcc78 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1610,12 +1610,18 @@ class Formula # Returns a Keg for the opt_prefix or installed_prefix if they exist. # If not, return nil. # @private - def opt_or_installed_prefix_keg - Formula.cache[:opt_or_installed_prefix_keg] ||= {} - Formula.cache[:opt_or_installed_prefix_keg][full_name] ||= if optlinked? && opt_prefix.exist? - Keg.new(opt_prefix) + def any_installed_keg + Formula.cache[:any_installed_keg] ||= {} + Formula.cache[:any_installed_keg][full_name] ||= if (installed_prefix = any_installed_prefix) + Keg.new(installed_prefix) + end + end + + def any_installed_prefix + if optlinked? && opt_prefix.exist? + opt_prefix elsif (latest_installed_prefix = installed_prefixes.last) - Keg.new(latest_installed_prefix) + latest_installed_prefix end end @@ -1623,7 +1629,7 @@ class Formula # @private def runtime_dependencies(read_from_tab: true, undeclared: true) deps = if read_from_tab && undeclared && - (tab_deps = opt_or_installed_prefix_keg&.runtime_dependencies) + (tab_deps = any_installed_keg&.runtime_dependencies) tab_deps.map do |d| full_name = d["full_name"] next unless full_name @@ -1658,12 +1664,12 @@ class Formula end def runtime_installed_formula_dependents - # `opt_or_installed_prefix_keg` and `runtime_dependencies` `select`s ensure + # `any_installed_keg` and `runtime_dependencies` `select`s ensure # that we don't end up with something `Formula#runtime_dependencies` can't # read from a `Tab`. Formula.cache[:runtime_installed_formula_dependents] = {} Formula.cache[:runtime_installed_formula_dependents][full_name] ||= Formula.installed - .select(&:opt_or_installed_prefix_keg) + .select(&:any_installed_keg) .select(&:runtime_dependencies) .select do |f| f.runtime_formula_dependencies.any? do |dep| @@ -1903,7 +1909,7 @@ class Formula # but the formula links to. # @private def undeclared_runtime_dependencies - keg = opt_or_installed_prefix_keg + keg = any_installed_keg return [] unless keg CacheStoreDatabase.use(:linkage) do |db| diff --git a/Library/Homebrew/language/java.rb b/Library/Homebrew/language/java.rb index db9be69a22..b8293e0474 100644 --- a/Library/Homebrew/language/java.rb +++ b/Library/Homebrew/language/java.rb @@ -14,7 +14,7 @@ module Language next false unless f.any_version_installed? unless version.zero? - major = f.opt_or_installed_prefix_keg.version.major + major = f.any_installed_keg.version.major next false if major < version next false if major > version && !can_be_newer end diff --git a/Library/Homebrew/livecheck/livecheck.rb b/Library/Homebrew/livecheck/livecheck.rb index 0ebeaaad7d..92d9b22ed7 100644 --- a/Library/Homebrew/livecheck/livecheck.rb +++ b/Library/Homebrew/livecheck/livecheck.rb @@ -81,7 +81,7 @@ module Homebrew formula.head.downloader.shutup! if formula.head? current = if formula.head? - formula.opt_or_installed_prefix_keg.version.version.commit + formula.any_installed_keg.version.version.commit else formula.version end diff --git a/Library/Homebrew/test/cmd/link_spec.rb b/Library/Homebrew/test/cmd/link_spec.rb index f76b5a1d89..67748ae138 100644 --- a/Library/Homebrew/test/cmd/link_spec.rb +++ b/Library/Homebrew/test/cmd/link_spec.rb @@ -9,7 +9,7 @@ end describe "brew link", :integration_test do it "links a given Formula" do install_test_formula "testball" - Formula["testball"].opt_or_installed_prefix_keg.unlink + Formula["testball"].any_installed_keg.unlink expect { brew "link", "testball" } .to output(/Linking/).to_stdout diff --git a/Library/Homebrew/upgrade.rb b/Library/Homebrew/upgrade.rb index ee7827a884..a64cabf5ac 100644 --- a/Library/Homebrew/upgrade.rb +++ b/Library/Homebrew/upgrade.rb @@ -125,7 +125,7 @@ module Homebrew installed_formulae.flat_map(&:runtime_installed_formula_dependents) .uniq .select do |f| - keg = f.opt_or_installed_prefix_keg + keg = f.any_installed_keg next unless keg LinkageChecker.new(keg, cache_db: db) @@ -245,7 +245,7 @@ module Homebrew end def depends_on(a, b) - if a.opt_or_installed_prefix_keg + if a.any_installed_keg &.runtime_dependencies &.any? { |d| d["full_name"] == b.full_name } 1