diff options
author | 2019-03-18 12:24:29 -0700 | |
---|---|---|
committer | 2019-03-18 12:49:14 -0700 | |
commit | a3a97415d38b0435ef7e2c0314aa6124bd7c6c75 (patch) | |
tree | 85d1522bf71ced439668d81f11dc8cbb5e3b8dff | |
parent | cd2e52870a89494eb0105d77e2977ac259de4a0a (diff) |
Don't add dependencies on modules referenced in unused arch variants
When extracting dependencies from properties tagged with
`android:"path"`, only look at the general property structs
and not the arch-specific ones. The necessary arch-specific
values will be appended into the general property structs.
Fixes: 128377112
Test: path_properties_test.go
Change-Id: I35e35555d5b15473229a7458fcfc2c7dacaec889
-rw-r--r-- | android/module.go | 1 | ||||
-rw-r--r-- | android/path_properties.go | 2 | ||||
-rw-r--r-- | android/path_properties_test.go | 27 |
3 files changed, 24 insertions, 6 deletions
diff --git a/android/module.go b/android/module.go index c5252c8b0..9a69a2631 100644 --- a/android/module.go +++ b/android/module.go @@ -383,6 +383,7 @@ func InitAndroidModule(m Module) { &base.nameProperties, &base.commonProperties, &base.variableProperties) + base.generalProperties = m.GetProperties() base.customizableProperties = m.GetProperties() } diff --git a/android/path_properties.go b/android/path_properties.go index 5d8970927..1a12290d3 100644 --- a/android/path_properties.go +++ b/android/path_properties.go @@ -33,7 +33,7 @@ func pathDepsMutator(ctx BottomUpMutatorContext) { return } - props := m.base().customizableProperties + props := m.base().generalProperties for _, ps := range props { pathProperties := pathPropertiesForPropertyStruct(ctx, ps) diff --git a/android/path_properties_test.go b/android/path_properties_test.go index 6471a3cf5..ecc2d2122 100644 --- a/android/path_properties_test.go +++ b/android/path_properties_test.go @@ -25,7 +25,7 @@ type pathDepsMutatorTestModule struct { ModuleBase props struct { Foo string `android:"path"` - Bar []string `android:"path"` + Bar []string `android:"path,arch_variant"` Baz *string `android:"path"` Qux string } @@ -36,7 +36,7 @@ type pathDepsMutatorTestModule struct { func pathDepsMutatorTestModuleFactory() Module { module := &pathDepsMutatorTestModule{} module.AddProperties(&module.props) - InitAndroidModule(module) + InitAndroidArchModule(module, DeviceSupported, MultilibBoth) return module } @@ -64,6 +64,23 @@ func TestPathDepsMutator(t *testing.T) { }`, deps: []string{"a", "b", "c"}, }, + { + name: "arch variant", + bp: ` + test { + name: "foo", + arch: { + arm64: { + bar: [":a"], + }, + arm: { + bar: [":b"], + }, + }, + bar: [":c"], + }`, + deps: []string{"c", "a"}, + }, } buildDir, err := ioutil.TempDir("", "soong_path_properties_test") @@ -74,8 +91,8 @@ func TestPathDepsMutator(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { - config := TestConfig(buildDir, nil) - ctx := NewTestContext() + config := TestArchConfig(buildDir, nil) + ctx := NewTestArchContext() ctx.RegisterModuleType("test", ModuleFactoryAdaptor(pathDepsMutatorTestModuleFactory)) ctx.RegisterModuleType("filegroup", ModuleFactoryAdaptor(FileGroupFactory)) @@ -110,7 +127,7 @@ func TestPathDepsMutator(t *testing.T) { _, errs = ctx.PrepareBuildActions(config) FailIfErrored(t, errs) - m := ctx.ModuleForTests("foo", "").Module().(*pathDepsMutatorTestModule) + m := ctx.ModuleForTests("foo", "android_arm64_armv8-a").Module().(*pathDepsMutatorTestModule) if g, w := m.sourceDeps, test.deps; !reflect.DeepEqual(g, w) { t.Errorf("want deps %q, got %q", w, g) |