KegOnlyReason: add reason helpers, rename valid.

This commit is contained in:
Mike McQuaid 2020-04-11 14:15:42 +01:00
parent c8867e5352
commit 373650d00d
No known key found for this signature in database
GPG Key ID: 48A898132FD8EE70
4 changed files with 30 additions and 12 deletions

View File

@ -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

View File

@ -1,7 +1,7 @@
# frozen_string_literal: true
class KegOnlyReason
def valid?
def applicable?
true
end
end

View File

@ -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

View File

@ -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