Handle exceptions during install correctly
rm -rf the prefix and build dirs when appropriate.
This commit is contained in:
parent
cbbc7b0f0f
commit
71a6287409
@ -178,8 +178,9 @@ public
|
||||
# yields self with current working directory set to the uncompressed tarball
|
||||
def brew
|
||||
ohai "Downloading #{@url}"
|
||||
|
||||
Dir.chdir appsupport do
|
||||
tmp=tgz=nil
|
||||
begin
|
||||
tgz=Pathname.new(fetch()).realpath
|
||||
md5=`md5 -q "#{tgz}"`.strip
|
||||
raise "MD5 mismatch: #{md5}" unless @md5 and md5 == @md5.downcase
|
||||
@ -188,22 +189,19 @@ public
|
||||
# recursively deleting later
|
||||
# we use mktemp rather than appsupport/blah because some build scripts
|
||||
# can't handle being built in a directory with spaces in it :P
|
||||
tmp=nil
|
||||
begin
|
||||
tmp=`mktemp -dt #{File.basename @url}`.strip
|
||||
Dir.chdir tmp do
|
||||
Dir.chdir uncompress(tgz) do
|
||||
yield self
|
||||
end
|
||||
end
|
||||
rescue => e
|
||||
if e.kind_of? Interrupt and ARGV.include? '--debug'
|
||||
rescue Interrupt, RuntimeError
|
||||
if ARGV.include? '--debug'
|
||||
# debug mode allows the packager to intercept a failed build and
|
||||
# investigate the problems
|
||||
puts "Rescued build at: #{tmp}"
|
||||
exit! 1
|
||||
else
|
||||
FileUtils.rm_rf prefix
|
||||
raise
|
||||
end
|
||||
ensure
|
||||
|
||||
14
bin/brew
14
bin/brew
@ -212,12 +212,16 @@ begin
|
||||
shift_formulae_from_ARGV.each do |name|
|
||||
beginning = Time.now
|
||||
o=__obj(name)
|
||||
begin
|
||||
raise "#{o.prefix} already exists!" if o.prefix.exist?
|
||||
o.prefix.mkpath
|
||||
o.brew { o.install }
|
||||
o.brew do
|
||||
o.install
|
||||
['README','ChangeLog','COPYING','AUTHORS'].each do |file|
|
||||
FileUtils.cp file, o.prefix if File.file? file
|
||||
end
|
||||
end
|
||||
ohai 'Finishing up'
|
||||
#TODO copy changelog or CHANGES file to pkg root,
|
||||
#TODO maybe README, etc. to versioned root
|
||||
o.clean
|
||||
ln name
|
||||
if o.caveats
|
||||
@ -226,6 +230,10 @@ begin
|
||||
ohai "Summary"
|
||||
end
|
||||
puts "#{o.prefix}: "+abv(name)+", built in #{Time.now - beginning} seconds"
|
||||
rescue Exception
|
||||
FileUtils.rm_rf o.prefix
|
||||
raise
|
||||
end
|
||||
end
|
||||
when 'ln'
|
||||
n=0
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user