Add aliases property for renaming Rust dependencies.

This is equivalent to specifying a dependency name different to the
package name in cargo, which some external crates do.

Bug: 308790322
Test: Built libgrpcio with aliases for protobuf
Change-Id: I2801222051fdd962460cc7f4900cec357f63b974
This commit is contained in:
Andrew Walbran
2024-03-19 11:36:04 +00:00
parent 84fedd36a4
commit 52533237ef
3 changed files with 66 additions and 3 deletions

View File

@@ -1142,6 +1142,7 @@ func collectIncludedProtos(mod *Module, dep *Module) {
}
}
}
func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
var depPaths PathDeps
@@ -1433,16 +1434,29 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
mod.transitiveAndroidMkSharedLibs = android.NewDepSet[string](android.PREORDER, directAndroidMkSharedLibs, transitiveAndroidMkSharedLibs)
var rlibDepFiles RustLibraries
aliases := mod.compiler.Aliases()
for _, dep := range directRlibDeps {
rlibDepFiles = append(rlibDepFiles, RustLibrary{Path: dep.UnstrippedOutputFile(), CrateName: dep.CrateName()})
crateName := dep.CrateName()
if alias, aliased := aliases[crateName]; aliased {
crateName = alias
}
rlibDepFiles = append(rlibDepFiles, RustLibrary{Path: dep.UnstrippedOutputFile(), CrateName: crateName})
}
var dylibDepFiles RustLibraries
for _, dep := range directDylibDeps {
dylibDepFiles = append(dylibDepFiles, RustLibrary{Path: dep.UnstrippedOutputFile(), CrateName: dep.CrateName()})
crateName := dep.CrateName()
if alias, aliased := aliases[crateName]; aliased {
crateName = alias
}
dylibDepFiles = append(dylibDepFiles, RustLibrary{Path: dep.UnstrippedOutputFile(), CrateName: crateName})
}
var procMacroDepFiles RustLibraries
for _, dep := range directProcMacroDeps {
procMacroDepFiles = append(procMacroDepFiles, RustLibrary{Path: dep.UnstrippedOutputFile(), CrateName: dep.CrateName()})
crateName := dep.CrateName()
if alias, aliased := aliases[crateName]; aliased {
crateName = alias
}
procMacroDepFiles = append(procMacroDepFiles, RustLibrary{Path: dep.UnstrippedOutputFile(), CrateName: crateName})
}
var staticLibDepFiles android.Paths