Merge "Do not allow duplicate deapexer dependencies." into sc-dev
This commit is contained in:
commit
8410eb1551
|
@ -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 {
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue