diff options
| author | Jack Nagel | 2014-03-13 10:05:55 -0500 |
|---|---|---|
| committer | Jack Nagel | 2014-03-13 10:05:57 -0500 |
| commit | 2fa965d6dd96a4236c49e59370fd22d0f4232353 (patch) | |
| tree | 9c53372c4fc3fc0e719d07cd28c95de5d346b945 /Library | |
| parent | 2238fd75cea0c51b9e0ce4d4040cfe89c2c755f0 (diff) | |
| download | homebrew-2fa965d6dd96a4236c49e59370fd22d0f4232353.tar.bz2 | |
Allow the debugger to work from inside staged resources
References #23263.
Closes #27445.
Diffstat (limited to 'Library')
| -rwxr-xr-x | Library/Homebrew/build.rb | 2 | ||||
| -rw-r--r-- | Library/Homebrew/debrew.rb | 21 |
2 files changed, 23 insertions, 0 deletions
diff --git a/Library/Homebrew/build.rb b/Library/Homebrew/build.rb index 2d2bb861a..985d0bae4 100755 --- a/Library/Homebrew/build.rb +++ b/Library/Homebrew/build.rb @@ -167,6 +167,8 @@ class Build else f.prefix.mkpath + f.resources.each { |r| r.extend(ResourceDebugger) } if ARGV.debug? + begin f.install diff --git a/Library/Homebrew/debrew.rb b/Library/Homebrew/debrew.rb index e0d562cc9..2946533e2 100644 --- a/Library/Homebrew/debrew.rb +++ b/Library/Homebrew/debrew.rb @@ -1,5 +1,6 @@ require 'debrew/menu' require 'debrew/raise_plus' +require 'set' unless ENV['HOMEBREW_NO_READLINE'] begin @@ -15,7 +16,27 @@ class Object include RaisePlus end +module ResourceDebugger + def stage(&block) + super do + begin + block.call(self) + rescue Exception => e + if ARGV.debug? + debrew e + else + raise + end + end + end + end +end + +$debugged_exceptions = Set.new + def debrew(exception, formula=nil) + raise exception unless $debugged_exceptions.add?(exception) + puts "#{exception.backtrace.first}" puts "#{Tty.red}#{exception.class.to_s}#{Tty.reset}: #{exception.to_s}" |
