Merge pull request #8694 from MikeMcQuaid/env_check_sdk
ENV: check SDK exists when setting up.
This commit is contained in:
		
						commit
						ab4492aef5
					
				@ -28,6 +28,23 @@ module Homebrew
 | 
				
			|||||||
      missing
 | 
					      missing
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def self.checks(type, fatal: true)
 | 
				
			||||||
 | 
					      @checks ||= Checks.new
 | 
				
			||||||
 | 
					      failed = false
 | 
				
			||||||
 | 
					      @checks.public_send(type).each do |check|
 | 
				
			||||||
 | 
					        out = @checks.public_send(check)
 | 
				
			||||||
 | 
					        next if out.nil?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if fatal
 | 
				
			||||||
 | 
					          failed ||= true
 | 
				
			||||||
 | 
					          ofail out
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					          opoo out
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					      exit 1 if failed && fatal
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Diagnostic checks.
 | 
					    # Diagnostic checks.
 | 
				
			||||||
    class Checks
 | 
					    class Checks
 | 
				
			||||||
      def initialize(verbose: true)
 | 
					      def initialize(verbose: true)
 | 
				
			||||||
@ -74,6 +91,10 @@ module Homebrew
 | 
				
			|||||||
        ].freeze
 | 
					        ].freeze
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      def fatal_setup_build_environment_checks
 | 
				
			||||||
 | 
					        [].freeze
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      def supported_configuration_checks
 | 
					      def supported_configuration_checks
 | 
				
			||||||
        [].freeze
 | 
					        [].freeze
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,7 @@
 | 
				
			|||||||
# frozen_string_literal: true
 | 
					# frozen_string_literal: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require "hardware"
 | 
					require "hardware"
 | 
				
			||||||
 | 
					require "diagnostic"
 | 
				
			||||||
require "extend/ENV/shared"
 | 
					require "extend/ENV/shared"
 | 
				
			||||||
require "extend/ENV/std"
 | 
					require "extend/ENV/std"
 | 
				
			||||||
require "extend/ENV/super"
 | 
					require "extend/ENV/super"
 | 
				
			||||||
 | 
				
			|||||||
