Cleaner: do work in clean instead of constructor

This commit is contained in:
Adam Vandenberg 2014-02-23 11:07:37 -08:00
parent 3b24d9f0be
commit 9559e162b2
3 changed files with 27 additions and 25 deletions

View File

@ -1,21 +1,23 @@
# Cleans a newly installed keg.
# By default:
# * removes info files
# * removes .la files
# * removes empty directories
# * sets permissions on executables
class Cleaner
# Create a cleaner for the given formula and clean its keg
# Create a cleaner for the given formula
def initialize f
ObserverPathnameExtension.reset_counts!
@f = f
[f.bin, f.sbin, f.lib].select{ |d| d.exist? }.each{ |d| clean_dir d }
end
# Get rid of the directory file, so it no longer bother us at link stage.
info_dir_file = f.info + 'dir'
if info_dir_file.file? and not f.skip_clean? info_dir_file
# Clean the keg of formula @f
def clean
ObserverPathnameExtension.reset_counts!
[@f.bin, @f.sbin, @f.lib].select{ |d| d.exist? }.each{ |d| clean_dir d }
# Get rid of any info 'dir' files, so they don't conflict at the link stage
info_dir_file = @f.info + 'dir'
if info_dir_file.file? and not @f.skip_clean? info_dir_file
puts "rm #{info_dir_file}" if ARGV.verbose?
info_dir_file.unlink
end

View File

@ -490,7 +490,7 @@ class FormulaInstaller
puts "in the formula."
return
end
Cleaner.new f
Cleaner.new(f).clean
rescue Exception => e
opoo "The cleaning step did not complete successfully"
puts "Still, the installation was successful, so we will link it into your prefix"

View File

@ -20,7 +20,7 @@ class CleanerTests < Test::Unit::TestCase
cp "#{TEST_FOLDER}/mach/a.out", @f.bin
cp Dir["#{TEST_FOLDER}/mach/*.dylib"], @f.lib
Cleaner.new @f
Cleaner.new(@f).clean
assert_equal 0100555, (@f.bin/'a.out').stat.mode
assert_equal 0100444, (@f.lib/'fat.dylib').stat.mode
@ -29,7 +29,7 @@ class CleanerTests < Test::Unit::TestCase
end
def test_prunes_prefix_if_empty
Cleaner.new @f
Cleaner.new(@f).clean
assert !@f.prefix.directory?
end
@ -37,7 +37,7 @@ class CleanerTests < Test::Unit::TestCase
subdir = @f.bin/'subdir'
subdir.mkpath
Cleaner.new @f
Cleaner.new(@f).clean
assert !@f.bin.directory?
assert !subdir.directory?
@ -47,7 +47,7 @@ class CleanerTests < Test::Unit::TestCase
@f.class.skip_clean 'bin'
@f.bin.mkpath
Cleaner.new @f
Cleaner.new(@f).clean
assert @f.bin.directory?
end
@ -57,7 +57,7 @@ class CleanerTests < Test::Unit::TestCase
subdir = @f.bin/'subdir'
subdir.mkpath
Cleaner.new @f
Cleaner.new(@f).clean
assert @f.bin.directory?
assert subdir.directory?
@ -70,7 +70,7 @@ class CleanerTests < Test::Unit::TestCase
dir.mkpath
ln_s dir.basename, symlink
Cleaner.new @f
Cleaner.new(@f).clean
assert !dir.exist?
assert !symlink.symlink?
@ -84,7 +84,7 @@ class CleanerTests < Test::Unit::TestCase
dir.mkpath
ln_s dir.basename, symlink
Cleaner.new @f
Cleaner.new(@f).clean
assert !dir.exist?
assert !symlink.symlink?
@ -95,7 +95,7 @@ class CleanerTests < Test::Unit::TestCase
symlink = @f.prefix/'symlink'
ln_s 'target', symlink
Cleaner.new @f
Cleaner.new(@f).clean
assert !symlink.symlink?
end
@ -105,7 +105,7 @@ class CleanerTests < Test::Unit::TestCase
symlink = @f.prefix/'symlink'
ln_s 'target', symlink
Cleaner.new @f
Cleaner.new(@f).clean
assert symlink.symlink?
end
@ -118,7 +118,7 @@ class CleanerTests < Test::Unit::TestCase
dir.mkpath
ln_s dir.basename, symlink
Cleaner.new @f
Cleaner.new(@f).clean
assert !dir.exist?
assert symlink.symlink?
@ -133,7 +133,7 @@ class CleanerTests < Test::Unit::TestCase
dir.mkpath
ln_s dir.basename, symlink
Cleaner.new @f
Cleaner.new(@f).clean
assert !dir.exist?
assert symlink.symlink?
@ -146,7 +146,7 @@ class CleanerTests < Test::Unit::TestCase
@f.lib.mkpath
touch file
Cleaner.new @f
Cleaner.new(@f).clean
assert !file.exist?
end
@ -158,7 +158,7 @@ class CleanerTests < Test::Unit::TestCase
@f.lib.mkpath
touch file
Cleaner.new @f
Cleaner.new(@f).clean
assert file.exist?
end
@ -169,7 +169,7 @@ class CleanerTests < Test::Unit::TestCase
@f.lib.mkpath
touch file
Cleaner.new @f
Cleaner.new(@f).clean
assert !file.exist?
end
@ -180,7 +180,7 @@ class CleanerTests < Test::Unit::TestCase
dir.mkpath
Cleaner.new @f
Cleaner.new(@f).clean
assert dir.directory?
end
@ -193,7 +193,7 @@ class CleanerTests < Test::Unit::TestCase
dir1.mkpath
dir2.mkpath
Cleaner.new @f
Cleaner.new(@f).clean
assert dir1.exist?
assert !dir2.exist?