From 0752d251258479fe865085001834d24d1a282ab7 Mon Sep 17 00:00:00 2001 From: Sam Ford <1584702+samford@users.noreply.github.com> Date: Tue, 22 Jun 2021 13:06:46 -0400 Subject: [PATCH] OS::Mac: Move version methods into ::Version --- Library/Homebrew/extend/os/mac/diagnostic.rb | 8 +++---- .../Homebrew/extend/os/mac/utils/bottles.rb | 4 +++- Library/Homebrew/formula_installer.rb | 2 +- Library/Homebrew/os.rb | 4 ++-- Library/Homebrew/os/mac.rb | 14 ------------ Library/Homebrew/os/mac/version.rb | 22 +++++++++++++++++++ Library/Homebrew/os/mac/xcode.rb | 6 ++--- .../Homebrew/test/os/mac/diagnostic_spec.rb | 3 ++- .../test/utils/bottles/collector_spec.rb | 4 ++-- 9 files changed, 39 insertions(+), 28 deletions(-) diff --git a/Library/Homebrew/extend/os/mac/diagnostic.rb b/Library/Homebrew/extend/os/mac/diagnostic.rb index a44a521be7..a2d6f19a72 100644 --- a/Library/Homebrew/extend/os/mac/diagnostic.rb +++ b/Library/Homebrew/extend/os/mac/diagnostic.rb @@ -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 diff --git a/Library/Homebrew/extend/os/mac/utils/bottles.rb b/Library/Homebrew/extend/os/mac/utils/bottles.rb index b27a934194..ce0415dfbe 100644 --- a/Library/Homebrew/extend/os/mac/utils/bottles.rb +++ b/Library/Homebrew/extend/os/mac/utils/bottles.rb @@ -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) || diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 88586096b8..95ae29f9be 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -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 diff --git a/Library/Homebrew/os.rb b/Library/Homebrew/os.rb index 7d98154013..ca2924c97f 100644 --- a/Library/Homebrew/os.rb +++ b/Library/Homebrew/os.rb @@ -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" diff --git a/Library/Homebrew/os/mac.rb b/Library/Homebrew/os/mac.rb index 705726f945..d878201a02 100644 --- a/Library/Homebrew/os/mac.rb +++ b/Library/Homebrew/os/mac.rb @@ -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 diff --git a/Library/Homebrew/os/mac/version.rb b/Library/Homebrew/os/mac/version.rb index 89b5d9b544..9fbf14398e 100644 --- a/Library/Homebrew/os/mac/version.rb +++ b/Library/Homebrew/os/mac/version.rb @@ -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? diff --git a/Library/Homebrew/os/mac/xcode.rb b/Library/Homebrew/os/mac/xcode.rb index 6dd4324520..17f916fe20 100755 --- a/Library/Homebrew/os/mac/xcode.rb +++ b/Library/Homebrew/os/mac/xcode.rb @@ -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/")} diff --git a/Library/Homebrew/test/os/mac/diagnostic_spec.rb b/Library/Homebrew/test/os/mac/diagnostic_spec.rb index e81993cd8f..e7bd09de12 100644 --- a/Library/Homebrew/test/os/mac/diagnostic_spec.rb +++ b/Library/Homebrew/test/os/mac/diagnostic_spec.rb @@ -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.") diff --git a/Library/Homebrew/test/utils/bottles/collector_spec.rb b/Library/Homebrew/test/utils/bottles/collector_spec.rb index d0f264e338..e43035113c 100644 --- a/Library/Homebrew/test/utils/bottles/collector_spec.rb +++ b/Library/Homebrew/test/utils/bottles/collector_spec.rb @@ -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)