aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMike McQuaid2016-11-13 10:53:34 +0000
committerGitHub2016-11-13 10:53:34 +0000
commit694cc876ef7cb4789bd5a397bd2e296a380a1bd0 (patch)
treea7788b1c156a5444d8ad29f643cfdb043bdba554 /Library
parent2a53d14b515e17606a0981c3cf98ce41c2712414 (diff)
parente97ce7e7aeaf3688d0e55277818dc727b731470e (diff)
downloadbrew-694cc876ef7cb4789bd5a397bd2e296a380a1bd0.tar.bz2
Merge pull request #1415 from robinkunde/semver
Update macOS Xcode tool checks do use Version class for comparisons
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/os/mac/xcode.rb34
1 files changed, 20 insertions, 14 deletions
diff --git a/Library/Homebrew/os/mac/xcode.rb b/Library/Homebrew/os/mac/xcode.rb
index f081d4382..67cd8f54d 100644
--- a/Library/Homebrew/os/mac/xcode.rb
+++ b/Library/Homebrew/os/mac/xcode.rb
@@ -38,15 +38,15 @@ module OS
def prerelease?
# TODO: bump to version >= "8.3" after Xcode 8.2 is stable.
- version >= "8.2"
+ Version.new(version) >= "8.2"
end
def outdated?
- version < latest_version
+ Version.new(version) < latest_version
end
def without_clt?
- installed? && version >= "4.3" && !MacOS::CLT.installed?
+ installed? && Version.new(version) >= "4.3" && !MacOS::CLT.installed?
end
# Returns a Pathname object corresponding to Xcode.app's Developer
@@ -67,7 +67,7 @@ module OS
end
def toolchain_path
- Pathname.new("#{prefix}/Toolchains/XcodeDefault.xctoolchain") if installed? && version >= "4.3"
+ Pathname.new("#{prefix}/Toolchains/XcodeDefault.xctoolchain") if installed? && Version.new(version) >= "4.3"
end
# Ask Spotlight where Xcode is. If the user didn't install the
@@ -82,7 +82,7 @@ module OS
end
def update_instructions
- if MacOS.version >= "10.9" && !OS::Mac.prerelease?
+ if Version.new(MacOS.version) >= "10.9" && !OS::Mac.prerelease?
<<-EOS.undent
Xcode can be updated from the App Store.
EOS
@@ -156,20 +156,26 @@ module OS
end
def provides_gcc?
- installed? && version < "4.3"
+ installed? && Version.new(version) < "4.3"
end
def provides_cvs?
- installed? && version < "5.0"
+ installed? && Version.new(version) < "5.0"
end
def default_prefix?
- if version < "4.3"
+ if Version.new(version) < "4.3"
prefix.to_s.start_with? "/Developer"
else
prefix.to_s == "/Applications/Xcode.app/Contents/Developer"
end
end
+
+ class Version < ::Version
+ def <=>(other)
+ super(Version.new(other))
+ end
+ end
end
module CLT
@@ -188,7 +194,7 @@ module OS
end
def update_instructions
- if MacOS.version >= "10.9"
+ if Xcode::Version.new(MacOS.version) >= "10.9"
<<-EOS.undent
Update them from Software Update in the App Store.
EOS
@@ -206,7 +212,7 @@ module OS
# on the older supported platform for that Xcode release, i.e there's no
# CLT package for 10.11 that contains the Clang version from Xcode 8.
case MacOS.version
- when "10.12" then "800.0.38"
+ when "10.12" then "800.0.42.1"
when "10.11" then "703.0.31"
when "10.10" then "700.1.81"
when "10.9" then "600.0.57"
@@ -228,13 +234,13 @@ module OS
end
def outdated?
- if MacOS.version >= :mavericks
+ if Xcode::Version.new(MacOS.version) >= :mavericks.to_s
version = Utils.popen_read("#{MAVERICKS_PKG_PATH}/usr/bin/clang --version")
else
version = Utils.popen_read("/usr/bin/clang --version")
end
version = version[/clang-(\d+\.\d+\.\d+(\.\d+)?)/, 1] || "0"
- version < latest_version
+ Xcode::Version.new(version) < latest_version
end
# Version string (a pretty long one) of the CLT package.
@@ -247,10 +253,10 @@ module OS
def detect_version
# CLT isn't a distinct entity pre-4.3, and pkgutil doesn't exist
# at all on Tiger, so just count it as installed if Xcode is installed
- return MacOS::Xcode.version if MacOS::Xcode.installed? && MacOS::Xcode.version < "3.0"
+ return MacOS::Xcode.version if MacOS::Xcode.installed? && Xcode::Version.new(MacOS::Xcode.version) < "3.0"
[MAVERICKS_PKG_ID, MAVERICKS_NEW_PKG_ID, STANDALONE_PKG_ID, FROM_XCODE_PKG_ID].find do |id|
- if MacOS.version >= :mavericks
+ if Xcode::Version.new(MacOS.version) >= :mavericks.to_s
next unless File.exist?("#{MAVERICKS_PKG_PATH}/usr/bin/clang")
end
version = MacOS.pkgutil_info(id)[/version: (.+)$/, 1]