Merge "Fix reanalysis after full build" into main am: 05d9069051

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3266058

Change-Id: I5ed2922d4106fd3920e7ac22a5d6391e9752ea63
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Treehugger Robot
2024-09-13 18:00:09 +00:00
committed by Automerger Merge Worker

View File

@@ -96,17 +96,31 @@ func (g *GoBinary) GenerateAndroidBuildActions(ctx android.ModuleContext) {
outputFile := android.PathForArbitraryOutput(ctx, android.Rel(ctx, ctx.Config().OutDir(), g.IntermediateFile())).WithoutRel()
g.outputFile = outputFile
installPath := ctx.InstallFile(android.PathForModuleInstall(ctx, "bin"), ctx.ModuleName(), outputFile)
// Don't create install rules for modules used by bootstrap, the install command line will differ from
// what was used during bootstrap, which will cause ninja to rebuild the module on the next run,
// triggering reanalysis.
if !usedByBootstrap(ctx.ModuleName()) {
installPath := ctx.InstallFile(android.PathForModuleInstall(ctx, "bin"), ctx.ModuleName(), outputFile)
if !ctx.Config().KatiEnabled() || g.ExportedToMake() {
// Modules in an unexported namespace have no install rule, only add modules in the exported namespaces
// to the blueprint_tools phony rules.
ctx.Phony("blueprint_tools", installPath)
if !ctx.Config().KatiEnabled() || g.ExportedToMake() {
ctx.Phony("blueprint_tools", installPath)
}
}
ctx.SetOutputFiles(android.Paths{outputFile}, "")
}
func usedByBootstrap(name string) bool {
switch name {
case "loadplugins", "soong_build":
return true
default:
return false
}
}
func (g *GoBinary) HostToolPath() android.OptionalPath {
return android.OptionalPathForPath(g.outputFile)
}