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

Commit 5402bbd8 authored by Jihoon Kang's avatar Jihoon Kang
Browse files

Convert imageMutator to TransitionMutator

Replace android.imageMutator with a TransitionMutator

Test: diff out/soong/Android-<product>.mk
Bug: 319288033
Change-Id: Id6a50a2aacb32ecfadf7e45ada4956e85b55fef2
parent 0cdc3518
Loading
Loading
Loading
Loading
+29 −17
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@

package android

// ImageInterface is implemented by modules that need to be split by the imageMutator.
// ImageInterface is implemented by modules that need to be split by the imageTransitionMutator.
type ImageInterface interface {
	// ImageMutatorBegin is called before any other method in the ImageInterface.
	ImageMutatorBegin(ctx BaseModuleContext)
@@ -81,18 +81,16 @@ const (
	DebugRamdiskVariation string = "debug_ramdisk"
)

// imageMutator creates variants for modules that implement the ImageInterface that
// imageTransitionMutator creates variants for modules that implement the ImageInterface that
// allow them to build differently for each partition (recovery, core, vendor, etc.).
func imageMutator(ctx BottomUpMutatorContext) {
	if ctx.Os() != Android {
		return
	}

	if m, ok := ctx.Module().(ImageInterface); ok {
		m.ImageMutatorBegin(ctx)
type imageTransitionMutator struct{}

func (imageTransitionMutator) Split(ctx BaseModuleContext) []string {
	var variations []string

	if m, ok := ctx.Module().(ImageInterface); ctx.Os() == Android && ok {
		m.ImageMutatorBegin(ctx)

		if m.CoreVariantNeeded(ctx) {
			variations = append(variations, CoreVariation)
		}
@@ -117,15 +115,29 @@ func imageMutator(ctx BottomUpMutatorContext) {

		extraVariations := m.ExtraImageVariations(ctx)
		variations = append(variations, extraVariations...)
	}

	if len(variations) == 0 {
			return
		variations = append(variations, "")
	}

		mod := ctx.CreateVariations(variations...)
		for i, v := range variations {
			mod[i].base().setImageVariation(v)
			mod[i].(ImageInterface).SetImageVariation(ctx, v)
	return variations
}

func (imageTransitionMutator) OutgoingTransition(ctx OutgoingTransitionContext, sourceVariation string) string {
	return sourceVariation
}

func (imageTransitionMutator) IncomingTransition(ctx IncomingTransitionContext, incomingVariation string) string {
	if _, ok := ctx.Module().(ImageInterface); ctx.Os() != Android || !ok {
		return CoreVariation
	}
	return incomingVariation
}

func (imageTransitionMutator) Mutate(ctx BottomUpMutatorContext, variation string) {
	ctx.Module().base().setImageVariation(variation)
	if m, ok := ctx.Module().(ImageInterface); ok {
		m.SetImageVariation(ctx, variation)
	}
}
+1 −1
Original line number Diff line number Diff line
@@ -149,7 +149,7 @@ var preArch = []RegisterMutatorFunc{

func registerArchMutator(ctx RegisterMutatorsContext) {
	ctx.BottomUpBlueprint("os", osMutator).Parallel()
	ctx.BottomUp("image", imageMutator).Parallel()
	ctx.Transition("image", &imageTransitionMutator{})
	ctx.BottomUpBlueprint("arch", archMutator).Parallel()
}