aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/exceptions.rb9
-rw-r--r--Library/Homebrew/formula_installer.rb4
2 files changed, 10 insertions, 3 deletions
diff --git a/Library/Homebrew/exceptions.rb b/Library/Homebrew/exceptions.rb
index 7705f9d49..42c62338a 100644
--- a/Library/Homebrew/exceptions.rb
+++ b/Library/Homebrew/exceptions.rb
@@ -458,7 +458,7 @@ end
# if the user passes any flags/environment that would case a bottle-only
# installation on a system without build tools to fail
class BuildFlagsError < RuntimeError
- def initialize(flags)
+ def initialize(flags, bottled: true)
if flags.length > 1
flag_text = "flags"
require_text = "require"
@@ -467,13 +467,18 @@ class BuildFlagsError < RuntimeError
require_text = "requires"
end
- super <<~EOS
+ message = <<~EOS.chomp!
The following #{flag_text}:
#{flags.join(", ")}
#{require_text} building tools, but none are installed.
#{DevelopmentTools.installation_instructions}
+ EOS
+
+ message << <<~EOS.chomp! if bottled
Alternatively, remove the #{flag_text} to attempt bottle installation.
EOS
+
+ super message
end
end
diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb
index 2105b9d71..a89da9ae9 100644
--- a/Library/Homebrew/formula_installer.rb
+++ b/Library/Homebrew/formula_installer.rb
@@ -70,8 +70,10 @@ class FormulaInstaller
# can proceed. Only invoked when the user has no developer tools.
def self.prevent_build_flags
build_flags = ARGV.collect_build_flags
+ return if build_flags.empty?
- raise BuildFlagsError, build_flags unless build_flags.empty?
+ all_bottled = ARGV.formulae.all?(&:bottled?)
+ raise BuildFlagsError.new(build_flags, bottled: all_bottled)
end
def build_bottle?