diff --git a/android/path_properties.go b/android/path_properties.go index af7af5940..6b1cdb308 100644 --- a/android/path_properties.go +++ b/android/path_properties.go @@ -35,16 +35,17 @@ func pathDepsMutator(ctx BottomUpMutatorContext) { props := m.base().generalProperties + var pathProperties []string for _, ps := range props { - pathProperties := pathPropertiesForPropertyStruct(ctx, ps) - pathProperties = FirstUniqueStrings(pathProperties) + pathProperties = append(pathProperties, pathPropertiesForPropertyStruct(ctx, ps)...) + } - for _, s := range pathProperties { - if m, t := SrcIsModuleWithTag(s); m != "" { - ctx.AddDependency(ctx.Module(), sourceOrOutputDepTag(t), m) - } + pathProperties = FirstUniqueStrings(pathProperties) + + for _, s := range pathProperties { + if m, t := SrcIsModuleWithTag(s); m != "" { + ctx.AddDependency(ctx.Module(), sourceOrOutputDepTag(t), m) } - } } diff --git a/android/path_properties_test.go b/android/path_properties_test.go index e98c1365b..59bfa6c21 100644 --- a/android/path_properties_test.go +++ b/android/path_properties_test.go @@ -28,12 +28,17 @@ type pathDepsMutatorTestModule struct { Qux string } + // A second property struct with a duplicate property name + props2 struct { + Foo string `android:"path"` + } + sourceDeps []string } func pathDepsMutatorTestModuleFactory() Module { module := &pathDepsMutatorTestModule{} - module.AddProperties(&module.props) + module.AddProperties(&module.props, &module.props2) InitAndroidArchModule(module, DeviceSupported, MultilibBoth) return module } @@ -44,6 +49,13 @@ func (p *pathDepsMutatorTestModule) GenerateAndroidBuildActions(ctx ModuleContex p.sourceDeps = append(p.sourceDeps, ctx.OtherModuleName(dep)) } }) + + if p.props.Foo != "" { + // Make sure there is only one dependency on a module listed in a property present in multiple property structs + if ctx.GetDirectDepWithTag(SrcIsModule(p.props.Foo), sourceOrOutputDepTag("")) == nil { + ctx.ModuleErrorf("GetDirectDepWithTag failed") + } + } } func TestPathDepsMutator(t *testing.T) { diff --git a/java/java.go b/java/java.go index 318a36b88..f9ec27e24 100644 --- a/java/java.go +++ b/java/java.go @@ -2040,7 +2040,7 @@ func ImportFactoryHost() android.Module { // dex_import module type DexImportProperties struct { - Jars []string + Jars []string `android:"path"` } type DexImport struct { @@ -2068,10 +2068,6 @@ func (j *DexImport) Name() string { return j.prebuilt.Name(j.ModuleBase.Name()) } -func (j *DexImport) DepsMutator(ctx android.BottomUpMutatorContext) { - android.ExtractSourcesDeps(ctx, j.properties.Jars) -} - func (j *DexImport) GenerateAndroidBuildActions(ctx android.ModuleContext) { if len(j.properties.Jars) != 1 { ctx.PropertyErrorf("jars", "exactly one jar must be provided")