@ -41,8 +41,8 @@ module Homebrew
 | 
				
			|||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    class Checks
 | 
					    class Checks
 | 
				
			||||||
      undef fatal_build_from_source_checks, supported_configuration_checks,
 | 
					      undef fatal_build_from_source_checks, fatal_setup_build_environment_checks,
 | 
				
			||||||
            build_from_source_checks
 | 
					            supported_configuration_checks, build_from_source_checks
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      def fatal_build_from_source_checks
 | 
					      def fatal_build_from_source_checks
 | 
				
			||||||
        %w[
 | 
					        %w[
 | 
				
			||||||
@ -54,6 +54,12 @@ module Homebrew
 | 
				
			|||||||
        ].freeze
 | 
					        ].freeze
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      def fatal_setup_build_environment_checks
 | 
				
			||||||
 | 
					        %w[
 | 
				
			||||||
 | 
					          check_if_supported_sdk_available
 | 
				
			||||||
 | 
					        ].freeze
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      def supported_configuration_checks
 | 
					      def supported_configuration_checks
 | 
				
			||||||
        %w[
 | 
					        %w[
 | 
				
			||||||
          check_for_unsupported_macos
 | 
					          check_for_unsupported_macos
 | 
				
			||||||
 | 
				
			|||||||
@ -83,6 +83,7 @@ module Stdenv
 | 
				
			|||||||
    sdk = formula ? MacOS.sdk_for_formula(formula, version) : MacOS.sdk(version)
 | 
					    sdk = formula ? MacOS.sdk_for_formula(formula, version) : MacOS.sdk(version)
 | 
				
			||||||
    return if !MacOS.sdk_root_needed? && sdk&.source != :xcode
 | 
					    return if !MacOS.sdk_root_needed? && sdk&.source != :xcode
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Homebrew::Diagnostic.checks(:fatal_setup_build_environment_checks)
 | 
				
			||||||
    sdk = sdk.path
 | 
					    sdk = sdk.path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Extra setup to support Xcode 4.3+ without CLT.
 | 
					    # Extra setup to support Xcode 4.3+ without CLT.
 | 
				
			||||||
 | 
				
			|||||||
@ -110,7 +110,9 @@ module Superenv
 | 
				
			|||||||
    formula = options[:formula]
 | 
					    formula = options[:formula]
 | 
				
			||||||
    sdk = formula ? MacOS.sdk_for_formula(formula) : MacOS.sdk
 | 
					    sdk = formula ? MacOS.sdk_for_formula(formula) : MacOS.sdk
 | 
				
			||||||
    if MacOS.sdk_root_needed? || sdk&.source == :xcode
 | 
					    if MacOS.sdk_root_needed? || sdk&.source == :xcode
 | 
				
			||||||
 | 
					      Homebrew::Diagnostic.checks(:fatal_setup_build_environment_checks)
 | 
				
			||||||
      self["HOMEBREW_SDKROOT"] = sdk.path
 | 
					      self["HOMEBREW_SDKROOT"] = sdk.path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      self["HOMEBREW_DEVELOPER_DIR"] = if sdk.source == :xcode
 | 
					      self["HOMEBREW_DEVELOPER_DIR"] = if sdk.source == :xcode
 | 
				
			||||||
        MacOS::Xcode.prefix
 | 
					        MacOS::Xcode.prefix
 | 
				
			||||||
      else
 | 
					      else
 | 
				
			||||||
 | 
				
			|||||||
@ -16,15 +16,15 @@ module Homebrew
 | 
				
			|||||||
      check_cpu
 | 
					      check_cpu
 | 
				
			||||||
      attempt_directory_creation
 | 
					      attempt_directory_creation
 | 
				
			||||||
      check_cc_argv(cc)
 | 
					      check_cc_argv(cc)
 | 
				
			||||||
      diagnostic_checks(:supported_configuration_checks, fatal: all_fatal)
 | 
					      Diagnostic.checks(:supported_configuration_checks, fatal: all_fatal)
 | 
				
			||||||
      diagnostic_checks(:fatal_preinstall_checks)
 | 
					      Diagnostic.checks(:fatal_preinstall_checks)
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
    alias generic_perform_preinstall_checks perform_preinstall_checks
 | 
					    alias generic_perform_preinstall_checks perform_preinstall_checks
 | 
				
			||||||
    module_function :generic_perform_preinstall_checks
 | 
					    module_function :generic_perform_preinstall_checks
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def perform_build_from_source_checks(all_fatal: false)
 | 
					    def perform_build_from_source_checks(all_fatal: false)
 | 
				
			||||||
      diagnostic_checks(:fatal_build_from_source_checks)
 | 
					      Diagnostic.checks(:fatal_build_from_source_checks)
 | 
				
			||||||
      diagnostic_checks(:build_from_source_checks, fatal: all_fatal)
 | 
					      Diagnostic.checks(:build_from_source_checks, fatal: all_fatal)
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def check_cpu
 | 
					    def check_cpu
 | 
				
			||||||
@ -69,24 +69,6 @@ module Homebrew
 | 
				
			|||||||
      EOS
 | 
					      EOS
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
    private_class_method :check_cc_argv
 | 
					    private_class_method :check_cc_argv
 | 
				
			||||||
 | 
					 | 
				
			||||||
    def diagnostic_checks(type, fatal: true)
 | 
					 | 
				
			||||||
      @checks ||= Diagnostic::Checks.new
 | 
					 | 
				
			||||||
      failed = false
 | 
					 | 
				
			||||||
      @checks.public_send(type).each do |check|
 | 
					 | 
				
			||||||
        out = @checks.public_send(check)
 | 
					 | 
				
			||||||
        next if out.nil?
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if fatal
 | 
					 | 
				
			||||||
          failed ||= true
 | 
					 | 
				
			||||||
          ofail out
 | 
					 | 
				
			||||||
        else
 | 
					 | 
				
			||||||
          opoo out
 | 
					 | 
				
			||||||
        end
 | 
					 | 
				
			||||||
      end
 | 
					 | 
				
			||||||
      exit 1 if failed && fatal
 | 
					 | 
				
			||||||
    end
 | 
					 | 
				
			||||||
    private_class_method :diagnostic_checks
 | 
					 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user