Convert imageMutator to TransitionMutator

Replace android.imageMutator with a TransitionMutator

Test: diff out/soong/Android-<product>.mk
Bug: 319288033
Change-Id: Id6a50a2aacb32ecfadf7e45ada4956e85b55fef2
This commit is contained in:
Jihoon Kang
2024-07-31 18:37:49 +00:00
parent 0cdc351829
commit 5402bbd8d7
2 changed files with 30 additions and 18 deletions

View File

@@ -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)
}
}

View File

@@ -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()
}