OS::Mac: Move version methods into ::Version

This commit is contained in:
Sam Ford 2021-06-22 13:06:46 -04:00
parent 41803ebf93
commit 0752d25125
No known key found for this signature in database
GPG Key ID: 95209E46C7FFDEFE
9 changed files with 39 additions and 28 deletions

View File

@ -107,9 +107,9 @@ module Homebrew
return if Homebrew::EnvConfig.developer?
who = +"We"
what = if OS::Mac.prerelease?
what = if OS::Mac.version.prerelease?
"pre-release version"
elsif OS::Mac.outdated_release?
elsif OS::Mac.version.outdated_release?
who << " (and Apple)"
"old version"
end
@ -139,7 +139,7 @@ module Homebrew
#{MacOS::Xcode.update_instructions}
EOS
if OS::Mac.prerelease?
if OS::Mac.version.prerelease?
current_path = Utils.popen_read("/usr/bin/xcode-select", "-p")
message += <<~EOS
If #{MacOS::Xcode.latest_version} is installed, you may need to:
@ -199,7 +199,7 @@ module Homebrew
def check_ruby_version
return if RUBY_VERSION == HOMEBREW_REQUIRED_RUBY_VERSION
return if Homebrew::EnvConfig.developer? && OS::Mac.prerelease?
return if Homebrew::EnvConfig.developer? && OS::Mac.version.prerelease?
<<~EOS
Ruby version #{RUBY_VERSION} is unsupported on #{MacOS.version}. Homebrew

View File

@ -19,7 +19,9 @@ module Utils
def find_matching_tag(tag, no_older_versions: false)
# Used primarily by developers testing beta macOS releases.
if no_older_versions ||
(OS::Mac.prerelease? && Homebrew::EnvConfig.developer? && Homebrew::EnvConfig.skip_or_later_bottles?)
(OS::Mac.version.prerelease? &&
Homebrew::EnvConfig.developer? &&
Homebrew::EnvConfig.skip_or_later_bottles?)
generic_find_matching_tag(tag)
else
generic_find_matching_tag(tag) ||

View File

@ -246,7 +246,7 @@ class FormulaInstaller
# check fails)
elsif !Homebrew::EnvConfig.developer? &&
(!installed_as_dependency? || !formula.any_version_installed?) &&
(!OS.mac? || !OS::Mac.outdated_release?)
(!OS.mac? || !OS::Mac.version.outdated_release?)
<<~EOS
#{formula}: no bottle available!
EOS

View File

@ -43,8 +43,8 @@ module OS
if OS.mac?
require "os/mac"
# Don't tell people to report issues on unsupported configurations.
if !OS::Mac.prerelease? &&
!OS::Mac.outdated_release? &&
if !OS::Mac.version.prerelease? &&
!OS::Mac.version.outdated_release? &&
ARGV.none? { |v| v.start_with?("--cc=") } &&
ENV["HOMEBREW_PREFIX"] == "/usr/local"
ISSUES_URL = "https://docs.brew.sh/Troubleshooting"

View File

@ -46,20 +46,6 @@ module OS
end
private :latest_sdk_version
def outdated_release?
# TODO: bump version when new macOS is released and also update
# references in docs/Installation.md and
# https://github.com/Homebrew/install/blob/HEAD/install.sh
version < "10.14"
end
def prerelease?
# TODO: bump version when new macOS is released or announced
# and also update references in docs/Installation.md and
# https://github.com/Homebrew/install/blob/HEAD/install.sh
version >= "12"
end
sig { returns(String) }
def preferred_perl_version
if version >= :big_sur

View File

