From e8561c6108e5be1e8cf2fe69881aa9575a064026 Mon Sep 17 00:00:00 2001 From: Cole Faust Date: Thu, 30 Nov 2023 17:26:37 -0800 Subject: [PATCH] Include "soong" in sandboxed out paths Previously, the path to built files in the sandbox would be out/.intermediates/... instead of out/soong/.intermediates/.... After this cl, it will be out/soong/.intermediates/.... This makes it more consistent with the non-sandboxed paths, which is easier for developers. CtsApkVerityTestDebugFiles is a genrule that's used to find the paths to other modules. Developers were expected to build it, then copy all the files listed in its output file to a temporary directory. Those paths would be wrong before this change. Bug: 307824623 Test: ./build/soong/tests/genrule_sandbox_test.py CtsApkVerityTestDebugFiles Change-Id: Iadf9e3240a2c828567e46b6b02cc14004f30e8bf --- android/rule_builder.go | 4 ++-- android/rule_builder_test.go | 2 +- java/droidstubs_test.go | 2 +- java/java_test.go | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/android/rule_builder.go b/android/rule_builder.go index 1a491f708..1454357ec 100644 --- a/android/rule_builder.go +++ b/android/rule_builder.go @@ -590,7 +590,7 @@ func (r *RuleBuilder) build(name string, desc string, ninjaEscapeCommandString b To: proto.String(sboxOutSubDir), }, { - From: proto.String(PathForOutput(r.ctx).String()), + From: proto.String(r.ctx.Config().OutDir()), To: proto.String(sboxOutSubDir), }, }, @@ -891,7 +891,7 @@ func (r *RuleBuilder) _sboxPathForInputRel(path Path) (rel string, inSandbox boo // When sandboxing inputs all inputs have to be copied into the sandbox. Input files that // are outputs of other rules could be an arbitrary absolute path if OUT_DIR is set, so they // will be copied to relative paths under __SBOX_OUT_DIR__/out. - rel, isRelOut, _ := maybeRelErr(PathForOutput(r.ctx).String(), path.String()) + rel, isRelOut, _ := maybeRelErr(r.ctx.Config().OutDir(), path.String()) if isRelOut { return filepath.Join(sboxOutSubDir, rel), true } diff --git a/android/rule_builder_test.go b/android/rule_builder_test.go index 63c35272a..d659dcca7 100644 --- a/android/rule_builder_test.go +++ b/android/rule_builder_test.go @@ -474,7 +474,7 @@ func TestRuleBuilder(t *testing.T) { wantCommands := []string{ "__SBOX_SANDBOX_DIR__/out/DepFile Flag FlagWithArg=arg FlagWithDepFile=__SBOX_SANDBOX_DIR__/out/depfile " + "FlagWithInput=input FlagWithOutput=__SBOX_SANDBOX_DIR__/out/output " + - "FlagWithRspFileInputList=__SBOX_SANDBOX_DIR__/out/rsp Input __SBOX_SANDBOX_DIR__/out/Output " + + "FlagWithRspFileInputList=__SBOX_SANDBOX_DIR__/out/soong/rsp Input __SBOX_SANDBOX_DIR__/out/Output " + "__SBOX_SANDBOX_DIR__/out/SymlinkOutput Text __SBOX_SANDBOX_DIR__/tools/src/Tool after command2 old cmd", "command2 __SBOX_SANDBOX_DIR__/out/depfile2 input2 __SBOX_SANDBOX_DIR__/out/output2 __SBOX_SANDBOX_DIR__/tools/src/tool2", "command3 input3 __SBOX_SANDBOX_DIR__/out/output2 __SBOX_SANDBOX_DIR__/out/output3 input3 __SBOX_SANDBOX_DIR__/out/output2", diff --git a/java/droidstubs_test.go b/java/droidstubs_test.go index 17cad8958..7bcaca1d4 100644 --- a/java/droidstubs_test.go +++ b/java/droidstubs_test.go @@ -213,7 +213,7 @@ func TestDroidstubsSandbox(t *testing.T) { } manifest := android.RuleBuilderSboxProtoForTests(t, ctx, m.Output("metalava.sbox.textproto")) - if g, w := manifest.Commands[0].GetCommand(), "reference __SBOX_SANDBOX_DIR__/out/.intermediates/foo/gen/foo.txt"; !strings.Contains(g, w) { + if g, w := manifest.Commands[0].GetCommand(), "reference __SBOX_SANDBOX_DIR__/out/soong/.intermediates/foo/gen/foo.txt"; !strings.Contains(g, w) { t.Errorf("Expected command to contain %q, got %q", w, g) } } diff --git a/java/java_test.go b/java/java_test.go index 8e83fc412..8b73af0a4 100644 --- a/java/java_test.go +++ b/java/java_test.go @@ -2432,7 +2432,7 @@ func TestSdkLibraryProvidesSystemModulesToApiLibrary(t *testing.T) { manifest := m.Output("metalava.sbox.textproto") sboxProto := android.RuleBuilderSboxProtoForTests(t, result.TestContext, manifest) manifestCommand := sboxProto.Commands[0].GetCommand() - classPathFlag := "--classpath __SBOX_SANDBOX_DIR__/out/.intermediates/bar/android_common/turbine-combined/bar.jar" + classPathFlag := "--classpath __SBOX_SANDBOX_DIR__/out/soong/.intermediates/bar/android_common/turbine-combined/bar.jar" android.AssertStringDoesContain(t, "command expected to contain classpath flag", manifestCommand, classPathFlag) }