Avoid rewriting soong_build outputs if unchanged
This changes bp2build codegen, symlink forest generation, and soong_build so that they do not rewrite output files if the contents are unchanged. Bug: 266983462 Test: m droid Test: canonical_perf.sh benchmarking Test: Manually verified that rerunning analysis did not regenerate out/soong/workspace/prebuilts/sdk/BUILD.bazel unless contents changed Change-Id: I5ec227df7a32b53c7fa0d741fb1403a51931024b
This commit is contained in:
@@ -25,6 +25,7 @@ import (
|
||||
"sync/atomic"
|
||||
|
||||
"android/soong/shared"
|
||||
"github.com/google/blueprint/pathtools"
|
||||
)
|
||||
|
||||
// A tree structure that describes what to do at each directory in the created
|
||||
@@ -116,25 +117,13 @@ func mergeBuildFiles(output string, srcBuildFile string, generatedBuildFile stri
|
||||
generatedBuildFileContent = packageDefaultVisibilityRegex.ReplaceAll(generatedBuildFileContent, []byte{})
|
||||
}
|
||||
|
||||
outFile, err := os.Create(output)
|
||||
if err != nil {
|
||||
return err
|
||||
newContents := generatedBuildFileContent
|
||||
if newContents[len(newContents)-1] != '\n' {
|
||||
newContents = append(newContents, '\n')
|
||||
}
|
||||
newContents = append(newContents, srcBuildFileContent...)
|
||||
|
||||
_, err = outFile.Write(generatedBuildFileContent)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if generatedBuildFileContent[len(generatedBuildFileContent)-1] != '\n' {
|
||||
_, err = outFile.WriteString("\n")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
_, err = outFile.Write(srcBuildFileContent)
|
||||
return err
|
||||
return pathtools.WriteFileIfChanged(output, newContents, 0666)
|
||||
}
|
||||
|
||||
// Calls readdir() and returns it as a map from the basename of the files in dir
|
||||
|
Reference in New Issue
Block a user