@ -24,6 +24,18 @@ module OS
yosemite: "10.10",
}.freeze
# TODO: bump version when new macOS is released or announced
# and also update references in docs/Installation.md and
# https://github.com/Homebrew/install/blob/HEAD/install.sh
MACOS_NEWEST_UNSUPPORTED = "12.0"
private_constant :MACOS_NEWEST_UNSUPPORTED
# TODO: bump version when new macOS is released and also update
# references in docs/Installation.md and
# https://github.com/Homebrew/install/blob/HEAD/install.sh
MACOS_OLDEST_SUPPORTED = "10.14"
private_constant :MACOS_OLDEST_SUPPORTED
sig { params(version: Symbol).returns(T.attached_class) }
def self.from_symbol(version)
str = SYMBOLS.fetch(version) { raise MacOSVersionError, version }
@ -73,6 +85,16 @@ module OS
@pretty_name ||= to_sym.to_s.split("_").map(&:capitalize).join(" ").freeze
end
sig { returns(T::Boolean) }
def outdated_release?
self < MACOS_OLDEST_SUPPORTED
end
sig { returns(T::Boolean) }
def prerelease?
self >= MACOS_NEWEST_UNSUPPORTED
end
# For {OS::Mac::Version} compatibility.
sig { returns(T::Boolean) }
def requires_nehalem_cpu?

View File

@ -32,7 +32,7 @@ module OS
when "10.10" then "7.2.1"
when "10.9" then "6.2"
else
raise "macOS '#{MacOS.version}' is invalid" unless OS::Mac.prerelease?
raise "macOS '#{MacOS.version}' is invalid" unless OS::Mac.version.prerelease?
# Default to newest known version of Xcode for unreleased macOS versions.
latest_stable
@ -137,7 +137,7 @@ module OS
end
def installation_instructions
if OS::Mac.prerelease?
if OS::Mac.version.prerelease?
<<~EOS
Xcode can be installed from:
#{Formatter.url("https://developer.apple.com/download/more/")}
@ -151,7 +151,7 @@ module OS
sig { returns(String) }
def update_instructions
if OS::Mac.prerelease?
if OS::Mac.version.prerelease?
<<~EOS
Xcode can be updated from:
#{Formatter.url("https://developer.apple.com/download/more/")}

View File

@ -12,7 +12,8 @@ describe Homebrew::Diagnostic::Checks do
macos_version = OS::Mac::Version.new("10.14")
allow(OS::Mac).to receive(:version).and_return(macos_version)
allow(OS::Mac).to receive(:full_version).and_return(macos_version)
allow(OS::Mac).to receive(:prerelease?).and_return(true)
allow(OS::Mac.version).to receive(:outdated_release?).and_return(false)
allow(OS::Mac.version).to receive(:prerelease?).and_return(true)
expect(checks.check_for_unsupported_macos)
.to match("We do not provide support for this pre-release version.")

View File

@ -31,7 +31,7 @@ describe Utils::Bottles::Collector do
it "does not use older tags when requested not to", :needs_macos do
allow(Homebrew::EnvConfig).to receive(:developer?).and_return(true)
allow(Homebrew::EnvConfig).to receive(:skip_or_later_bottles?).and_return(true)
allow(OS::Mac).to receive(:prerelease?).and_return(true)
allow(OS::Mac.version).to receive(:prerelease?).and_return(true)
collector[:mojave] = "foo"
expect(collector.send(:find_matching_tag, Utils::Bottles::Tag.from_symbol(:mojave))).to eq(:mojave)
expect(collector.send(:find_matching_tag, Utils::Bottles::Tag.from_symbol(:catalina))).to be_nil
@ -39,7 +39,7 @@ describe Utils::Bottles::Collector do
it "ignores HOMEBREW_SKIP_OR_LATER_BOTTLES on release versions", :needs_macos do
allow(Homebrew::EnvConfig).to receive(:skip_or_later_bottles?).and_return(true)
allow(OS::Mac).to receive(:prerelease?).and_return(false)
allow(OS::Mac.version).to receive(:prerelease?).and_return(false)
collector[:mojave] = "foo"
expect(collector.send(:find_matching_tag, Utils::Bottles::Tag.from_symbol(:mojave))).to eq(:mojave)
expect(collector.send(:find_matching_tag, Utils::Bottles::Tag.from_symbol(:catalina))).to eq(:mojave)