Deprecate depfile in gensrcs
All existing gensrsc modulePartners who use the property can use BUILD_BROKEN_DEP_FILE to bypass the error Test: CI Bug: 179452413 Fix: 179452413 Change-Id: I7cd39484b43eba693d79188b9a374f192198f90f
This commit is contained in:
@@ -1693,6 +1693,10 @@ func (c *deviceConfig) BuildBrokenInputDir(name string) bool {
|
|||||||
return InList(name, c.config.productVariables.BuildBrokenInputDirModules)
|
return InList(name, c.config.productVariables.BuildBrokenInputDirModules)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *deviceConfig) BuildBrokenDepfile() bool {
|
||||||
|
return Bool(c.config.productVariables.BuildBrokenDepfile)
|
||||||
|
}
|
||||||
|
|
||||||
func (c *deviceConfig) RequiresInsecureExecmemForSwiftshader() bool {
|
func (c *deviceConfig) RequiresInsecureExecmemForSwiftshader() bool {
|
||||||
return c.config.productVariables.RequiresInsecureExecmemForSwiftshader
|
return c.config.productVariables.RequiresInsecureExecmemForSwiftshader
|
||||||
}
|
}
|
||||||
|
@@ -428,6 +428,7 @@ type productVariables struct {
|
|||||||
|
|
||||||
ShippingApiLevel *string `json:",omitempty"`
|
ShippingApiLevel *string `json:",omitempty"`
|
||||||
|
|
||||||
|
BuildBrokenDepfile *bool `json:",omitempty"`
|
||||||
BuildBrokenEnforceSyspropOwner bool `json:",omitempty"`
|
BuildBrokenEnforceSyspropOwner bool `json:",omitempty"`
|
||||||
BuildBrokenTrebleSyspropNeverallow bool `json:",omitempty"`
|
BuildBrokenTrebleSyspropNeverallow bool `json:",omitempty"`
|
||||||
BuildBrokenVendorPropertyNamespace bool `json:",omitempty"`
|
BuildBrokenVendorPropertyNamespace bool `json:",omitempty"`
|
||||||
|
@@ -590,6 +590,18 @@ func (g *Module) generateCommonBuildActions(ctx android.ModuleContext) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (g *Module) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
func (g *Module) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||||
|
// Allowlist genrule to use depfile until we have a solution to remove it.
|
||||||
|
// TODO(b/235582219): Remove allowlist for genrule
|
||||||
|
if ctx.ModuleType() == "gensrcs" &&
|
||||||
|
!ctx.DeviceConfig().BuildBrokenDepfile() &&
|
||||||
|
Bool(g.properties.Depfile) {
|
||||||
|
ctx.PropertyErrorf(
|
||||||
|
"depfile",
|
||||||
|
"Deprecated to ensure the module type is convertible to Bazel. "+
|
||||||
|
"Try specifying the dependencies explicitly so that there is no need to use depfile. "+
|
||||||
|
"If not possible, the escape hatch is to use BUILD_BROKEN_DEPFILE to bypass the error.")
|
||||||
|
}
|
||||||
|
|
||||||
g.generateCommonBuildActions(ctx)
|
g.generateCommonBuildActions(ctx)
|
||||||
|
|
||||||
// For <= 6 outputs, just embed those directly in the users. Right now, that covers >90% of
|
// For <= 6 outputs, just embed those directly in the users. Right now, that covers >90% of
|
||||||
|
@@ -15,6 +15,7 @@
|
|||||||
package genrule
|
package genrule
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"regexp"
|
"regexp"
|
||||||
"testing"
|
"testing"
|
||||||
@@ -626,6 +627,73 @@ func TestGenSrcs(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGensrcsBuildBrokenDepfile(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
prop string
|
||||||
|
BuildBrokenDepfile *bool
|
||||||
|
err string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: `error when BuildBrokenDepfile is set to false`,
|
||||||
|
prop: `
|
||||||
|
depfile: true,
|
||||||
|
cmd: "cat $(in) > $(out) && cat $(depfile)",
|
||||||
|
`,
|
||||||
|
BuildBrokenDepfile: proptools.BoolPtr(false),
|
||||||
|
err: "depfile: Deprecated to ensure the module type is convertible to Bazel",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: `error when BuildBrokenDepfile is not set`,
|
||||||
|
prop: `
|
||||||
|
depfile: true,
|
||||||
|
cmd: "cat $(in) > $(out) && cat $(depfile)",
|
||||||
|
`,
|
||||||
|
err: "depfile: Deprecated to ensure the module type is convertible to Bazel.",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: `no error when BuildBrokenDepfile is explicitly set to true`,
|
||||||
|
prop: `
|
||||||
|
depfile: true,
|
||||||
|
cmd: "cat $(in) > $(out) && cat $(depfile)",
|
||||||
|
`,
|
||||||
|
BuildBrokenDepfile: proptools.BoolPtr(true),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: `no error if depfile is not set`,
|
||||||
|
prop: `
|
||||||
|
cmd: "cat $(in) > $(out)",
|
||||||
|
`,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, test := range tests {
|
||||||
|
t.Run(test.name, func(t *testing.T) {
|
||||||
|
bp := fmt.Sprintf(`
|
||||||
|
gensrcs {
|
||||||
|
name: "foo",
|
||||||
|
srcs: ["data.txt"],
|
||||||
|
%s
|
||||||
|
}`, test.prop)
|
||||||
|
|
||||||
|
var expectedErrors []string
|
||||||
|
if test.err != "" {
|
||||||
|
expectedErrors = append(expectedErrors, test.err)
|
||||||
|
}
|
||||||
|
android.GroupFixturePreparers(
|
||||||
|
prepareForGenRuleTest,
|
||||||
|
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
|
||||||
|
if test.BuildBrokenDepfile != nil {
|
||||||
|
variables.BuildBrokenDepfile = test.BuildBrokenDepfile
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
).
|
||||||
|
ExtendWithErrorHandler(android.FixtureExpectsAllErrorsToMatchAPattern(expectedErrors)).
|
||||||
|
RunTestWithBp(t, bp)
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestGenruleDefaults(t *testing.T) {
|
func TestGenruleDefaults(t *testing.T) {
|
||||||
bp := `
|
bp := `
|
||||||
genrule_defaults {
|
genrule_defaults {
|
||||||
|
Reference in New Issue
Block a user