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

Commit b4dff134 authored by Anas Sulaiman's avatar Anas Sulaiman
Browse files

Allow specifying sub-dir in sbox output

xsdc commands end up using the same output directory inside sbox
for reading and writing the output archive, resulting in including
a partial copy of the archive in itself.

This change allows that rule to specify a sub-directory for the inputs
leaving the output archive outside of it.

Used by https://r.android.com/2955427

Bug: b/322788229
Test: Ran a couple of builds and confirmed no cache misses from xsdc.
Also manually checked an archive and confirmed
abcence of partial self-copies.

Change-Id: If709b111458a83d58906d919c3d2a7787bcbe4ee
parent c755fdbe
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -1157,11 +1157,15 @@ func (c *RuleBuilderCommand) Outputs(paths WritablePaths) *RuleBuilderCommand {

// OutputDir adds the output directory to the command line. This is only available when used with RuleBuilder.Sbox,
// and will be the temporary output directory managed by sbox, not the final one.
func (c *RuleBuilderCommand) OutputDir() *RuleBuilderCommand {
func (c *RuleBuilderCommand) OutputDir(subPathComponents ...string) *RuleBuilderCommand {
	if !c.rule.sbox {
		panic("OutputDir only valid with Sbox")
	}
	return c.Text(sboxOutDir)
	path := sboxOutDir
	if len(subPathComponents) > 0 {
		path = filepath.Join(append([]string{sboxOutDir}, subPathComponents...)...)
	}
	return c.Text(path)
}

// DepFile adds the specified depfile path to the paths returned by RuleBuilder.DepFiles and adds it to the command