diff --git a/Library/Homebrew/extend/os/linux/formula.rb b/Library/Homebrew/extend/os/linux/formula.rb index 77bc3a6a43..85a3700119 100644 --- a/Library/Homebrew/extend/os/linux/formula.rb +++ b/Library/Homebrew/extend/os/linux/formula.rb @@ -6,6 +6,7 @@ class Formula undef loader_path undef deuniversalize_machos undef add_global_deps_to_spec + undef valid_platform? sig { params(name: String, version: T.nilable(T.any(String, Integer))).returns(String) } def shared_library(name, version = nil) @@ -43,4 +44,9 @@ class Formula end @global_deps.each { |dep| spec.dependency_collector.add(dep) } end + + sig { returns(T::Boolean) } + def valid_platform? + requirements.none?(MacOSRequirement) + end end diff --git a/Library/Homebrew/extend/os/mac/formula.rb b/Library/Homebrew/extend/os/mac/formula.rb new file mode 100644 index 0000000000..0d65ad84fe --- /dev/null +++ b/Library/Homebrew/extend/os/mac/formula.rb @@ -0,0 +1,11 @@ +# typed: true +# frozen_string_literal: true + +class Formula + undef valid_platform? + + sig { returns(T::Boolean) } + def valid_platform? + requirements.none?(LinuxRequirement) + end +end diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index fbc1474da8..15733aa9e2 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -1948,6 +1948,13 @@ class Formula !tap.core_tap? end + # True if this formula can be installed on this platform + # Redefined in extend/os. + # @private + def valid_platform? + requirements.none?(MacOSRequirement) && requirements.none?(LinuxRequirement) + end + # @private def print_tap_action(options = {}) return unless tap? diff --git a/Library/Homebrew/search.rb b/Library/Homebrew/search.rb index 581788da96..ab535846ef 100644 --- a/Library/Homebrew/search.rb +++ b/Library/Homebrew/search.rb @@ -113,7 +113,7 @@ module Homebrew if formula&.any_version_installed? pretty_installed(name) - else + elsif formula.nil? || formula.valid_platform? name end end.compact