diff options
| author | Max Howell | 2012-08-10 16:04:56 -0400 |
|---|---|---|
| committer | Max Howell | 2012-08-13 10:14:59 -0400 |
| commit | 88e79a9098a802209215b4826384dc85bade7f2c (patch) | |
| tree | ce972f55c8d0fd9fc79ca4e74356ec68a1962d44 /Library | |
| parent | 28ee57aa3c2a57336773f6f2dc422fa4160adce0 (diff) | |
| download | brew-88e79a9098a802209215b4826384dc85bade7f2c.tar.bz2 | |
Uninstall keg if error during build & tab creation
Previously if error occurred in code around the logic you'd get a keg that is installed without a tab, which breaks brew.
Diffstat (limited to 'Library')
| -rwxr-xr-x | Library/Homebrew/build.rb | 6 | ||||
| -rw-r--r-- | Library/Homebrew/formula_installer.rb | 19 |
2 files changed, 16 insertions, 9 deletions
diff --git a/Library/Homebrew/build.rb b/Library/Homebrew/build.rb index 5a7fee4fa..894c6b4e9 100755 --- a/Library/Homebrew/build.rb +++ b/Library/Homebrew/build.rb @@ -111,10 +111,4 @@ def install f end end end -rescue Exception - if f.prefix.directory? - f.prefix.rmtree - f.rack.rmdir_if_possible - end - raise end diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 949fbdcc4..97ab036f6 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -119,7 +119,7 @@ class FormulaInstaller clean end - raise "Nothing was installed to #{f.prefix}" unless f.installed? + opoo "Nothing was installed to #{f.prefix}" unless f.installed? end def install_dependency dep @@ -240,10 +240,23 @@ class FormulaInstaller data = read.read raise Marshal.load(data) unless data.nil? or data.empty? raise "Suspicious installation failure" unless $?.success? + end + + # This is the installation receipt. The reason this comment is necessary + # is because some numpty decided to call the class Tab rather than + # the far more appropriate InstallationReceipt :P + Tab.for_install(f, args).write - # Write an installation receipt (a Tab) to the prefix - Tab.for_install(f, args).write if f.installed? + rescue Exception => e + ignore_interrupts do + # any exceptions must leave us with nothing installed + if f.prefix.directory? + puts "One sec, just cleaning up..." if e.kind_of? Interrupt + f.prefix.rmtree + end + f.rack.rmdir_if_possible end + raise end def link |
