Use __SBOX_OUT_DIR__ in sbox output file list

The path to the output directory may be arbitrarily long, use
__SBOX_OUT_DIR__ in the list of output files passed to sbox
to avoid expanding it multiple times in the command line.

Fixes:
ninja: fatal: posix_spawn: Argument list too long
09:40:14 ninja failed with: exit status 1
when building libchrome with a long OUT or OUT_DIR_COMMON_BASE.

Bug: 73726635
Test: m checkbuild
Change-Id: I59024b2164287c8e531711afd9273b692ce9c28a
diff --git a/cmd/sbox/sbox.go b/cmd/sbox/sbox.go
index 3b41c90..0af1886 100644
--- a/cmd/sbox/sbox.go
+++ b/cmd/sbox/sbox.go
@@ -136,14 +136,11 @@
 
 	tempDir, err := ioutil.TempDir(sandboxesRoot, "sbox")
 
-	// Rewrite output file paths to be relative to output root
-	// This facilitates matching them up against the corresponding paths in the temporary directory in case they're absolute
 	for i, filePath := range outputsVarEntries {
-		relativePath, err := filepath.Rel(outputRoot, filePath)
-		if err != nil {
-			return err
+		if !strings.HasPrefix(filePath, "__SBOX_OUT_DIR__/") {
+			return fmt.Errorf("output files must start with `__SBOX_OUT_DIR__/`")
 		}
-		outputsVarEntries[i] = relativePath
+		outputsVarEntries[i] = strings.TrimPrefix(filePath, "__SBOX_OUT_DIR__/")
 	}
 
 	allOutputs = append([]string(nil), outputsVarEntries...)