From 0031e1947df198f16b86d9c1bf2b39ad15b1178e Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Tue, 16 Sep 2014 09:59:09 +0100 Subject: [PATCH] brew-test-bot: build changed dependencies first. And don't uninstall them in-between. This should fix the issues where if e.g. OpenSSL changes in a pull request then it's only the dependents after it alphabetically would be built against the new version. --- Library/Contributions/cmd/brew-test-bot.rb | 30 +++++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/Library/Contributions/cmd/brew-test-bot.rb b/Library/Contributions/cmd/brew-test-bot.rb index 725084713a..0dfcd730df 100755 --- a/Library/Contributions/cmd/brew-test-bot.rb +++ b/Library/Contributions/cmd/brew-test-bot.rb @@ -136,7 +136,7 @@ class Step end class Test - attr_reader :log_root, :category, :name, :formulae, :steps + attr_reader :log_root, :category, :name, :steps def initialize argument, tap=nil @hash = nil @@ -341,7 +341,6 @@ class Test reqs |= formula_object.devel.requirements.to_a end - begin deps.each {|f| CompilerSelector.new(f.to_formula).compiler } CompilerSelector.new(formula_object).compiler @@ -362,7 +361,7 @@ class Test end test "brew", "fetch", "--retry", *unchanged_dependencies unless unchanged_dependencies.empty? - test "brew", "fetch", "--retry", "--build-from-source", *changed_dependences unless changed_dependences.empty? + test "brew", "fetch", "--retry", "--build-bottle", *changed_dependences unless changed_dependences.empty? formula_fetch_options = [] formula_fetch_options << "--build-bottle" unless ARGV.include? "--no-bottle" formula_fetch_options << "--force" if ARGV.include? "--cleanup" @@ -406,7 +405,7 @@ class Test test "brew", "uninstall", "--devel", "--force", formula end end - test "brew", "uninstall", "--force", *dependencies unless dependencies.empty? + test "brew", "uninstall", "--force", *unchanged_dependencies unless unchanged_dependencies.empty? end def homebrew @@ -473,6 +472,29 @@ class Test status == :passed end + def formulae + changed_formulae_dependents = {} + dependencies = [] + non_dependencies = [] + + @formulae.each do |formula| + formula_dependencies = `brew deps #{formula}`.split("\n") + unchanged_dependencies = formula_dependencies - @formulae + changed_dependences = formula_dependencies - unchanged_dependencies + changed_dependences.each do |changed_formula| + changed_formulae_dependents[changed_formula] ||= 0 + changed_formulae_dependents[changed_formula] += 1 + end + end + + changed_formulae = changed_formulae_dependents.sort do |a1,a2| + a2[1].to_i <=> a1[1].to_i + end + changed_formulae.map!(&:first) + unchanged_formulae = @formulae - changed_formulae + changed_formulae + unchanged_formulae + end + def run cleanup_before download