Rewrite depfile from sbox to stay reproducible
sbox will generate a random directory for the output root, and most tools will encode that directory name in the output target of the depfile. So embed the library from dep_fixer into sbox so that it can rewrite the output filename to a static (reproducible) value. Ninja doesn't care what that value is, so it's just "outputfile". Also fix up rule_builder to actually tell sbox about the depfile. Test: mmma system/iorap; check the contents of: out/soong/.intermediates/system/iorap/libiorap-binder/android_arm_armv7-a-neon_core_static/gen/aidl/system/iorap/binder/com/google/android/startop/iorap/IIorap.cpp.d Change-Id: I3640a2e8b0c034f143a35e398a8418a6d621b265
This commit is contained in:
@@ -367,10 +367,6 @@ func (r *RuleBuilder) Build(pctx PackageContext, ctx BuilderContext, name string
|
||||
sboxOutputs[i] = "__SBOX_OUT_DIR__/" + Rel(ctx, r.sboxOutDir.String(), output.String())
|
||||
}
|
||||
|
||||
if depFile != nil {
|
||||
sboxOutputs = append(sboxOutputs, "__SBOX_OUT_DIR__/"+Rel(ctx, r.sboxOutDir.String(), depFile.String()))
|
||||
}
|
||||
|
||||
commandString = proptools.ShellEscape(commandString)
|
||||
if !strings.HasPrefix(commandString, `'`) {
|
||||
commandString = `'` + commandString + `'`
|
||||
@@ -380,8 +376,13 @@ func (r *RuleBuilder) Build(pctx PackageContext, ctx BuilderContext, name string
|
||||
sboxCmd.BuiltTool(ctx, "sbox").
|
||||
Flag("-c").Text(commandString).
|
||||
Flag("--sandbox-path").Text(shared.TempDirForOutDir(PathForOutput(ctx).String())).
|
||||
Flag("--output-root").Text(r.sboxOutDir.String()).
|
||||
Flags(sboxOutputs)
|
||||
Flag("--output-root").Text(r.sboxOutDir.String())
|
||||
|
||||
if depFile != nil {
|
||||
sboxCmd.Flag("--depfile-out").Text(depFile.String())
|
||||
}
|
||||
|
||||
sboxCmd.Flags(sboxOutputs)
|
||||
|
||||
commandString = sboxCmd.buf.String()
|
||||
tools = append(tools, sboxCmd.tools...)
|
||||
|
Reference in New Issue
Block a user