Merge pull request #10769 from Bo98/big-sur-sdk

Migrating to the MacOSX11.sdk symlink
This commit is contained in:
Mike McQuaid 2021-08-11 15:21:00 +01:00 committed by GitHub
commit bee3e6725c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 30 additions and 24 deletions

View File

@ -433,9 +433,13 @@ module Homebrew
locator = MacOS.sdk_locator locator = MacOS.sdk_locator
source = if locator.source == :clt source = if locator.source == :clt
return if MacOS::CLT.below_minimum_version? # Handled by other diagnostics.
update_instructions = MacOS::CLT.update_instructions update_instructions = MacOS::CLT.update_instructions
"Command Line Tools (CLT)" "Command Line Tools (CLT)"
else else
return if MacOS::Xcode.below_minimum_version? # Handled by other diagnostics.
update_instructions = MacOS::Xcode.update_instructions update_instructions = MacOS::Xcode.update_instructions
"Xcode" "Xcode"
end end

View File

@ -1,4 +1,4 @@
homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk
prefix=${homebrew_sdkroot}/usr prefix=${homebrew_sdkroot}/usr
exec_prefix=/usr exec_prefix=/usr
libdir=${exec_prefix}/lib libdir=${exec_prefix}/lib

View File

@ -23,7 +23,7 @@
# This should most probably benefit from getting a "Requires:" field added # This should most probably benefit from getting a "Requires:" field added
# dynamically by configure. # dynamically by configure.
# #
homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk
prefix=${homebrew_sdkroot}/usr prefix=${homebrew_sdkroot}/usr
exec_prefix=/usr exec_prefix=/usr
libdir=${exec_prefix}/lib libdir=${exec_prefix}/lib

View File

@ -1,4 +1,4 @@
homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk
prefix=${homebrew_sdkroot}/usr prefix=${homebrew_sdkroot}/usr
exec_prefix=/usr exec_prefix=/usr
libdir=${exec_prefix}/lib libdir=${exec_prefix}/lib

View File

@ -1,4 +1,4 @@
homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk
prefix=${homebrew_sdkroot}/usr prefix=${homebrew_sdkroot}/usr
exec_prefix=/usr exec_prefix=/usr
libdir=${exec_prefix}/lib libdir=${exec_prefix}/lib

View File

@ -1,4 +1,4 @@
homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk
prefix=${homebrew_sdkroot}/usr prefix=${homebrew_sdkroot}/usr
exec_prefix=/usr exec_prefix=/usr
libdir=${exec_prefix}/lib libdir=${exec_prefix}/lib

View File

@ -1,4 +1,4 @@
homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk
prefix=${homebrew_sdkroot}/usr prefix=${homebrew_sdkroot}/usr
exec_prefix=/usr exec_prefix=/usr
libdir=${exec_prefix}/lib libdir=${exec_prefix}/lib

View File

@ -1,4 +1,4 @@
homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk
prefix=${homebrew_sdkroot}/usr prefix=${homebrew_sdkroot}/usr
exec_prefix=/usr exec_prefix=/usr
libdir=${exec_prefix}/lib libdir=${exec_prefix}/lib

View File

@ -1,4 +1,4 @@
homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk
prefix=${homebrew_sdkroot}/usr prefix=${homebrew_sdkroot}/usr
exec_prefix=/usr exec_prefix=/usr
libdir=${exec_prefix}/lib libdir=${exec_prefix}/lib

View File

@ -1,4 +1,4 @@
homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk
prefix=${homebrew_sdkroot}/usr prefix=${homebrew_sdkroot}/usr
exec_prefix=/usr exec_prefix=/usr
libdir=${exec_prefix}/lib libdir=${exec_prefix}/lib

View File

@ -1,4 +1,4 @@
homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk
prefix=${homebrew_sdkroot}/usr prefix=${homebrew_sdkroot}/usr
exec_prefix=/usr exec_prefix=/usr
libdir=${exec_prefix}/lib libdir=${exec_prefix}/lib

View File

@ -1,4 +1,4 @@
homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk
prefix=${homebrew_sdkroot}/usr prefix=${homebrew_sdkroot}/usr
exec_prefix=/usr exec_prefix=/usr
libdir=${exec_prefix}/lib libdir=${exec_prefix}/lib

View File

@ -1,4 +1,4 @@
homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk homebrew_sdkroot=/Library/Developer/CommandLineTools/SDKs/MacOSX11.sdk
prefix=${homebrew_sdkroot}/usr prefix=${homebrew_sdkroot}/usr
exec_prefix=/usr exec_prefix=/usr
libdir=${exec_prefix}/lib libdir=${exec_prefix}/lib

View File

@ -9,7 +9,8 @@ module OS
# #
# @api private # @api private
class SDK 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 attr_reader :version, :path, :source
@ -41,24 +42,23 @@ module OS
# Bail out if there is no SDK prefix at all # Bail out if there is no SDK prefix at all
return @all_sdks unless File.directory? sdk_prefix 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| Dir["#{sdk_prefix}/MacOSX*.sdk"].each do |sdk_path|
next unless sdk_path.match?(SDK::VERSIONED_SDK_REGEX) next unless sdk_path.match?(SDK::VERSIONED_SDK_REGEX)
version = read_sdk_version(Pathname.new(sdk_path)) 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) @all_sdks << SDK.new(version, sdk_path, source)
end 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 @all_sdks
end end

View File

@ -336,7 +336,7 @@ module OS
def minimum_version def minimum_version
case MacOS.version case MacOS.version
when "12" then "13.0.0" 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.15" then "11.0.0"
when "10.14" then "10.0.0" when "10.14" then "10.0.0"
when "10.13" then "9.0.0" when "10.13" then "9.0.0"

View File

@ -47,6 +47,8 @@ describe Homebrew::Diagnostic::Checks do
before do before do
allow(DevelopmentTools).to receive(:installed?).and_return(true) allow(DevelopmentTools).to receive(:installed?).and_return(true)
allow(OS::Mac).to receive(:version).and_return(macos_version) 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 end
it "doesn't trigger when SDK root is not needed" do it "doesn't trigger when SDK root is not needed" do