aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Library/Homebrew/formula_installer.rb7
-rw-r--r--Library/Homebrew/hooks/bottles.rb31
2 files changed, 38 insertions, 0 deletions
diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb
index c6e179c60..e9c2d7638 100644
--- a/Library/Homebrew/formula_installer.rb
+++ b/Library/Homebrew/formula_installer.rb
@@ -11,6 +11,7 @@ require 'cleaner'
require 'formula_cellar_checks'
require 'install_renamed'
require 'cmd/tap'
+require 'hooks/bottles'
class FormulaInstaller
include FormulaCellarChecks
@@ -47,6 +48,8 @@ class FormulaInstaller
end
def pour_bottle? install_bottle_options={:warn=>false}
+ return true if Homebrew::Hooks::Bottles.formula_has_bottle?(f)
+
return false if @pour_failed
return true if force_bottle? && f.bottle
return false if build_from_source? || build_bottle? || interactive?
@@ -618,6 +621,10 @@ class FormulaInstaller
end
def pour
+ if Homebrew::Hooks::Bottles.formula_has_bottle?(f)
+ return if Homebrew::Hooks::Bottles.pour_formula_bottle(f)
+ end
+
if f.local_bottle_path
downloader = LocalBottleDownloadStrategy.new(f)
else
diff --git a/Library/Homebrew/hooks/bottles.rb b/Library/Homebrew/hooks/bottles.rb
new file mode 100644
index 000000000..de321c09a
--- /dev/null
+++ b/Library/Homebrew/hooks/bottles.rb
@@ -0,0 +1,31 @@
+# Boxen (and perhaps others) want to override our bottling infrastructure so
+# they can avoid declaring checksums in formulae files.
+# Instead of periodically breaking their monkeypatches let's add some hooks that
+# we can query to allow their own behaviour.
+
+# PLEASE DO NOT EVER RENAME THIS CLASS OR ADD/REMOVE METHOD ARGUMENTS!
+module Homebrew
+ module Hooks
+ module Bottles
+ def self.setup_formula_has_bottle &block
+ @has_bottle = block
+ true
+ end
+
+ def self.setup_pour_formula_bottle &block
+ @pour_bottle = block
+ true
+ end
+
+ def self.formula_has_bottle?(formula)
+ return false unless @has_bottle
+ @has_bottle.call formula
+ end
+
+ def self.pour_formula_bottle(formula)
+ return false unless @pour_bottle
+ @pour_bottle.call formula
+ end
+ end
+ end
+end