diff options
| author | Jack Nagel | 2014-09-09 14:24:18 -0500 |
|---|---|---|
| committer | Jack Nagel | 2014-09-09 14:26:36 -0500 |
| commit | 6908f0e896738b8fb4ec6abf39ff242d50b31d6e (patch) | |
| tree | 159db3cb9f04ee95214ca5f79b97f4b48d9506b4 /Library | |
| parent | 4525585e0ba139acbc05162b40bcdedd9c497806 (diff) | |
| download | homebrew-6908f0e896738b8fb4ec6abf39ff242d50b31d6e.tar.bz2 | |
Provide more information about link errors
References #32046.
Diffstat (limited to 'Library')
| -rw-r--r-- | Library/Homebrew/keg.rb | 17 |
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 |
