aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike McQuaid2014-09-16 09:59:09 +0100
committerMike McQuaid2014-09-16 09:59:09 +0100
commit92695e7d189214a4970f236fe7a40c1a44086156 (patch)
treed70e0b5ab1c20f80507f8ab9ddc8cd864e999989
parent2e43356d6a156b756c1ab6cc63ea6147b0e2b9bd (diff)
downloadhomebrew-92695e7d189214a4970f236fe7a40c1a44086156.tar.bz2
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.
-rwxr-xr-xLibrary/Contributions/cmd/brew-test-bot.rb30
1 files changed, 26 insertions, 4 deletions
diff --git a/Library/Contributions/cmd/brew-test-bot.rb b/Library/Contributions/cmd/brew-test-bot.rb
index 725084713..0dfcd730d 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