diff --git a/Library/Homebrew/cmd/postinstall.rb b/Library/Homebrew/cmd/postinstall.rb index 1936f25ea37f505933a96363bd11ec198f76ecf8..337fc62be83240cc008d9ea2e60c0d555cb106cf 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 2bc0107cbd27ac4989ed857db3fa99a2da5f218d..d298452fff1d3113ebd10d5da35ef36fdcdd6798 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 a6264ee62eead7cb60fc234aa863d3fe80bf6122..92023028eb9e260ac1c0e5a7b3d648835ce6f22c 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 ab9f5f16fcdbdbde422fbcf812dd602c37df712b..3affa4f9545eb737c80a27bcdeb5be3ce41c1a67 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