aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cmd/postinstall.rb6
-rw-r--r--Library/Homebrew/cmd/test.rb6
-rw-r--r--Library/Homebrew/formula_installer.rb6
-rw-r--r--Library/Homebrew/sandbox.rb12
4 files changed, 27 insertions, 3 deletions
diff --git a/Library/Homebrew/cmd/postinstall.rb b/Library/Homebrew/cmd/postinstall.rb
index 1936f25ea..337fc62be 100644
--- a/Library/Homebrew/cmd/postinstall.rb
+++ b/Library/Homebrew/cmd/postinstall.rb
@@ -15,8 +15,12 @@ module Homebrew
#{formula.path}
].concat(ARGV.options_only)
+ if Sandbox.available? && ARGV.sandbox? && Sandbox.auto_disable?
+ Sandbox.print_autodisable_warning
+ end
+
Utils.safe_fork do
- if Sandbox.available? && ARGV.sandbox?
+ if Sandbox.available? && ARGV.sandbox? && !Sandbox.auto_disable?
sandbox = Sandbox.new
formula.logs.mkpath
sandbox.record_log(formula.logs/"sandbox.postinstall.log")
diff --git a/Library/Homebrew/cmd/test.rb b/Library/Homebrew/cmd/test.rb
index 2bc0107cb..d298452ff 100644
--- a/Library/Homebrew/cmd/test.rb
+++ b/Library/Homebrew/cmd/test.rb
@@ -35,8 +35,12 @@ module Homebrew
#{f.path}
].concat(ARGV.options_only)
+ if Sandbox.available? && ARGV.sandbox? && Sandbox.auto_disable?
+ Sandbox.print_autodisable_warning
+ end
+
Utils.safe_fork do
- if Sandbox.available? && ARGV.sandbox?
+ if Sandbox.available? && ARGV.sandbox? && !Sandbox.auto_disable?
sandbox = Sandbox.new
f.logs.mkpath
sandbox.record_log(f.logs/"sandbox.test.log")
diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb
index a6264ee62..92023028e 100644
--- a/Library/Homebrew/formula_installer.rb
+++ b/Library/Homebrew/formula_installer.rb
@@ -486,8 +486,12 @@ class FormulaInstaller
#{formula.path}
].concat(build_argv)
+ if Sandbox.available? && ARGV.sandbox? && Sandbox.auto_disable?
+ Sandbox.print_autodisable_warning
+ end
+
Utils.safe_fork do
- if Sandbox.available? && ARGV.sandbox?
+ if Sandbox.available? && ARGV.sandbox? && !Sandbox.auto_disable?
sandbox = Sandbox.new
formula.logs.mkpath
sandbox.record_log(formula.logs/"sandbox.build.log")
diff --git a/Library/Homebrew/sandbox.rb b/Library/Homebrew/sandbox.rb
index ab9f5f16f..3affa4f95 100644
--- a/Library/Homebrew/sandbox.rb
+++ b/Library/Homebrew/sandbox.rb
@@ -8,6 +8,18 @@ class Sandbox
OS.mac? && File.executable?(SANDBOX_EXEC)
end
+ # there are times the sandbox cannot be used.
+ def self.auto_disable?
+ @auto_disable ||= ARGV.interactive? || ARGV.debug?
+ end
+
+ def self.print_autodisable_warning
+ unless @print_autodisable_warning
+ opoo "The sandbox cannot be used in debug or interactive mode."
+ @print_autodisable_warning = true
+ end
+ end
+
def initialize
@profile = SandboxProfile.new
end