// Copyright 2017 Google Inc. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package build import ( "os/exec" ) type Sandbox string const ( noSandbox = "" globalSandbox = "build/soong/ui/build/sandbox/darwin/global.sb" dumpvarsSandbox = globalSandbox soongSandbox = globalSandbox katiSandbox = globalSandbox ninjaSandbox = noSandbox ) var sandboxExecPath string func init() { if p, err := exec.LookPath("sandbox-exec"); err == nil { sandboxExecPath = p } } func (c *Cmd) sandboxSupported() bool { if c.Sandbox == "" { return false } else if sandboxExecPath == "" { c.ctx.Verboseln("sandbox-exec not found, disabling sandboxing") return false } return true } func (c *Cmd) wrapSandbox() { homeDir, _ := c.Environment.Get("HOME") outDir := absPath(c.ctx, c.config.OutDir()) distDir := absPath(c.ctx, c.config.DistDir()) c.Args[0] = c.Path c.Path = sandboxExecPath c.Args = append([]string{ "sandbox-exec", "-f", string(c.Sandbox), "-D", "HOME=" + homeDir, "-D", "OUT_DIR=" + outDir, "-D", "DIST_DIR=" + distDir, }, c.Args...) }