KegOnlyReason: add reason helpers, rename valid.
This commit is contained in:
parent
c8867e5352
commit
373650d00d
@ -396,8 +396,8 @@ module Homebrew
|
||||
end
|
||||
|
||||
if @new_formula &&
|
||||
dep_f.keg_only_reason&.reason == :provided_by_macos &&
|
||||
dep_f.keg_only_reason.valid? &&
|
||||
dep_f.keg_only_reason.provided_by_macos? &&
|
||||
dep_f.keg_only_reason.applicable? &&
|
||||
!%w[apr apr-util openblas openssl openssl@1.1].include?(dep.name)
|
||||
new_formula_problem(
|
||||
"Dependency '#{dep.name}' is provided by macOS; " \
|
||||
@ -507,13 +507,14 @@ module Homebrew
|
||||
return unless @core_tap
|
||||
|
||||
if formula.keg_only?
|
||||
return if formula.keg_only_reason.reason == :versioned_formula
|
||||
return if formula.keg_only_reason.versioned_formula?
|
||||
if formula.name.start_with?("openssl", "libressl") &&
|
||||
formula.keg_only_reason.reason == :provided_by_macos
|
||||
formula.keg_only_reason.provided_by_macos?
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
# TODO: verify formulae still exist
|
||||
keg_only_whitelist = %w[
|
||||
autoconf@2.13
|
||||
bash-completion@2
|
||||
|
@ -1,7 +1,7 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class KegOnlyReason
|
||||
def valid?
|
||||
def applicable?
|
||||
true
|
||||
end
|
||||
end
|
||||
|
@ -1045,7 +1045,7 @@ class Formula
|
||||
def keg_only?
|
||||
return false unless keg_only_reason
|
||||
|
||||
keg_only_reason.valid?
|
||||
keg_only_reason.applicable?
|
||||
end
|
||||
|
||||
# @private
|
||||
|
@ -13,24 +13,41 @@ class KegOnlyReason
|
||||
@explanation = explanation
|
||||
end
|
||||
|
||||
def valid?
|
||||
![:provided_by_macos, :provided_by_osx, :shadowed_by_macos].include?(@reason)
|
||||
def versioned_formula?
|
||||
@reason == :versioned_formula
|
||||
end
|
||||
|
||||
def provided_by_macos?
|
||||
@reason == :provided_by_macos
|
||||
end
|
||||
|
||||
def shadowed_by_macos?
|
||||
@reason == :shadowed_by_macos
|
||||
end
|
||||
|
||||
def by_macos?
|
||||
provided_by_macos? || shadowed_by_macos?
|
||||
end
|
||||
|
||||
def applicable?
|
||||
# macOS reasons aren't applicable on other OSs
|
||||
# (see extend/os/mac/formula_support for override on macOS)
|
||||
!by_macos?
|
||||
end
|
||||
|
||||
def to_s
|
||||
return @explanation unless @explanation.empty?
|
||||
|
||||
case @reason
|
||||
when :versioned_formula
|
||||
if versioned_formula?
|
||||
<<~EOS
|
||||
this is an alternate version of another formula
|
||||
EOS
|
||||
when :provided_by_macos
|
||||
elsif provided_by_macos?
|
||||
<<~EOS
|
||||
macOS already provides this software and installing another version in
|
||||
parallel can cause all kinds of trouble
|
||||
EOS
|
||||
when :shadowed_by_macos
|
||||
elsif shadowed_by_macos?
|
||||
<<~EOS
|
||||
macOS provides similar software and installing this software in
|
||||
parallel can cause all kinds of trouble
|
||||
|
Loading…
x
Reference in New Issue
Block a user