os: centralize check for pre-release OS X versions

Provide `OS::Mac.prerelease?` for pre-release checks and use it where
appropriate. This should simplify updating the test once a new OS X
release lands.

This also fixes a bug in `BuildError#dump`, where an empty warning
message was printed on El Capitan after a failed from-source build,
because the check there and the one in `check_for_unsupported_osx` were
out of sync.

Closes Homebrew/homebrew#45257.

Signed-off-by: Mike McQuaid <mike@mikemcquaid.com>
This commit is contained in:
Martin Afanasjew 2015-10-23 00:07:12 +02:00 committed by Mike McQuaid
parent 7c7b7bf97f
commit 30cad0608f
4 changed files with 9 additions and 5 deletions

View File

@ -240,7 +240,7 @@ class Checks
end end
def check_for_unsupported_osx def check_for_unsupported_osx
if !ARGV.homebrew_developer? && MacOS.version >= "10.12" then <<-EOS.undent if !ARGV.homebrew_developer? && OS::Mac.prerelease? then <<-EOS.undent
You are using OS X #{MacOS.version}. You are using OS X #{MacOS.version}.
We do not provide support for this pre-release version. We do not provide support for this pre-release version.
You may encounter build failures or other breakages. You may encounter build failures or other breakages.
@ -259,8 +259,7 @@ class Checks
end end
end end
# TODO: bump version when new OS is released if OS::Mac.prerelease?
if MacOS.version >= "10.12"
def check_xcode_up_to_date def check_xcode_up_to_date
if MacOS::Xcode.installed? && MacOS::Xcode.outdated? if MacOS::Xcode.installed? && MacOS::Xcode.outdated?
<<-EOS.undent <<-EOS.undent

View File

@ -251,7 +251,7 @@ class BuildError < RuntimeError
puts issues.map { |i| "#{i["title"]} #{i["html_url"]}" }.join("\n") puts issues.map { |i| "#{i["title"]} #{i["html_url"]}" }.join("\n")
end end
if MacOS.version >= "10.11" if OS::Mac.prerelease?
require "cmd/doctor" require "cmd/doctor"
opoo Checks.new.check_for_unsupported_osx opoo Checks.new.check_for_unsupported_osx
end end

View File

@ -22,6 +22,11 @@ module OS
@full_version ||= Version.new(`/usr/bin/sw_vers -productVersion`.chomp) @full_version ||= Version.new(`/usr/bin/sw_vers -productVersion`.chomp)
end end
def prerelease?
# TODO: bump version when new OS is released
version >= "10.12"
end
def cat def cat
version.to_sym version.to_sym
end end

View File

@ -18,7 +18,7 @@ module OS
when "10.11" then "7.0.1" when "10.11" then "7.0.1"
else else
# Default to newest known version of Xcode for unreleased OSX versions. # Default to newest known version of Xcode for unreleased OSX versions.
if MacOS.version > "10.11" if OS::Mac.prerelease?
"7.0.1" "7.0.1"
else else
raise "OS X '#{MacOS.version}' is invalid" raise "OS X '#{MacOS.version}' is invalid"