diff --git a/Library/Homebrew/extend/os/mac/diagnostic.rb b/Library/Homebrew/extend/os/mac/diagnostic.rb index a2d6f19a72..c8439b06cd 100644 --- a/Library/Homebrew/extend/os/mac/diagnostic.rb +++ b/Library/Homebrew/extend/os/mac/diagnostic.rb @@ -433,9 +433,13 @@ module Homebrew locator = MacOS.sdk_locator source = if locator.source == :clt + return if MacOS::CLT.below_minimum_version? # Handled by other diagnostics. + update_instructions = MacOS::CLT.update_instructions "Command Line Tools (CLT)" else + return if MacOS::Xcode.below_minimum_version? # Handled by other diagnostics. + update_instructions = MacOS::Xcode.update_instructions "Xcode" end diff --git a/Library/Homebrew/os/mac/pkgconfig/11/expat.pc b/Library/Homebrew/os/mac/pkgconfig/11/expat.pc index 5559111ea9..43370a8aca 100644 --- a/Library/Homebrew/os/mac/pkgconfig/11/expat.pc +++ b/Library/Homebrew/os/mac/pkgconfig/11/expat.pc @@ -1,4 +1,4 @@ -homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk +homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk prefix=${homebrew_sdkroot}/usr exec_prefix=/usr libdir=${exec_prefix}/lib diff --git a/Library/Homebrew/os/mac/pkgconfig/11/libcurl.pc b/Library/Homebrew/os/mac/pkgconfig/11/libcurl.pc index ae14a734c8..b1fe8501fb 100644 --- a/Library/Homebrew/os/mac/pkgconfig/11/libcurl.pc +++ b/Library/Homebrew/os/mac/pkgconfig/11/libcurl.pc @@ -23,7 +23,7 @@ # This should most probably benefit from getting a "Requires:" field added # dynamically by configure. # -homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk +homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk prefix=${homebrew_sdkroot}/usr exec_prefix=/usr libdir=${exec_prefix}/lib diff --git a/Library/Homebrew/os/mac/pkgconfig/11/libedit.pc b/Library/Homebrew/os/mac/pkgconfig/11/libedit.pc index e56b183c31..72fa1e609b 100644 --- a/Library/Homebrew/os/mac/pkgconfig/11/libedit.pc +++ b/Library/Homebrew/os/mac/pkgconfig/11/libedit.pc @@ -1,4 +1,4 @@ -homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk +homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk prefix=${homebrew_sdkroot}/usr exec_prefix=/usr libdir=${exec_prefix}/lib diff --git a/Library/Homebrew/os/mac/pkgconfig/11/libexslt.pc b/Library/Homebrew/os/mac/pkgconfig/11/libexslt.pc index a06775b570..f3cdef0613 100644 --- a/Library/Homebrew/os/mac/pkgconfig/11/libexslt.pc +++ b/Library/Homebrew/os/mac/pkgconfig/11/libexslt.pc @@ -1,4 +1,4 @@ -homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk +homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk prefix=${homebrew_sdkroot}/usr exec_prefix=/usr libdir=${exec_prefix}/lib diff --git a/Library/Homebrew/os/mac/pkgconfig/11/libffi.pc b/Library/Homebrew/os/mac/pkgconfig/11/libffi.pc index 21d6e56837..644b372932 100644 --- a/Library/Homebrew/os/mac/pkgconfig/11/libffi.pc +++ b/Library/Homebrew/os/mac/pkgconfig/11/libffi.pc @@ -1,4 +1,4 @@ -homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk +homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk prefix=${homebrew_sdkroot}/usr exec_prefix=/usr libdir=${exec_prefix}/lib diff --git a/Library/Homebrew/os/mac/pkgconfig/11/libxml-2.0.pc b/Library/Homebrew/os/mac/pkgconfig/11/libxml-2.0.pc index fa6272983e..d7cb87c472 100644 --- a/Library/Homebrew/os/mac/pkgconfig/11/libxml-2.0.pc +++ b/Library/Homebrew/os/mac/pkgconfig/11/libxml-2.0.pc @@ -1,4 +1,4 @@ -homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk +homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk prefix=${homebrew_sdkroot}/usr exec_prefix=/usr libdir=${exec_prefix}/lib diff --git a/Library/Homebrew/os/mac/pkgconfig/11/libxslt.pc b/Library/Homebrew/os/mac/pkgconfig/11/libxslt.pc index 28a3326b88..6d88788062 100644 --- a/Library/Homebrew/os/mac/pkgconfig/11/libxslt.pc +++ b/Library/Homebrew/os/mac/pkgconfig/11/libxslt.pc @@ -1,4 +1,4 @@ -homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk +homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk prefix=${homebrew_sdkroot}/usr exec_prefix=/usr libdir=${exec_prefix}/lib diff --git a/Library/Homebrew/os/mac/pkgconfig/11/ncurses.pc b/Library/Homebrew/os/mac/pkgconfig/11/ncurses.pc index b8d37fcdea..ce7159092b 100644 --- a/Library/Homebrew/os/mac/pkgconfig/11/ncurses.pc +++ b/Library/Homebrew/os/mac/pkgconfig/11/ncurses.pc @@ -1,4 +1,4 @@ -homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk +homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk prefix=${homebrew_sdkroot}/usr exec_prefix=/usr libdir=${exec_prefix}/lib diff --git a/Library/Homebrew/os/mac/pkgconfig/11/ncursesw.pc b/Library/Homebrew/os/mac/pkgconfig/11/ncursesw.pc index 001cb7298b..4db4c043f4 100644 --- a/Library/Homebrew/os/mac/pkgconfig/11/ncursesw.pc +++ b/Library/Homebrew/os/mac/pkgconfig/11/ncursesw.pc @@ -1,4 +1,4 @@ -homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk +homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk prefix=${homebrew_sdkroot}/usr exec_prefix=/usr libdir=${exec_prefix}/lib diff --git a/Library/Homebrew/os/mac/pkgconfig/11/sqlite3.pc b/Library/Homebrew/os/mac/pkgconfig/11/sqlite3.pc index 626863163d..f6a4dadaaa 100644 --- a/Library/Homebrew/os/mac/pkgconfig/11/sqlite3.pc +++ b/Library/Homebrew/os/mac/pkgconfig/11/sqlite3.pc @@ -1,4 +1,4 @@ -homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk +homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk prefix=${homebrew_sdkroot}/usr exec_prefix=/usr libdir=${exec_prefix}/lib diff --git a/Library/Homebrew/os/mac/pkgconfig/11/uuid.pc b/Library/Homebrew/os/mac/pkgconfig/11/uuid.pc index b77f88b475..e679e71039 100644 --- a/Library/Homebrew/os/mac/pkgconfig/11/uuid.pc +++ b/Library/Homebrew/os/mac/pkgconfig/11/uuid.pc @@ -1,4 +1,4 @@ -homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk +homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk prefix=${homebrew_sdkroot}/usr exec_prefix=/usr libdir=${exec_prefix}/lib diff --git a/Library/Homebrew/os/mac/pkgconfig/11/zlib.pc b/Library/Homebrew/os/mac/pkgconfig/11/zlib.pc index e9b2cc6698..6193752e3f 100644 --- a/Library/Homebrew/os/mac/pkgconfig/11/zlib.pc +++ b/Library/Homebrew/os/mac/pkgconfig/11/zlib.pc @@ -1,4 +1,4 @@ -homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk +homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk prefix=${homebrew_sdkroot}/usr exec_prefix=/usr libdir=${exec_prefix}/lib diff --git a/Library/Homebrew/os/mac/sdk.rb b/Library/Homebrew/os/mac/sdk.rb index 164c095b09..13ee10fc70 100644 --- a/Library/Homebrew/os/mac/sdk.rb +++ b/Library/Homebrew/os/mac/sdk.rb @@ -9,7 +9,8 @@ module OS # # @api private class SDK - VERSIONED_SDK_REGEX = /MacOSX(\d+\.\d+)\.sdk$/.freeze + # 11.x SDKs are explicitly excluded - we want the MacOSX11.sdk symlink instead. + VERSIONED_SDK_REGEX = /MacOSX(10\.\d+|\d+)\.sdk$/.freeze attr_reader :version, :path, :source @@ -41,24 +42,23 @@ module OS # Bail out if there is no SDK prefix at all return @all_sdks unless File.directory? sdk_prefix - # Use unversioned SDK path on Big Sur to avoid issues such as: - # https://github.com/Homebrew/homebrew-core/issues/67075 - unversioned_sdk_path = Pathname.new("#{sdk_prefix}/MacOSX.sdk") - version = read_sdk_version(unversioned_sdk_path) - if version && version >= :big_sur - unversioned_sdk_version = version - @all_sdks << SDK.new(unversioned_sdk_version, unversioned_sdk_path, source) - end - Dir["#{sdk_prefix}/MacOSX*.sdk"].each do |sdk_path| next unless sdk_path.match?(SDK::VERSIONED_SDK_REGEX) version = read_sdk_version(Pathname.new(sdk_path)) - next if version.nil? || version == unversioned_sdk_version + next if version.nil? @all_sdks << SDK.new(version, sdk_path, source) end + # Fall back onto unversioned SDK if we've not found a suitable SDK + if @all_sdks.empty? + sdk_path = Pathname.new("#{sdk_prefix}/MacOSX.sdk") + if (version = read_sdk_version(sdk_path)) + @all_sdks << SDK.new(version, sdk_path, source) + end + end + @all_sdks end diff --git a/Library/Homebrew/os/mac/xcode.rb b/Library/Homebrew/os/mac/xcode.rb index 17f916fe20..80353f2453 100755 --- a/Library/Homebrew/os/mac/xcode.rb +++ b/Library/Homebrew/os/mac/xcode.rb @@ -336,7 +336,7 @@ module OS def minimum_version case MacOS.version when "12" then "13.0.0" - when "11" then "12.0.0" + when "11" then "12.5.0" when "10.15" then "11.0.0" when "10.14" then "10.0.0" when "10.13" then "9.0.0" diff --git a/Library/Homebrew/test/os/mac/diagnostic_spec.rb b/Library/Homebrew/test/os/mac/diagnostic_spec.rb index e7bd09de12..c0a0e2573e 100644 --- a/Library/Homebrew/test/os/mac/diagnostic_spec.rb +++ b/Library/Homebrew/test/os/mac/diagnostic_spec.rb @@ -47,6 +47,8 @@ describe Homebrew::Diagnostic::Checks do before do allow(DevelopmentTools).to receive(:installed?).and_return(true) allow(OS::Mac).to receive(:version).and_return(macos_version) + allow(OS::Mac::CLT).to receive(:below_minimum_version?).and_return(false) + allow(OS::Mac::Xcode).to receive(:below_minimum_version?).and_return(false) end it "doesn't trigger when SDK root is not needed" do