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 883d0c3fc4..7e0848c0f9 100644
--- a/docs/Manpage.md
+++ b/docs/Manpage.md
@@ -1852,9 +1852,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 fba75e2868..fe1d2bdac3 100644
--- a/manpages/brew.1
+++ b/manpages/brew.1
@@ -2641,12 +2641,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