Move validation from FindDeapexerProviderForModule to rdeps
FindDeapexerProviderForModule raises an exception if multiple apexes in the tree has an export dep on the java module. In prepartation to support multiple prebuilts, move this error check out of FindDeapexerProviderForModule and into rdeps. i.e. raise an exception only if an rdep calls DexJarBuildPath - This should be a no-op for now. - In the short-term future, a java import module will be allowed to have multiple deapexers. An error will be raised if anyone actually tries to depend on the dexjar - In the long-term future, this function will be removed. All processing will be done at the prebuilt apex level and not at the prebuilt java library level Since this check now happens in the moduleCtx of rdeps, add some additional props to unit tests to ensure that it does not exit early on unrelated validation checks (e.g. hidden_api prop is not set) Test: go test ./apex ./java Bug: 308790457 Change-Id: I3323d993c1ea8f43305834cae8e65b6fe41dfefd
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
package android
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/google/blueprint"
|
||||
@@ -146,10 +147,16 @@ type RequiresFilesFromPrebuiltApexTag interface {
|
||||
|
||||
// FindDeapexerProviderForModule searches through the direct dependencies of the current context
|
||||
// module for a DeapexerTag dependency and returns its DeapexerInfo. If a single nonambiguous
|
||||
// deapexer module isn't found then errors are reported with ctx.ModuleErrorf and nil is returned.
|
||||
func FindDeapexerProviderForModule(ctx ModuleContext) *DeapexerInfo {
|
||||
// deapexer module isn't found then it returns it an error
|
||||
// clients should check the value of error and call ctx.ModuleErrof if a non nil error is received
|
||||
func FindDeapexerProviderForModule(ctx ModuleContext) (*DeapexerInfo, error) {
|
||||
var di *DeapexerInfo
|
||||
var err error
|
||||
ctx.VisitDirectDepsWithTag(DeapexerTag, func(m Module) {
|
||||
if err != nil {
|
||||
// An err has been found. Do not visit further.
|
||||
return
|
||||
}
|
||||
c, _ := OtherModuleProvider(ctx, m, DeapexerProvider)
|
||||
p := &c
|
||||
if di != nil {
|
||||
@@ -159,17 +166,18 @@ func FindDeapexerProviderForModule(ctx ModuleContext) *DeapexerInfo {
|
||||
di = selected
|
||||
return
|
||||
}
|
||||
ctx.ModuleErrorf("Multiple installable prebuilt APEXes provide ambiguous deapexers: %s and %s",
|
||||
di.ApexModuleName(), p.ApexModuleName())
|
||||
err = fmt.Errorf("Multiple installable prebuilt APEXes provide ambiguous deapexers: %s and %s", di.ApexModuleName(), p.ApexModuleName())
|
||||
}
|
||||
di = p
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if di != nil {
|
||||
return di
|
||||
return di, nil
|
||||
}
|
||||
ai, _ := ModuleProvider(ctx, ApexInfoProvider)
|
||||
ctx.ModuleErrorf("No prebuilt APEX provides a deapexer module for APEX variant %s", ai.ApexVariationName)
|
||||
return nil
|
||||
return nil, fmt.Errorf("No prebuilt APEX provides a deapexer module for APEX variant %s", ai.ApexVariationName)
|
||||
}
|
||||
|
||||
// removeCompressedApexSuffix removes the _compressed suffix from the name if present.
|
||||
|
Reference in New Issue
Block a user