Merge changes Ia106d48e,Ib6c0e778

* changes:
  Remove use of deprecated ExtractSourcesDeps
  Dedup path properties across property structs
This commit is contained in:
Colin Cross
2019-07-16 21:31:09 +00:00
committed by Gerrit Code Review
3 changed files with 22 additions and 13 deletions

View File

@@ -35,8 +35,11 @@ func pathDepsMutator(ctx BottomUpMutatorContext) {
props := m.base().generalProperties props := m.base().generalProperties
var pathProperties []string
for _, ps := range props { for _, ps := range props {
pathProperties := pathPropertiesForPropertyStruct(ctx, ps) pathProperties = append(pathProperties, pathPropertiesForPropertyStruct(ctx, ps)...)
}
pathProperties = FirstUniqueStrings(pathProperties) pathProperties = FirstUniqueStrings(pathProperties)
for _, s := range pathProperties { for _, s := range pathProperties {
@@ -44,8 +47,6 @@ func pathDepsMutator(ctx BottomUpMutatorContext) {
ctx.AddDependency(ctx.Module(), sourceOrOutputDepTag(t), m) ctx.AddDependency(ctx.Module(), sourceOrOutputDepTag(t), m)
} }
} }
}
} }
// pathPropertiesForPropertyStruct uses the indexes of properties that are tagged with android:"path" to extract // pathPropertiesForPropertyStruct uses the indexes of properties that are tagged with android:"path" to extract

View File

@@ -28,12 +28,17 @@ type pathDepsMutatorTestModule struct {
Qux string Qux string
} }
// A second property struct with a duplicate property name
props2 struct {
Foo string `android:"path"`
}
sourceDeps []string sourceDeps []string
} }
func pathDepsMutatorTestModuleFactory() Module { func pathDepsMutatorTestModuleFactory() Module {
module := &pathDepsMutatorTestModule{} module := &pathDepsMutatorTestModule{}
module.AddProperties(&module.props) module.AddProperties(&module.props, &module.props2)
InitAndroidArchModule(module, DeviceSupported, MultilibBoth) InitAndroidArchModule(module, DeviceSupported, MultilibBoth)
return module return module
} }
@@ -44,6 +49,13 @@ func (p *pathDepsMutatorTestModule) GenerateAndroidBuildActions(ctx ModuleContex
p.sourceDeps = append(p.sourceDeps, ctx.OtherModuleName(dep)) 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) { func TestPathDepsMutator(t *testing.T) {

View File

@@ -2040,7 +2040,7 @@ func ImportFactoryHost() android.Module {
// dex_import module // dex_import module
type DexImportProperties struct { type DexImportProperties struct {
Jars []string Jars []string `android:"path"`
} }
type DexImport struct { type DexImport struct {
@@ -2068,10 +2068,6 @@ func (j *DexImport) Name() string {
return j.prebuilt.Name(j.ModuleBase.Name()) 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) { func (j *DexImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
if len(j.properties.Jars) != 1 { if len(j.properties.Jars) != 1 {
ctx.PropertyErrorf("jars", "exactly one jar must be provided") ctx.PropertyErrorf("jars", "exactly one jar must be provided")