diff --git a/Library/Homebrew/cleaner.rb b/Library/Homebrew/cleaner.rb index 80a8c74e06d6d462926e19ebae7c6f9ed4d598c1..d22e70cc12ee8e3e36ce154fb84c882031f91277 100644 --- a/Library/Homebrew/cleaner.rb +++ b/Library/Homebrew/cleaner.rb @@ -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 + + # 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 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 + # 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 diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index b35eafef6470ad3afb03a10495ff5516c15a62e3..0a6031d4261e67a70c85260e745fea9d3b8586c3 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -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" diff --git a/Library/Homebrew/test/test_cleaner.rb b/Library/Homebrew/test/test_cleaner.rb index 3af088cef48d36c9ea3d872738dd94cb57cf210a..6f1d5ce0941c8227ec17f7abb10ad25c513e8a41 100644 --- a/Library/Homebrew/test/test_cleaner.rb +++ b/Library/Homebrew/test/test_cleaner.rb @@ -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?