Skip to content
Snippets Groups Projects
Commit 2ab5c77d authored by Mike McQuaid's avatar Mike McQuaid Committed by GitHub
Browse files

Merge pull request #713 from MikeMcQuaid/ship-sandbox

Enable sandbox by default for homebrew/core
parents 823505a0 c6151951
No related branches found
No related tags found
No related merge requests found
......@@ -21,12 +21,10 @@ module Homebrew
args << "--devel"
end
if Sandbox.available? && ARGV.sandbox?
Sandbox.print_sandbox_message
end
Sandbox.print_sandbox_message if Sandbox.formula?(formula)
Utils.safe_fork do
if Sandbox.available? && ARGV.sandbox?
if Sandbox.formula?(formula)
sandbox = Sandbox.new
formula.logs.mkpath
sandbox.record_log(formula.logs/"sandbox.postinstall.log")
......
......@@ -57,12 +57,10 @@ module Homebrew
args << "--devel"
end
if Sandbox.available? && !ARGV.no_sandbox?
Sandbox.print_sandbox_message
end
Sandbox.print_sandbox_message if Sandbox.test?
Utils.safe_fork do
if Sandbox.available? && !ARGV.no_sandbox?
if Sandbox.test?
sandbox = Sandbox.new
f.logs.mkpath
sandbox.record_log(f.logs/"sandbox.test.log")
......
......@@ -588,15 +588,13 @@ class FormulaInstaller
#{formula.path}
].concat(build_argv)
if Sandbox.available? && ARGV.sandbox?
Sandbox.print_sandbox_message
end
Sandbox.print_sandbox_message if Sandbox.formula?(formula)
Utils.safe_fork do
# Invalidate the current sudo timestamp in case a build script calls sudo
system "/usr/bin/sudo", "-k"
if Sandbox.available? && ARGV.sandbox?
if Sandbox.formula?(formula)
sandbox = Sandbox.new
formula.logs.mkpath
sandbox.record_log(formula.logs/"sandbox.build.log")
......
......@@ -3,11 +3,24 @@ require "tempfile"
class Sandbox
SANDBOX_EXEC = "/usr/bin/sandbox-exec".freeze
SANDBOXED_TAPS = [
"homebrew/core",
].freeze
def self.available?
OS.mac? && File.executable?(SANDBOX_EXEC)
end
def self.formula?(formula)
return false unless available?
ARGV.sandbox? || SANDBOXED_TAPS.include?(formula.tap.to_s)
end
def self.test?
return false unless available?
!ARGV.no_sandbox?
end
def self.print_sandbox_message
unless @printed_sandbox_message
ohai "Using the sandbox"
......
......@@ -13,6 +13,28 @@ class SandboxTest < Homebrew::TestCase
@dir.rmtree
end
def test_formula?
f = formula { url "foo-1.0" }
f2 = formula { url "bar-1.0" }
f2.stubs(:tap).returns(Tap.fetch("test/tap"))
ARGV.stubs(:sandbox?).returns true
assert Sandbox.formula?(f),
"Formulae should be sandboxed if --sandbox was passed."
ARGV.stubs(:sandbox?).returns false
assert Sandbox.formula?(f),
"Formulae should be sandboxed if in a sandboxed tap."
refute Sandbox.formula?(f2),
"Formulae should not be sandboxed if not in a sandboxed tap."
end
def test_test?
ARGV.stubs(:no_sandbox?).returns false
assert Sandbox.test?,
"Tests should be sandboxed unless --no-sandbox was passed."
end
def test_allow_write
@sandbox.allow_write @file
@sandbox.exec "touch", @file
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment