Capture missing dependency error rules
Allow missing dependency errors to be tested by capturing the
missing dependency error rule instead of the originally requested
rule.
Test: all soong tests
Change-Id: Id2b23b9ee354cdafc44fb9adfaf8fe7bab973478
diff --git a/android/module.go b/android/module.go
index 2481000..3a9ef96 100644
--- a/android/module.go
+++ b/android/module.go
@@ -945,17 +945,16 @@
variables map[string]string
}
-func (m *moduleContext) ninjaError(desc string, outputs []string, err error) {
- m.ModuleContext.Build(pctx.PackageContext, blueprint.BuildParams{
+func (m *moduleContext) ninjaError(params BuildParams, err error) (PackageContext, BuildParams) {
+ return pctx, BuildParams{
Rule: ErrorRule,
- Description: desc,
- Outputs: outputs,
- Optional: true,
+ Description: params.Description,
+ Output: params.Output,
+ Outputs: params.Outputs,
Args: map[string]string{
"error": err.Error(),
},
- })
- return
+ }
}
func (m *moduleContext) Config() Config {
@@ -1027,24 +1026,20 @@
}
func (m *moduleContext) Build(pctx PackageContext, params BuildParams) {
+ if params.Description != "" {
+ params.Description = "${moduleDesc}" + params.Description + "${moduleDescSuffix}"
+ }
+
+ if missingDeps := m.GetMissingDependencies(); len(missingDeps) > 0 {
+ pctx, params = m.ninjaError(params, fmt.Errorf("module %s missing dependencies: %s\n",
+ m.ModuleName(), strings.Join(missingDeps, ", ")))
+ }
+
if m.config.captureBuild {
m.buildParams = append(m.buildParams, params)
}
- bparams := convertBuildParams(params)
-
- if bparams.Description != "" {
- bparams.Description = "${moduleDesc}" + params.Description + "${moduleDescSuffix}"
- }
-
- if missingDeps := m.GetMissingDependencies(); len(missingDeps) > 0 {
- m.ninjaError(bparams.Description, bparams.Outputs,
- fmt.Errorf("module %s missing dependencies: %s\n",
- m.ModuleName(), strings.Join(missingDeps, ", ")))
- return
- }
-
- m.ModuleContext.Build(pctx.PackageContext, bparams)
+ m.ModuleContext.Build(pctx.PackageContext, convertBuildParams(params))
}
func (m *moduleContext) Module() Module {