Check GitHub for issues relating to build failures
Uses the GitHub issue search API, so it's very neat and concise. However you can get false positives, so it's not 100% useful. Still I think it is more useful than before, which was, nothing. A further issue is it depends on the ticket at GitHub using the formula's proper name. So we should ensure this as we can. Finally, it does add a possibly large delay to clean exit after a build error. We may want to fiddle with timeouts if it becomes troublesome.
This commit is contained in:
parent
89479912ec
commit
56351558b8
@ -212,6 +212,28 @@ rescue FormulaUnavailableError
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def issues_for_formula name
|
||||||
|
# bit basic as depends on the issue at github having the exact name of the
|
||||||
|
# formula in it. Which for stuff like objective-caml is unlikely. So we
|
||||||
|
# really should search for aliases too.
|
||||||
|
|
||||||
|
name = f.name if Formula === name
|
||||||
|
|
||||||
|
require 'open-uri'
|
||||||
|
require 'yaml'
|
||||||
|
|
||||||
|
issues = []
|
||||||
|
|
||||||
|
open("http://github.com/api/v2/yaml/issues/search/mxcl/homebrew/open/"+name) do |f|
|
||||||
|
YAML::load(f.read)['issues'].each do |issue|
|
||||||
|
issues << 'http://github.com/mxcl/homebrew/issues/#issue/%s' % issue['number']
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
issues
|
||||||
|
rescue
|
||||||
|
[]
|
||||||
|
end
|
||||||
|
|
||||||
def clean f
|
def clean f
|
||||||
Cleaner.new f
|
Cleaner.new f
|
||||||
|
|||||||
8
bin/brew
8
bin/brew
@ -326,12 +326,18 @@ rescue Interrupt => e
|
|||||||
exit 130
|
exit 130
|
||||||
rescue BuildError => e
|
rescue BuildError => e
|
||||||
e.backtrace[1] =~ %r{Library/Formula/(.+)\.rb:(\d+)}
|
e.backtrace[1] =~ %r{Library/Formula/(.+)\.rb:(\d+)}
|
||||||
puts "http://github.com/mxcl/homebrew/blob/master/Library/Formula/#{$1}.rb#L#{$2}"
|
formula_name = $1
|
||||||
|
puts "http://github.com/mxcl/homebrew/blob/master/Library/Formula/#{formula_name}.rb#L#{$2}"
|
||||||
ohai "Environment"
|
ohai "Environment"
|
||||||
dump_config
|
dump_config
|
||||||
puts "Exit status: #{e.status.exitstatus}"
|
puts "Exit status: #{e.status.exitstatus}"
|
||||||
onoe e
|
onoe e
|
||||||
puts PLEASE_REPORT_BUG
|
puts PLEASE_REPORT_BUG
|
||||||
|
# this feature can be slow (depends on network conditions and if github is up)
|
||||||
|
# so ideally we'd show feedback, eg. "checking for existin issues..." and
|
||||||
|
# then replace that string with the following when the github api returns
|
||||||
|
issues = issues_for_formula(formula_name)
|
||||||
|
puts "These existing issues may help you:", *issues unless issues.empty?
|
||||||
exit 1
|
exit 1
|
||||||
rescue RuntimeError, SystemCallError => e
|
rescue RuntimeError, SystemCallError => e
|
||||||
onoe e
|
onoe e
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user