(define TMPDIR (param "_GLOBAL_TMP_DIR")) ; Disallow creating setuid/setgid binaries, since that ; would allow breaking build user isolation. (deny file-write-setugid) ; Allow forking. (allow process-fork) ; Allow reading system information like #CPUs, etc. (allow sysctl-read) ; Allow POSIX semaphores and shared memory. (allow ipc-posix*) ; Allow socket creation. (allow system-socket) ; Allow sending signals within the sandbox. (allow signal (target same-sandbox)) ; Access to /tmp. (allow file* process-exec (literal "/tmp") (subpath TMPDIR)) ; Some packages like to read the system version. (allow file-read* (literal "/System/Library/CoreServices/SystemVersion.plist")) ; Without this line clang cannot write to /dev/null, breaking some configure tests. (allow file-read-metadata (literal "/dev")) ; Standard devices. (allow file* (literal "/dev/null") (literal "/dev/random") (literal "/dev/stdin") (literal "/dev/stdout") (literal "/dev/tty") (literal "/dev/urandom") (literal "/dev/zero") (subpath "/dev/fd")) ; Does nothing, but reduces build noise. (allow file* (literal "/dev/dtracehelper")) ; Allow access to zoneinfo since libSystem needs it. (allow file-read* (subpath "/usr/share/zoneinfo")) (allow file-read* (subpath "/usr/share/locale")) ; This is mostly to get more specific log messages when builds try to ; access something in /etc or /var. (allow file-read-metadata (literal "/etc") (literal "/var") (literal "/private/var/tmp") )