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
return false unless formula
if minimum_version.present?
installed_version = formula.any_installed_version
return false unless installed_version
return true if formula.latest_version_installed?
# Tabs prior to 4.1.18 did not have revision or pkg_version fields.
# 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
# the same version and a non-zero revision that it needs upgraded.
if minimum_revision.present?
minimum_pkg_version = PkgVersion.new(minimum_version, minimum_revision)
installed_version >= minimum_pkg_version
elsif installed_version.version == minimum_version
formula.revision.zero?
else
installed_version.version > minimum_version
end
return false if minimum_version.blank?
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.
# 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
# the same version and a non-zero revision that it needs upgraded.
if minimum_revision.present?
minimum_pkg_version = PkgVersion.new(minimum_version, minimum_revision)
installed_version >= minimum_pkg_version
elsif installed_version.version == minimum_version
formula.revision.zero?
else
formula.latest_version_installed?
installed_version.version > minimum_version
end
end

View File

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