diff options
| author | Jack Nagel | 2014-09-09 14:24:18 -0500 |
|---|---|---|
| committer | Jack Nagel | 2014-09-09 14:26:36 -0500 |
| commit | 4fd78c9690e6f5393956d9859747deacffa9297c (patch) | |
| tree | bb066a0b352f6bcf9511ed0abe50e494bdaf6146 /Library | |
| parent | 0d154a991de4d8ba2d223c6cc77c67d983d95af2 (diff) | |
| download | brew-4fd78c9690e6f5393956d9859747deacffa9297c.tar.bz2 | |
Provide more information about link errors
References Homebrew/homebrew#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 |
