diff --git a/Library/Homebrew/cmd/doctor.rb b/Library/Homebrew/cmd/doctor.rb index 4e439fa0a30cda47b0cc168669b45947ad77b086..216987077cab04d58571ab49ebf206c55bbb30d8 100644 --- a/Library/Homebrew/cmd/doctor.rb +++ b/Library/Homebrew/cmd/doctor.rb @@ -28,7 +28,6 @@ module Homebrew slow_checks = %w[ check_for_broken_symlinks check_missing_deps - check_for_linked_keg_only_brews ] methods = (checks.all.sort - slow_checks) + slow_checks else diff --git a/Library/Homebrew/diagnostic.rb b/Library/Homebrew/diagnostic.rb index 36df53794f8ad428d129c728204c3bbf7846d14c..18808033f5e1388e0e9aee86f6d19ccb6f5b9d54 100644 --- a/Library/Homebrew/diagnostic.rb +++ b/Library/Homebrew/diagnostic.rb @@ -107,18 +107,6 @@ module Homebrew EOS end - # See https://github.com/Homebrew/legacy-homebrew/pull/9986 - def check_path_for_trailing_slashes - bad_paths = PATH.new(ENV["HOMEBREW_PATH"]).select { |p| p.end_with?("/") } - return if bad_paths.empty? - - inject_file_list bad_paths, <<~EOS - Some directories in your path end in a slash. - Directories in your path should not end in a slash. This can break other - doctor checks. The following directories should be edited: - 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 @@ -620,18 +608,6 @@ module Homebrew message end - def check_ssl_cert_file - return unless ENV.key?("SSL_CERT_FILE") - <<~EOS - Setting SSL_CERT_FILE can break downloading files; if that happens - you should unset it before running Homebrew. - - Homebrew uses the system curl which uses system certificates by - default. Setting SSL_CERT_FILE makes it use an outdated OpenSSL, which - does not support modern OpenSSL certificate stores. - EOS - end - def check_for_symlinked_cellar return unless HOMEBREW_CELLAR.exist? return unless HOMEBREW_CELLAR.symlink? @@ -811,28 +787,6 @@ module Homebrew false end - def check_for_linked_keg_only_brews - return unless HOMEBREW_CELLAR.exist? - - linked = Formula.installed.sort.select do |f| - f.keg_only? && __check_linked_brew(f) - end - return if linked.empty? - - inject_file_list linked.map(&:full_name), <<~EOS - Some keg-only formulae are linked into the Cellar. - Linking a keg-only formula, such as gettext, into the cellar with - `brew link <formula>` will cause other formulae to detect them during - the `./configure` step. This may cause problems when compiling those - other formulae. - - Binaries provided by keg-only formulae may override system binaries - with other strange results. - - You may wish to `brew unlink` these brews: - EOS - end - def check_for_other_frameworks # Other frameworks that are known to cause problems when present frameworks_to_check = %w[ @@ -893,53 +847,6 @@ module Homebrew EOS end - def check_for_enthought_python - return unless which "enpkg" - - <<~EOS - Enthought Python was found in your PATH. - This can cause build problems, as this software installs its own - copies of iconv and libxml2 into directories that are picked up by - other build systems. - EOS - end - - def check_for_library_python - return unless File.exist?("/Library/Frameworks/Python.framework") - - <<~EOS - Python is installed at /Library/Frameworks/Python.framework - - Homebrew only supports building against the System-provided Python or a - brewed Python. In particular, Pythons installed to /Library can interfere - with other software installs. - EOS - end - - def check_for_old_homebrew_share_python_in_path - message = "" - ["", "3"].map do |suffix| - next unless paths.include?((HOMEBREW_PREFIX/"share/python#{suffix}").to_s) - message += <<~EOS - #{HOMEBREW_PREFIX}/share/python#{suffix} is not needed in PATH. - EOS - end - unless message.empty? - message += <<~EOS - - Formerly homebrew put Python scripts you installed via `pip` or `pip3` - (or `easy_install`) into that directory above but now it can be removed - from your PATH variable. - Python scripts will now install into #{HOMEBREW_PREFIX}/bin. - You can delete anything, except 'Extras', from the #{HOMEBREW_PREFIX}/share/python - (and #{HOMEBREW_PREFIX}/share/python@2) dir and install affected Python packages - anew with `pip install --upgrade`. - EOS - end - - message unless message.empty? - end - def check_for_bad_python_symlink return unless which "python" `python -V 2>&1` =~ /Python (\d+)\./ diff --git a/Library/Homebrew/extend/os/mac/diagnostic.rb b/Library/Homebrew/extend/os/mac/diagnostic.rb index bb89b2367f7fde5db6c0d7b685fa977b150a556d..13f8ba83e1e52e98e5efa6a37936f6cbd0d49b0c 100644 --- a/Library/Homebrew/extend/os/mac/diagnostic.rb +++ b/Library/Homebrew/extend/os/mac/diagnostic.rb @@ -7,8 +7,6 @@ module Homebrew check_for_bad_install_name_tool check_for_installed_developer_tools check_xcode_license_approved - check_for_osx_gcc_installer - check_xcode_8_without_clt_on_el_capitan check_xcode_up_to_date check_clt_up_to_date check_for_other_package_managers @@ -92,20 +90,6 @@ module Homebrew EOS end - def check_xcode_8_without_clt_on_el_capitan - return unless MacOS::Xcode.without_clt? - # Scope this to Xcode 8 on El Cap for now - return unless MacOS.version == :el_capitan - return unless MacOS::Xcode.version >= "8" - - <<~EOS - You have Xcode 8 installed without the CLT; - this causes certain builds to fail on OS X El Capitan (10.11). - Please install the CLT via: - sudo xcode-select --install - EOS - end - def check_xcode_minimum_version return unless MacOS::Xcode.below_minimum_version? @@ -134,57 +118,6 @@ module Homebrew EOS end - def check_for_osx_gcc_installer - return unless MacOS.version < "10.7" || ((MacOS::Xcode.version || "0") > "4.1") - return unless DevelopmentTools.clang_version == "2.1" - - fix_advice = if MacOS.version >= :mavericks - "Please run `xcode-select --install` to install the CLT." - elsif MacOS.version >= :lion - "Please install the CLT or Xcode #{MacOS::Xcode.latest_version}." - else - "Please install Xcode #{MacOS::Xcode.latest_version}." - end - - <<~EOS - You seem to have osx-gcc-installer installed. - Homebrew doesn't support osx-gcc-installer. It causes many builds to fail and - is an unlicensed distribution of really old Xcode files. - #{fix_advice} - EOS - end - - def check_for_stray_developer_directory - # if the uninstaller script isn't there, it's a good guess neither are - # any troublesome leftover Xcode files - uninstaller = Pathname.new("/Developer/Library/uninstall-developer-folder") - return unless ((MacOS::Xcode.version || "0") >= "4.3") && uninstaller.exist? - - <<~EOS - You have leftover files from an older version of Xcode. - You should delete them using: - #{uninstaller} - EOS - end - - def check_for_bad_install_name_tool - return if MacOS.version < "10.9" - - libs = Pathname.new("/usr/bin/install_name_tool").dynamically_linked_libraries - - # otool may not work, for example if the Xcode license hasn't been accepted yet - return if libs.empty? - return if libs.include? "/usr/lib/libxcselect.dylib" - - <<~EOS - You have an outdated version of /usr/bin/install_name_tool installed. - This will cause binary package installations to fail. - This can happen if you install osx-gcc-installer or RailsInstaller. - To restore it, you must reinstall macOS or restore the binary from - the OS packages. - EOS - end - def check_for_other_package_managers ponk = MacOS.macports_or_fink return if ponk.empty? @@ -340,33 +273,6 @@ module Homebrew may not build correctly with a non-/usr/local prefix. EOS end - - def check_which_pkg_config - binary = which "pkg-config" - return if binary.nil? - - mono_config = Pathname.new("/usr/bin/pkg-config") - if mono_config.exist? && mono_config.realpath.to_s.include?("Mono.framework") - <<~EOS - You have a non-Homebrew 'pkg-config' in your PATH: - /usr/bin/pkg-config => #{mono_config.realpath} - - This was most likely created by the Mono installer. `./configure` may - have problems finding brew-installed packages using this other pkg-config. - - Mono no longer installs this file as of 3.0.4. You should - `sudo rm /usr/bin/pkg-config` and upgrade to the latest version of Mono. - EOS - elsif binary.to_s != "#{HOMEBREW_PREFIX}/bin/pkg-config" - <<~EOS - You have a non-Homebrew 'pkg-config' in your PATH: - #{binary} - - `./configure` may have problems finding brew-installed packages using - this other pkg-config. - EOS - end - end end end end diff --git a/Library/Homebrew/extend/os/mac/system_config.rb b/Library/Homebrew/extend/os/mac/system_config.rb index c0a28d3e95847718483102388252fd7e742b73c6..66a96bd65960c950a9aaccf6f1be8e95812a6238 100644 --- a/Library/Homebrew/extend/os/mac/system_config.rb +++ b/Library/Homebrew/extend/os/mac/system_config.rb @@ -1,26 +1,23 @@ class SystemConfig class << self def xcode - if instance_variable_defined?(:@xcode) - @xcode - elsif MacOS::Xcode.installed? - @xcode = MacOS::Xcode.version.to_s - @xcode += " => #{MacOS::Xcode.prefix}" unless MacOS::Xcode.default_prefix? - @xcode + @xcode ||= if MacOS::Xcode.installed? + xcode = MacOS::Xcode.version.to_s + xcode += " => #{MacOS::Xcode.prefix}" unless MacOS::Xcode.default_prefix? + xcode end end def clt - if instance_variable_defined?(:@clt) - @clt - elsif MacOS::CLT.installed? && MacOS::Xcode.version >= "4.3" - @clt = MacOS::CLT.version + @clt ||= if MacOS::CLT.installed? && MacOS::Xcode.version >= "4.3" + MacOS::CLT.version end end - def macports_or_fink - @ponk ||= MacOS.macports_or_fink - @ponk.join(", ") unless @ponk.empty? + def xquartz + @xquartz ||= if MacOS::XQuartz.installed? + "#{MacOS::XQuartz.version} => #{describe_path(MacOS::XQuartz.prefix)}" + end end def describe_java @@ -36,11 +33,6 @@ class SystemConfig javas.uniq.join(", ") end - def describe_xquartz - return "N/A" unless MacOS::XQuartz.installed? - "#{MacOS::XQuartz.version} => #{describe_path(MacOS::XQuartz.prefix)}" - end - def describe_homebrew_ruby s = describe_homebrew_ruby_version @@ -54,10 +46,9 @@ class SystemConfig def dump_verbose_config(f = $stdout) dump_generic_verbose_config(f) f.puts "macOS: #{MacOS.full_version}-#{kernel}" - f.puts "Xcode: #{xcode ? xcode : "N/A"}" f.puts "CLT: #{clt ? clt : "N/A"}" - f.puts "X11: #{describe_xquartz}" - f.puts "MacPorts/Fink: #{macports_or_fink}" if macports_or_fink + f.puts "Xcode: #{xcode ? xcode : "N/A"}" + f.puts "XQuartz: #{xquartz ? xquartz : "N/A"}" end end end diff --git a/Library/Homebrew/system_config.rb b/Library/Homebrew/system_config.rb index 13867e7d4e8b1e16843029fe2201437f7c4b4111..7077bbcfed103d97f512cf6e7b73b8e17bf5b61a 100644 --- a/Library/Homebrew/system_config.rb +++ b/Library/Homebrew/system_config.rb @@ -6,22 +6,6 @@ require "development_tools" class SystemConfig class << self - def gcc_4_2 - @gcc_4_2 ||= if DevelopmentTools.installed? - DevelopmentTools.gcc_4_2_build_version - else - Version::NULL - end - end - - def gcc_4_0 - @gcc_4_0 ||= if DevelopmentTools.installed? - DevelopmentTools.gcc_4_0_build_version - else - Version::NULL - end - end - def clang @clang ||= if DevelopmentTools.installed? DevelopmentTools.clang_version @@ -72,42 +56,6 @@ class SystemConfig end end - def describe_perl - describe_path(which("perl", ENV["HOMEBREW_PATH"])) - end - - def describe_python - python = begin - python_path = PATH.new(ENV["HOMEBREW_PATH"]) - .prepend(Formula["python"].opt_libexec/"bin") - which "python", python_path - rescue FormulaUnavailableError - which "python" - end - - return "N/A" if python.nil? - python_binary = Utils.popen_read python, "-c", "import sys; sys.stdout.write(sys.executable)" - python_binary = Pathname.new(python_binary).realpath - if python == python_binary - python - else - "#{python} => #{python_binary}" - end - end - - def describe_ruby - ruby = which "ruby", ENV["HOMEBREW_PATH"] - return "N/A" if ruby.nil? - ruby_binary = Utils.popen_read ruby, "-rrbconfig", "-e", \ - 'include RbConfig;print"#{CONFIG["bindir"]}/#{CONFIG["ruby_install_name"]}#{CONFIG["EXEEXT"]}"' - ruby_binary = Pathname.new(ruby_binary).realpath - if ruby == ruby_binary - ruby - else - "#{ruby} => #{ruby_binary}" - end - end - def describe_homebrew_ruby_version case RUBY_VERSION when /^1\.[89]/, /^2\.0/ @@ -212,8 +160,6 @@ class SystemConfig end f.puts hardware if hardware f.puts "Homebrew Ruby: #{describe_homebrew_ruby}" - f.puts "GCC-4.0: build #{gcc_4_0}" unless gcc_4_0.null? - f.puts "GCC-4.2: build #{gcc_4_2}" unless gcc_4_2.null? f.print "Clang: " if clang.null? f.puts "N/A" @@ -227,9 +173,6 @@ class SystemConfig end f.puts "Git: #{describe_git}" f.puts "Curl: #{describe_curl}" - f.puts "Perl: #{describe_perl}" - f.puts "Python: #{describe_python}" - f.puts "Ruby: #{describe_ruby}" f.puts "Java: #{describe_java}" end alias dump_generic_verbose_config dump_verbose_config diff --git a/Library/Homebrew/test/Gemfile.lock b/Library/Homebrew/test/Gemfile.lock index b69a5f0a71fc6161a270eeaa3beb338c596a7f1e..8fac7645d35c267bbf9de1370e401d81431b6872 100644 --- a/Library/Homebrew/test/Gemfile.lock +++ b/Library/Homebrew/test/Gemfile.lock @@ -12,7 +12,7 @@ GEM parallel (1.12.1) parallel_tests (2.21.2) parallel - parser (2.5.0.2) + parser (2.5.0.5) ast (~> 2.4.0) powerpack (0.1.1) rainbow (3.0.0) @@ -36,7 +36,7 @@ GEM rspec-support (3.7.1) rspec-wait (0.0.9) rspec (>= 3, < 4) - rubocop (0.53.0) + rubocop (0.54.0) parallel (~> 1.10) parser (>= 2.5) powerpack (~> 0.1) @@ -62,7 +62,7 @@ DEPENDENCIES rspec-its rspec-retry rspec-wait - rubocop (= 0.53.0) + rubocop (= 0.54.0) simplecov BUNDLED WITH diff --git a/Library/Homebrew/test/diagnostic_spec.rb b/Library/Homebrew/test/diagnostic_spec.rb index f347010a93c246e248b9ec65e1a3a36a1db10a86..8f82e71b1fb1740309564d74efcdc85316d5ead2 100644 --- a/Library/Homebrew/test/diagnostic_spec.rb +++ b/Library/Homebrew/test/diagnostic_spec.rb @@ -6,12 +6,6 @@ describe Homebrew::Diagnostic::Checks do expect(subject.inject_file_list(%w[/a /b], "foo:\n")).to eq("foo:\n /a\n /b\n") end - specify "#check_path_for_trailing_slashes" do - ENV["HOMEBREW_PATH"] += File::PATH_SEPARATOR + "/foo/bar/" - expect(subject.check_path_for_trailing_slashes) - .to match("Some directories in your path end in a slash") - end - specify "#check_build_from_source" do ENV["HOMEBREW_BUILD_FROM_SOURCE"] = "1" expect(subject.check_build_from_source) diff --git a/Library/Homebrew/test/os/mac/diagnostic_spec.rb b/Library/Homebrew/test/os/mac/diagnostic_spec.rb index f04652a93687bbf73d51bb89e426fb73519b5ef3..ffa4ebca9e899ec1dd2cc027bec1d10f0fabdb11 100644 --- a/Library/Homebrew/test/os/mac/diagnostic_spec.rb +++ b/Library/Homebrew/test/os/mac/diagnostic_spec.rb @@ -22,14 +22,14 @@ describe Homebrew::Diagnostic::Checks do .to match("The following beta release of XQuartz is installed: 2.7.10_beta2") end - specify "#check_xcode_8_without_clt_on_el_capitan" do + specify "#check_if_xcode_needs_clt_installed" do allow(MacOS).to receive(:version).and_return(OS::Mac::Version.new("10.11")) allow(MacOS::Xcode).to receive(:installed?).and_return(true) allow(MacOS::Xcode).to receive(:version).and_return("8.0") allow(MacOS::Xcode).to receive(:without_clt?).and_return(true) - expect(subject.check_xcode_8_without_clt_on_el_capitan) - .to match("You have Xcode 8 installed without the CLT") + expect(subject.check_if_xcode_needs_clt_installed) + .to match("Xcode alone is not sufficient on El Capitan") end specify "#check_homebrew_prefix" do