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
diff --git a/android/module.go b/android/module.go
index c5252c8..9a69a26 100644
--- a/android/module.go
+++ b/android/module.go
@@ -383,6 +383,7 @@
 		&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 5d89709..1a12290 100644
--- a/android/path_properties.go
+++ b/android/path_properties.go
@@ -33,7 +33,7 @@
 		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 6471a3c..ecc2d21 100644
--- a/android/path_properties_test.go
+++ b/android/path_properties_test.go
@@ -25,7 +25,7 @@
 	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 @@
 func pathDepsMutatorTestModuleFactory() Module {
 	module := &pathDepsMutatorTestModule{}
 	module.AddProperties(&module.props)
-	InitAndroidModule(module)
+	InitAndroidArchModule(module, DeviceSupported, MultilibBoth)
 	return module
 }
 
@@ -64,6 +64,23 @@
 			}`,
 			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 @@
 
 	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 @@
 			_, 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)