Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 68289b0e authored by Paul Duffin's avatar Paul Duffin
Browse files

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
parent 9f6cbaca
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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")
+1 −1
Original line number Diff line number Diff line
@@ -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{},
		},
		{
+5 −0
Original line number Diff line number Diff line
@@ -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)
}

+7 −1
Original line number Diff line number Diff line
@@ -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)
	}