Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ca30e08b authored by Taylor Santiago's avatar Taylor Santiago
Browse files

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
parent be891d5a
Loading
Loading
Loading
Loading
+23 −3
Original line number Diff line number Diff line
@@ -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