From 88522087583d335a0a6f9e2f077f8f55169f5acc Mon Sep 17 00:00:00 2001 From: Tim Visher Date: Thu, 28 Apr 2022 10:19:16 -0400 Subject: [PATCH] feedback --- Library/Homebrew/cleaner.rb | 22 ++++++++++++++++++++-- Library/Homebrew/test/cleaner_spec.rb | 8 ++++---- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/Library/Homebrew/cleaner.rb b/Library/Homebrew/cleaner.rb index 6d74ebe82f..32954f6b0c 100644 --- a/Library/Homebrew/cleaner.rb +++ b/Library/Homebrew/cleaner.rb @@ -29,11 +29,29 @@ class Cleaner [@f.bin, @f.sbin, @f.lib].each { |d| clean_dir(d) if d.exist? } # Get rid of any info 'dir' files, so they don't conflict at the link stage + # + # The 'dir' files come in at least 3 locations: + # + # 1. 'info/dir' + # 2. 'info/#{name}/dir' + # 3. 'info/#{arch}/dir' + # + # Of these 3 only 'info/#{name}/dir' is safe to keep since the rest will + # conflict with other formulae because they use a shared location. + # + # See [cleaner: recursively delete info `dir`s by gromgit · Pull Request + # #11597][1], [emacs 28.1 bottle does not contain `dir` file · Issue + # #100190][2], and [Keep `info/#{f.name}/dir` files in cleaner by + # timvisher][3] for more info. + # + # [1]: https://github.com/Homebrew/brew/pull/11597 + # [2]: https://github.com/Homebrew/homebrew-core/issues/100190 + # [3]: https://github.com/Homebrew/brew/pull/13215 Dir.glob(@f.info/"**/dir").each do |f| info_dir_file = Pathname(f) - next if info_dir_file == Pathname("#{@f.info}/#{@f.name}/dir") - next if @f.skip_clean?(info_dir_file) next unless info_dir_file.file? + next if info_dir_file == @f.info/@f.name/"dir" + next if @f.skip_clean?(info_dir_file) observe_file_removal info_dir_file end diff --git a/Library/Homebrew/test/cleaner_spec.rb b/Library/Homebrew/test/cleaner_spec.rb index ed584ea3f4..f094e0f7a2 100644 --- a/Library/Homebrew/test/cleaner_spec.rb +++ b/Library/Homebrew/test/cleaner_spec.rb @@ -140,11 +140,11 @@ describe Cleaner do it "removes 'info/**/dir' files except for 'info//dir'" do file = f.info/"dir" arch_file = f.info/"i686-elf/dir" - name_file = f.info/"#{f.name}/dir" + name_file = f.info/f.name/"dir" - f.info.mkpath - (f.info/"i686-elf").mkpath - (f.info/ + f.name.to_s).mkpath + file.dirname.mkpath + arch_file.dirname.mkpath + name_file.dirname.mkpath touch file touch arch_file