From beaa6c32a0a6b4b57d022db7f170c8f5e037a875 Mon Sep 17 00:00:00 2001 From: Bo Anderson Date: Thu, 13 Jul 2023 19:45:28 +0100 Subject: [PATCH] Fix cases of core taps being unnecessarily installed --- Library/Homebrew/cmd/install.rb | 4 +--- Library/Homebrew/cmd/update-report.rb | 4 ++-- Library/Homebrew/dev-cmd/extract.rb | 1 + Library/Homebrew/formula_installer.rb | 4 ++-- Library/Homebrew/formulary.rb | 2 +- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb index 5139671a40..5537ae5d20 100644 --- a/Library/Homebrew/cmd/install.rb +++ b/Library/Homebrew/cmd/install.rb @@ -179,9 +179,7 @@ module Homebrew next unless name =~ HOMEBREW_TAP_FORMULA_REGEX tap = Tap.fetch(Regexp.last_match(1), Regexp.last_match(2)) - next if (tap.core_tap? || tap == "homebrew/cask") && !EnvConfig.no_install_from_api? - - tap.install unless tap.installed? + tap.ensure_installed! end if args.ignore_dependencies? diff --git a/Library/Homebrew/cmd/update-report.rb b/Library/Homebrew/cmd/update-report.rb index f568f61c54..0bc0a502f5 100644 --- a/Library/Homebrew/cmd/update-report.rb +++ b/Library/Homebrew/cmd/update-report.rb @@ -600,7 +600,7 @@ class Reporter next unless (HOMEBREW_PREFIX/"Caskroom"/new_name).exist? new_tap = Tap.fetch(new_tap_name) - new_tap.install unless new_tap.installed? + new_tap.ensure_installed! ohai "#{name} has been moved to Homebrew.", <<~EOS To uninstall the cask, run: brew uninstall --cask --force #{name} @@ -650,7 +650,7 @@ class Reporter EOS end else - new_tap.install unless new_tap.installed? + new_tap.ensure_installed! # update tap for each Tab tabs.each { |tab| tab.tap = new_tap } tabs.each(&:write) diff --git a/Library/Homebrew/dev-cmd/extract.rb b/Library/Homebrew/dev-cmd/extract.rb index 782ba5f666..58ab33a0b2 100644 --- a/Library/Homebrew/dev-cmd/extract.rb +++ b/Library/Homebrew/dev-cmd/extract.rb @@ -107,6 +107,7 @@ module Homebrew destination_tap = Tap.fetch(args.named.second) unless Homebrew::EnvConfig.developer? odie "Cannot extract formula to homebrew/core!" if destination_tap.core_tap? + odie "Cannot extract formula to homebrew/cask!" if destination_tap.core_cask_tap? odie "Cannot extract formula to the same tap!" if destination_tap == source_tap end destination_tap.install unless destination_tap.installed? diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index e22fac868e..46a47eaa5e 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -229,8 +229,8 @@ class FormulaInstaller rescue TapFormulaUnavailableError => e raise if e.tap.installed? - e.tap.install - retry + e.tap.ensure_installed! + retry if e.tap.installed? # It may have not installed if it's a core tap. end rescue FormulaUnavailableError => e e.dependent = formula.full_name diff --git a/Library/Homebrew/formulary.rb b/Library/Homebrew/formulary.rb index 89255b0bda..b3802d71ca 100644 --- a/Library/Homebrew/formulary.rb +++ b/Library/Homebrew/formulary.rb @@ -626,7 +626,7 @@ module Formulary new_tap_user, new_tap_repo, = new_tap_name.split("/") new_tap_name = "#{new_tap_user}/#{new_tap_repo}" new_tap = Tap.fetch new_tap_name - new_tap.install unless new_tap.installed? + new_tap.ensure_installed! new_tapped_name = "#{new_tap_name}/#{name}" name, path = formula_name_path(new_tapped_name, warn: false) old_name = tapped_name