aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorJack Nagel2014-09-09 14:24:18 -0500
committerJack Nagel2014-09-09 14:26:36 -0500
commit6908f0e896738b8fb4ec6abf39ff242d50b31d6e (patch)
tree159db3cb9f04ee95214ca5f79b97f4b48d9506b4 /Library
parent4525585e0ba139acbc05162b40bcdedd9c497806 (diff)
downloadhomebrew-6908f0e896738b8fb4ec6abf39ff242d50b31d6e.tar.bz2
Provide more information about link errors
References #32046.
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/keg.rb17
1 files changed, 10 insertions, 7 deletions
diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb
index 576811fb8..c826598e8 100644
--- a/Library/Homebrew/keg.rb
+++ b/Library/Homebrew/keg.rb
@@ -16,10 +16,13 @@ class Keg
class LinkError < RuntimeError
attr_reader :keg, :src, :dst
- def initialize(keg, src, dst)
+ def initialize(keg, src, dst, cause)
@src = src
@dst = dst
@keg = keg
+ @cause = cause
+ super(cause.message)
+ set_backtrace(cause.backtrace)
end
end
@@ -361,17 +364,17 @@ class Keg
dst.delete if mode.overwrite && (dst.exist? || dst.symlink?)
dst.make_relative_symlink(src)
- rescue Errno::EEXIST
+ rescue Errno::EEXIST => e
if dst.exist?
- raise ConflictError.new(self, src.relative_path_from(path), dst)
+ raise ConflictError.new(self, src.relative_path_from(path), dst, e)
elsif dst.symlink?
dst.unlink
retry
end
- rescue Errno::EACCES
- raise DirectoryNotWritableError.new(self, src.relative_path_from(path), dst)
- rescue SystemCallError
- raise LinkError.new(self, src.relative_path_from(path), dst)
+ rescue Errno::EACCES => e
+ raise DirectoryNotWritableError.new(self, src.relative_path_from(path), dst, e)
+ rescue SystemCallError => e
+ raise LinkError.new(self, src.relative_path_from(path), dst, e)
end
protected