linkage: check undeclared dependencies for --test
				
					
				
			Also allowing access results for LinkageChecker
This commit is contained in:
		
							parent
							
								
									abca5936f2
								
							
						
					
					
						commit
						080ddd8804
					
				@ -16,27 +16,26 @@ require "formula"
 | 
			
		||||
 | 
			
		||||
module Homebrew
 | 
			
		||||
  def linkage
 | 
			
		||||
    found_broken_dylibs = false
 | 
			
		||||
    ARGV.kegs.each do |keg|
 | 
			
		||||
      ohai "Checking #{keg.name} linkage" if ARGV.kegs.size > 1
 | 
			
		||||
      result = LinkageChecker.new(keg)
 | 
			
		||||
      if ARGV.include?("--test")
 | 
			
		||||
        result.display_test_output
 | 
			
		||||
        if result.broken_dylibs? || result.undeclared_deps?
 | 
			
		||||
          Homebrew.failed = true
 | 
			
		||||
        end
 | 
			
		||||
      elsif ARGV.include?("--reverse")
 | 
			
		||||
        result.display_reverse_output
 | 
			
		||||
      else
 | 
			
		||||
        result.display_normal_output
 | 
			
		||||
      end
 | 
			
		||||
      found_broken_dylibs = true unless result.broken_dylibs.empty?
 | 
			
		||||
    end
 | 
			
		||||
    if ARGV.include?("--test") && found_broken_dylibs
 | 
			
		||||
      exit 1
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  class LinkageChecker
 | 
			
		||||
    attr_reader :keg
 | 
			
		||||
    attr_reader :broken_dylibs
 | 
			
		||||
    attr_reader :brewed_dylibs, :system_dylibs, :broken_dylibs, :variable_dylibs
 | 
			
		||||
    attr_reader :undeclared_deps, :reverse_links
 | 
			
		||||
 | 
			
		||||
    def initialize(keg)
 | 
			
		||||
      @keg = keg
 | 
			
		||||
@ -44,6 +43,7 @@ module Homebrew
 | 
			
		||||
      @system_dylibs = Set.new
 | 
			
		||||
      @broken_dylibs = Set.new
 | 
			
		||||
      @variable_dylibs = Set.new
 | 
			
		||||
      @undeclared_deps = []
 | 
			
		||||
      @reverse_links = Hash.new { |h, k| h[k] = Set.new }
 | 
			
		||||
      check_dylibs
 | 
			
		||||
    end
 | 
			
		||||
@ -76,7 +76,6 @@ module Homebrew
 | 
			
		||||
        @undeclared_deps -= [f.name]
 | 
			
		||||
      rescue FormulaUnavailableError
 | 
			
		||||
        opoo "Formula unavailable: #{keg.name}"
 | 
			
		||||
        @undeclared_deps = []
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
@ -104,6 +103,16 @@ module Homebrew
 | 
			
		||||
    def display_test_output
 | 
			
		||||
      display_items "Missing libraries", @broken_dylibs
 | 
			
		||||
      puts "No broken dylib links" if @broken_dylibs.empty?
 | 
			
		||||
      display_items "Possible undeclared dependencies", @undeclared_deps
 | 
			
		||||
      puts "No undeclared dependencies" if @undeclared_deps.empty?
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def broken_dylibs?
 | 
			
		||||
      !@broken_dylibs.empty?
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def undeclared_deps?
 | 
			
		||||
      !@undeclared_deps.empty?
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    private
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user