Loading android/image.go +48 −3 Original line number Diff line number Diff line Loading @@ -98,16 +98,47 @@ const ( DebugRamdiskVariation string = "debug_ramdisk" ) type imageInterfaceContextAdapter struct { IncomingTransitionContext kind moduleKind } var _ ImageInterfaceContext = (*imageInterfaceContextAdapter)(nil) func (e *imageInterfaceContextAdapter) Platform() bool { return e.kind == platformModule } func (e *imageInterfaceContextAdapter) DeviceSpecific() bool { return e.kind == deviceSpecificModule } func (e *imageInterfaceContextAdapter) SocSpecific() bool { return e.kind == socSpecificModule } func (e *imageInterfaceContextAdapter) ProductSpecific() bool { return e.kind == productSpecificModule } func (e *imageInterfaceContextAdapter) SystemExtSpecific() bool { return e.kind == systemExtSpecificModule } func imageMutatorBeginMutator(ctx BottomUpMutatorContext) { if m, ok := ctx.Module().(ImageInterface); ok && ctx.Os() == Android { m.ImageMutatorBegin(ctx) } } // imageTransitionMutator creates variants for modules that implement the ImageInterface that // allow them to build differently for each partition (recovery, core, vendor, etc.). type imageTransitionMutator struct{} func (imageTransitionMutator) Split(ctx BaseModuleContext) []string { func getImageVariations(ctx ImageInterfaceContext) []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) } Loading Loading @@ -141,6 +172,10 @@ func (imageTransitionMutator) Split(ctx BaseModuleContext) []string { return variations } func (imageTransitionMutator) Split(ctx BaseModuleContext) []string { return getImageVariations(ctx) } func (imageTransitionMutator) OutgoingTransition(ctx OutgoingTransitionContext, sourceVariation string) string { return sourceVariation } Loading @@ -149,6 +184,16 @@ func (imageTransitionMutator) IncomingTransition(ctx IncomingTransitionContext, if _, ok := ctx.Module().(ImageInterface); ctx.Os() != Android || !ok { return CoreVariation } variations := getImageVariations(&imageInterfaceContextAdapter{ IncomingTransitionContext: ctx, kind: determineModuleKind(ctx.Module().base(), ctx), }) // If there's only 1 possible variation, use that. This is a holdover from when blueprint, // when adding dependencies, would use the only variant of a module regardless of its variations // if only 1 variant existed. if len(variations) == 1 { return variations[0] } return incomingVariation } Loading android/module.go +1 −1 Original line number Diff line number Diff line Loading @@ -1667,7 +1667,7 @@ func (m *ModuleBase) generateModuleTarget(ctx *moduleContext) { } } func determineModuleKind(m *ModuleBase, ctx blueprint.EarlyModuleContext) moduleKind { func determineModuleKind(m *ModuleBase, ctx ModuleErrorContext) moduleKind { var socSpecific = Bool(m.commonProperties.Vendor) || Bool(m.commonProperties.Proprietary) || Bool(m.commonProperties.Soc_specific) var deviceSpecific = Bool(m.commonProperties.Device_specific) var productSpecific = Bool(m.commonProperties.Product_specific) Loading android/mutator.go +1 −0 Original line number Diff line number Diff line Loading @@ -151,6 +151,7 @@ var preArch = []RegisterMutatorFunc{ func registerArchMutator(ctx RegisterMutatorsContext) { ctx.Transition("os", &osTransitionMutator{}) ctx.BottomUp("image_begin", imageMutatorBeginMutator) ctx.Transition("image", &imageTransitionMutator{}) ctx.Transition("arch", &archTransitionMutator{}) } Loading Loading
android/image.go +48 −3 Original line number Diff line number Diff line Loading @@ -98,16 +98,47 @@ const ( DebugRamdiskVariation string = "debug_ramdisk" ) type imageInterfaceContextAdapter struct { IncomingTransitionContext kind moduleKind } var _ ImageInterfaceContext = (*imageInterfaceContextAdapter)(nil) func (e *imageInterfaceContextAdapter) Platform() bool { return e.kind == platformModule } func (e *imageInterfaceContextAdapter) DeviceSpecific() bool { return e.kind == deviceSpecificModule } func (e *imageInterfaceContextAdapter) SocSpecific() bool { return e.kind == socSpecificModule } func (e *imageInterfaceContextAdapter) ProductSpecific() bool { return e.kind == productSpecificModule } func (e *imageInterfaceContextAdapter) SystemExtSpecific() bool { return e.kind == systemExtSpecificModule } func imageMutatorBeginMutator(ctx BottomUpMutatorContext) { if m, ok := ctx.Module().(ImageInterface); ok && ctx.Os() == Android { m.ImageMutatorBegin(ctx) } } // imageTransitionMutator creates variants for modules that implement the ImageInterface that // allow them to build differently for each partition (recovery, core, vendor, etc.). type imageTransitionMutator struct{} func (imageTransitionMutator) Split(ctx BaseModuleContext) []string { func getImageVariations(ctx ImageInterfaceContext) []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) } Loading Loading @@ -141,6 +172,10 @@ func (imageTransitionMutator) Split(ctx BaseModuleContext) []string { return variations } func (imageTransitionMutator) Split(ctx BaseModuleContext) []string { return getImageVariations(ctx) } func (imageTransitionMutator) OutgoingTransition(ctx OutgoingTransitionContext, sourceVariation string) string { return sourceVariation } Loading @@ -149,6 +184,16 @@ func (imageTransitionMutator) IncomingTransition(ctx IncomingTransitionContext, if _, ok := ctx.Module().(ImageInterface); ctx.Os() != Android || !ok { return CoreVariation } variations := getImageVariations(&imageInterfaceContextAdapter{ IncomingTransitionContext: ctx, kind: determineModuleKind(ctx.Module().base(), ctx), }) // If there's only 1 possible variation, use that. This is a holdover from when blueprint, // when adding dependencies, would use the only variant of a module regardless of its variations // if only 1 variant existed. if len(variations) == 1 { return variations[0] } return incomingVariation } Loading
android/module.go +1 −1 Original line number Diff line number Diff line Loading @@ -1667,7 +1667,7 @@ func (m *ModuleBase) generateModuleTarget(ctx *moduleContext) { } } func determineModuleKind(m *ModuleBase, ctx blueprint.EarlyModuleContext) moduleKind { func determineModuleKind(m *ModuleBase, ctx ModuleErrorContext) moduleKind { var socSpecific = Bool(m.commonProperties.Vendor) || Bool(m.commonProperties.Proprietary) || Bool(m.commonProperties.Soc_specific) var deviceSpecific = Bool(m.commonProperties.Device_specific) var productSpecific = Bool(m.commonProperties.Product_specific) Loading
android/mutator.go +1 −0 Original line number Diff line number Diff line Loading @@ -151,6 +151,7 @@ var preArch = []RegisterMutatorFunc{ func registerArchMutator(ctx RegisterMutatorsContext) { ctx.Transition("os", &osTransitionMutator{}) ctx.BottomUp("image_begin", imageMutatorBeginMutator) ctx.Transition("image", &imageTransitionMutator{}) ctx.Transition("arch", &archTransitionMutator{}) } Loading