Handle SymlinkTree action, ignore PythonZipper action.
Introduce bazelBuildRunfiles to build runfiles symlink tree, allowing to ignore a bogus PythonZipper action. Bug: 232085015 Test: treehugger Change-Id: I81267f523d8237fddbc7d65955cdd08ea6369046
This commit is contained in:
@@ -40,6 +40,13 @@ var (
|
||||
Rspfile: "${out}.rsp",
|
||||
RspfileContent: "${content}",
|
||||
}, "content")
|
||||
_ = pctx.HostBinToolVariable("bazelBuildRunfilesTool", "build-runfiles")
|
||||
buildRunfilesRule = pctx.AndroidStaticRule("bazelBuildRunfiles", blueprint.RuleParams{
|
||||
Command: "${bazelBuildRunfilesTool} ${in} ${outDir}",
|
||||
Depfile: "",
|
||||
Description: "",
|
||||
CommandDeps: []string{"${bazelBuildRunfilesTool}"},
|
||||
}, "outDir")
|
||||
)
|
||||
|
||||
func init() {
|
||||
@@ -910,6 +917,25 @@ func (c *bazelSingleton) GenerateBuildActions(ctx SingletonContext) {
|
||||
"content": escaped,
|
||||
},
|
||||
})
|
||||
} else if buildStatement.Mnemonic == "SymlinkTree" {
|
||||
// build-runfiles arguments are the manifest file and the target directory
|
||||
// where it creates the symlink tree according to this manifest (and then
|
||||
// writes the MANIFEST file to it).
|
||||
outManifest := PathForBazelOut(ctx, buildStatement.OutputPaths[0])
|
||||
outManifestPath := outManifest.String()
|
||||
if !strings.HasSuffix(outManifestPath, "MANIFEST") {
|
||||
panic("the base name of the symlink tree action should be MANIFEST, got " + outManifestPath)
|
||||
}
|
||||
outDir := filepath.Dir(outManifestPath)
|
||||
ctx.Build(pctx, BuildParams{
|
||||
Rule: buildRunfilesRule,
|
||||
Output: outManifest,
|
||||
Inputs: []Path{PathForBazelOut(ctx, buildStatement.InputPaths[0])},
|
||||
Description: "symlink tree for " + outDir,
|
||||
Args: map[string]string{
|
||||
"outDir": outDir,
|
||||
},
|
||||
})
|
||||
} else {
|
||||
panic(fmt.Sprintf("unhandled build statement: %v", buildStatement))
|
||||
}
|
||||
|
Reference in New Issue
Block a user