Add device_first_vendor(_shared)_data
There are some host tests in internal that rely on the vendor variation
of other modules, that they include in their `data` property.
Add explicit properties for these dependencies so that they don't rely
on the 1-variant fallback.
Bug: 372091092
Test: m nothing
Change-Id: I51a50db2a06fdd3f885ac21f3ad3ce15386feb53
diff --git a/android/path_properties.go b/android/path_properties.go
index b4fabeb..a79b5a2 100644
--- a/android/path_properties.go
+++ b/android/path_properties.go
@@ -52,12 +52,16 @@
var pathProperties []string
var pathDeviceFirstProperties []string
var pathDeviceFirstPrefer32Properties []string
+ var pathDeviceFirstVendorProperties []string
+ var pathDeviceFirstVendorSharedProperties []string
var pathDeviceCommonProperties []string
var pathCommonOsProperties []string
for _, ps := range props {
pathProperties = append(pathProperties, taggedPropertiesForPropertyStruct(ctx, ps, "path")...)
pathDeviceFirstProperties = append(pathDeviceFirstProperties, taggedPropertiesForPropertyStruct(ctx, ps, "path_device_first")...)
pathDeviceFirstPrefer32Properties = append(pathDeviceFirstPrefer32Properties, taggedPropertiesForPropertyStruct(ctx, ps, "path_device_first_prefer32")...)
+ pathDeviceFirstVendorProperties = append(pathDeviceFirstVendorProperties, taggedPropertiesForPropertyStruct(ctx, ps, "path_device_first_vendor")...)
+ pathDeviceFirstVendorSharedProperties = append(pathDeviceFirstVendorSharedProperties, taggedPropertiesForPropertyStruct(ctx, ps, "path_device_first_vendor_shared")...)
pathDeviceCommonProperties = append(pathDeviceCommonProperties, taggedPropertiesForPropertyStruct(ctx, ps, "path_device_common")...)
pathCommonOsProperties = append(pathCommonOsProperties, taggedPropertiesForPropertyStruct(ctx, ps, "path_common_os")...)
}
@@ -66,6 +70,8 @@
pathProperties = FirstUniqueStrings(pathProperties)
pathDeviceFirstProperties = FirstUniqueStrings(pathDeviceFirstProperties)
pathDeviceFirstPrefer32Properties = FirstUniqueStrings(pathDeviceFirstPrefer32Properties)
+ pathDeviceFirstVendorProperties = FirstUniqueStrings(pathDeviceFirstVendorProperties)
+ pathDeviceFirstVendorSharedProperties = FirstUniqueStrings(pathDeviceFirstVendorSharedProperties)
pathDeviceCommonProperties = FirstUniqueStrings(pathDeviceCommonProperties)
pathCommonOsProperties = FirstUniqueStrings(pathCommonOsProperties)
@@ -97,6 +103,23 @@
}
}
}
+ // path_device_first_vendor is path_device_first + vendor variation
+ deviceFirstVendorVariations := ctx.Config().AndroidFirstDeviceTarget.Variations()
+ deviceFirstVendorVariations = append(deviceFirstVendorVariations,
+ blueprint.Variation{Mutator: "image", Variation: "vendor"})
+ for _, s := range pathDeviceFirstVendorProperties {
+ if m, t := SrcIsModuleWithTag(s); m != "" {
+ ctx.AddVariationDependencies(deviceFirstVendorVariations, sourceOrOutputDepTag(m, t), m)
+ }
+ }
+ // path_device_first_vendor_shared is path_device_first_vendor + shared linkage variation
+ deviceFirstVendorSharedVariations := append(deviceFirstVendorVariations,
+ blueprint.Variation{Mutator: "link", Variation: "shared"})
+ for _, s := range pathDeviceFirstVendorSharedProperties {
+ if m, t := SrcIsModuleWithTag(s); m != "" {
+ ctx.AddVariationDependencies(deviceFirstVendorSharedVariations, sourceOrOutputDepTag(m, t), m)
+ }
+ }
// properties tagged "path_device_common" get the device common variant
for _, s := range pathDeviceCommonProperties {
if m, t := SrcIsModuleWithTag(s); m != "" {
diff --git a/java/app.go b/java/app.go
index e01a2ba..fed971a 100644
--- a/java/app.go
+++ b/java/app.go
@@ -1442,6 +1442,8 @@
a.data = append(a.data, android.PathsForModuleSrc(ctx, a.testProperties.Device_common_data)...)
a.data = append(a.data, android.PathsForModuleSrc(ctx, a.testProperties.Device_first_data)...)
a.data = append(a.data, android.PathsForModuleSrc(ctx, a.testProperties.Device_first_prefer32_data)...)
+ a.data = append(a.data, android.PathsForModuleSrc(ctx, a.testProperties.Device_first_vendor_data)...)
+ a.data = append(a.data, android.PathsForModuleSrc(ctx, a.testProperties.Device_first_vendor_shared_data)...)
android.SetProvider(ctx, tradefed.BaseTestProviderKey, tradefed.BaseTestProviderData{
InstalledFiles: a.data,
OutputFile: a.OutputFile(),
diff --git a/java/java.go b/java/java.go
index f8b781d..4460053 100644
--- a/java/java.go
+++ b/java/java.go
@@ -1301,6 +1301,16 @@
// host test.
Device_first_data []string `android:"path_device_first"`
+ // same as data, but adds dependencies using the device's os variation, the device's first
+ // architecture's variation, and the vendor image variation. Can be used to add a module built
+ // for device to the data of a host test.
+ Device_first_vendor_data []string `android:"path_device_first_vendor"`
+
+ // same as data, but adds dependencies using the device's os variation, the device's first
+ // architecture's variation, the vendor image variation, and the shared linkage variation. Can
+ // be used to add a module built for device to the data of a host test.
+ Device_first_vendor_shared_data []string `android:"path_device_first_vendor_shared"`
+
// same as data, but adds dependencies using the device's os variation and the device's first
// 32-bit architecture's variation. If a 32-bit arch doesn't exist for this device, it will use
// a 64 bit arch instead. Can be used to add a module built for device to the data of a
@@ -1598,6 +1608,8 @@
j.data = append(j.data, android.PathsForModuleSrc(ctx, j.testProperties.Device_common_data)...)
j.data = append(j.data, android.PathsForModuleSrc(ctx, j.testProperties.Device_first_data)...)
j.data = append(j.data, android.PathsForModuleSrc(ctx, j.testProperties.Device_first_prefer32_data)...)
+ j.data = append(j.data, android.PathsForModuleSrc(ctx, j.testProperties.Device_first_vendor_data)...)
+ j.data = append(j.data, android.PathsForModuleSrc(ctx, j.testProperties.Device_first_vendor_shared_data)...)
j.extraTestConfigs = android.PathsForModuleSrc(ctx, j.testProperties.Test_options.Extra_test_configs)
diff --git a/java/robolectric.go b/java/robolectric.go
index 5f46267..37cac2c 100644
--- a/java/robolectric.go
+++ b/java/robolectric.go
@@ -151,6 +151,8 @@
r.data = append(r.data, android.PathsForModuleSrc(ctx, r.testProperties.Device_common_data)...)
r.data = append(r.data, android.PathsForModuleSrc(ctx, r.testProperties.Device_first_data)...)
r.data = append(r.data, android.PathsForModuleSrc(ctx, r.testProperties.Device_first_prefer32_data)...)
+ r.data = append(r.data, android.PathsForModuleSrc(ctx, r.testProperties.Device_first_vendor_data)...)
+ r.data = append(r.data, android.PathsForModuleSrc(ctx, r.testProperties.Device_first_vendor_shared_data)...)
var ok bool
var instrumentedApp *AndroidApp