Merge pull request #8884 from MikeMcQuaid/audit-versioned-conflicts
audit: check versioned dependency conflicts.
This commit is contained in:
commit
74d7281873
@ -429,6 +429,16 @@ module Homebrew
|
||||
end
|
||||
end
|
||||
|
||||
# try to remove these, it's not a good user experience
|
||||
VERSIONED_DEPENDENCIES_CONFLICTS_ALLOWLIST = %w[
|
||||
agda
|
||||
anjuta
|
||||
gradio
|
||||
predictionio
|
||||
sqoop
|
||||
visp
|
||||
].freeze
|
||||
|
||||
def audit_deps
|
||||
@specs.each do |spec|
|
||||
# Check for things we don't like to depend on.
|
||||
@ -503,6 +513,34 @@ module Homebrew
|
||||
problem "Formulae in homebrew/core should not have optional or recommended requirements"
|
||||
end
|
||||
end
|
||||
|
||||
return unless @core_tap
|
||||
return if VERSIONED_DEPENDENCIES_CONFLICTS_ALLOWLIST.include?(formula.name)
|
||||
|
||||
# The number of conflicts on Linux is absurd.
|
||||
# TODO: remove this and check these there too.
|
||||
return if OS.linux?
|
||||
|
||||
recursive_runtime_formulae = formula.runtime_formula_dependencies(undeclared: false)
|
||||
version_hash = {}
|
||||
version_conflicts = Set.new
|
||||
recursive_runtime_formulae.each do |f|
|
||||
name = f.name
|
||||
unversioned_name, = name.split("@")
|
||||
version_hash[unversioned_name] ||= Set.new
|
||||
version_hash[unversioned_name] << name
|
||||
next if version_hash[unversioned_name].length < 2
|
||||
|
||||
version_conflicts += version_hash[unversioned_name]
|
||||
end
|
||||
|
||||
return if version_conflicts.empty?
|
||||
|
||||
problem <<~EOS
|
||||
#{formula.full_name} contains conflicting version recursive dependencies:
|
||||
#{version_conflicts.to_a.join ", "}
|
||||
View these with `brew deps --tree #{formula.full_name}`.
|
||||
EOS
|
||||
end
|
||||
|
||||
def audit_conflicts
|
||||
|
Loading…
x
Reference in New Issue
Block a user