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

Commit 12206326 authored by Paul Duffin's avatar Paul Duffin Committed by Gerrit Code Review
Browse files

Merge changes I16389102,I105f4fba

* changes:
  Extract logic to gather deps added for <apex>:<module> pairs
  Treat "apex" system_ext the same as platform
parents a4a930fe 9bacf565
Loading
Loading
Loading
Loading
+23 −5
Original line number Original line Diff line number Diff line
@@ -69,13 +69,15 @@ func addDependencyOntoApexVariants(ctx android.BottomUpMutatorContext, propertyN
// addDependencyOntoApexModulePair adds a dependency onto the specified APEX specific variant or the
// addDependencyOntoApexModulePair adds a dependency onto the specified APEX specific variant or the
// specified module.
// specified module.
//
//
// If apex="platform" then this adds a dependency onto the platform variant of the module. This adds
// If apex="platform" or "system_ext" then this adds a dependency onto the platform variant of the
// dependencies onto the prebuilt and source modules with the specified name, depending on which
// module. This adds dependencies onto the prebuilt and source modules with the specified name,
// ones are available. Visiting must use isActiveModule to select the preferred module when both
// depending on which ones are available. Visiting must use isActiveModule to select the preferred
// source and prebuilt modules are available.
// module when both source and prebuilt modules are available.
//
// Use gatherApexModulePairDepsWithTag to retrieve the dependencies.
func addDependencyOntoApexModulePair(ctx android.BottomUpMutatorContext, apex string, name string, tag blueprint.DependencyTag) {
func addDependencyOntoApexModulePair(ctx android.BottomUpMutatorContext, apex string, name string, tag blueprint.DependencyTag) {
	var variations []blueprint.Variation
	var variations []blueprint.Variation
	if apex != "platform" {
	if apex != "platform" && apex != "system_ext" {
		// Pick the correct apex variant.
		// Pick the correct apex variant.
		variations = []blueprint.Variation{
		variations = []blueprint.Variation{
			{Mutator: "apex", Variation: apex},
			{Mutator: "apex", Variation: apex},
@@ -118,12 +120,28 @@ func reportMissingVariationDependency(ctx android.BottomUpMutatorContext, variat
	ctx.AddFarVariationDependencies(variations, nil, name)
	ctx.AddFarVariationDependencies(variations, nil, name)
}
}


// gatherApexModulePairDepsWithTag returns the list of dependencies with the supplied tag that was
// added by addDependencyOntoApexModulePair.
func gatherApexModulePairDepsWithTag(ctx android.BaseModuleContext, tag blueprint.DependencyTag) []android.Module {
	var modules []android.Module
	ctx.VisitDirectDepsIf(isActiveModule, func(module android.Module) {
		t := ctx.OtherModuleDependencyTag(module)
		if t == tag {
			modules = append(modules, module)
		}
	})
	return modules
}

// ApexVariantReference specifies a particular apex variant of a module.
// ApexVariantReference specifies a particular apex variant of a module.
type ApexVariantReference struct {
type ApexVariantReference struct {
	// The name of the module apex variant, i.e. the apex containing the module variant.
	// The name of the module apex variant, i.e. the apex containing the module variant.
	//
	//
	// If this is not specified then it defaults to "platform" which will cause a dependency to be
	// If this is not specified then it defaults to "platform" which will cause a dependency to be
	// added to the module's platform variant.
	// added to the module's platform variant.
	//
	// A value of system_ext should be used for any module that will be part of the system_ext
	// partition.
	Apex *string
	Apex *string


	// The name of the module.
	// The name of the module.
+1 −1
Original line number Original line Diff line number Diff line
@@ -186,7 +186,7 @@ func isModuleInConfiguredList(ctx android.BaseModuleContext, module android.Modu


	// Now match the apex part of the boot image configuration.
	// Now match the apex part of the boot image configuration.
	requiredApex := configuredBootJars.Apex(index)
	requiredApex := configuredBootJars.Apex(index)
	if requiredApex == "platform" {
	if requiredApex == "platform" || requiredApex == "system_ext" {
		if len(apexInfo.InApexes) != 0 {
		if len(apexInfo.InApexes) != 0 {
			// A platform variant is required but this is for an apex so ignore it.
			// A platform variant is required but this is for an apex so ignore it.
			return false
			return false
+2 −8
Original line number Original line Diff line number Diff line
@@ -152,14 +152,8 @@ func addDependenciesOntoBootImageModules(ctx android.BottomUpMutatorContext, mod
func (b *platformBootclasspathModule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
func (b *platformBootclasspathModule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
	b.classpathFragmentBase().generateAndroidBuildActions(ctx)
	b.classpathFragmentBase().generateAndroidBuildActions(ctx)


	ctx.VisitDirectDepsIf(isActiveModule, func(module android.Module) {
	b.configuredModules = gatherApexModulePairDepsWithTag(ctx, platformBootclasspathModuleDepTag)
		tag := ctx.OtherModuleDependencyTag(module)
	b.fragments = gatherApexModulePairDepsWithTag(ctx, bootclasspathFragmentDepTag)
		if tag == platformBootclasspathModuleDepTag {
			b.configuredModules = append(b.configuredModules, module)
		} else if tag == bootclasspathFragmentDepTag {
			b.fragments = append(b.fragments, module)
		}
	})


	b.generateHiddenAPIBuildActions(ctx, b.configuredModules, b.fragments)
	b.generateHiddenAPIBuildActions(ctx, b.configuredModules, b.fragments)


+2 −1
Original line number Original line Diff line number Diff line
@@ -33,7 +33,7 @@ var prepareForTestWithPlatformBootclasspath = android.GroupFixturePreparers(
func TestPlatformBootclasspath(t *testing.T) {
func TestPlatformBootclasspath(t *testing.T) {
	preparer := android.GroupFixturePreparers(
	preparer := android.GroupFixturePreparers(
		prepareForTestWithPlatformBootclasspath,
		prepareForTestWithPlatformBootclasspath,
		FixtureConfigureBootJars("platform:foo", "platform:bar"),
		FixtureConfigureBootJars("platform:foo", "system_ext:bar"),
		android.FixtureWithRootAndroidBp(`
		android.FixtureWithRootAndroidBp(`
			platform_bootclasspath {
			platform_bootclasspath {
				name: "platform-bootclasspath",
				name: "platform-bootclasspath",
@@ -45,6 +45,7 @@ func TestPlatformBootclasspath(t *testing.T) {
				system_modules: "none",
				system_modules: "none",
				sdk_version: "none",
				sdk_version: "none",
				compile_dex: true,
				compile_dex: true,
				system_ext_specific: true,
			}
			}
		`),
		`),
	)
	)