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
diff --git a/rust/rust.go b/rust/rust.go
index 05fceee..dab3532 100644
--- a/rust/rust.go
+++ b/rust/rust.go
@@ -1306,12 +1306,17 @@
}
}
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 @@
// 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)