Merge "Stop deapexer module type from being treated as a prebuilt" am: b60c5d4e1c am: c33e4c270e

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/1665739

Change-Id: I95d62c3bbed8ac1bf16ef41201fcd35f66dad4bb
This commit is contained in:
Paul Duffin 2021-04-07 20:06:05 +00:00 committed by Automerger Merge Worker
commit fdcb191936
2 changed files with 22 additions and 21 deletions

View file

@ -99,22 +99,24 @@ func (p *Prebuilt) Prefer() bool {
return proptools.Bool(p.properties.Prefer) return proptools.Bool(p.properties.Prefer)
} }
// The below source-related functions and the srcs, src fields are based on an assumption that // SingleSourcePathFromSupplier invokes the supplied supplier for the current module in the
// prebuilt modules have a static source property at the moment. Currently there is only one // supplied context to retrieve a list of file paths, ensures that the returned list of file paths
// exception, android_app_import, which chooses a source file depending on the product's DPI // contains a single value and then assumes that is a module relative file path and converts it to
// preference configs. We'll want to add native support for dynamic source cases if we end up having // a Path accordingly.
// more modules like this. //
func (p *Prebuilt) SingleSourcePath(ctx ModuleContext) Path { // Any issues, such as nil supplier or not exactly one file path will be reported as errors on the
if p.srcsSupplier != nil { // supplied context and this will return nil.
srcs := p.srcsSupplier(ctx, ctx.Module()) func SingleSourcePathFromSupplier(ctx ModuleContext, srcsSupplier PrebuiltSrcsSupplier, srcsPropertyName string) Path {
if srcsSupplier != nil {
srcs := srcsSupplier(ctx, ctx.Module())
if len(srcs) == 0 { if len(srcs) == 0 {
ctx.PropertyErrorf(p.srcsPropertyName, "missing prebuilt source file") ctx.PropertyErrorf(srcsPropertyName, "missing prebuilt source file")
return nil return nil
} }
if len(srcs) > 1 { if len(srcs) > 1 {
ctx.PropertyErrorf(p.srcsPropertyName, "multiple prebuilt source files") ctx.PropertyErrorf(srcsPropertyName, "multiple prebuilt source files")
return nil return nil
} }
@ -128,6 +130,15 @@ func (p *Prebuilt) SingleSourcePath(ctx ModuleContext) Path {
} }
} }
// The below source-related functions and the srcs, src fields are based on an assumption that
// prebuilt modules have a static source property at the moment. Currently there is only one
// exception, android_app_import, which chooses a source file depending on the product's DPI
// preference configs. We'll want to add native support for dynamic source cases if we end up having
// more modules like this.
func (p *Prebuilt) SingleSourcePath(ctx ModuleContext) Path {
return SingleSourcePathFromSupplier(ctx, p.srcsSupplier, p.srcsPropertyName)
}
func (p *Prebuilt) UsePrebuilt() bool { func (p *Prebuilt) UsePrebuilt() bool {
return p.properties.UsePrebuilt return p.properties.UsePrebuilt
} }

View file

@ -51,7 +51,6 @@ type DeapexerProperties struct {
type Deapexer struct { type Deapexer struct {
android.ModuleBase android.ModuleBase
prebuilt android.Prebuilt
properties DeapexerProperties properties DeapexerProperties
apexFileProperties ApexFileProperties apexFileProperties ApexFileProperties
@ -65,19 +64,10 @@ func privateDeapexerFactory() android.Module {
&module.properties, &module.properties,
&module.apexFileProperties, &module.apexFileProperties,
) )
android.InitPrebuiltModuleWithSrcSupplier(module, module.apexFileProperties.prebuiltApexSelector, "src")
android.InitAndroidMultiTargetsArchModule(module, android.DeviceSupported, android.MultilibCommon) android.InitAndroidMultiTargetsArchModule(module, android.DeviceSupported, android.MultilibCommon)
return module return module
} }
func (p *Deapexer) Prebuilt() *android.Prebuilt {
return &p.prebuilt
}
func (p *Deapexer) Name() string {
return p.prebuilt.Name(p.ModuleBase.Name())
}
func (p *Deapexer) DepsMutator(ctx android.BottomUpMutatorContext) { func (p *Deapexer) DepsMutator(ctx android.BottomUpMutatorContext) {
// Add dependencies from the java modules to which this exports files from the `.apex` file onto // Add dependencies from the java modules to which this exports files from the `.apex` file onto
// this module so that they can access the `DeapexerInfo` object that this provides. // this module so that they can access the `DeapexerInfo` object that this provides.
@ -88,7 +78,7 @@ func (p *Deapexer) DepsMutator(ctx android.BottomUpMutatorContext) {
} }
func (p *Deapexer) GenerateAndroidBuildActions(ctx android.ModuleContext) { func (p *Deapexer) GenerateAndroidBuildActions(ctx android.ModuleContext) {
p.inputApex = p.Prebuilt().SingleSourcePath(ctx) p.inputApex = android.SingleSourcePathFromSupplier(ctx, p.apexFileProperties.prebuiltApexSelector, "src")
// Create and remember the directory into which the .apex file's contents will be unpacked. // Create and remember the directory into which the .apex file's contents will be unpacked.
deapexerOutput := android.PathForModuleOut(ctx, "deapexer") deapexerOutput := android.PathForModuleOut(ctx, "deapexer")