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
This commit is contained in:
Colin Cross 2023-08-01 09:57:22 -07:00
parent 1579a72d78
commit a86ea0e0eb

View file

@ -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)