Create image variations for sh_binary

AddFarVariationDependencies was broken, which allowed apex modules
to depend on sh_binary even though they were requesting an image
variation and sh_binary did not have one.  Create image variations
for sh_binary.

Test: TestApexWithShBinary
Change-Id: I1ff35ea9967edafbb7812a5e56667e4385af7e2f
This commit is contained in:
Colin Cross 2020-08-21 14:25:33 -07:00
parent ec7a91f9fa
commit cc83efbb18
1 changed files with 29 additions and 0 deletions

View File

@ -64,6 +64,12 @@ type shBinaryProperties struct {
// install symlinks to the binary // install symlinks to the binary
Symlinks []string `android:"arch_variant"` Symlinks []string `android:"arch_variant"`
// Make this module available when building for ramdisk.
Ramdisk_available *bool
// Make this module available when building for recovery.
Recovery_available *bool
} }
type TestProperties struct { type TestProperties struct {
@ -158,6 +164,29 @@ func (s *ShBinary) Symlinks() []string {
return s.properties.Symlinks return s.properties.Symlinks
} }
var _ android.ImageInterface = (*ShBinary)(nil)
func (s *ShBinary) ImageMutatorBegin(ctx android.BaseModuleContext) {}
func (s *ShBinary) CoreVariantNeeded(ctx android.BaseModuleContext) bool {
return !s.ModuleBase.InstallInRecovery() && !s.ModuleBase.InstallInRamdisk()
}
func (s *ShBinary) RamdiskVariantNeeded(ctx android.BaseModuleContext) bool {
return proptools.Bool(s.properties.Ramdisk_available) || s.ModuleBase.InstallInRamdisk()
}
func (s *ShBinary) RecoveryVariantNeeded(ctx android.BaseModuleContext) bool {
return proptools.Bool(s.properties.Recovery_available) || s.ModuleBase.InstallInRecovery()
}
func (s *ShBinary) ExtraImageVariations(ctx android.BaseModuleContext) []string {
return nil
}
func (s *ShBinary) SetImageVariation(ctx android.BaseModuleContext, variation string, module android.Module) {
}
func (s *ShBinary) generateAndroidBuildActions(ctx android.ModuleContext) { func (s *ShBinary) generateAndroidBuildActions(ctx android.ModuleContext) {
s.sourceFilePath = android.PathForModuleSrc(ctx, proptools.String(s.properties.Src)) s.sourceFilePath = android.PathForModuleSrc(ctx, proptools.String(s.properties.Src))
filename := proptools.String(s.properties.Filename) filename := proptools.String(s.properties.Filename)