aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorDominyk Tiller2015-08-25 17:34:52 +0100
committerDominyk Tiller2015-08-25 22:01:24 +0100
commit98499d1d292c6aa820dc15a5b554be9b73c3250e (patch)
tree7f15cc781db1b0e917cbb1f5011fc30c5d61b69b /Library
parent166e33c2ffe84462240ed36946b9127b63421a60 (diff)
downloadbrew-98499d1d292c6aa820dc15a5b554be9b73c3250e.tar.bz2
sandbox: permit /var/tmp & DerivedData
Long term it would be nice to sandbox everything that writes to DerivedData but it is essentially a cache directory of sorts. The downside of allowing stuff to write there particularly is that DerivedData is notoriously bad at getting cleaned up, so if you do a lot of Xcode-using installations very quickly, you can chew your disk space up. Closes Homebrew/homebrew#43276. Signed-off-by: Dominyk Tiller <dominyktiller@gmail.com>
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cmd/postinstall.rb1
-rw-r--r--Library/Homebrew/cmd/test.rb1
-rw-r--r--Library/Homebrew/formula_installer.rb1
-rw-r--r--Library/Homebrew/sandbox.rb6
4 files changed, 9 insertions, 0 deletions
diff --git a/Library/Homebrew/cmd/postinstall.rb b/Library/Homebrew/cmd/postinstall.rb
index 1fdf7f67e..dc402ec4b 100644
--- a/Library/Homebrew/cmd/postinstall.rb
+++ b/Library/Homebrew/cmd/postinstall.rb
@@ -31,6 +31,7 @@ module Homebrew
sandbox.allow_write_temp_and_cache
sandbox.allow_write_log(formula)
sandbox.allow_write_cellar(formula)
+ sandbox.allow_write_xcode
sandbox.allow_write_path HOMEBREW_PREFIX
sandbox.deny_write_homebrew_library
sandbox.exec(*args)
diff --git a/Library/Homebrew/cmd/test.rb b/Library/Homebrew/cmd/test.rb
index fd3c7c4e6..4dc3c4058 100644
--- a/Library/Homebrew/cmd/test.rb
+++ b/Library/Homebrew/cmd/test.rb
@@ -49,6 +49,7 @@ module Homebrew
sandbox.record_log(f.logs/"sandbox.test.log")
sandbox.allow_write_temp_and_cache
sandbox.allow_write_log(f)
+ sandbox.allow_write_xcode
sandbox.exec(*args)
else
exec(*args)
diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb
index bb1b66c29..c3de16cfd 100644
--- a/Library/Homebrew/formula_installer.rb
+++ b/Library/Homebrew/formula_installer.rb
@@ -553,6 +553,7 @@ class FormulaInstaller
sandbox.record_log(formula.logs/"sandbox.build.log")
sandbox.allow_write_temp_and_cache
sandbox.allow_write_log(formula)
+ sandbox.allow_write_xcode
sandbox.allow_write_cellar(formula)
sandbox.exec(*args)
else
diff --git a/Library/Homebrew/sandbox.rb b/Library/Homebrew/sandbox.rb
index 0f4881b41..4d4fdaee0 100644
--- a/Library/Homebrew/sandbox.rb
+++ b/Library/Homebrew/sandbox.rb
@@ -57,6 +57,7 @@ class Sandbox
def allow_write_temp_and_cache
allow_write_path "/private/tmp"
+ allow_write_path "/private/var/tmp"
allow_write "^/private/var/folders/[^/]+/[^/]+/[C,T]/", :type => :regex
allow_write_path HOMEBREW_TEMP
allow_write_path HOMEBREW_CACHE
@@ -68,6 +69,11 @@ class Sandbox
allow_write_path formula.var
end
+ # Xcode projects expect access to certain cache/archive dirs.
+ def allow_write_xcode
+ allow_write_path "/Users/#{ENV["USER"]}/Library/Developer/Xcode/DerivedData/"
+ end
+
def allow_write_log(formula)
allow_write_path formula.logs
end