diff --git a/Library/Homebrew/os/mac/xcode.rb b/Library/Homebrew/os/mac/xcode.rb index c9d1332cd0752c03d704abdf863f489afb5d0d06..3ed0ebf1c11ab68a5f21d4a0d34260147e6c1303 100644 --- a/Library/Homebrew/os/mac/xcode.rb +++ b/Library/Homebrew/os/mac/xcode.rb @@ -9,23 +9,31 @@ module OS BUNDLE_ID = "com.apple.dt.Xcode" OLD_BUNDLE_ID = "com.apple.Xcode" + # Bump these when a new version is available from the App Store and our + # CI systems have been updated. + # This may be a beta version for a beta macOS. def latest_version + latest = "11.4" case MacOS.version - when "10.9" then "6.2" - when "10.10" then "7.2.1" - when "10.11" then "8.2.1" - when "10.12" then "9.2" - when "10.13" then "10.1" - when "10.14" then "11.3.1" when "10.15" then "11.4" + when "10.14" then "11.3.1" + when "10.13" then "10.1" + when "10.12" then "9.2" + when "10.11" then "8.2.1" + when "10.10" then "7.2.1" + when "10.9" then "6.2" else raise "macOS '#{MacOS.version}' is invalid" unless OS::Mac.prerelease? # Default to newest known version of Xcode for unreleased macOS versions. - "11.4" + latest end end + # Bump these if things are badly broken (e.g. no SDK for this macOS) + # without this. Generally this will be the first Xcode release on that + # macOS version (which may initially be a beta if that version of macOS is + # also in beta). def minimum_version case MacOS.version when "10.15" then "11.0" @@ -150,8 +158,8 @@ module OS # Xcode 2.x's xcodebuild has a different version string case xcodebuild_output[/DevToolsCore-(\d+\.\d)/, 1] - when "515.0" then return "2.0" when "798.0" then return "2.5" + when "515.0" then return "2.0" end end @@ -165,19 +173,20 @@ module OS # installed CLT version. This is useful as they are packaged # simultaneously so workarounds need to apply to both based on their # comparable version. + latest = "11.4" case (DevelopmentTools.clang_version.to_f * 10).to_i - when 0 then "dunno" - when 60 then "6.0" - when 61 then "6.1" - when 70 then "7.0" - when 73 then "7.3" - when 80 then "8.0" - when 81 then "8.3" - when 90 then "9.2" - when 91 then "9.4" + when 110 then latest when 100 then "10.3" - when 110 then "11.4" - else "11.4" + when 91 then "9.4" + when 90 then "9.2" + when 81 then "8.3" + when 80 then "8.0" + when 73 then "7.3" + when 70 then "7.0" + when 61 then "6.1" + when 60 then "6.0" + when 0 then "dunno" + else latest end end @@ -218,26 +227,31 @@ module OS end def update_instructions - if MacOS.version >= "10.14" - <<~EOS - Update them from Software Update in System Preferences or - #{Formatter.url("https://developer.apple.com/download/more/")}. - EOS + software_update_location = if MacOS.version >= "10.14" + "System Preferences" else - <<~EOS - Update them from Software Update in the App Store or - #{Formatter.url("https://developer.apple.com/download/more/")}. - EOS + "the App Store" end + + <<~EOS + Update them from Software Update in #{software_update_location} or run: + softwareupdate --all --install --force + + If that doesn't show you an update run: + sudo rm -rf /Library/Developer/CommandLineTools + sudo xcode-select --install + + Alternatively, manually download them from: + #{Formatter.url("https://developer.apple.com/download/more/")}. + EOS end + # Bump these when the new version is distributed through Software Update + # and our CI systems have been updated. def latest_clang_version - # As of Xcode 8 CLT releases are no longer in sync with Xcode releases - # 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.15" then "1103.0.32.29" - when "10.14" then "1001.0.46.4" # Later versions are available, but not via Software Update + when "10.15" then "1100.0.33.16" + when "10.14" then "1001.0.46.4" when "10.13" then "1000.10.44.2" when "10.12" then "900.0.39.2" when "10.11" then "800.0.42.1" @@ -246,6 +260,9 @@ module OS end end + # Bump these if things are badly broken (e.g. no SDK for this macOS) + # without this. Generally this will be the first stable CLT release on + # that macOS version. def minimum_version case MacOS.version when "10.15" then "11.0.0"