diff options
Diffstat (limited to 'Library')
72 files changed, 438 insertions, 977 deletions
| diff --git a/Library/.rubocop.yml b/Library/.rubocop.yml index 051a57f93..d93d1bd8b 100644 --- a/Library/.rubocop.yml +++ b/Library/.rubocop.yml @@ -123,6 +123,14 @@ Style/Documentation:  Style/Encoding:    Enabled: true +# disabled until we get the Metrics/LineLength down to 80. +Style/IfUnlessModifier: +  Enabled: false + +# messes with existing plist/caveats style +Style/TrailingBodyOnMethodDefinition: +  Enabled: false +  # use spaces for indentation; detect tabs  Layout/Tab:    Enabled: true @@ -214,7 +222,7 @@ Style/FrozenStringLiteralComment:    Enabled: false  # generally rescuing StandardError is fine -Lint/RescueWithoutErrorClass: +Style/RescueStandardError:    Enabled: false  # implicitly allow EOS as we use it everywhere diff --git a/Library/Homebrew/.rubocop.yml b/Library/Homebrew/.rubocop.yml index 354867738..e0089e050 100644 --- a/Library/Homebrew/.rubocop.yml +++ b/Library/Homebrew/.rubocop.yml @@ -5,6 +5,7 @@ AllCops:    Include:      - '**/.simplecov'    Exclude: +    - 'bin/*'      - '**/Casks/**/*'      - '**/vendor/**/*' @@ -79,3 +80,7 @@ Style/GuardClause:  # hash-rockets preferred for formulae, a: 1 preferred elsewhere  Style/HashSyntax:    EnforcedStyle: ruby19_no_mixed_keys + +# so many of these in formulae but none in here +Style/TrailingBodyOnMethodDefinition: +  Enabled: true diff --git a/Library/Homebrew/build.rb b/Library/Homebrew/build.rb index 836b360da..d61c3672a 100644 --- a/Library/Homebrew/build.rb +++ b/Library/Homebrew/build.rb @@ -48,9 +48,6 @@ class Build          Requirement.prune        elsif req.build? && dependent != formula          Requirement.prune -      elsif req.satisfied? && (dep = req.to_dependency) && dep.installed? -        deps << dep -        Requirement.prune        end      end    end diff --git a/Library/Homebrew/cask/lib/hbc/artifact/moved.rb b/Library/Homebrew/cask/lib/hbc/artifact/moved.rb index f5ef790eb..856ab2766 100644 --- a/Library/Homebrew/cask/lib/hbc/artifact/moved.rb +++ b/Library/Homebrew/cask/lib/hbc/artifact/moved.rb @@ -65,7 +65,7 @@ module Hbc          ohai "Moving #{self.class.english_name} '#{target.basename}' back to '#{source}'."          source.dirname.mkpath -        if source.parent.writable? +        if target.parent.writable?            FileUtils.move(target, source)          else            command.run("/bin/mv", args: [target, source], sudo: true) diff --git a/Library/Homebrew/cask/lib/hbc/cli/doctor.rb b/Library/Homebrew/cask/lib/hbc/cli/doctor.rb index d7bcf1537..5aef2c420 100644 --- a/Library/Homebrew/cask/lib/hbc/cli/doctor.rb +++ b/Library/Homebrew/cask/lib/hbc/cli/doctor.rb @@ -12,6 +12,7 @@ module Hbc        def run          ohai "Homebrew-Cask Version", Hbc.full_version          ohai "macOS", MacOS.full_version +        ohai "SIP", self.class.check_sip          ohai "Java", SystemConfig.describe_java          ohai "Homebrew-Cask Install Location", self.class.render_install_location          ohai "Homebrew-Cask Staging Location", self.class.render_staging_location(Hbc.caskroom) @@ -37,6 +38,15 @@ module Hbc          (self.class.locale_variables + environment_variables).sort.each(&self.class.method(:render_env_var))        end +      def self.check_sip +        csrutil = "/usr/bin/csrutil" +        return "N/A" unless File.executable?(csrutil) +        Open3.capture2(csrutil, "status")[0] +             .gsub("This is an unsupported configuration, likely to break in the future and leave your machine in an unknown state.", "") +             .gsub("System Integrity Protection status: ", "") +             .delete("\t\.").capitalize.strip +      end +        def self.locale_variables          ENV.keys.grep(/^(?:LC_\S+|LANG|LANGUAGE)\Z/).sort        end diff --git a/Library/Homebrew/cmd/deps.rb b/Library/Homebrew/cmd/deps.rb index ae758e143..0627e84bd 100644 --- a/Library/Homebrew/cmd/deps.rb +++ b/Library/Homebrew/cmd/deps.rb @@ -94,26 +94,14 @@ module Homebrew      if ARGV.include?("--include-requirements")        deps      else -      deps.map do |dep| -        if dep.is_a? Dependency -          dep -        elsif dep.default_formula? -          dep.to_dependency -        end -      end.compact +      deps.select { |dep| dep.is_a? Dependency }      end    end    def dep_display_name(dep)      str = if dep.is_a? Requirement        if ARGV.include?("--include-requirements") -        if dep.default_formula? -          ":#{dep.display_s} (#{dep_display_name(dep.to_dependency)})" -        else -          ":#{dep.display_s}" -        end -      elsif dep.default_formula? -        dep_display_name(dep.to_dependency) +        ":#{dep.display_s}"        else          # This shouldn't happen, but we'll put something here to help debugging          "::#{dep.name}" @@ -207,7 +195,7 @@ module Homebrew      max = dependables.length - 1      @dep_stack.push f.name      dependables.each_with_index do |dep, i| -      next if !ARGV.include?("--include-requirements") && dep.is_a?(Requirement) && !dep.default_formula? +      next if !ARGV.include?("--include-requirements") && dep.is_a?(Requirement)        tree_lines = if i == max          "└──"        else @@ -223,9 +211,6 @@ module Homebrew        else          "│   "        end -      if dep.is_a?(Requirement) && dep.default_formula? -        recursive_deps_tree(Formulary.factory(dep.to_dependency.name), prefix + prefix_addition, true) -      end        if dep.is_a? Dependency          recursive_deps_tree(Formulary.factory(dep.name), prefix + prefix_addition, true)        end diff --git a/Library/Homebrew/cmd/info.rb b/Library/Homebrew/cmd/info.rb index 83bb712ab..a78159a15 100644 --- a/Library/Homebrew/cmd/info.rb +++ b/Library/Homebrew/cmd/info.rb @@ -164,7 +164,7 @@ module Homebrew        end      end -    unless f.options.empty? +    if !f.options.empty? || f.head || f.devel        ohai "Options"        Homebrew.dump_options_for_formula f      end diff --git a/Library/Homebrew/cmd/style.rb b/Library/Homebrew/cmd/style.rb index 27047dfd0..89484d67d 100644 --- a/Library/Homebrew/cmd/style.rb +++ b/Library/Homebrew/cmd/style.rb @@ -70,7 +70,6 @@ module Homebrew    def check_style_impl(files, output_type, options = {})      fix = options[:fix] -    Homebrew.install_gem_setup_path! "parser", HOMEBREW_RUBOCOP_PARSER_VERSION, "ruby-parse"      Homebrew.install_gem_setup_path! "rubocop", HOMEBREW_RUBOCOP_VERSION      require "rubocop"      require_relative "../rubocops" diff --git a/Library/Homebrew/cmd/uses.rb b/Library/Homebrew/cmd/uses.rb index 1688899f9..d5c9210f6 100644 --- a/Library/Homebrew/cmd/uses.rb +++ b/Library/Homebrew/cmd/uses.rb @@ -113,9 +113,7 @@ module Homebrew              end            end -          reqs.any? do |req| -            req.name == ff.name || [ff.name, ff.full_name].include?(req.default_formula) -          end +          reqs.any? { |req| req.name == ff.name }          rescue FormulaUnavailableError            # Silently ignore this case as we don't care about things used in            # taps that aren't currently tapped. diff --git a/Library/Homebrew/cmd/vendor-install.sh b/Library/Homebrew/cmd/vendor-install.sh index bf6fe0c59..3b91dae5c 100644 --- a/Library/Homebrew/cmd/vendor-install.sh +++ b/Library/Homebrew/cmd/vendor-install.sh @@ -8,26 +8,26 @@ source "$HOMEBREW_LIBRARY/Homebrew/utils/lock.sh"  VENDOR_DIR="$HOMEBREW_LIBRARY/Homebrew/vendor" -# Built from https://github.com/Homebrew/homebrew-portable. +# Built from https://github.com/Homebrew/homebrew-portable-ruby.  if [[ -n "$HOMEBREW_MACOS" ]]  then    if [[ "$HOMEBREW_PROCESSOR" = "Intel" ]]    then -    ruby_URL="https://homebrew.bintray.com/bottles-portable/portable-ruby-2.3.3.leopard_64.bottle.1.tar.gz" +    ruby_URL="https://homebrew.bintray.com/bottles-portable-ruby/portable-ruby-2.3.3.leopard_64.bottle.1.tar.gz" +    ruby_URL2="https://github.com/Homebrew/homebrew-portable-ruby/releases/download/2.3.3/portable-ruby-2.3.3.leopard_64.bottle.1.tar.gz"      ruby_SHA="34ce9e4c9c1be28db564d744165aa29291426f8a3d2ef806ba4f0b9175aedb2b" -  else -    ruby_URL="" -    ruby_SHA=""    fi  elif [[ -n "$HOMEBREW_LINUX" ]]  then    case "$HOMEBREW_PROCESSOR" in      armv7l) -      ruby_URL="https://homebrew.bintray.com/bottles-portable/portable-ruby-2.3.3.armv7l_linux.bottle.1.tar.gz" +      ruby_URL="https://homebrew.bintray.com/bottles-portable-ruby/portable-ruby-2.3.3.armv7l_linux.bottle.1.tar.gz" +      ruby_URL2="https://github.com/Homebrew/homebrew-portable-ruby/releases/download/2.3.3/portable-ruby-2.3.3.armv7l_linux.bottle.1.tar.gz"        ruby_SHA="d26affe6f6ac299557a9044b311b4066b554874fc828ebc323d2705d3f4a8249"        ;;      x86_64) -      ruby_URL="https://homebrew.bintray.com/bottles-portable/portable-ruby-2.3.3.x86_64_linux.bottle.1.tar.gz" +      ruby_URL="https://homebrew.bintray.com/bottles-portable-ruby/portable-ruby-2.3.3.x86_64_linux.bottle.1.tar.gz" +      ruby_URL2="https://github.com/Homebrew/homebrew-portable-ruby/releases/download/2.3.3/portable-ruby-2.3.3.x86_64_linux.bottle.1.tar.gz"        ruby_SHA="33643b1ca6f860d6df01686636326785763e5e81cf0cef37d8a7ab96a6ca1fa1"        ;;    esac @@ -90,7 +90,20 @@ fetch() {      if [[ ! -f "$temporary_path" ]]      then -      odie "Download failed: $VENDOR_URL" +      [[ -n "$HOMEBREW_QUIET" ]] || echo "==> Downloading $VENDOR_URL2" >&2 +      "$HOMEBREW_CURL" "${curl_args[@]}" "$VENDOR_URL2" -o "$temporary_path" +    fi + +    if [[ ! -f "$temporary_path" ]] +    then +      odie <<EOS +Failed to download $VENDOR_URL and $VENDOR_URL2! + +Do not file an issue on GitHub about this: you will need to figure out for +yourself what issue with your internet connection restricts your access to +both Bintray (used for Homebrew bottles/binary packages) and GitHub +(used for Homebrew updates). +EOS      fi      trap '' SIGINT @@ -211,8 +224,10 @@ homebrew-vendor-install() {    [[ -n "$HOMEBREW_DEBUG" ]] && set -x    url_var="${VENDOR_NAME}_URL" +  url2_var="${VENDOR_NAME}_URL2"    sha_var="${VENDOR_NAME}_SHA"    VENDOR_URL="${!url_var}" +  VENDOR_URL2="${!url2_var}"    VENDOR_SHA="${!sha_var}"    if [[ -z "$VENDOR_URL" || -z "$VENDOR_SHA" ]] diff --git a/Library/Homebrew/compat/ARGV.rb b/Library/Homebrew/compat/ARGV.rb index e5fa8188f..e56c4e01f 100644 --- a/Library/Homebrew/compat/ARGV.rb +++ b/Library/Homebrew/compat/ARGV.rb @@ -1,6 +1,5 @@  module HomebrewArgvExtension    def build_32_bit? -    odeprecated "ARGV.build_32_bit?" -    include? "--32-bit" +    odisabled "ARGV.build_32_bit?"    end  end diff --git a/Library/Homebrew/compat/ENV/shared.rb b/Library/Homebrew/compat/ENV/shared.rb index c700b1e00..36ee45627 100644 --- a/Library/Homebrew/compat/ENV/shared.rb +++ b/Library/Homebrew/compat/ENV/shared.rb @@ -5,6 +5,6 @@ module SharedEnvExtension    end    def java_cache -    # odeprecated "ENV.java_cache" +    odeprecated "ENV.java_cache"    end  end diff --git a/Library/Homebrew/compat/ENV/std.rb b/Library/Homebrew/compat/ENV/std.rb index 26dabe440..beca4ed6f 100644 --- a/Library/Homebrew/compat/ENV/std.rb +++ b/Library/Homebrew/compat/ENV/std.rb @@ -1,27 +1,25 @@  module Stdenv    def fast -    odeprecated "ENV.fast" +    odisabled "ENV.fast"    end    def O4 -    odeprecated "ENV.O4" +    odisabled "ENV.O4"    end    def Og -    odeprecated "ENV.Og" +    odisabled "ENV.Og"    end    def gcc_4_0_1 -    odeprecated "ENV.gcc_4_0_1", "ENV.gcc_4_0" -    gcc_4_0 +    odisabled "ENV.gcc_4_0_1", "ENV.gcc_4_0"    end    def gcc -    odeprecated "ENV.gcc", "ENV.gcc_4_2" -    gcc_4_2 +    odisabled "ENV.gcc", "ENV.gcc_4_2"    end    def libpng -    odeprecated "ENV.libpng", "ENV.x11" +    odisabled "ENV.libpng", "ENV.x11"    end  end diff --git a/Library/Homebrew/compat/ENV/super.rb b/Library/Homebrew/compat/ENV/super.rb index 2020ad752..53a6bdc4d 100644 --- a/Library/Homebrew/compat/ENV/super.rb +++ b/Library/Homebrew/compat/ENV/super.rb @@ -1,47 +1,45 @@  module Superenv    def fast -    odeprecated "ENV.fast" +    odisabled "ENV.fast"    end    def O4 -    odeprecated "ENV.O4" +    odisabled "ENV.O4"    end    def Og -    odeprecated "ENV.Og" +    odisabled "ENV.Og"    end    def gcc_4_0_1 -    odeprecated "ENV.gcc_4_0_1", "ENV.gcc_4_0" -    gcc_4_0 +    odisabled "ENV.gcc_4_0_1", "ENV.gcc_4_0"    end    def gcc -    odeprecated "ENV.gcc", "ENV.gcc_4_2" -    gcc_4_2 +    odisabled "ENV.gcc", "ENV.gcc_4_2"    end    def libxml2 -    odeprecated "ENV.libxml2" +    odisabled "ENV.libxml2"    end    def minimal_optimization -    odeprecated "ENV.minimal_optimization" +    odisabled "ENV.minimal_optimization"    end    def no_optimization -    odeprecated "ENV.no_optimization" +    odisabled "ENV.no_optimization"    end    def enable_warnings -    odeprecated "ENV.enable_warnings" +    odisabled "ENV.enable_warnings"    end    def macosxsdk -    odeprecated "ENV.macosxsdk" +    odisabled "ENV.macosxsdk"    end    def remove_macosxsdk -    odeprecated "ENV.remove_macosxsdk" +    odisabled "ENV.remove_macosxsdk"    end  end diff --git a/Library/Homebrew/compat/build_options.rb b/Library/Homebrew/compat/build_options.rb index 73722dadb..6e566a08c 100644 --- a/Library/Homebrew/compat/build_options.rb +++ b/Library/Homebrew/compat/build_options.rb @@ -1,11 +1,9 @@  class BuildOptions    def build_32_bit? -    odeprecated "build.build_32_bit?" -    include?("32-bit") && option_defined?("32-bit") +    odisabled "build.build_32_bit?"    end    def build_bottle? -    odeprecated "build.build_bottle?", "build.bottle?" -    bottle? +    odisabled "build.build_bottle?", "build.bottle?"    end  end diff --git a/Library/Homebrew/compat/dependency_collector.rb b/Library/Homebrew/compat/dependency_collector.rb index 82511bcc7..1c91f2283 100644 --- a/Library/Homebrew/compat/dependency_collector.rb +++ b/Library/Homebrew/compat/dependency_collector.rb @@ -10,6 +10,7 @@ class DependencyCollector    def parse_string_spec(spec, tags)      if (tag = tags.first) && LANGUAGE_MODULES.include?(tag) +      odeprecated "'depends_on :#{tag}'"        LanguageModuleRequirement.new(tag, spec, tags[1])      else        _parse_string_spec(spec, tags) @@ -23,60 +24,45 @@ class DependencyCollector      when :clt        odeprecated "'depends_on :clt'"      when :tex -      # odeprecated "'depends_on :tex'" +      odeprecated "'depends_on :tex'"        TeXRequirement.new(tags)      when :autoconf, :automake, :bsdmake, :libtool -      output_deprecation(spec, tags) +      output_deprecation(spec)        autotools_dep(spec, tags)      when :cairo, :fontconfig, :freetype, :libpng, :pixman -      output_deprecation(spec, tags) +      output_deprecation(spec)        Dependency.new(spec.to_s, tags)      when :ant, :expat -      # output_deprecation(spec, tags) +      output_deprecation(spec)        Dependency.new(spec.to_s, tags)      when :libltdl        tags << :run -      output_deprecation("libtool", tags) +      output_deprecation("libtool")        Dependency.new("libtool", tags)      when :apr -      # output_deprecation(spec, tags, "apr-util") +      output_deprecation(spec, "apr-util")        Dependency.new("apr-util", tags)      when :fortran -      # output_deprecation(spec, tags, "gcc") -      FortranRequirement.new(tags) +      output_deprecation(spec, "gcc") +      Dependency.new("gcc", tags)      when :gpg -      # output_deprecation(spec, tags, "gnupg") -      GPG2Requirement.new(tags) +      output_deprecation(spec, "gnupg") +      Dependency.new("gnupg", tags)      when :hg -      # output_deprecation(spec, tags, "mercurial") -      MercurialRequirement.new(tags) +      output_deprecation(spec, "mercurial") +      Dependency.new("mercurial", tags)      when :mpi -      # output_deprecation(spec, tags, "open-mpi") -      MPIRequirement.new(*tags) -    when :emacs -      # output_deprecation(spec, tags) -      EmacsRequirement.new(tags) -    when :mysql -      # output_deprecation(spec, tags) -      MysqlRequirement.new(tags) -    when :perl -      # output_deprecation(spec, tags) -      PerlRequirement.new(tags) -    when :postgresql -      # output_deprecation(spec, tags) -      PostgresqlRequirement.new(tags) +      output_deprecation(spec, "open-mpi") +      Dependency.new("open-mpi", tags)      when :python, :python2 -      # output_deprecation(spec, tags) -      PythonRequirement.new(tags) +      output_deprecation(spec, "python") +      Dependency.new("python", tags)      when :python3 -      # output_deprecation(spec, tags) -      Python3Requirement.new(tags) -    when :rbenv -      # output_deprecation(spec, tags) -      RbenvRequirement.new(tags) -    when :ruby -      # output_deprecation(spec, tags) -      RubyRequirement.new(tags) +      output_deprecation(spec, "python3") +      Dependency.new("python3", tags) +    when :emacs, :mysql, :perl, :postgresql, :rbenv, :ruby +      output_deprecation(spec) +      Dependency.new(spec, tags)      else        _parse_symbol_spec(spec, tags)      end @@ -87,13 +73,8 @@ class DependencyCollector      Dependency.new(spec.to_s, tags)    end -  def output_deprecation(dependency, tags, new_dependency = dependency) -    tags_string = if tags.length > 1 -      " => [:#{tags.join ", :"}]" -    elsif tags.length == 1 -      " => :#{tags.first}" -    end +  def output_deprecation(dependency, new_dependency = dependency)      odeprecated "'depends_on :#{dependency}'", -                "'depends_on \"#{new_dependency}\"#{tags_string}'" +                "'depends_on \"#{new_dependency}\"'"    end  end diff --git a/Library/Homebrew/compat/extend/string.rb b/Library/Homebrew/compat/extend/string.rb index 6069a6bec..9d1f66557 100644 --- a/Library/Homebrew/compat/extend/string.rb +++ b/Library/Homebrew/compat/extend/string.rb @@ -1,5 +1,6 @@  class String    def undent +    odeprecated "<<-EOS.undent", "<<~EOS"      gsub(/^[ \t]{#{(slice(/^[ \t]+/) || '').length}}/, "")    end    alias unindent undent diff --git a/Library/Homebrew/compat/fails_with_llvm.rb b/Library/Homebrew/compat/fails_with_llvm.rb index 4e8b94b03..47bda4e0b 100644 --- a/Library/Homebrew/compat/fails_with_llvm.rb +++ b/Library/Homebrew/compat/fails_with_llvm.rb @@ -1,9 +1,9 @@  class Formula    def fails_with_llvm(_msg = nil, _data = nil) -    odeprecated "Formula#fails_with_llvm in install" +    odisabled "Formula#fails_with_llvm in install"    end    def self.fails_with_llvm(_msg = nil, _data = {}) -    odeprecated "Formula.fails_with_llvm" +    odisabled "Formula.fails_with_llvm"    end  end diff --git a/Library/Homebrew/compat/formula.rb b/Library/Homebrew/compat/formula.rb index 57ab84a76..6f740710d 100644 --- a/Library/Homebrew/compat/formula.rb +++ b/Library/Homebrew/compat/formula.rb @@ -1,12 +1,10 @@  module FormulaCompat    def x11_installed? -    odeprecated "Formula#x11_installed?", "MacOS::X11.installed?" -    MacOS::X11.installed? +    odisabled "Formula#x11_installed?", "MacOS::X11.installed?"    end    def snow_leopard_64? -    odeprecated "Formula#snow_leopard_64?", "MacOS.prefer_64_bit?" -    MacOS.prefer_64_bit? +    odisabled "Formula#snow_leopard_64?", "MacOS.prefer_64_bit?"    end  end @@ -15,48 +13,40 @@ class Formula    extend FormulaCompat    def std_cmake_parameters -    odeprecated "Formula#std_cmake_parameters", "Formula#std_cmake_args" -    "-DCMAKE_INSTALL_PREFIX='#{prefix}' -DCMAKE_BUILD_TYPE=None -DCMAKE_FIND_FRAMEWORK=LAST -Wno-dev" +    odisabled "Formula#std_cmake_parameters", "Formula#std_cmake_args"    end -  def cxxstdlib_check(check_type) -    odeprecated "Formula#cxxstdlib_check in install", -                "Formula.cxxstdlib_check outside install" -    self.class.cxxstdlib_check check_type +  def cxxstdlib_check(_) +    odisabled "Formula#cxxstdlib_check in install", +              "Formula.cxxstdlib_check outside install"    end    def self.bottle_sha1(*) -    odeprecated "Formula.bottle_sha1" +    odisabled "Formula.bottle_sha1"    end    def self.all -    odeprecated "Formula.all", "Formula.map" -    map +    odisabled "Formula.all", "Formula.map"    end -  def self.canonical_name(name) -    odeprecated "Formula.canonical_name", "Formulary.canonical_name" -    Formulary.canonical_name(name) +  def self.canonical_name(_) +    odisabled "Formula.canonical_name", "Formulary.canonical_name"    end -  def self.class_s(name) -    odeprecated "Formula.class_s", "Formulary.class_s" -    Formulary.class_s(name) +  def self.class_s(_) +    odisabled "Formula.class_s", "Formulary.class_s"    end -  def self.factory(name) -    odeprecated "Formula.factory", "Formulary.factory" -    Formulary.factory(name) +  def self.factory(_) +    odisabled "Formula.factory", "Formulary.factory"    end    def self.require_universal_deps -    odeprecated "Formula.require_universal_deps" -    define_method(:require_universal_deps?) { true } +    odisabled "Formula.require_universal_deps"    end -  def self.path(name) -    odeprecated "Formula.path", "Formulary.core_path" -    Formulary.core_path(name) +  def self.path(_) +    odisabled "Formula.path", "Formulary.core_path"    end    DATA = :DATA @@ -67,20 +57,18 @@ class Formula      {}    end -  def python(_options = {}, &_block) -    odeprecated "Formula#python" -    yield if block_given? -    PythonRequirement.new +  def python(_options = {}, &_) +    odisabled "Formula#python"    end    alias python2 python    alias python3 python    def startup_plist -    odeprecated "Formula#startup_plist", "Formula#plist" +    odisabled "Formula#startup_plist", "Formula#plist"    end    def rake(*args) -    # odeprecated "FileUtils#rake", "system \"rake\"" +    odeprecated "FileUtils#rake", "system \"rake\""      system "rake", *args    end  end diff --git a/Library/Homebrew/compat/formula_specialties.rb b/Library/Homebrew/compat/formula_specialties.rb index 3f8102575..bc4d20bea 100644 --- a/Library/Homebrew/compat/formula_specialties.rb +++ b/Library/Homebrew/compat/formula_specialties.rb @@ -1,47 +1,23 @@  class ScriptFileFormula < Formula    def install -    odeprecated "ScriptFileFormula#install", "Formula#install" -    bin.install Dir["*"] +    odisabled "ScriptFileFormula#install", "Formula#install"    end  end  class GithubGistFormula < ScriptFileFormula -  def self.url(val) -    odeprecated "GithubGistFormula.url", "Formula.url" -    super -    version File.basename(File.dirname(val))[0, 6] +  def self.url(_val) +    odisabled "GithubGistFormula.url", "Formula.url"    end  end -# This formula serves as the base class for several very similar -# formulae for Amazon Web Services related tools.  class AmazonWebServicesFormula < Formula -  # Use this method to perform a standard install for Java-based tools, -  # keeping the .jars out of HOMEBREW_PREFIX/lib    def install -    odeprecated "AmazonWebServicesFormula#install", "Formula#install" - -    rm Dir["bin/*.cmd"] # Remove Windows versions -    libexec.install Dir["*"] -    bin.install_symlink Dir["#{libexec}/bin/*"] - ["#{libexec}/bin/service"] +    odisabled "AmazonWebServicesFormula#install", "Formula#install"    end    alias standard_install install    # Use this method to generate standard caveats. -  def standard_instructions(home_name, home_value = libexec) -    odeprecated "AmazonWebServicesFormula#standard_instructions", "Formula#caveats" - -    <<~EOS -      Before you can use these tools you must export some variables to your $SHELL. - -      To export the needed variables, add them to your dotfiles. -       * On Bash, add them to `~/.bash_profile`. -       * On Zsh, add them to `~/.zprofile` instead. - -      export JAVA_HOME="$(/usr/libexec/java_home)" -      export AWS_ACCESS_KEY="<Your AWS Access ID>" -      export AWS_SECRET_KEY="<Your AWS Secret Key>" -      export #{home_name}="#{home_value}" -    EOS +  def standard_instructions(_, _) +    odisabled "AmazonWebServicesFormula#standard_instructions", "Formula#caveats"    end  end diff --git a/Library/Homebrew/compat/formula_support.rb b/Library/Homebrew/compat/formula_support.rb new file mode 100644 index 000000000..f56a4909b --- /dev/null +++ b/Library/Homebrew/compat/formula_support.rb @@ -0,0 +1,18 @@ +require "formula_support" + +class KegOnlyReason +  alias _to_s to_s + +  def to_s +    case @reason +    when :provided_by_osx +      odeprecated "keg_only :provided_by_osx", "keg_only :provided_by_macos" +      @reason = :provided_by_macos +    when :shadowed_by_osx +      odeprecated "keg_only :shadowed_by_osx", "keg_only :shadowed_by_macos" +      @reason = :shadowed_by_macos +    end + +    _to_s +  end +end diff --git a/Library/Homebrew/compat/global.rb b/Library/Homebrew/compat/global.rb index 82c452cc0..9c8f0624c 100644 --- a/Library/Homebrew/compat/global.rb +++ b/Library/Homebrew/compat/global.rb @@ -3,8 +3,7 @@ module Homebrew    def method_missing(method, *args, &block)      if instance_methods.include?(method) -      odeprecated "#{self}##{method}", "'module_function' or 'def self.#{method}' to convert it to a class method" -      return instance_method(method).bind(self).call(*args, &block) +      odisabled "#{self}##{method}", "'module_function' or 'def self.#{method}' to convert it to a class method"      end      super    end diff --git a/Library/Homebrew/compat/gpg.rb b/Library/Homebrew/compat/gpg.rb index 01880f71e..e802d939c 100644 --- a/Library/Homebrew/compat/gpg.rb +++ b/Library/Homebrew/compat/gpg.rb @@ -4,46 +4,24 @@ module Gpg    module_function    def executable +    odeprecated "Gpg.executable", 'which "gpg"'      which "gpg"    end    def available? +    odeprecated "Gpg.available?", 'which "gpg"'      File.executable?(executable.to_s)    end -  def create_test_key(path) -    odie "No GPG present to test against!" unless available? - -    (path/"batch.gpg").write <<~EOS -      Key-Type: RSA -      Key-Length: 2048 -      Subkey-Type: RSA -      Subkey-Length: 2048 -      Name-Real: Testing -      Name-Email: testing@foo.bar -      Expire-Date: 1d -      %no-protection -      %commit -    EOS -    system executable, "--batch", "--gen-key", "batch.gpg" +  def create_test_key(_) +    odeprecated "Gpg.create_test_key"    end    def cleanup_test_processes! -    odie "No GPG present to test against!" unless available? - -    gpgconf = Pathname.new(executable).parent/"gpgconf" - -    system gpgconf, "--kill", "gpg-agent" -    system gpgconf, "--homedir", "keyrings/live", "--kill", -                                 "gpg-agent" +    odeprecated "Gpg.cleanup_test_processes!"    end -  def test(path) -    create_test_key(path) -    begin -      yield -    ensure -      cleanup_test_processes! -    end +  def test(_) +    odeprecated "Gpg.test"    end  end diff --git a/Library/Homebrew/compat/hardware.rb b/Library/Homebrew/compat/hardware.rb index 07a63f048..28bc79c60 100644 --- a/Library/Homebrew/compat/hardware.rb +++ b/Library/Homebrew/compat/hardware.rb @@ -1,43 +1,35 @@  module Hardware    class << self      def is_32_bit? -      odeprecated "Hardware.is_32_bit?", "Hardware::CPU.is_32_bit?" -      !CPU.is_64_bit? +      odisabled "Hardware.is_32_bit?", "Hardware::CPU.is_32_bit?"      end      def is_64_bit? -      odeprecated "Hardware.is_64_bit?", "Hardware::CPU.is_64_bit?" -      CPU.is_64_bit? +      odisabled "Hardware.is_64_bit?", "Hardware::CPU.is_64_bit?"      end      def bits -      odeprecated "Hardware.bits", "Hardware::CPU.bits" -      Hardware::CPU.bits +      odisabled "Hardware.bits", "Hardware::CPU.bits"      end      def cpu_type -      odeprecated "Hardware.cpu_type", "Hardware::CPU.type" -      Hardware::CPU.type +      odisabled "Hardware.cpu_type", "Hardware::CPU.type"      end      def cpu_family -      odeprecated "Hardware.cpu_family", "Hardware::CPU.family" -      Hardware::CPU.family +      odisabled "Hardware.cpu_family", "Hardware::CPU.family"      end      def intel_family -      odeprecated "Hardware.intel_family", "Hardware::CPU.family" -      Hardware::CPU.family +      odisabled "Hardware.intel_family", "Hardware::CPU.family"      end      def ppc_family -      odeprecated "Hardware.ppc_family", "Hardware::CPU.family" -      Hardware::CPU.family +      odisabled "Hardware.ppc_family", "Hardware::CPU.family"      end      def processor_count -      odeprecated "Hardware.processor_count", "Hardware::CPU.cores" -      Hardware::CPU.cores +      odisabled "Hardware.processor_count", "Hardware::CPU.cores"      end    end  end diff --git a/Library/Homebrew/compat/json.rb b/Library/Homebrew/compat/json.rb index c8bf1c292..18763b8a6 100644 --- a/Library/Homebrew/compat/json.rb +++ b/Library/Homebrew/compat/json.rb @@ -4,34 +4,16 @@ module Utils    module JSON      module_function -    Error = Class.new(StandardError) - -    def load(str) -      odeprecated "Utils::JSON.load", "JSON.parse" -      ::JSON.parse(str) -    rescue ::JSON::ParserError => e -      raise Error, e.message +    def load(_) +      odisabled "Utils::JSON.load", "JSON.parse"      end -    def dump(obj) -      odeprecated "Utils::JSON.dump", "JSON.generate" -      ::JSON.generate(obj) +    def dump(_) +      odisabled "Utils::JSON.dump", "JSON.generate"      end -    def stringify_keys(obj) -      odeprecated "Utils::JSON.stringify_keys" -      case obj -      when Array -        obj.map { |val| stringify_keys(val) } -      when Hash -        obj.inject({}) do |result, (key, val)| -          key = key.respond_to?(:to_s) ? key.to_s : key -          val = stringify_keys(val) -          result.merge!(key => val) -        end -      else -        obj -      end +    def stringify_keys(_) +      odisabled "Utils::JSON.stringify_keys"      end    end  end diff --git a/Library/Homebrew/compat/keg.rb b/Library/Homebrew/compat/keg.rb index 8f5606d09..81e1cf0b3 100644 --- a/Library/Homebrew/compat/keg.rb +++ b/Library/Homebrew/compat/keg.rb @@ -1,6 +1,5 @@  class Keg    def fname -    odeprecated "Keg#fname", "Keg#name" -    name +    odisabled "Keg#fname", "Keg#name"    end  end diff --git a/Library/Homebrew/compat/language/haskell.rb b/Library/Homebrew/compat/language/haskell.rb index cef97d818..8e5059874 100644 --- a/Library/Homebrew/compat/language/haskell.rb +++ b/Library/Homebrew/compat/language/haskell.rb @@ -2,8 +2,7 @@ module Language    module Haskell      module Cabal        def cabal_clean_lib -        odeprecated "Language::Haskell::Cabal#cabal_clean_lib" -        rm_rf lib +        odisabled "Language::Haskell::Cabal#cabal_clean_lib"        end      end    end diff --git a/Library/Homebrew/compat/macos.rb b/Library/Homebrew/compat/macos.rb index 1f2c651c5..879af8357 100644 --- a/Library/Homebrew/compat/macos.rb +++ b/Library/Homebrew/compat/macos.rb @@ -10,142 +10,115 @@ module OS      module_function      def xcode_folder -      odeprecated "MacOS.xcode_folder", "MacOS::Xcode.folder" -      Xcode.folder +      odisabled "MacOS.xcode_folder", "MacOS::Xcode.folder"      end      def xcode_prefix -      odeprecated "MacOS.xcode_prefix", "MacOS::Xcode.prefix" -      Xcode.prefix +      odisabled "MacOS.xcode_prefix", "MacOS::Xcode.prefix"      end      def xcode_installed? -      odeprecated "MacOS.xcode_installed?", "MacOS::Xcode.installed?" -      Xcode.installed? +      odisabled "MacOS.xcode_installed?", "MacOS::Xcode.installed?"      end      def xcode_version -      odeprecated "MacOS.xcode_version", "MacOS::Xcode.version" -      Xcode.version +      odisabled "MacOS.xcode_version", "MacOS::Xcode.version"      end      def clt_installed? -      odeprecated "MacOS.clt_installed?", "MacOS::CLT.installed?" -      CLT.installed? +      odisabled "MacOS.clt_installed?", "MacOS::CLT.installed?"      end      def clt_version? -      odeprecated "MacOS.clt_version?", "MacOS::CLT.version" -      CLT.version +      odisabled "MacOS.clt_version?", "MacOS::CLT.version"      end      def x11_installed? -      odeprecated "MacOS.x11_installed?", "MacOS::X11.installed?" -      X11.installed? +      odisabled "MacOS.x11_installed?", "MacOS::X11.installed?"      end      def x11_prefix -      odeprecated "MacOS.x11_prefix", "MacOS::X11.prefix" -      X11.prefix +      odisabled "MacOS.x11_prefix", "MacOS::X11.prefix"      end      def leopard? -      odeprecated "MacOS.leopard?", "'MacOS.version == :leopard'" -      version == :leopard +      odisabled "MacOS.leopard?", "'MacOS.version == :leopard'"      end      def snow_leopard? -      odeprecated "MacOS.snow_leopard?", "'MacOS.version >= :snow_leopard'" -      version >= :snow_leopard +      odisabled "MacOS.snow_leopard?", "'MacOS.version >= :snow_leopard'"      end      def snow_leopard_or_newer? -      odeprecated "MacOS.snow_leopard_or_newer?", "'MacOS.version >= :snow_leopard'" -      version >= :snow_leopard +      odisabled "MacOS.snow_leopard_or_newer?", "'MacOS.version >= :snow_leopard'"      end      def lion? -      odeprecated "MacOS.lion?", "'MacOS.version >= :lion'" -      version >= :lion +      odisabled "MacOS.lion?", "'MacOS.version >= :lion'"      end      def lion_or_newer? -      odeprecated "MacOS.lion_or_newer?", "'MacOS.version >= :lion'" -      version >= :lion +      odisabled "MacOS.lion_or_newer?", "'MacOS.version >= :lion'"      end      def mountain_lion? -      odeprecated "MacOS.mountain_lion?", "'MacOS.version >= :mountain_lion'" -      version >= :mountain_lion +      odisabled "MacOS.mountain_lion?", "'MacOS.version >= :mountain_lion'"      end      def mountain_lion_or_newer? -      odeprecated "MacOS.mountain_lion_or_newer?", "'MacOS.version >= :mountain_lion'" -      version >= :mountain_lion +      odisabled "MacOS.mountain_lion_or_newer?", "'MacOS.version >= :mountain_lion'"      end      def macports_or_fink_installed? -      odeprecated "MacOS.macports_or_fink_installed?", "!MacOS.macports_or_fink.empty?" -      !macports_or_fink.empty? +      odisabled "MacOS.macports_or_fink_installed?", "!MacOS.macports_or_fink.empty?"      end -    def locate(tool) -      odeprecated "MacOS.locate", "DevelopmentTools.locate" -      DevelopmentTools.locate(tool) +    def locate(_) +      odisabled "MacOS.locate", "DevelopmentTools.locate"      end      def default_cc -      odeprecated "MacOS.default_cc", "DevelopmentTools.default_cc" -      DevelopmentTools.default_cc +      odisabled "MacOS.default_cc", "DevelopmentTools.default_cc"      end      def default_compiler -      odeprecated "MacOS.default_compiler", "DevelopmentTools.default_compiler" -      DevelopmentTools.default_compiler +      odisabled "MacOS.default_compiler", "DevelopmentTools.default_compiler"      end      def gcc_40_build_version -      odeprecated "MacOS.gcc_40_build_version", "DevelopmentTools.gcc_4_0_build_version" -      DevelopmentTools.gcc_4_0_build_version +      odisabled "MacOS.gcc_40_build_version", "DevelopmentTools.gcc_4_0_build_version"      end      def gcc_4_0_build_version -      odeprecated "MacOS.gcc_4_0_build_version", "DevelopmentTools.gcc_4_0_build_version" -      DevelopmentTools.gcc_4_0_build_version +      odisabled "MacOS.gcc_4_0_build_version", "DevelopmentTools.gcc_4_0_build_version"      end      def gcc_42_build_version -      odeprecated "MacOS.gcc_42_build_version", "DevelopmentTools.gcc_4_2_build_version" -      DevelopmentTools.gcc_4_2_build_version +      odisabled "MacOS.gcc_42_build_version", "DevelopmentTools.gcc_4_2_build_version"      end      def gcc_build_version -      odeprecated "MacOS.gcc_build_version", "DevelopmentTools.gcc_4_2_build_version" -      DevelopmentTools.gcc_4_2_build_version +      odisabled "MacOS.gcc_build_version", "DevelopmentTools.gcc_4_2_build_version"      end      def llvm_build_version -      odeprecated "MacOS.llvm_build_version" +      odisabled "MacOS.llvm_build_version"      end      def clang_version -      odeprecated "MacOS.clang_version", "DevelopmentTools.clang_version" -      DevelopmentTools.clang_version +      odisabled "MacOS.clang_version", "DevelopmentTools.clang_version"      end      def clang_build_version -      odeprecated "MacOS.clang_build_version", "DevelopmentTools.clang_build_version" -      DevelopmentTools.clang_build_version +      odisabled "MacOS.clang_build_version", "DevelopmentTools.clang_build_version"      end      def has_apple_developer_tools? -      odeprecated "MacOS.has_apple_developer_tools?", "DevelopmentTools.installed?" -      DevelopmentTools.installed? +      odisabled "MacOS.has_apple_developer_tools?", "DevelopmentTools.installed?"      end      def release -      odeprecated "MacOS.release", "MacOS.version" -      version +      odisabled "MacOS.release", "MacOS.version"      end    end  end diff --git a/Library/Homebrew/compat/pathname.rb b/Library/Homebrew/compat/pathname.rb index 58888f017..df4b261a9 100644 --- a/Library/Homebrew/compat/pathname.rb +++ b/Library/Homebrew/compat/pathname.rb @@ -1,17 +1,9 @@  class Pathname -  def cp(dst) -    odeprecated "Pathname#cp", "FileUtils.cp" -    if file? -      FileUtils.cp to_s, dst -    else -      FileUtils.cp_r to_s, dst -    end -    dst +  def cp(_) +    odisabled "Pathname#cp", "FileUtils.cp"    end -  def chmod_R(perms) -    odeprecated "Pathname#chmod_R", "FileUtils.chmod_R" -    require "fileutils" -    FileUtils.chmod_R perms, to_s +  def chmod_R(_) +    odisabled "Pathname#chmod_R", "FileUtils.chmod_R"    end  end diff --git a/Library/Homebrew/compat/requirements.rb b/Library/Homebrew/compat/requirements.rb index 304dd2504..bffc5f5f1 100644 --- a/Library/Homebrew/compat/requirements.rb +++ b/Library/Homebrew/compat/requirements.rb @@ -1,76 +1,134 @@  require "requirements" -require "compat/requirements/emacs_requirement" -require "compat/requirements/fortran_requirement"  require "compat/requirements/language_module_requirement" -require "compat/requirements/mpi_requirement" -require "compat/requirements/perl_requirement" -require "compat/requirements/python_requirement" -require "compat/requirements/ruby_requirement" -require "compat/requirements/tex_requirement" -class MysqlRequirement < Requirement +class CVSRequirement < Requirement    fatal true -  default_formula "mysql" -  satisfy { which "mysql_config" } +  satisfy do +    odeprecated("CVSRequirement", "'depends_on \"cvs\"'") +    which "cvs" +  end  end -class PostgresqlRequirement < Requirement +class EmacsRequirement < Requirement    fatal true -  default_formula "postgresql" -  satisfy { which "pg_config" } +  satisfy do +    odeprecated("EmacsRequirement", "'depends_on \"cvs\"'") +    which "emacs" +  end  end -class RbenvRequirement < Requirement +class FortranRequirement < Requirement    fatal true -  default_formula "rbenv" -  satisfy { which "rbenv" } +  satisfy do +    odeprecated("FortranRequirement", "'depends_on \"cvs\"'") +    which "gfortran" +  end  end -class CVSRequirement < Requirement +class GitRequirement < Requirement +  fatal true +  satisfy do +    odeprecated("GitRequirement", "'depends_on \"cvs\"'") +    which "git" +  end +end + +class GPG2Requirement < Requirement    fatal true -  default_formula "cvs" -  satisfy { which "cvs" } +  satisfy do +    odeprecated("GPG2Requirement", "'depends_on \"cvs\"'") +    which "gpg" +  end  end  class MercurialRequirement < Requirement    fatal true -  default_formula "mercurial" -  satisfy { which "hg" } +  satisfy do +    odeprecated("MercurialRequirement", "'depends_on \"cvs\"'") +    which "hg" +  end  end -class GPG2Requirement < Requirement +class MPIRequirement < Requirement    fatal true -  default_formula "gnupg" -  satisfy { which "gpg" } +  satisfy do +    odeprecated("MPIRequirement", "'depends_on \"cvs\"'") +    which "mpicc" +  end  end -class GitRequirement < Requirement +class MysqlRequirement < Requirement +  fatal true +  satisfy do +    odeprecated("MysqlRequirement", "'depends_on \"cvs\"'") +    which "mysql_config" +  end +end + +class PerlRequirement < Requirement +  fatal true +  satisfy do +    odeprecated("PerlRequirement", "'depends_on \"cvs\"'") +    which "perl" +  end +end + +class PostgresqlRequirement < Requirement +  fatal true +  satisfy do +    odeprecated("PostgresqlRequirement", "'depends_on \"cvs\"'") +    which "pg_config" +  end +end + +class PythonRequirement < Requirement +  fatal true +  satisfy do +    odeprecated("PythonRequirement", "'depends_on \"cvs\"'") +    which "python" +  end +end + +class Python3Requirement < Requirement    fatal true -  default_formula "git" -  satisfy { Utils.git_available? } +  satisfy do +    odeprecated("Python3Requirement", "'depends_on \"cvs\"'") +    which "python3" +  end +end + +class RbenvRequirement < Requirement +  fatal true +  satisfy do +    odeprecated("RbenvRequirement", "'depends_on \"cvs\"'") +    which "rbenv" +  end +end + +class RubyRequirement < Requirement +  fatal true +  satisfy do +    odeprecated("RubyRequirement", "'depends_on \"cvs\"'") +    which "ruby" +  end  end  class SubversionRequirement < Requirement    fatal true -  default_formula "subversion" -  satisfy { Utils.svn_available? } -end - -XcodeDependency            = XcodeRequirement -MysqlDependency            = MysqlRequirement -PostgresqlDependency       = PostgresqlRequirement -GPGDependency              = GPG2Requirement -GPGRequirement             = GPG2Requirement -TeXDependency              = TeXRequirement -MercurialDependency        = MercurialRequirement -GitDependency              = GitRequirement -FortranDependency          = FortranRequirement -JavaDependency             = JavaRequirement -LanguageModuleDependency   = LanguageModuleRequirement -MPIDependency              = MPIRequirement -OsxfuseDependency          = OsxfuseRequirement -PythonDependency           = PythonRequirement -TuntapDependency           = TuntapRequirement -X11Dependency              = X11Requirement -ConflictsWithBinaryOsxfuse = NonBinaryOsxfuseRequirement -MinimumMacOSRequirement    = MacOSRequirement +  satisfy do +    odeprecated("SubversionRequirement", "'depends_on \"cvs\"'") +    which "svn" +  end +end + +class TeXRequirement < Requirement +  fatal true +  cask "mactex" +  download "https://www.tug.org/mactex/" +  satisfy do +    odeprecated("TeXRequirement", "'depends_on \"cvs\"'") +    which("tex") || which("latex") +  end +end + +MinimumMacOSRequirement = MacOSRequirement diff --git a/Library/Homebrew/compat/requirements/emacs_requirement.rb b/Library/Homebrew/compat/requirements/emacs_requirement.rb deleted file mode 100644 index c8e2ec274..000000000 --- a/Library/Homebrew/compat/requirements/emacs_requirement.rb +++ /dev/null @@ -1,35 +0,0 @@ -class EmacsRequirement < Requirement -  fatal true -  default_formula "emacs" - -  def initialize(tags) -    @version = tags.shift if /\d+\.*\d*/ =~ tags.first -    super -  end - -  satisfy build_env: false do -    next false unless which "emacs" -    next true unless @version -    emacs_version = Utils.popen_read("emacs", "--batch", "--eval", "(princ emacs-version)") -    Version.create(emacs_version) >= Version.create(@version) -  end - -  env do -    ENV.prepend_path "PATH", which("emacs").dirname -    ENV["EMACS"] = "emacs" -  end - -  def message -    if @version -      s = "Emacs #{@version} or later is required." -    else -      s = "Emacs is required." -    end -    s += super -    s -  end - -  def inspect -    "#<#{self.class.name}: #{name.inspect} #{tags.inspect} version=#{@version.inspect}>" -  end -end diff --git a/Library/Homebrew/compat/requirements/fortran_requirement.rb b/Library/Homebrew/compat/requirements/fortran_requirement.rb deleted file mode 100644 index ba3fead6f..000000000 --- a/Library/Homebrew/compat/requirements/fortran_requirement.rb +++ /dev/null @@ -1,13 +0,0 @@ -require "requirement" - -class FortranRequirement < Requirement -  fatal true - -  default_formula "gcc" - -  env { ENV.fortran } - -  satisfy build_env: false do -    which(ENV["FC"] || "gfortran") -  end -end diff --git a/Library/Homebrew/compat/requirements/mpi_requirement.rb b/Library/Homebrew/compat/requirements/mpi_requirement.rb deleted file mode 100644 index 065b56c8b..000000000 --- a/Library/Homebrew/compat/requirements/mpi_requirement.rb +++ /dev/null @@ -1,66 +0,0 @@ -require "requirement" - -# There are multiple implementations of MPI-2 available. -# http://www.mpi-forum.org/ -# This requirement is used to find an appropriate one. -class MPIRequirement < Requirement -  attr_reader :lang_list - -  fatal true - -  default_formula "open-mpi" - -  env :userpaths - -  # This method must accept varargs rather than an array for -  # backwards compatibility with formulae that call it directly. -  def initialize(*tags) -    @non_functional = [] -    @unknown_langs = [] -    @lang_list = [:cc, :cxx, :f77, :f90] & tags -    tags -= @lang_list -    super(tags) -  end - -  def mpi_wrapper_works?(compiler) -    compiler = which compiler -    return false if compiler.nil? || !compiler.executable? - -    # Some wrappers are non-functional and will return a non-zero exit code -    # when invoked for version info. -    # -    # NOTE: A better test may be to do a small test compilation a la autotools. -    quiet_system compiler, "--version" -  end - -  def inspect -    "#<#{self.class.name}: #{name.inspect} #{tags.inspect} lang_list=#{@lang_list.inspect}>" -  end - -  satisfy do -    @lang_list.each do |lang| -      case lang -      when :cc, :cxx, :f90, :f77 -        compiler = "mpi" + lang.to_s -        @non_functional << compiler unless mpi_wrapper_works? compiler -      else -        @unknown_langs << lang.to_s -      end -    end -    @unknown_langs.empty? && @non_functional.empty? -  end - -  env do -    # Set environment variables to help configure scripts find MPI compilers. -    # Variable names taken from: -    # https://www.gnu.org/software/autoconf-archive/ax_mpi.html -    @lang_list.each do |lang| -      compiler = "mpi" + lang.to_s -      mpi_path = which compiler - -      # Fortran 90 environment var has a different name -      compiler = "MPIFC" if lang == :f90 -      ENV[compiler.upcase] = mpi_path -    end -  end -end diff --git a/Library/Homebrew/compat/requirements/perl_requirement.rb b/Library/Homebrew/compat/requirements/perl_requirement.rb deleted file mode 100644 index 70eb2a36c..000000000 --- a/Library/Homebrew/compat/requirements/perl_requirement.rb +++ /dev/null @@ -1,36 +0,0 @@ -class PerlRequirement < Requirement -  fatal true -  default_formula "perl" - -  def initialize(tags) -    @version = tags.shift if /^\d+\.\d+$/ =~ tags.first -    raise "PerlRequirement requires a version!" unless @version -    super -  end - -  satisfy(build_env: false) do -    which_all("perl").detect do |perl| -      perl_version = Utils.popen_read(perl, "--version")[/v(\d+\.\d+)(?:\.\d+)?/, 1] -      next unless perl_version -      Version.create(perl_version.to_s) >= Version.create(@version) -    end -  end - -  def message -    s = "Perl #{@version} is required to install this formula." -    s += super -    s -  end - -  def inspect -    "#<#{self.class.name}: #{name.inspect} #{tags.inspect} version=#{@version.inspect}>" -  end - -  def display_s -    if @version -      "#{name} >= #{@version}" -    else -      name -    end -  end -end diff --git a/Library/Homebrew/compat/requirements/python_requirement.rb b/Library/Homebrew/compat/requirements/python_requirement.rb deleted file mode 100644 index 3215d0a6c..000000000 --- a/Library/Homebrew/compat/requirements/python_requirement.rb +++ /dev/null @@ -1,68 +0,0 @@ -require "language/python" - -class PythonRequirement < Requirement -  fatal true -  default_formula "python" - -  satisfy build_env: false do -    python = which_python -    next unless python -    next unless short_version -    # Always use Python 2.7 for consistency on older versions of Mac OS X. -    short_version == Version.create("2.7") -  end - -  env do -    if !system_python? && short_version == Version.create("2.7") -      ENV.prepend_path "PATH", which_python.dirname -    end - -    # Homebrew Python should take precedence over other Pythons in the PATH -    ENV.prepend_path "PATH", Formula["python"].opt_bin -    ENV.prepend_path "PATH", Formula["python"].opt_libexec/"bin" - -    if system_python? -      ENV["PYTHONPATH"] = "#{HOMEBREW_PREFIX}/lib/python#{short_version}/site-packages" -    end -  end - -  private - -  def short_version -    @short_version ||= Language::Python.major_minor_version which_python -  end - -  def which_python -    python = which python_binary -    return unless python -    Pathname.new Utils.popen_read(python, "-c", "import sys; print(sys.executable)").strip -  end - -  def system_python -    "/usr/bin/#{python_binary}" -  end - -  def system_python? -    system_python == which_python.to_s -  end - -  def python_binary -    "python2.7" -  end - -  # Deprecated -  alias to_s python_binary -end - -class Python3Requirement < PythonRequirement -  fatal true -  default_formula "python3" - -  satisfy(build_env: false) { which_python } - -  private - -  def python_binary -    "python3" -  end -end diff --git a/Library/Homebrew/compat/requirements/ruby_requirement.rb b/Library/Homebrew/compat/requirements/ruby_requirement.rb deleted file mode 100644 index a9ec8c42d..000000000 --- a/Library/Homebrew/compat/requirements/ruby_requirement.rb +++ /dev/null @@ -1,56 +0,0 @@ -class RubyRequirement < Requirement -  fatal true -  default_formula "ruby" - -  def initialize(tags) -    @version = tags.shift if /(\d\.)+\d/ =~ tags.first -    raise "RubyRequirement requires a version!" unless @version -    super -  end - -  satisfy(build_env: false) { new_enough_ruby } - -  env do -    ENV.prepend_path "PATH", new_enough_ruby.dirname -  end - -  def message -    s = "Ruby >= #{@version} is required to install this formula." -    s += super -    s -  end - -  def inspect -    "#<#{self.class.name}: #{name.inspect} #{tags.inspect} version=#{@version.inspect}>" -  end - -  def display_s -    if @version -      "#{name} >= #{@version}" -    else -      name -    end -  end - -  private - -  def new_enough_ruby -    rubies.detect { |ruby| new_enough?(ruby) } -  end - -  def rubies -    rubies = which_all("ruby") -    ruby_formula = Formula["ruby"] -    rubies.unshift ruby_formula.bin/"ruby" if ruby_formula&.installed? -    rubies.uniq -  end - -  def new_enough?(ruby) -    version = Utils.popen_read(ruby, "-e", "print RUBY_VERSION").strip -    version =~ /^\d+\.\d+/ && Version.create(version) >= min_version -  end - -  def min_version -    @min_version ||= Version.create(@version) -  end -end diff --git a/Library/Homebrew/compat/requirements/tex_requirement.rb b/Library/Homebrew/compat/requirements/tex_requirement.rb deleted file mode 100644 index cb26a8477..000000000 --- a/Library/Homebrew/compat/requirements/tex_requirement.rb +++ /dev/null @@ -1,20 +0,0 @@ -require "requirement" - -class TeXRequirement < Requirement -  fatal true -  cask "mactex" -  download "https://www.tug.org/mactex/" - -  satisfy { which("tex") || which("latex") } - -  def message -    s = <<~EOS -      A LaTeX distribution is required for Homebrew to install this formula. - -      Make sure that "/usr/texbin", or the location you installed it to, is in -      your PATH before proceeding. -    EOS -    s += super -    s -  end -end diff --git a/Library/Homebrew/compat/software_spec.rb b/Library/Homebrew/compat/software_spec.rb index 8b0408d02..814c00fa8 100644 --- a/Library/Homebrew/compat/software_spec.rb +++ b/Library/Homebrew/compat/software_spec.rb @@ -1,6 +1,5 @@  class BottleSpecification -  def revision(*args) -    odeprecated "BottleSpecification.revision", "BottleSpecification.rebuild" -    rebuild(*args) +  def revision(*) +    odisabled "BottleSpecification.revision", "BottleSpecification.rebuild"    end  end diff --git a/Library/Homebrew/compat/tab.rb b/Library/Homebrew/compat/tab.rb index 2cf71c923..651bcf1e1 100644 --- a/Library/Homebrew/compat/tab.rb +++ b/Library/Homebrew/compat/tab.rb @@ -1,6 +1,5 @@  class Tab < OpenStruct    def build_32_bit? -    odeprecated "Tab.build_32_bit?" -    include?("32-bit") +    odisabled "Tab.build_32_bit?"    end  end diff --git a/Library/Homebrew/compat/tap.rb b/Library/Homebrew/compat/tap.rb index 37b1eeac1..a1e3ce172 100644 --- a/Library/Homebrew/compat/tap.rb +++ b/Library/Homebrew/compat/tap.rb @@ -2,7 +2,6 @@ require "tap"  class Tap    def core_formula_repository? -    odeprecated "Tap#core_formula_repository?", "Tap#core_tap?" -    core_tap? +    odisabled "Tap#core_formula_repository?", "Tap#core_tap?"    end  end diff --git a/Library/Homebrew/compat/utils.rb b/Library/Homebrew/compat/utils.rb index 8904f0f2b..f83d07599 100644 --- a/Library/Homebrew/compat/utils.rb +++ b/Library/Homebrew/compat/utils.rb @@ -2,17 +2,14 @@ module Tty    module_function    def white -    odeprecated "Tty.white", "Tty.reset.bold" -    reset.bold +    odisabled "Tty.white", "Tty.reset.bold"    end  end -def puts_columns(items) -  odeprecated "puts_columns", "puts Formatter.columns" -  puts Formatter.columns(items) +def puts_columns(_) +  odisabled "puts_columns", "puts Formatter.columns"  end -def plural(n, s = "s") -  odeprecated "#plural", "Formatter.pluralize" -  (n == 1) ? "" : s +def plural(_, _) +  odisabled "#plural", "Formatter.pluralize"  end diff --git a/Library/Homebrew/compat/utils/shell.rb b/Library/Homebrew/compat/utils/shell.rb index 161f10ebb..2f387d967 100644 --- a/Library/Homebrew/compat/utils/shell.rb +++ b/Library/Homebrew/compat/utils/shell.rb @@ -1,8 +1,7 @@  module Utils    module Shell      def self.shell_profile -      odeprecated "Utils::Shell.shell_profile", "Utils::Shell.profile" -      Utils::Shell.profile +      odisabled "Utils::Shell.shell_profile", "Utils::Shell.profile"      end    end  end diff --git a/Library/Homebrew/compat/version.rb b/Library/Homebrew/compat/version.rb index 2dd089015..4a6fd7ace 100644 --- a/Library/Homebrew/compat/version.rb +++ b/Library/Homebrew/compat/version.rb @@ -1,6 +1,5 @@  class Version -  def slice(*args) -    odeprecated "Version#slice", "Version#to_s.slice" -    to_s.slice(*args) +  def slice(*) +    odisabled "Version#slice", "Version#to_s.slice"    end  end diff --git a/Library/Homebrew/compat/xcode.rb b/Library/Homebrew/compat/xcode.rb index 14150cc7c..f212ada64 100644 --- a/Library/Homebrew/compat/xcode.rb +++ b/Library/Homebrew/compat/xcode.rb @@ -4,8 +4,7 @@ module OS        module_function        def provides_autotools? -        odeprecated "OS::Mac::Xcode.provides_autotools?" -        version < "4.3" +        odisabled "OS::Mac::Xcode.provides_autotools?"        end      end    end diff --git a/Library/Homebrew/constants.rb b/Library/Homebrew/constants.rb index 41274922c..9514320ab 100644 --- a/Library/Homebrew/constants.rb +++ b/Library/Homebrew/constants.rb @@ -1,6 +1,5 @@  # frozen_string_literal: true  # RuboCop version used for `brew style` and `brew cask style` -HOMEBREW_RUBOCOP_VERSION = "0.51.0" -HOMEBREW_RUBOCOP_PARSER_VERSION = "2.4.0.0" # for Ruby 2.3.3 -HOMEBREW_RUBOCOP_CASK_VERSION = "~> 0.15.1" # has to be updated when RuboCop version changes +HOMEBREW_RUBOCOP_VERSION = "0.52.1" +HOMEBREW_RUBOCOP_CASK_VERSION = "~> 0.16.0" # has to be updated when RuboCop version changes diff --git a/Library/Homebrew/dev-cmd/create.rb b/Library/Homebrew/dev-cmd/create.rb index e5481b532..122be2593 100644 --- a/Library/Homebrew/dev-cmd/create.rb +++ b/Library/Homebrew/dev-cmd/create.rb @@ -165,77 +165,73 @@ class FormulaCreator      path.write ERB.new(template, nil, ">").result(binding)    end -  def template; <<~EOS -    # Documentation: https://docs.brew.sh/Formula-Cookbook.html -    #                http://www.rubydoc.info/github/Homebrew/brew/master/Formula -    # PLEASE REMOVE ALL GENERATED COMMENTS BEFORE SUBMITTING YOUR PULL REQUEST! - -    class #{Formulary.class_s(name)} < Formula -      desc "#{desc}" -      homepage "#{homepage}" -    <% if head? %> -      head "#{url}" -    <% else %> -      url "#{url}" -    <% unless version.nil? or version.detected_from_url? %> -      version "#{version}" -    <% end %> -      sha256 "#{sha256}" -    <% end %> - -    <% if mode == :cmake %> -      depends_on "cmake" => :build -    <% elsif mode == :meson %> -      depends_on "meson" => :build -      depends_on "ninja" => :build -    <% elsif mode.nil? %> -      # depends_on "cmake" => :build -    <% end %> - -      def install -        # ENV.deparallelize  # if your formula fails when building in parallel - -    <% if mode == :cmake %> -        system "cmake", ".", *std_cmake_args -    <% elsif mode == :autotools %> -        # Remove unrecognized options if warned by configure -        system "./configure", "--disable-debug", -                              "--disable-dependency-tracking", -                              "--disable-silent-rules", -                              "--prefix=\#{prefix}" -    <% elsif mode == :meson %> -        mkdir "build" do -          system "meson", "--prefix=\#{prefix}", ".." -          system "ninja" -          system "ninja", "test" -          system "ninja", "install" +  def template +    <<~EOS +      # Documentation: https://docs.brew.sh/Formula-Cookbook.html +      #                http://www.rubydoc.info/github/Homebrew/brew/master/Formula +      # PLEASE REMOVE ALL GENERATED COMMENTS BEFORE SUBMITTING YOUR PULL REQUEST! +       class #{Formulary.class_s(name)} < Formula +        desc "#{desc}" +        homepage "#{homepage}" +      <% if head? %> +        head "#{url}" +      <% else %> +        url "#{url}" +      <% unless version.nil? or version.detected_from_url? %> +        version "#{version}" +      <% end %> +        sha256 "#{sha256}" +      <% end %> +       <% if mode == :cmake %> +        depends_on "cmake" => :build +      <% elsif mode == :meson %> +        depends_on "meson" => :build +        depends_on "ninja" => :build +      <% elsif mode.nil? %> +        # depends_on "cmake" => :build +      <% end %> +         def install +          # ENV.deparallelize  # if your formula fails when building in parallel +       <% if mode == :cmake %> +          system "cmake", ".", *std_cmake_args +      <% elsif mode == :autotools %> +          # Remove unrecognized options if warned by configure +          system "./configure", "--disable-debug", +                                "--disable-dependency-tracking", +                                "--disable-silent-rules", +                                "--prefix=\#{prefix}" +      <% elsif mode == :meson %> +          mkdir "build" do +            system "meson", "--prefix=\#{prefix}", ".." +            system "ninja" +            system "ninja", "test" +            system "ninja", "install" +          end +      <% else %> +          # Remove unrecognized options if warned by configure +          system "./configure", "--disable-debug", +                                "--disable-dependency-tracking", +                                "--disable-silent-rules", +                                "--prefix=\#{prefix}" +          # system "cmake", ".", *std_cmake_args +      <% end %> +      <% if mode != :meson %> +          system "make", "install" # if this fails, try separate make/make install steps +      <% end %> +        end +         test do +          # `test do` will create, run in and delete a temporary directory. +          # +          # This test will fail and we won't accept that! For Homebrew/homebrew-core +          # this will need to be a test that verifies the functionality of the +          # software. Run the test with `brew test #{name}`. Options passed +          # to `brew install` such as `--HEAD` also need to be provided to `brew test`. +          # +          # The installed folder is not in the path, so use the entire path to any +          # executables being tested: `system "\#{bin}/program", "do", "something"`. +          system "false"          end -    <% else %> -        # Remove unrecognized options if warned by configure -        system "./configure", "--disable-debug", -                              "--disable-dependency-tracking", -                              "--disable-silent-rules", -                              "--prefix=\#{prefix}" -        # system "cmake", ".", *std_cmake_args -    <% end %> -    <% if mode != :meson %> -        system "make", "install" # if this fails, try separate make/make install steps -    <% end %> -      end - -      test do -        # `test do` will create, run in and delete a temporary directory. -        # -        # This test will fail and we won't accept that! For Homebrew/homebrew-core -        # this will need to be a test that verifies the functionality of the -        # software. Run the test with `brew test #{name}`. Options passed -        # to `brew install` such as `--HEAD` also need to be provided to `brew test`. -        # -        # The installed folder is not in the path, so use the entire path to any -        # executables being tested: `system "\#{bin}/program", "do", "something"`. -        system "false"        end -    end      EOS    end  end diff --git a/Library/Homebrew/dev-cmd/pull.rb b/Library/Homebrew/dev-cmd/pull.rb index 5979d87b8..959fbd6c7 100644 --- a/Library/Homebrew/dev-cmd/pull.rb +++ b/Library/Homebrew/dev-cmd/pull.rb @@ -447,7 +447,7 @@ module Homebrew    def publish_bottle_file_on_bintray(f, bintray_org, creds)      repo = Utils::Bottles::Bintray.repository(f.tap)      package = Utils::Bottles::Bintray.package(f.name) -    info = FormulaInfoFromJson.lookup(f.name) +    info = FormulaInfoFromJson.lookup(f.full_name)      if info.nil?        raise "Failed publishing bottle: failed reading formula info for #{f.full_name}"      end diff --git a/Library/Homebrew/extend/os/linux/requirements/java_requirement.rb b/Library/Homebrew/extend/os/linux/requirements/java_requirement.rb index 7816f6b6f..23a68743d 100644 --- a/Library/Homebrew/extend/os/linux/requirements/java_requirement.rb +++ b/Library/Homebrew/extend/os/linux/requirements/java_requirement.rb @@ -1,8 +1,6 @@  require "language/java"  class JavaRequirement < Requirement -  default_formula "jdk" -    env do      env_java_common      env_oracle_jdk diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 7b1d94eb2..ad7e28a2e 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -14,6 +14,7 @@ require "tap"  require "keg"  require "migrator"  require "extend/ENV" +require "language/python"  # A formula provides instructions and metadata for Homebrew to install a piece  # of software. Every Homebrew formula is a {Formula}. @@ -1486,15 +1487,10 @@ class Formula    # Returns a list of Dependency objects that are required at runtime.    # @private    def runtime_dependencies -    runtime_dependencies = recursive_dependencies do |_, dependency| +    recursive_dependencies do |_, dependency|        Dependency.prune if dependency.build?        Dependency.prune if !dependency.required? && build.without?(dependency)      end -    runtime_requirement_deps = recursive_requirements do |_, requirement| -      Requirement.prune if requirement.build? -      Requirement.prune if !requirement.required? && build.without?(requirement) -    end.map(&:to_dependency).compact -    runtime_dependencies + runtime_requirement_deps    end    # Returns a list of formulae depended on by this formula that aren't @@ -1552,7 +1548,6 @@ class Formula      hsh["requirements"] = requirements.map do |req|        {          "name" => req.name, -        "default_formula" => req.default_formula,          "cask" => req.cask,          "download" => req.download,        } diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index 4f8708a4d..2105b9d71 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -415,16 +415,6 @@ class FormulaInstaller      raise UnsatisfiedRequirements, fatals    end -  def install_requirement_formula?(req_dependency, req, dependent, install_bottle_for_dependent) -    return false unless req_dependency -    return false if req.build? && dependent.installed? -    return true unless req.satisfied? -    return false if req.run? -    return true if build_bottle? -    return true if req.satisfied_by_formula? -    install_bottle_for_dependent -  end -    def runtime_requirements(formula)      runtime_deps = formula.runtime_dependencies.map(&:to_formula)      recursive_requirements = formula.recursive_requirements do |dependent, _| @@ -443,17 +433,9 @@ class FormulaInstaller        f.recursive_requirements do |dependent, req|          build = effective_build_options_for(dependent)          install_bottle_for_dependent = install_bottle_for?(dependent, build) -        use_default_formula = install_bottle_for_dependent || build_bottle? -        req_dependency = req.to_dependency(use_default_formula: use_default_formula)          if (req.optional? || req.recommended?) && build.without?(req)            Requirement.prune -        elsif req.build? && use_default_formula && req_dependency&.installed? -          Requirement.prune -        elsif install_requirement_formula?(req_dependency, req, dependent, install_bottle_for_dependent) -          deps.unshift(req_dependency) -          formulae.unshift(req_dependency.to_formula) -          Requirement.prune          elsif req.satisfied?            Requirement.prune          elsif !runtime_requirements.include?(req) && install_bottle_for_dependent diff --git a/Library/Homebrew/formula_support.rb b/Library/Homebrew/formula_support.rb index 53fd61db8..011d8a4b7 100644 --- a/Library/Homebrew/formula_support.rb +++ b/Library/Homebrew/formula_support.rb @@ -32,15 +32,25 @@ class KegOnlyReason    def to_s      return @explanation unless @explanation.empty? + +    case @reason +    when :provided_by_osx +      odeprecated "keg_only :provided_by_osx", "keg_only :provided_by_macos" +      @reason = :provided_by_macos +    when :shadowed_by_osx +      odeprecated "keg_only :shadowed_by_osx", "keg_only :shadowed_by_macos" +      @reason = :shadowed_by_macos +    end +      case @reason      when :versioned_formula then <<~EOS        this is an alternate version of another formula      EOS -    when :provided_by_macos, :provided_by_osx then <<~EOS +    when :provided_by_macos then <<~EOS        macOS already provides this software and installing another version in        parallel can cause all kinds of trouble      EOS -    when :shadowed_by_macos, :shadowed_by_osx then <<~EOS +    when :shadowed_by_macos then <<~EOS        macOS provides similar software and installing this software in        parallel can cause all kinds of trouble      EOS diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb index bb9778c81..e3b93fa72 100644 --- a/Library/Homebrew/keg.rb +++ b/Library/Homebrew/keg.rb @@ -54,9 +54,10 @@ class Keg    end    class DirectoryNotWritableError < LinkError -    def to_s; <<~EOS -      Could not symlink #{src} -      #{dst.dirname} is not writable. +    def to_s +      <<~EOS +        Could not symlink #{src} +        #{dst.dirname} is not writable.        EOS      end    end diff --git a/Library/Homebrew/os/mac/linkage_checker.rb b/Library/Homebrew/os/mac/linkage_checker.rb index 941a5a847..e1709d1b4 100644 --- a/Library/Homebrew/os/mac/linkage_checker.rb +++ b/Library/Homebrew/os/mac/linkage_checker.rb @@ -62,8 +62,7 @@ class LinkageChecker        formula.build.without?(dep)      end      declared_deps = formula.deps.reject { |dep| filter_out.call(dep) }.map(&:name) -    declared_requirement_deps = formula.requirements.reject { |req| filter_out.call(req) }.map(&:default_formula).compact -    declared_dep_names = (declared_deps + declared_requirement_deps).map { |dep| dep.split("/").last } +    declared_dep_names = declared_deps.map { |dep| dep.split("/").last }      undeclared_deps = @brewed_dylibs.keys.reject do |full_name|        name = full_name.split("/").last        next true if name == formula.name diff --git a/Library/Homebrew/requirement.rb b/Library/Homebrew/requirement.rb index 91f84157e..e2b1afbb9 100644 --- a/Library/Homebrew/requirement.rb +++ b/Library/Homebrew/requirement.rb @@ -9,13 +9,11 @@ require "build_environment"  class Requirement    include Dependable -  attr_reader :tags, :name, :cask, :download, :default_formula +  attr_reader :tags, :name, :cask, :download    def initialize(tags = []) -    @default_formula = self.class.default_formula      @cask ||= self.class.cask      @download ||= self.class.download -    @formula = nil      tags.each do |tag|        next unless tag.is_a? Hash        @cask ||= tag[:cask] @@ -56,12 +54,6 @@ class Requirement      result = self.class.satisfy.yielder { |p| instance_eval(&p) }      @satisfied_result = result      return false unless result - -    if parent = satisfied_result_parent -      parent.to_s =~ %r{(#{Regexp.escape(HOMEBREW_CELLAR)}|#{Regexp.escape(HOMEBREW_PREFIX)}/opt)/([\w+-.@]+)} -      @formula = Regexp.last_match(2) -    end -      true    end @@ -71,10 +63,6 @@ class Requirement      self.class.fatal || false    end -  def default_formula? -    self.class.default_formula || false -  end -    def satisfied_result_parent      return unless @satisfied_result.is_a?(Pathname)      parent = @satisfied_result.resolved_path.parent @@ -124,24 +112,6 @@ class Requirement      "#<#{self.class.name}: #{name.inspect} #{tags.inspect}>"    end -  def formula -    @formula || self.class.default_formula -  end - -  def satisfied_by_formula? -    !@formula.nil? -  end - -  def to_dependency(use_default_formula: false) -    if use_default_formula && default_formula? -      Dependency.new(self.class.default_formula, tags, method(:modify_build_environment), name) -    elsif formula =~ HOMEBREW_TAP_FORMULA_REGEX -      TapDependency.new(formula, tags, method(:modify_build_environment), name) -    elsif formula -      Dependency.new(formula, tags, method(:modify_build_environment), name) -    end -  end -    def display_s      name    end @@ -167,8 +137,11 @@ class Requirement      include BuildEnvironment::DSL      attr_reader :env_proc, :build -    attr_rw :fatal, :default_formula -    attr_rw :cask, :download +    attr_rw :fatal, :cask, :download + +    def default_formula(val = nil) +      # odeprecated "Requirement.default_formula" +    end      def satisfy(options = nil, &block)        return @satisfied if options.nil? && !block_given? diff --git a/Library/Homebrew/rubocops/bottle_block_cop.rb b/Library/Homebrew/rubocops/bottle_block_cop.rb index 77759e427..3cfde01ad 100644 --- a/Library/Homebrew/rubocops/bottle_block_cop.rb +++ b/Library/Homebrew/rubocops/bottle_block_cop.rb @@ -16,8 +16,6 @@ module RuboCop            problem "Use rebuild instead of revision in bottle block" if method_called_in_block?(bottle, :revision)          end -        private -          def autocorrect(node)            lambda do |corrector|              correction = node.source.sub("revision", "rebuild") diff --git a/Library/Homebrew/rubocops/checksum_cop.rb b/Library/Homebrew/rubocops/checksum_cop.rb index 23a787809..4dd8ad91c 100644 --- a/Library/Homebrew/rubocops/checksum_cop.rb +++ b/Library/Homebrew/rubocops/checksum_cop.rb @@ -50,8 +50,6 @@ module RuboCop            end          end -        private -          def autocorrect(node)            lambda do |corrector|              correction = node.source.downcase diff --git a/Library/Homebrew/rubocops/class_cop.rb b/Library/Homebrew/rubocops/class_cop.rb index dad81abfc..6f1ffc144 100644 --- a/Library/Homebrew/rubocops/class_cop.rb +++ b/Library/Homebrew/rubocops/class_cop.rb @@ -16,8 +16,6 @@ module RuboCop            problem "#{parent_class} is deprecated, use Formula instead"          end -        private -          def autocorrect(node)            lambda do |corrector|              corrector.replace(node.source_range, "Formula") diff --git a/Library/Homebrew/rubocops/components_order_cop.rb b/Library/Homebrew/rubocops/components_order_cop.rb index 3bf2ede16..a1a576177 100644 --- a/Library/Homebrew/rubocops/components_order_cop.rb +++ b/Library/Homebrew/rubocops/components_order_cop.rb @@ -62,8 +62,6 @@ module RuboCop            end          end -        private -          # Method to format message for reporting component precedence violations          def component_problem(c1, c2)            problem "`#{format_component(c1)}` (line #{line_number(c1)}) should be put before `#{format_component(c2)}` (line #{line_number(c2)})" @@ -99,7 +97,7 @@ module RuboCop              line_breaks = (order_idx > 8) ? "\n\n" : "\n"              corrector.insert_before(node2.source_range, node1.source + line_breaks + indentation)            end -          corrector.remove(range_with_surrounding_space(node1.source_range, :left)) +          corrector.remove(range_with_surrounding_space(range: node1.source_range, side: :left))          end          # Returns precedence index and component's index to properly reorder and group during autocorrect diff --git a/Library/Homebrew/rubocops/extend/formula_cop.rb b/Library/Homebrew/rubocops/extend/formula_cop.rb index de369a0aa..e53c02a44 100644 --- a/Library/Homebrew/rubocops/extend/formula_cop.rb +++ b/Library/Homebrew/rubocops/extend/formula_cop.rb @@ -425,7 +425,7 @@ module RuboCop        # Returns the block length of the block node        def block_size(block) -        block_length(block) +        block.loc.end.line - block.loc.begin.line        end        # Source buffer is required as an argument to report style violations diff --git a/Library/Homebrew/rubocops/formula_desc_cop.rb b/Library/Homebrew/rubocops/formula_desc_cop.rb index 8a35e7d24..240a28072 100644 --- a/Library/Homebrew/rubocops/formula_desc_cop.rb +++ b/Library/Homebrew/rubocops/formula_desc_cop.rb @@ -88,8 +88,6 @@ module RuboCop            problem "Description shouldn't end with a full stop"          end -        private -          def autocorrect(node)            lambda do |corrector|              correction = node.source diff --git a/Library/Homebrew/rubocops/urls_cop.rb b/Library/Homebrew/rubocops/urls_cop.rb index 414f633c9..4ef801689 100644 --- a/Library/Homebrew/rubocops/urls_cop.rb +++ b/Library/Homebrew/rubocops/urls_cop.rb @@ -206,8 +206,6 @@ module RuboCop            end          end -        private -          def autocorrect(node)            lambda do |corrector|              url_string_node = parameters(node).first diff --git a/Library/Homebrew/test/Gemfile b/Library/Homebrew/test/Gemfile index 2dcb670aa..b6d1405ff 100644 --- a/Library/Homebrew/test/Gemfile +++ b/Library/Homebrew/test/Gemfile @@ -3,7 +3,6 @@ source "https://rubygems.org"  require_relative "../constants"  gem "parallel_tests" -gem "parser", HOMEBREW_RUBOCOP_PARSER_VERSION  gem "rspec"  gem "rspec-its", require: false  gem "rspec-wait", require: false diff --git a/Library/Homebrew/test/Gemfile.lock b/Library/Homebrew/test/Gemfile.lock index 9ddc18e71..47f51e56b 100644 --- a/Library/Homebrew/test/Gemfile.lock +++ b/Library/Homebrew/test/Gemfile.lock @@ -12,12 +12,10 @@ GEM      parallel (1.12.0)      parallel_tests (2.17.0)        parallel -    parser (2.4.0.0) -      ast (~> 2.2) +    parser (2.4.0.2) +      ast (~> 2.3)      powerpack (0.1.1) -    rainbow (2.2.2) -      rake -    rake (12.1.0) +    rainbow (3.0.0)      rspec (3.6.0)        rspec-core (~> 3.6.0)        rspec-expectations (~> 3.6.0) @@ -36,11 +34,11 @@ GEM      rspec-support (3.6.0)      rspec-wait (0.0.9)        rspec (>= 3, < 4) -    rubocop (0.51.0) +    rubocop (0.52.1)        parallel (~> 1.10) -      parser (>= 2.3.3.1, < 3.0) +      parser (>= 2.4.0.2, < 3.0)        powerpack (~> 0.1) -      rainbow (>= 2.2.2, < 3.0) +      rainbow (>= 2.2.2, < 4.0)        ruby-progressbar (~> 1.7)        unicode-display_width (~> 1.0, >= 1.0.1)      ruby-progressbar (1.9.0) @@ -58,11 +56,10 @@ PLATFORMS  DEPENDENCIES    codecov    parallel_tests -  parser (= 2.4.0.0)    rspec    rspec-its    rspec-wait -  rubocop (= 0.51.0) +  rubocop (= 0.52.1)    simplecov  BUNDLED WITH diff --git a/Library/Homebrew/test/cask/dsl_spec.rb b/Library/Homebrew/test/cask/dsl_spec.rb index a17acfca6..cd296b5ab 100644 --- a/Library/Homebrew/test/cask/dsl_spec.rb +++ b/Library/Homebrew/test/cask/dsl_spec.rb @@ -232,8 +232,9 @@ describe Hbc::DSL, :cask do        expect(cask.caveats).to be_empty        cask = Hbc::Cask.new("cask-with-caveats") do -        def caveats; <<~EOS -          When you install this Cask, you probably want to know this. +        def caveats +          <<~EOS +            When you install this Cask, you probably want to know this.            EOS          end        end diff --git a/Library/Homebrew/test/cmd/style_spec.rb b/Library/Homebrew/test/cmd/style_spec.rb index 5c118f32e..61faa4af2 100644 --- a/Library/Homebrew/test/cmd/style_spec.rb +++ b/Library/Homebrew/test/cmd/style_spec.rb @@ -28,7 +28,7 @@ describe "brew style" do        rubocop_result = Homebrew.check_style_json([formula])        expect(rubocop_result.file_offenses(formula.realpath.to_s).map(&:message)) -        .to include("Extra empty line detected at class body beginning.") +        .to include("Layout/EmptyLinesAroundClassBody: Extra empty line detected at class body beginning.")      end    end  end diff --git a/Library/Homebrew/test/dependency_collector_spec.rb b/Library/Homebrew/test/dependency_collector_spec.rb index 216bbf316..0f182a69e 100644 --- a/Library/Homebrew/test/dependency_collector_spec.rb +++ b/Library/Homebrew/test/dependency_collector_spec.rb @@ -66,11 +66,6 @@ describe DependencyCollector do        expect(dep).to be_optional      end -    specify "ant dependency", :needs_compat do -      subject.add ant: :build -      expect(find_dependency("ant")).to eq(Dependency.new("ant", [:build])) -    end -      it "doesn't mutate the dependency spec" do        spec = { "foo" => :optional }        copy = spec.dup diff --git a/Library/Homebrew/test/formula_installer_spec.rb b/Library/Homebrew/test/formula_installer_spec.rb index d3710a4cb..93f23b18f 100644 --- a/Library/Homebrew/test/formula_installer_spec.rb +++ b/Library/Homebrew/test/formula_installer_spec.rb @@ -132,64 +132,4 @@ describe FormulaInstaller do        fi.check_install_sanity      }.to raise_error(CannotInstallFormulaError)    end - -  describe "#install_requirement_formula?", :needs_compat do -    before do -      @requirement = Python3Requirement.new -      @requirement_dependency = @requirement.to_dependency -      @install_bottle_for_dependent = false -      allow(@requirement).to receive(:satisfied?).and_return(satisfied?) -      allow(@requirement).to receive(:satisfied_by_formula?).and_return(satisfied_by_formula?) -      allow(@requirement).to receive(:build?).and_return(build?) -      @dependent = formula do -        url "foo" -        version "0.1" -        depends_on :python3 -      end -      allow(@dependent).to receive(:installed?).and_return(installed?) -      @fi = FormulaInstaller.new(@dependent) -    end - -    subject { @fi.install_requirement_formula?(@requirement_dependency, @requirement, @dependent, @install_bottle_for_dependent) } - -    context "it returns false when requirement is satisfied" do -      let(:satisfied?) { true } -      let(:satisfied_by_formula?) { false } -      let(:build?) { false } -      let(:installed?) { false } -      it { is_expected.to be false } -    end - -    context "it returns false when requirement is satisfied but default formula is installed" do -      let(:satisfied?) { true } -      let(:satisfied_by_formula?) { false } -      let(:build?) { false } -      let(:installed?) { false } -      it { is_expected.to be false } -    end - -    context "it returns false when requirement is :build and dependent is installed" do -      let(:satisfied?) { false } -      let(:satisfied_by_formula?) { false } -      let(:build?) { true } -      let(:installed?) { true } -      it { is_expected.to be false } -    end - -    context "it returns true when requirement isn't satisfied" do -      let(:satisfied?) { false } -      let(:satisfied_by_formula?) { false } -      let(:build?) { false } -      let(:installed?) { false } -      it { is_expected.to be true } -    end - -    context "it returns true when requirement is satisfied by a formula" do -      let(:satisfied?) { true } -      let(:satisfied_by_formula?) { true } -      let(:build?) { false } -      let(:installed?) { false } -      it { is_expected.to be true } -    end -  end  end diff --git a/Library/Homebrew/test/mpi_requirement_spec.rb b/Library/Homebrew/test/mpi_requirement_spec.rb index 87f99eb3a..aecdb1b66 100644 --- a/Library/Homebrew/test/mpi_requirement_spec.rb +++ b/Library/Homebrew/test/mpi_requirement_spec.rb @@ -1,14 +1,13 @@ -require "compat/requirements/mpi_requirement" +require "compat/requirements"  describe MPIRequirement, :needs_compat do    describe "::new" do -    subject { described_class.new(*(wrappers + tags)) } +    subject { described_class.new(wrappers + tags) }      let(:wrappers) { [:cc, :cxx, :f77] }      let(:tags) { [:optional, "some-other-tag"] } -    it "untangles wrappers and tags" do -      expect(subject.lang_list).to eq(wrappers) -      expect(subject.tags).to eq(tags) +    it "stores wrappers as tags" do +      expect(subject.tags).to eq(wrappers + tags)      end    end  end diff --git a/Library/Homebrew/test/requirement_spec.rb b/Library/Homebrew/test/requirement_spec.rb index 2d0d86c86..1f3d872f3 100644 --- a/Library/Homebrew/test/requirement_spec.rb +++ b/Library/Homebrew/test/requirement_spec.rb @@ -2,7 +2,6 @@ require "extend/ENV"  require "requirement"  describe Requirement do -  alias_matcher :have_a_default_formula, :be_a_default_formula    alias_matcher :be_a_build_requirement, :be_a_build    subject { klass.new } @@ -173,60 +172,6 @@ describe Requirement do      its(:option_names) { are_expected.to eq(["foo"]) }    end -  describe "#default_formula?" do -    context "#default_formula specified" do -      let(:klass) do -        Class.new(described_class) do -          default_formula "foo" -        end -      end - -      it { is_expected.to have_a_default_formula } -    end - -    context "#default_formula omitted" do -      it { is_expected.not_to have_a_default_formula } -    end -  end - -  describe "#to_dependency" do -    let(:klass) do -      Class.new(described_class) do -        default_formula "foo" -      end -    end - -    it "returns a Dependency for its default Formula" do -      expect(subject.to_dependency).to eq(Dependency.new("foo")) -    end - -    context "#modify_build_environment" do -      context "with error" do -        let(:klass) do -          Class.new(described_class) do -            class ModifyBuildEnvironmentError < StandardError; end - -            default_formula "foo" - -            satisfy do -              true -            end - -            env do -              raise ModifyBuildEnvironmentError -            end -          end -        end - -        it "raises an error" do -          expect { -            subject.to_dependency.modify_build_environment -          }.to raise_error(klass.const_get(:ModifyBuildEnvironmentError)) -        end -      end -    end -  end -    describe "#modify_build_environment" do      context "without env proc" do        let(:klass) { Class.new(described_class) } diff --git a/Library/Homebrew/test/support/helper/output_as_tty.rb b/Library/Homebrew/test/support/helper/output_as_tty.rb index aa9da73cc..22f96510e 100644 --- a/Library/Homebrew/test/support/helper/output_as_tty.rb +++ b/Library/Homebrew/test/support/helper/output_as_tty.rb @@ -19,7 +19,7 @@ module Test            return super(block) unless @tty            colored_tty_block = lambda do -            instance_eval("$#{@output}").extend(Module.new do +            instance_eval("$#{@output}", __FILE__, __LINE__).extend(Module.new do                def tty?                  true                end @@ -32,7 +32,7 @@ module Test            return super(colored_tty_block) if @colors            uncolored_tty_block = lambda do -            instance_eval <<-EOS +            instance_eval <<-EOS, __FILE__, __LINE__ + 1                begin                  captured_stream = StringIO.new diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index c6e7d22df..a1fb0d235 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -101,7 +101,8 @@ def odeprecated(method, replacement = nil, disable: false, disable_on: nil, call    if ARGV.homebrew_developer? || disable ||       Homebrew.raise_deprecation_exceptions? -    raise MethodDeprecatedError, message +    developer_message = message + "Or, even better, submit a PR to fix it!" +    raise MethodDeprecatedError, developer_message    elsif !Homebrew.auditing?      opoo "#{message}\n"    end diff --git a/Library/Homebrew/utils/github.rb b/Library/Homebrew/utils/github.rb index be9bf4dd3..016676323 100644 --- a/Library/Homebrew/utils/github.rb +++ b/Library/Homebrew/utils/github.rb @@ -129,7 +129,7 @@ module GitHub      # This is a no-op if the user is opting out of using the GitHub API.      return block_given? ? yield({}) : {} if ENV["HOMEBREW_NO_GITHUB_API"] -    args = %W[--header application/vnd.github.v3+json --write-out \n%{http_code}] +    args = %W[--header application/vnd.github.v3+json --write-out \n%{http_code}] # rubocop:disable Lint/NestedPercentLiteral      args += curl_args      token, username = api_credentials | 
