From a86ea0e0ebddb99a7a6131dae990d14bea38e961 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Tue, 1 Aug 2023 09:57:22 -0700 Subject: [PATCH] Fix missing rust dependencies when ALLOW_MISSING_DEPENDENCIES=true Register a missing dependency when a dependency returns an invalid OptionalPath. Fixes: 294070048 Test: rust_test.go Change-Id: Ibccfc30d59c706308e99f11e372f7c9b60d9dc74 --- rust/rust.go | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/rust/rust.go b/rust/rust.go index 05fceee36..dab35323a 100644 --- a/rust/rust.go +++ b/rust/rust.go @@ -1306,12 +1306,17 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps { } } linkObject := ccDep.OutputFile() - linkPath := linkPathFromFilePath(linkObject.Path()) - if !linkObject.Valid() { - ctx.ModuleErrorf("Invalid output file when adding dep %q to %q", depName, ctx.ModuleName()) + if !ctx.Config().AllowMissingDependencies() { + ctx.ModuleErrorf("Invalid output file when adding dep %q to %q", depName, ctx.ModuleName()) + } else { + ctx.AddMissingDependencies([]string{depName}) + } + return } + linkPath := linkPathFromFilePath(linkObject.Path()) + exportDep := false switch { case cc.IsStaticDepTag(depTag): @@ -1356,6 +1361,14 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps { // Re-get linkObject as ChooseStubOrImpl actually tells us which // object (either from stub or non-stub) to use. linkObject = android.OptionalPathForPath(sharedLibraryInfo.SharedLibrary) + if !linkObject.Valid() { + if !ctx.Config().AllowMissingDependencies() { + ctx.ModuleErrorf("Invalid output file when adding dep %q to %q", depName, ctx.ModuleName()) + } else { + ctx.AddMissingDependencies([]string{depName}) + } + return + } linkPath = linkPathFromFilePath(linkObject.Path()) depPaths.linkDirs = append(depPaths.linkDirs, linkPath)