diagnostic: remove some checks.

- Some of these are currently failing globally on GitHub Actions.
- Some(/all?) of these predate our use of the macOS sandbox,
  environment filtering, PATH filtering and pushing users much harder to
  use bottles instead of building from source
- I haven't seen a case for a long time where any of these actually
  debugged a user issue. If/when this happens: we can add a given check
  back.
- This should allow us to dramatically reduce the amount of cleanup
  that `brew test-bot` needs to do on GitHub Actions.
This commit is contained in:
Mike McQuaid 2022-11-29 09:21:34 +00:00
parent 9c88c39bae
commit 49bacd681e
No known key found for this signature in database
GPG Key ID: 3338A31AFDB1D829
2 changed files with 0 additions and 102 deletions

View File

@ -181,32 +181,6 @@ module Homebrew
EOS
end
# Anaconda installs multiple system & brew dupes, including OpenSSL, Python,
# sqlite, libpng, Qt, etc. Regularly breaks compile on Vim, MacVim and others.
# Is flagged as part of the *-config script checks below, but people seem
# to ignore those as warnings rather than extremely likely breakage.
def check_for_anaconda
return unless which("anaconda")
return unless which("python")
anaconda_directory = which("anaconda").realpath.dirname
python_binary = Utils.popen_read(which("python"), "-c", "import sys; sys.stdout.write(sys.executable)")
python_directory = Pathname.new(python_binary).realpath.dirname
# Only warn if Python lives with Anaconda, since is most problematic case.
return unless python_directory == anaconda_directory
<<~EOS
Anaconda is known to frequently break Homebrew builds, including Vim and
MacVim, due to bundling many duplicates of system and Homebrew-provided
tools.
If you encounter a build failure please temporarily remove Anaconda
from your $PATH and attempt the build again prior to reporting the
failure to us. Thanks!
EOS
end
def __check_stray_files(dir, pattern, allow_list, message)
return unless File.directory?(dir)
@ -477,54 +451,6 @@ module Homebrew
EOS
end
def check_for_config_scripts
return unless HOMEBREW_CELLAR.exist?
real_cellar = HOMEBREW_CELLAR.realpath
scripts = []
allowlist = %W[
/bin /sbin
/usr/bin /usr/sbin
/usr/X11/bin /usr/X11R6/bin /opt/X11/bin
#{HOMEBREW_PREFIX}/bin #{HOMEBREW_PREFIX}/sbin
/Applications/Server.app/Contents/ServerRoot/usr/bin
/Applications/Server.app/Contents/ServerRoot/usr/sbin
]
if OS.mac? && Hardware::CPU.physical_cpu_arm64?
allowlist += %W[
#{HOMEBREW_MACOS_ARM_DEFAULT_PREFIX}/bin
#{HOMEBREW_MACOS_ARM_DEFAULT_PREFIX}/sbin
#{HOMEBREW_DEFAULT_PREFIX}/bin
#{HOMEBREW_DEFAULT_PREFIX}/sbin
]
end
allowlist.map!(&:downcase)
paths.each do |p|
next if allowlist.include?(p.downcase) || !File.directory?(p)
realpath = Pathname.new(p).realpath.to_s
next if realpath.start_with?(real_cellar.to_s, HOMEBREW_CELLAR.to_s)
scripts += Dir.chdir(p) { Dir["*-config"] }.map { |c| File.join(p, c) }
end
return if scripts.empty?
inject_file_list scripts, <<~EOS
"config" scripts exist outside your system or Homebrew directories.
`./configure` scripts often look for *-config scripts to determine if
software packages are installed, and which additional flags to use when
compiling and linking.
Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew-provided
script of the same name. We found the following "config" scripts:
EOS
end
def check_for_symlinked_cellar
return unless HOMEBREW_CELLAR.exist?
return unless HOMEBREW_CELLAR.symlink?

View File

@ -11,21 +11,6 @@ describe Homebrew::Diagnostic::Checks do
expect(checks.inject_file_list(%w[/a /b], "foo:\n")).to eq("foo:\n /a\n /b\n")
end
specify "#check_for_anaconda" do
mktmpdir do |path|
anaconda = "#{path}/anaconda"
python = "#{path}/python"
FileUtils.touch anaconda
File.write(python, "#! #{`which bash`}\necho -n '#{python}'\n")
FileUtils.chmod 0755, anaconda
FileUtils.chmod 0755, python
ENV["PATH"] = "#{path}#{File::PATH_SEPARATOR}#{ENV.fetch("PATH")}"
expect(checks.check_for_anaconda).to match("Anaconda")
end
end
specify "#check_access_directories" do
skip "User is root so everything is writable." if Process.euid.zero?
begin
@ -90,19 +75,6 @@ describe Homebrew::Diagnostic::Checks do
sbin.rmtree
end
specify "#check_for_config_scripts" do
mktmpdir do |tmp|
file = "#{tmp}/foo-config"
FileUtils.touch file
FileUtils.chmod 0755, file
homebrew_path = "#{tmp}#{File::PATH_SEPARATOR}#{ENV.fetch("PATH")}"
stub_const("ORIGINAL_PATHS", PATH.new(homebrew_path).map { |path| Pathname.new(path).expand_path }.compact)
expect(checks.check_for_config_scripts)
.to match('"config" scripts exist')
end
end
specify "#check_for_symlinked_cellar" do
HOMEBREW_CELLAR.rmtree