Merge "Do not allow duplicate deapexer dependencies." into sc-dev

This commit is contained in:
Martin Stjernholm 2021-07-12 09:01:43 +00:00 committed by Android (Google) Code Review
commit 8410eb1551
4 changed files with 82 additions and 3 deletions

View File

@ -6568,6 +6568,73 @@ func testDexpreoptWithApexes(t *testing.T, bp, errmsg string, preparer android.F
return result.TestContext return result.TestContext
} }
func TestDuplicateDeapexeresFromPrebuiltApexes(t *testing.T) {
preparers := android.GroupFixturePreparers(
java.PrepareForTestWithJavaDefaultModules,
PrepareForTestWithApexBuildComponents,
).
ExtendWithErrorHandler(android.FixtureExpectsAtLeastOneErrorMatchingPattern(
`Ambiguous duplicate deapexer module dependencies "com.android.myapex.deapexer" and "com.mycompany.android.myapex.deapexer"`))
bpBase := `
apex_set {
name: "com.android.myapex",
exported_bootclasspath_fragments: ["my-bootclasspath-fragment"],
set: "myapex.apks",
}
apex_set {
name: "com.mycompany.android.myapex",
apex_name: "com.android.myapex",
exported_bootclasspath_fragments: ["my-bootclasspath-fragment"],
set: "company-myapex.apks",
}
prebuilt_bootclasspath_fragment {
name: "my-bootclasspath-fragment",
apex_available: ["com.android.myapex"],
%s
}
`
t.Run("java_import", func(t *testing.T) {
_ = preparers.RunTestWithBp(t, fmt.Sprintf(bpBase, `contents: ["libfoo"]`)+`
java_import {
name: "libfoo",
jars: ["libfoo.jar"],
apex_available: ["com.android.myapex"],
}
`)
})
t.Run("java_sdk_library_import", func(t *testing.T) {
_ = preparers.RunTestWithBp(t, fmt.Sprintf(bpBase, `contents: ["libfoo"]`)+`
java_sdk_library_import {
name: "libfoo",
public: {
jars: ["libbar.jar"],
},
apex_available: ["com.android.myapex"],
}
`)
})
t.Run("prebuilt_bootclasspath_fragment", func(t *testing.T) {
_ = preparers.RunTestWithBp(t, fmt.Sprintf(bpBase, `
image_name: "art",
contents: ["libfoo"],
`)+`
java_sdk_library_import {
name: "libfoo",
public: {
jars: ["libbar.jar"],
},
apex_available: ["com.android.myapex"],
}
`)
})
}
func TestUpdatable_should_set_min_sdk_version(t *testing.T) { func TestUpdatable_should_set_min_sdk_version(t *testing.T) {
testApexError(t, `"myapex" .*: updatable: updatable APEXes should set min_sdk_version`, ` testApexError(t, `"myapex" .*: updatable: updatable APEXes should set min_sdk_version`, `
apex { apex {

View File

@ -907,11 +907,15 @@ func (module *prebuiltBootclasspathFragmentModule) produceBootImageFiles(ctx and
} }
var deapexerModule android.Module var deapexerModule android.Module
ctx.VisitDirectDeps(func(module android.Module) { ctx.VisitDirectDeps(func(to android.Module) {
tag := ctx.OtherModuleDependencyTag(module) tag := ctx.OtherModuleDependencyTag(to)
// Save away the `deapexer` module on which this depends, if any. // Save away the `deapexer` module on which this depends, if any.
if tag == android.DeapexerTag { if tag == android.DeapexerTag {
deapexerModule = module if deapexerModule != nil {
ctx.ModuleErrorf("Ambiguous duplicate deapexer module dependencies %q and %q",
deapexerModule.Name(), to.Name())
}
deapexerModule = to
} }
}) })

View File

@ -1283,6 +1283,10 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) {
// Save away the `deapexer` module on which this depends, if any. // Save away the `deapexer` module on which this depends, if any.
if tag == android.DeapexerTag { if tag == android.DeapexerTag {
if deapexerModule != nil {
ctx.ModuleErrorf("Ambiguous duplicate deapexer module dependencies %q and %q",
deapexerModule.Name(), module.Name())
}
deapexerModule = module deapexerModule = module
} }
}) })

View File

@ -2160,6 +2160,10 @@ func (module *SdkLibraryImport) GenerateAndroidBuildActions(ctx android.ModuleCo
// Save away the `deapexer` module on which this depends, if any. // Save away the `deapexer` module on which this depends, if any.
if tag == android.DeapexerTag { if tag == android.DeapexerTag {
if deapexerModule != nil {
ctx.ModuleErrorf("Ambiguous duplicate deapexer module dependencies %q and %q",
deapexerModule.Name(), to.Name())
}
deapexerModule = to deapexerModule = to
} }
}) })