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