From 4fd78c9690e6f5393956d9859747deacffa9297c Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Tue, 9 Sep 2014 14:24:18 -0500 Subject: Provide more information about link errors References Homebrew/homebrew#32046. --- Library/Homebrew/keg.rb | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'Library') 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 -- cgit v1.2.3