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

Commit 3830308f authored by Jiakai Zhang's avatar Jiakai Zhang
Browse files

Generate a boot image extension for mainline BCP jars.

Bug: 269230245
Test: m
Test: atest art_standalone_dexpreopt_tests
Change-Id: I253c30d938eee2cf2549ec2338425d53956e7cbb
parent d49324da
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -293,6 +293,12 @@ func (d *dexpreopter) dexpreopt(ctx android.ModuleContext, dexJarFile android.Wr
	isSystemServerJar := global.AllSystemServerJars(ctx).ContainsJar(moduleName(ctx))

	bootImage := defaultBootImageConfig(ctx)
	// When `global.PreoptWithUpdatableBcp` is true, `bcpForDexpreopt` below includes the mainline
	// boot jars into bootclasspath, so we should include the mainline boot image as well because it's
	// generated from those jars.
	if global.PreoptWithUpdatableBcp {
		bootImage = mainlineBootImageConfig(ctx)
	}
	dexFiles, dexLocations := bcpForDexpreopt(ctx, global.PreoptWithUpdatableBcp)

	targets := ctx.MultiTargets()
+22 −4
Original line number Diff line number Diff line
@@ -44,6 +44,8 @@ var (
	bootImageConfigRawKey  = android.NewOnceKey("bootImageConfigRaw")
	artBootImageName       = "art"
	frameworkBootImageName = "boot"
	mainlineBootImageName  = "mainline"
	bootImageStem          = "boot"
)

func genBootImageConfigRaw(ctx android.PathContext) map[string]*bootImageConfig {
@@ -52,14 +54,16 @@ func genBootImageConfigRaw(ctx android.PathContext) map[string]*bootImageConfig

		artModules := global.ArtApexJars
		frameworkModules := global.BootJars.RemoveList(artModules)
		mainlineBcpModules := global.ApexBootJars
		frameworkSubdir := "system/framework"

		// ART config for the primary boot image in the ART apex.
		// It includes the Core Libraries.
		artCfg := bootImageConfig{
			name:                     artBootImageName,
			stem:                     "boot",
			stem:                     bootImageStem,
			installDirOnHost:         "apex/art_boot_images/javalib",
			installDirOnDevice:       "system/framework",
			installDirOnDevice:       frameworkSubdir,
			profileInstallPathInApex: "etc/boot-image.prof",
			modules:                  artModules,
			preloadedClassesFile:     "art/build/boot/preloaded-classes",
@@ -68,11 +72,10 @@ func genBootImageConfigRaw(ctx android.PathContext) map[string]*bootImageConfig

		// Framework config for the boot image extension.
		// It includes framework libraries and depends on the ART config.
		frameworkSubdir := "system/framework"
		frameworkCfg := bootImageConfig{
			extends:              &artCfg,
			name:                 frameworkBootImageName,
			stem:                 "boot",
			stem:                 bootImageStem,
			installDirOnHost:     frameworkSubdir,
			installDirOnDevice:   frameworkSubdir,
			modules:              frameworkModules,
@@ -80,9 +83,20 @@ func genBootImageConfigRaw(ctx android.PathContext) map[string]*bootImageConfig
			compilerFilter:       "speed-profile",
		}

		mainlineCfg := bootImageConfig{
			extends:            &frameworkCfg,
			name:               mainlineBootImageName,
			stem:               bootImageStem,
			installDirOnHost:   frameworkSubdir,
			installDirOnDevice: frameworkSubdir,
			modules:            mainlineBcpModules,
			compilerFilter:     "verify",
		}

		return map[string]*bootImageConfig{
			artBootImageName:       &artCfg,
			frameworkBootImageName: &frameworkCfg,
			mainlineBootImageName:  &mainlineCfg,
		}
	}).(map[string]*bootImageConfig)
}
@@ -174,6 +188,10 @@ func defaultBootImageConfig(ctx android.PathContext) *bootImageConfig {
	return genBootImageConfigs(ctx)[frameworkBootImageName]
}

func mainlineBootImageConfig(ctx android.PathContext) *bootImageConfig {
	return genBootImageConfigs(ctx)[mainlineBootImageName]
}

// Apex boot config allows to access build/install paths of apex boot jars without going
// through the usual trouble of registering dependencies on those modules and extracting build paths
// from those dependencies.
+2 −0
Original line number Diff line number Diff line
@@ -28,8 +28,10 @@ func TestBootImageConfig(t *testing.T) {

	result := android.GroupFixturePreparers(
		PrepareForBootImageConfigTest,
		PrepareApexBootJarConfigs,
	).RunTest(t)

	CheckArtBootImageConfig(t, result)
	CheckFrameworkBootImageConfig(t, result)
	CheckMainlineBootImageConfig(t, result)
}
+460 −1

File changed.

Preview size limit exceeded, changes collapsed.

+1 −0
Original line number Diff line number Diff line
@@ -414,6 +414,7 @@ func (b *platformBootclasspathModule) generateBootImageBuildActions(ctx android.
	frameworkBootImageConfig := defaultBootImageConfig(ctx)
	bootFrameworkProfileRule(ctx, frameworkBootImageConfig)
	b.generateBootImage(ctx, frameworkBootImageName, platformModules)
	b.generateBootImage(ctx, mainlineBootImageName, apexModules)
	b.copyApexBootJarsForAppsDexpreopt(ctx, apexModules)
	dumpOatRules(ctx, frameworkBootImageConfig)
}
Loading