Merge "Support phony_output as a BuildParam Arg in RuleBuilder" into main

This commit is contained in:
Devin Moore
2024-07-18 15:21:12 +00:00
committed by Gerrit Code Review

View File

@@ -58,6 +58,7 @@ type RuleBuilder struct {
sboxInputs bool
sboxManifestPath WritablePath
missingDeps []string
args map[string]string
}
// NewRuleBuilder returns a newly created RuleBuilder.
@@ -78,6 +79,17 @@ func (rb *RuleBuilder) SetSboxOutDirDirAsEmpty() *RuleBuilder {
return rb
}
// Set the phony_output argument.
// This causes the output files to be ignored.
// If the output isn't created, it's not treated as an error.
// The build rule is run every time whether or not the output is created.
func (rb *RuleBuilder) SetPhonyOutput() {
if rb.args == nil {
rb.args = make(map[string]string)
}
rb.args["phony_output"] = "true"
}
// RuleBuilderInstall is a tuple of install from and to locations.
type RuleBuilderInstall struct {
From Path
@@ -726,6 +738,12 @@ func (r *RuleBuilder) build(name string, desc string, ninjaEscapeCommandString b
commandString = proptools.NinjaEscape(commandString)
}
args_vars := make([]string, len(r.args))
i := 0
for k, _ := range r.args {
args_vars[i] = k
i++
}
r.ctx.Build(r.pctx, BuildParams{
Rule: r.ctx.Rule(r.pctx, name, blueprint.RuleParams{
Command: commandString,
@@ -734,7 +752,7 @@ func (r *RuleBuilder) build(name string, desc string, ninjaEscapeCommandString b
Rspfile: proptools.NinjaEscape(rspFile),
RspfileContent: rspFileContent,
Pool: pool,
}),
}, args_vars...),
Inputs: rspFileInputs,
Implicits: inputs,
OrderOnly: r.OrderOnlys(),
@@ -744,6 +762,7 @@ func (r *RuleBuilder) build(name string, desc string, ninjaEscapeCommandString b
Depfile: depFile,
Deps: depFormat,
Description: desc,
Args: r.args,
})
}