Use consistent directory for source and output inside the build sandbox

for ABFS.

A consistent source directory addresses problematic full path inputs and
outputs, which can manifest as cache misses or build failures after an ABFS
patch application.

Bug: 347704053
Change-Id: Ib2297bb0b904b1b490e83c22fd468eee928e53fe
This commit is contained in:
Taylor Santiago
2024-07-30 13:48:43 -07:00
parent be891d5a52
commit ca30e08b9d

View File

@@ -48,7 +48,11 @@ var (
}
)
const nsjailPath = "prebuilts/build-tools/linux-x86/bin/nsjail"
const (
nsjailPath = "prebuilts/build-tools/linux-x86/bin/nsjail"
abfsSrcDir = "/src"
abfsOutDir = "/src/out"
)
var sandboxConfig struct {
once sync.Once
@@ -145,6 +149,22 @@ func (c *Cmd) sandboxSupported() bool {
return sandboxConfig.working
}
func (c *Cmd) srcDirArg() string {
if !c.config.UseABFS() {
return sandboxConfig.srcDir
}
return sandboxConfig.srcDir + ":" + abfsSrcDir
}
func (c *Cmd) outDirArg() string {
if !c.config.UseABFS() {
return sandboxConfig.outDir
}
return sandboxConfig.outDir + ":" + abfsOutDir
}
func (c *Cmd) wrapSandbox() {
wd, _ := os.Getwd()
@@ -188,10 +208,10 @@ func (c *Cmd) wrapSandbox() {
"-B", "/tmp",
// Mount source
c.config.sandboxConfig.SrcDirMountFlag(), sandboxConfig.srcDir,
c.config.sandboxConfig.SrcDirMountFlag(), c.srcDirArg(),
//Mount out dir as read-write
"-B", sandboxConfig.outDir,
"-B", c.outDirArg(),
// Disable newcgroup for now, since it may require newer kernels
// TODO: try out cgroups