From ffe4f25d87741199cfba2052ff810712ef94854b Mon Sep 17 00:00:00 2001 From: Max Howell Date: Sat, 24 Oct 2009 15:57:23 +0100 Subject: Marshal install.rb exceptions back to the parent process Using an error pipe. The use of ENV[HOMEBREW_ERROR_PIPE] feels wrong, but I wasn't sure how else to proxy the file descriptor to the child process since the fork immediately calls exec. --- Library/Homebrew/install.rb | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'Library') diff --git a/Library/Homebrew/install.rb b/Library/Homebrew/install.rb index f3ddd34bb..927e976bc 100755 --- a/Library/Homebrew/install.rb +++ b/Library/Homebrew/install.rb @@ -137,9 +137,16 @@ def install f puts rescue Exception => e - #TODO propogate exception back to brew script - onoe e - puts e.backtrace + if ENV['HOMEBREW_ERROR_PIPE'] + pipe = IO.new(ENV['HOMEBREW_ERROR_PIPE'].to_i, 'w') + Marshal.dump(e, pipe) + pipe.close + exit! 1 + else + onoe e + puts e.backtrace + exit! 2 + end end -- cgit v1.2.3