From 3755b33a97bf45f3505c4d9fb6f86a06643b35b1 Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Wed, 22 May 2013 22:26:09 -0500 Subject: [PATCH] Refactor Xcode/CLT version checks --- Library/Homebrew/cmd/doctor.rb | 49 ++++++++++++++++++-------------- Library/Homebrew/cmd/install.rb | 2 +- Library/Homebrew/os/mac/xcode.rb | 19 ++++++++----- 3 files changed, 40 insertions(+), 30 deletions(-) diff --git a/Library/Homebrew/cmd/doctor.rb b/Library/Homebrew/cmd/doctor.rb index 2276f1c4a8..0ba3ef9995 100644 --- a/Library/Homebrew/cmd/doctor.rb +++ b/Library/Homebrew/cmd/doctor.rb @@ -215,33 +215,38 @@ def check_for_broken_symlinks end end -def check_for_latest_xcode - if not MacOS::Xcode.installed? - if MacOS.version >= 10.7 - if not MacOS::CLT.installed? - <<-EOS.undent - No developer tools installed - You should install the Command Line Tools: http://connect.apple.com - EOS - elsif not MacOS::CLT.latest_version? - <<-EOS.undent - A newer Command Line Tools for Xcode release is available - You should install the latest version from: http://connect.apple.com - EOS - end - else - <<-EOS.undent - Xcode not installed - Most stuff needs Xcode to build: http://developer.apple.com/xcode/ - EOS - end - elsif MacOS::Xcode.version < MacOS::Xcode.latest_version then <<-EOS.undent +def check_xcode_clt + if MacOS::Xcode.installed? + __check_xcode_up_to_date + elsif MacOS.version >= 10.7 + __check_clt_up_to_date + else <<-EOS.undent + Xcode not installed + Most stuff needs Xcode to build: http://developer.apple.com/xcode/ + EOS + end +end + +def __check_xcode_up_to_date + if MacOS::Xcode.outdated? then <<-EOS.undent Your Xcode (#{MacOS::Xcode.version}) is outdated Please install Xcode #{MacOS::Xcode.latest_version}. EOS end end +def __check_clt_up_to_date + if not MacOS::CLT.installed? then <<-EOS.undent + No developer tools installed + You should install the Command Line Tools: http://connect.apple.com + EOS + elsif MacOS::CLT.outdated? then <<-EOS.undent + A newer Command Line Tools for Xcode release is available + You should install the latest version from: http://connect.apple.com + EOS + end +end + def check_for_stray_developer_directory # if the uninstaller script isn't there, it's a good guess neither are # any troublesome leftover Xcode files @@ -271,7 +276,7 @@ def check_cc end def check_standard_compilers - return if check_for_latest_xcode # only check if Xcode is up to date + return if check_xcode_clt # only check if Xcode is up to date compiler_status = MacOS.compilers_standard? if not compiler_status and not compiler_status.nil? then <<-EOS.undent Your compilers are different from the standard versions for your Xcode. diff --git a/Library/Homebrew/cmd/install.rb b/Library/Homebrew/cmd/install.rb index f44f670913..c0aa1a2e9a 100644 --- a/Library/Homebrew/cmd/install.rb +++ b/Library/Homebrew/cmd/install.rb @@ -42,7 +42,7 @@ module Homebrew extend self def check_xcode require 'cmd/doctor' checks = Checks.new - %w{check_for_latest_xcode check_xcode_license_approved}.each do |check| + %w{check_xcode_clt check_xcode_license_approved}.each do |check| out = checks.send(check) opoo out unless out.nil? end diff --git a/Library/Homebrew/os/mac/xcode.rb b/Library/Homebrew/os/mac/xcode.rb index d399e8b35f..0ec9e0bd11 100644 --- a/Library/Homebrew/os/mac/xcode.rb +++ b/Library/Homebrew/os/mac/xcode.rb @@ -19,17 +19,18 @@ module MacOS::Xcode extend self def latest_version case MacOS.version - when 10.5 then "3.1.4" - when 10.6 then "3.2.6" + when 10.5 then "3.1.4" + when 10.6 then "3.2.6" + when 10.7..10.8 then "4.6.2" else - if MacOS.version >= 10.7 - "4.6.2" - else - raise "Mac OS X `#{MacOS.version}' is invalid" - end + raise "Mac OS X '#{MacOS.version}' is invalid" end end + def outdated? + version < latest_version + end + def prefix @prefix ||= begin path = Pathname.new(folder) @@ -158,6 +159,10 @@ module MacOS::CLT extend self $1.to_i >= 425 and $3.to_i >= 28 end + def outdated? + !latest_version? + end + def version # The pkgutils calls are slow, don't repeat if no CLT installed. return @version if @version_determined