diff --git a/Library/Homebrew/env_config.rb b/Library/Homebrew/env_config.rb index 9333a9c3fd..8438e1aec4 100644 --- a/Library/Homebrew/env_config.rb +++ b/Library/Homebrew/env_config.rb @@ -212,11 +212,6 @@ module Homebrew description: "If set, do not use Bootsnap to speed up repeated `brew` calls.", boolean: true, }, - HOMEBREW_NO_BOTTLE_SOURCE_FALLBACK: { - description: "If set, fail on the failure of installation from a bottle rather than " \ - "falling back to building from source.", - boolean: true, - }, HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: { description: "If set, do not check for broken dependents after installing, upgrading or reinstalling " \ "formulae.", diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index e0e8d47f7b..82c07fbe90 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -94,7 +94,6 @@ class FormulaInstaller @options = options @requirement_messages = [] @poured_bottle = false - @pour_failed = false @start_time = nil end @@ -154,8 +153,6 @@ class FormulaInstaller sig { params(output_warning: T::Boolean).returns(T::Boolean) } def pour_bottle?(output_warning: false) - return false if @pour_failed - return false if !formula.bottle_tag? && !formula.local_bottle_path return true if force_bottle? return false if build_from_source? || build_bottle? || interactive? @@ -235,8 +232,7 @@ class FormulaInstaller # homebrew-core and have full bottle coverage. (OS.mac? || ENV["CI"]) && !build_from_source? && !build_bottle? && - !installed_as_dependency? && - formula.tap&.core_tap? && !formula.bottle_unneeded? && !formula.any_version_installed? && + formula.tap&.core_tap? && !formula.bottle_unneeded? && # Integration tests override homebrew-core locations ENV["HOMEBREW_TEST_TMPDIR"].nil? && !pour_bottle? @@ -244,21 +240,29 @@ class FormulaInstaller formula_message = formula.pour_bottle_check_unsatisfied_reason formula_message[0] = formula_message[0].downcase - "#{formula}: #{formula_message}" - else + <<~EOS + #{formula}: #{formula_message} + EOS + # 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 !installed_as_dependency? && !formula.any_version_installed? <<~EOS #{formula}: no bottle available! EOS end - message += <<~EOS - You can try to install from source with: - brew install --build-from-source #{formula} - Please note building from source is unsupported. You will encounter build - failures with some formulae. If you experience any issues please create pull - requests instead of asking for help on Homebrew's GitHub, Twitter or any other - official channels. - EOS - raise CannotInstallFormulaError, message + + if message + message += <<~EOS + You can try to install from source with: + brew install --build-from-source #{formula} + Please note building from source is unsupported. You will encounter build + failures with some formulae. If you experience any issues please create pull + requests instead of asking for help on Homebrew's GitHub, Twitter or any other + official channels. + EOS + raise CannotInstallFormulaError, message + end end type, reason = DeprecateDisable.deprecate_disable_info formula @@ -429,7 +433,7 @@ class FormulaInstaller if pour_bottle? begin pour - rescue Exception => e # rubocop:disable Lint/RescueException + rescue Exception # rubocop:disable Lint/RescueException # any exceptions must leave us with nothing installed ignore_interrupts do begin @@ -442,17 +446,7 @@ class FormulaInstaller end formula.rack.rmdir_if_possible end - raise if Homebrew::EnvConfig.developer? || - Homebrew::EnvConfig.no_bottle_source_fallback? || - force_bottle? || - e.is_a?(Interrupt) - - @pour_failed = true - onoe e.message - opoo "Bottle installation failed: building from source." - raise UnbottledError, [formula] unless DevelopmentTools.installed? - - compute_and_install_dependencies unless ignore_deps? + raise else @poured_bottle = true end @@ -513,7 +507,7 @@ class FormulaInstaller $stderr.puts "Please report this issue to the #{formula.tap} tap (not Homebrew/brew or Homebrew/core)!" false - else # rubocop:disable Layout/ElseAlignment + else f.linked_keg.exist? && f.opt_prefix.exist? end @@ -1123,25 +1117,10 @@ class FormulaInstaller return if only_deps? - if pour_bottle?(output_warning: true) - begin - downloader.fetch - rescue Exception => e # rubocop:disable Lint/RescueException - raise if Homebrew::EnvConfig.developer? || - Homebrew::EnvConfig.no_bottle_source_fallback? || - force_bottle? || - e.is_a?(Interrupt) - - @pour_failed = true - onoe e.message - opoo "Bottle installation failed: building from source." - fetch_dependencies - end + unless pour_bottle?(output_warning: true) + formula.fetch_patches + formula.resources.each(&:fetch) end - return if pour_bottle? - - formula.fetch_patches - formula.resources.each(&:fetch) downloader.fetch end diff --git a/docs/Manpage.md b/docs/Manpage.md index bb50fd1783..95e9f04901 100644 --- a/docs/Manpage.md +++ b/docs/Manpage.md @@ -1858,9 +1858,6 @@ example, run `export HOMEBREW_NO_INSECURE_REDIRECT=1` rather than just - `HOMEBREW_NO_BOOTSNAP`
If set, do not use Bootsnap to speed up repeated `brew` calls. -- `HOMEBREW_NO_BOTTLE_SOURCE_FALLBACK` -
If set, fail on the failure of installation from a bottle rather than falling back to building from source. - - `HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK`
If set, do not check for broken dependents after installing, upgrading or reinstalling formulae. diff --git a/manpages/brew.1 b/manpages/brew.1 index 4cc8f9a1ef..733c78cc81 100644 --- a/manpages/brew.1 +++ b/manpages/brew.1 @@ -2653,12 +2653,6 @@ If set, do not automatically update before running some commands e\.g\. \fBbrew If set, do not use Bootsnap to speed up repeated \fBbrew\fR calls\. . .TP -\fBHOMEBREW_NO_BOTTLE_SOURCE_FALLBACK\fR -. -.br -If set, fail on the failure of installation from a bottle rather than falling back to building from source\. -. -.TP \fBHOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK\fR . .br