Add custom SystemModules to bootclasspath to reduce duplication

Adds a library dependency to each of the dummy system modules created
by testing.go so that any changes in the behavior were detected by
the existing tests which were then fixed.

Bug: 141359858
Test: m checkbuild
Change-Id: Id4442f4aa3931ac93049f3367b96a5b49cc075e1
This commit is contained in:
Paul Duffin 2019-09-20 13:50:52 +01:00
parent 9f6cbaca21
commit 68289b0efd
4 changed files with 21 additions and 2 deletions

View file

@ -535,7 +535,9 @@ func (j *Module) deps(ctx android.BottomUpMutatorContext) {
ctx.PropertyErrorf("sdk_version",
`system_modules is required to be set when sdk_version is "none", did you mean "core_platform"`)
} else if *j.deviceProperties.System_modules != "none" {
// Add the system modules to both the system modules and bootclasspath.
ctx.AddVariationDependencies(nil, systemModulesTag, *j.deviceProperties.System_modules)
ctx.AddVariationDependencies(nil, bootClasspathTag, *j.deviceProperties.System_modules)
}
if ctx.ModuleName() == "android_stubs_current" ||
ctx.ModuleName() == "android_system_stubs_current" ||
@ -848,6 +850,12 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps {
}
default:
switch tag {
case bootClasspathTag:
// If a system modules dependency has been added to the bootclasspath
// then add its libs to the bootclasspath.
sm := module.(*SystemModules)
deps.bootClasspath = append(deps.bootClasspath, sm.headerJars...)
case systemModulesTag:
if deps.systemModules != nil {
panic("Found two system module dependencies")

View file

@ -124,7 +124,7 @@ func TestClasspath(t *testing.T) {
name: "nostdlib system_modules",
properties: `sdk_version: "none", system_modules: "core-platform-api-stubs-system-modules"`,
system: "core-platform-api-stubs-system-modules",
bootclasspath: []string{`""`},
bootclasspath: []string{"core-platform-api-stubs-system-modules-lib"},
classpath: []string{},
},
{

View file

@ -101,6 +101,9 @@ type SystemModules struct {
properties SystemModulesProperties
// The aggregated header jars from all jars specified in the libs property.
// Used when system module is added as a dependency to bootclasspath.
headerJars android.Paths
outputDir android.Path
outputDeps android.Paths
}
@ -118,6 +121,8 @@ func (system *SystemModules) GenerateAndroidBuildActions(ctx android.ModuleConte
jars = append(jars, dep.HeaderJars()...)
})
system.headerJars = jars
system.outputDir, system.outputDeps = TransformJarsToSystemModules(ctx, "java.base", jars)
}

View file

@ -114,7 +114,13 @@ func GatherRequiredDepsForTest() string {
for _, extra := range systemModules {
bp += fmt.Sprintf(`
java_system_modules {
name: "%s",
name: "%[1]s",
libs: ["%[1]s-lib"],
}
java_library {
name: "%[1]s-lib",
sdk_version: "none",
system_modules: "none",
}
`, extra)
}