diff --git a/Library/Homebrew/extend/os/formula_installer.rb b/Library/Homebrew/extend/os/formula_installer.rb new file mode 100644 index 0000000000..b4ce658527 --- /dev/null +++ b/Library/Homebrew/extend/os/formula_installer.rb @@ -0,0 +1,8 @@ +# typed: strict +# frozen_string_literal: true + +if OS.mac? + require "extend/os/mac/formula_installer" +elsif OS.linux? + require "extend/os/linux/formula_installer" +end diff --git a/Library/Homebrew/extend/os/linux/formula_installer.rb b/Library/Homebrew/extend/os/linux/formula_installer.rb new file mode 100644 index 0000000000..7a118ae87e --- /dev/null +++ b/Library/Homebrew/extend/os/linux/formula_installer.rb @@ -0,0 +1,12 @@ +# typed: true +# frozen_string_literal: true + +class FormulaInstaller + undef fresh_install? + + sig { params(formula: Formula).returns(T.nilable(T::Boolean)) } + def fresh_install?(formula) + !Homebrew::EnvConfig.developer? && + (!installed_as_dependency? || !formula.any_version_installed?) + end +end diff --git a/Library/Homebrew/extend/os/mac/formula_installer.rb b/Library/Homebrew/extend/os/mac/formula_installer.rb new file mode 100644 index 0000000000..8da9417fcf --- /dev/null +++ b/Library/Homebrew/extend/os/mac/formula_installer.rb @@ -0,0 +1,12 @@ +# typed: true +# frozen_string_literal: true + +class FormulaInstaller + undef fresh_install? + + sig { params(formula: Formula).returns(T.nilable(T::Boolean)) } + def fresh_install?(formula) + !Homebrew::EnvConfig.developer? && !OS::Mac.version.outdated_release? && + (!installed_as_dependency? || !formula.any_version_installed?) + end +end diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index a657aa5c61..defac21d1f 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -258,9 +258,7 @@ class FormulaInstaller # don't want to complain about no bottle available if doing an # upgrade/reinstall/dependency install (but do in the case the bottle # check fails) - elsif !Homebrew::EnvConfig.developer? && - (!installed_as_dependency? || !formula.any_version_installed?) && - (!OS.mac? || !OS::Mac.version.outdated_release?) + elsif fresh_install?(formula) <<~EOS #{formula}: no bottle available! EOS @@ -343,6 +341,11 @@ class FormulaInstaller "#{formula.full_name} requires the latest version of pinned dependencies" end + sig { params(_formula: Formula).returns(T.nilable(T::Boolean)) } + def fresh_install?(_formula) + false + end + sig { void } def install_fetch_deps return if @compute_dependencies.blank?