Skip dexbootjar check using AllowMissingDependencies flag

Soong checks that every module part of a bootclass_fragment provides a
dex boot jar file, even if the module is not a dependency of vendor.img

Using AllowMissingDepdencies() to skip this check allows vendors to be
more aggressive in removing projects from their source tree

Test: In build/soong, run go test ./...
Test: m nothing
Bug: 196306898
Bug: 192616764
Change-Id: I78b062afdc19a6a3251aa8552230f3fcf334b6fb
This commit is contained in:
Spandan Das 2021-08-20 19:18:16 +00:00
parent 7c16dabfa5
commit 10ea4bf9d4
2 changed files with 11 additions and 1 deletions

View file

@ -5090,6 +5090,12 @@ func TestBootDexJarsFromSourcesAndPrebuilts(t *testing.T) {
// find the dex boot jar in it. We either need to disable the source libfoo // find the dex boot jar in it. We either need to disable the source libfoo
// or make the prebuilt libfoo preferred. // or make the prebuilt libfoo preferred.
testDexpreoptWithApexes(t, bp, "module libfoo does not provide a dex boot jar", preparer, fragment) testDexpreoptWithApexes(t, bp, "module libfoo does not provide a dex boot jar", preparer, fragment)
// dexbootjar check is skipped if AllowMissingDependencies is true
preparerAllowMissingDeps := android.GroupFixturePreparers(
preparer,
android.PrepareForTestWithAllowMissingDependencies,
)
testDexpreoptWithApexes(t, bp, "", preparerAllowMissingDeps, fragment)
}) })
t.Run("prebuilt library preferred with source", func(t *testing.T) { t.Run("prebuilt library preferred with source", func(t *testing.T) {

View file

@ -500,7 +500,11 @@ func copyBootJarsToPredefinedLocations(ctx android.ModuleContext, srcBootDexJars
dst := dstBootJarsByModule[name] dst := dstBootJarsByModule[name]
if src == nil { if src == nil {
ctx.ModuleErrorf("module %s does not provide a dex boot jar", name) if !ctx.Config().AllowMissingDependencies() {
ctx.ModuleErrorf("module %s does not provide a dex boot jar", name)
} else {
ctx.AddMissingDependencies([]string{name})
}
} else if dst == nil { } else if dst == nil {
ctx.ModuleErrorf("module %s is not part of the boot configuration", name) ctx.ModuleErrorf("module %s is not part of the boot configuration", name)
} else { } else {