Add data_native_bins
property to java_test_host
When multiple os/arch variants are supported, java_test_host could not find a matching arch due to java having arch:common, whereas native binaries support a specific architecture. This change adds the property `data_native_bins` in order to support binaries with the appropriate os/arch variants. Test: m FirmwareDtboVerification with data_native_bins Test: forrest Bug: 153848038 Change-Id: I45adebff0fde2811d5ef5620c697b97b768c951f
This commit is contained in:
47
java/java.go
47
java/java.go
@@ -556,7 +556,20 @@ func (j *Module) XrefJavaFiles() android.Paths {
|
||||
}
|
||||
|
||||
func InitJavaModule(module android.DefaultableModule, hod android.HostOrDeviceSupported) {
|
||||
android.InitAndroidArchModule(module, hod, android.MultilibCommon)
|
||||
initJavaModule(module, hod, false)
|
||||
}
|
||||
|
||||
func InitJavaModuleMultiTargets(module android.DefaultableModule, hod android.HostOrDeviceSupported) {
|
||||
initJavaModule(module, hod, true)
|
||||
}
|
||||
|
||||
func initJavaModule(module android.DefaultableModule, hod android.HostOrDeviceSupported, multiTargets bool) {
|
||||
multilib := android.MultilibCommon
|
||||
if multiTargets {
|
||||
android.InitAndroidMultiTargetsArchModule(module, hod, multilib)
|
||||
} else {
|
||||
android.InitAndroidArchModule(module, hod, multilib)
|
||||
}
|
||||
android.InitDefaultableModule(module)
|
||||
}
|
||||
|
||||
@@ -575,6 +588,7 @@ func IsJniDepTag(depTag blueprint.DependencyTag) bool {
|
||||
}
|
||||
|
||||
var (
|
||||
dataNativeBinsTag = dependencyTag{name: "dataNativeBins"}
|
||||
staticLibTag = dependencyTag{name: "staticlib"}
|
||||
libTag = dependencyTag{name: "javalib"}
|
||||
java9LibTag = dependencyTag{name: "java9lib"}
|
||||
@@ -2193,6 +2207,11 @@ type testProperties struct {
|
||||
Test_mainline_modules []string
|
||||
}
|
||||
|
||||
type hostTestProperties struct {
|
||||
// list of native binary modules that should be installed alongside the test
|
||||
Data_native_bins []string `android:"arch_variant"`
|
||||
}
|
||||
|
||||
type testHelperLibraryProperties struct {
|
||||
// list of compatibility suites (for example "cts", "vts") that the module should be
|
||||
// installed into.
|
||||
@@ -2218,6 +2237,12 @@ type Test struct {
|
||||
data android.Paths
|
||||
}
|
||||
|
||||
type TestHost struct {
|
||||
Test
|
||||
|
||||
testHostProperties hostTestProperties
|
||||
}
|
||||
|
||||
type TestHelperLibrary struct {
|
||||
Library
|
||||
|
||||
@@ -2232,11 +2257,26 @@ type JavaTestImport struct {
|
||||
testConfig android.Path
|
||||
}
|
||||
|
||||
func (j *TestHost) DepsMutator(ctx android.BottomUpMutatorContext) {
|
||||
if len(j.testHostProperties.Data_native_bins) > 0 {
|
||||
for _, target := range ctx.MultiTargets() {
|
||||
ctx.AddVariationDependencies(target.Variations(), dataNativeBinsTag, j.testHostProperties.Data_native_bins...)
|
||||
}
|
||||
}
|
||||
|
||||
j.deps(ctx)
|
||||
}
|
||||
|
||||
func (j *Test) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
j.testConfig = tradefed.AutoGenJavaTestConfig(ctx, j.testProperties.Test_config, j.testProperties.Test_config_template,
|
||||
j.testProperties.Test_suites, j.testProperties.Auto_gen_config)
|
||||
|
||||
j.data = android.PathsForModuleSrc(ctx, j.testProperties.Data)
|
||||
|
||||
ctx.VisitDirectDepsWithTag(dataNativeBinsTag, func(dep android.Module) {
|
||||
j.data = append(j.data, android.OutputFileForModule(ctx, dep, ""))
|
||||
})
|
||||
|
||||
j.Library.GenerateAndroidBuildActions(ctx)
|
||||
}
|
||||
|
||||
@@ -2377,14 +2417,15 @@ func JavaTestImportFactory() android.Module {
|
||||
// A java_test_host has a single variant that produces a `.jar` file containing `.class` files that were
|
||||
// compiled against the host bootclasspath.
|
||||
func TestHostFactory() android.Module {
|
||||
module := &Test{}
|
||||
module := &TestHost{}
|
||||
|
||||
module.addHostProperties()
|
||||
module.AddProperties(&module.testProperties)
|
||||
module.AddProperties(&module.testHostProperties)
|
||||
|
||||
module.Module.properties.Installable = proptools.BoolPtr(true)
|
||||
|
||||
InitJavaModule(module, android.HostSupported)
|
||||
InitJavaModuleMultiTargets(module, android.HostSupported)
|
||||
return module
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user