From da392cd9e836cf7955e9217d7e06b7a411dab107 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Thu, 4 Apr 2019 08:34:25 +0100 Subject: [PATCH] xcode_requirement: require macOS 10.14.4 for Xcode 10.2. See discussion in https://github.com/Homebrew/brew/pull/5940. --- .../requirements/xcode_requirement.rb | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/requirements/xcode_requirement.rb b/Library/Homebrew/requirements/xcode_requirement.rb index 045a88822e..248e362fe3 100644 --- a/Library/Homebrew/requirements/xcode_requirement.rb +++ b/Library/Homebrew/requirements/xcode_requirement.rb @@ -13,6 +13,7 @@ class XcodeRequirement < Requirement def xcode_installed_version return false unless MacOS::Xcode.installed? return true unless @version + return true if xcode_swift_compatability? MacOS::Xcode.version >= @version end @@ -20,16 +21,24 @@ class XcodeRequirement < Requirement def message version = " #{@version}" if @version message = <<~EOS - A full installation of Xcode.app#{version} is required to compile this software. - Installing just the Command Line Tools is not sufficient. + A full installation of Xcode.app#{version} is required to compile + this software. Installing just the Command Line Tools is not sufficient. EOS + unless xcode_swift_compatability? + message += <<~EOS + + Xcode >=10.2 requires macOS >=10.14.4 to build many formulae. + EOS + end if @version && Version.new(MacOS::Xcode.latest_version) < Version.new(@version) message + <<~EOS + Xcode#{version} cannot be installed on macOS #{MacOS.version}. You must upgrade your version of macOS. EOS else message + <<~EOS + Xcode can be installed from the App Store. EOS end @@ -38,4 +47,15 @@ class XcodeRequirement < Requirement def inspect "#<#{self.class.name}: #{tags.inspect} version=#{@version.inspect}>" end + + private + + # TODO: when 10.14.4 and 10.2 have been around for long enough remove this + # method in favour of requiring 10.14.4 and 10.2. + def xcode_swift_compatability? + return true if MacOS::Xcode.version < "10.2" + return true if MacOS::Xcode.version >= "10.14.4" + + MacOS.version < "10.14" + end end