Don't reinstall dependency when latest already installed

This commit is contained in:
Bo Anderson 2023-11-14 16:46:53 +00:00
parent 75e8376816
commit 7c20e1ef7c
No known key found for this signature in database
GPG Key ID: 3DB94E204E137D65
2 changed files with 18 additions and 16 deletions

View File

@ -55,24 +55,24 @@ class Dependency
end end
return false unless formula return false unless formula
if minimum_version.present? return true if formula.latest_version_installed?
installed_version = formula.any_installed_version
return false unless installed_version
# Tabs prior to 4.1.18 did not have revision or pkg_version fields. return false if minimum_version.blank?
# As a result, we have to be more conversative when we do not have
# a minimum revision from the tab and assume that if the formula has a installed_version = formula.any_installed_version
# the same version and a non-zero revision that it needs upgraded. return false unless installed_version
if minimum_revision.present?
minimum_pkg_version = PkgVersion.new(minimum_version, minimum_revision) # Tabs prior to 4.1.18 did not have revision or pkg_version fields.
installed_version >= minimum_pkg_version # As a result, we have to be more conversative when we do not have
elsif installed_version.version == minimum_version # a minimum revision from the tab and assume that if the formula has a
formula.revision.zero? # the same version and a non-zero revision that it needs upgraded.
else if minimum_revision.present?
installed_version.version > minimum_version minimum_pkg_version = PkgVersion.new(minimum_version, minimum_revision)
end installed_version >= minimum_pkg_version
elsif installed_version.version == minimum_version
formula.revision.zero?
else else
formula.latest_version_installed? installed_version.version > minimum_version
end end
end end

View File

@ -82,6 +82,8 @@ module Homebrew
end end
next false if dependency_formula.nil? next false if dependency_formula.nil?
next true if dependency_formula.latest_version_installed?
installed_version = dependency_formula.any_installed_version installed_version = dependency_formula.any_installed_version
next false unless installed_version next false unless installed_version