From 2530b446569e7dad98186095f749baf4baeaa4aa Mon Sep 17 00:00:00 2001 From: Cole Faust Date: Thu, 13 Jun 2024 16:56:24 -0700 Subject: [PATCH] Only write release config files if they've changed Currently, when you do `m` repeatedly, it does a little bit of rebuilding to copy release config files around. If we change release-config to only rewrite the files if they've changed, we get a proper "ninja: no work to do." message. Bug: 346757289 Test: m repeatedly Change-Id: I9c1f6d34ec20d14b684a0183c5ec457ea92440f9 --- cmd/release_config/release_config_lib/Android.bp | 1 + cmd/release_config/release_config_lib/util.go | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/cmd/release_config/release_config_lib/Android.bp b/cmd/release_config/release_config_lib/Android.bp index 0c67e1106..17251bdba 100644 --- a/cmd/release_config/release_config_lib/Android.bp +++ b/cmd/release_config/release_config_lib/Android.bp @@ -24,6 +24,7 @@ bootstrap_go_package { "golang-protobuf-reflect-protoreflect", "golang-protobuf-runtime-protoimpl", "soong-cmd-release_config-proto", + "blueprint-pathtools", ], srcs: [ "flag_artifact.go", diff --git a/cmd/release_config/release_config_lib/util.go b/cmd/release_config/release_config_lib/util.go index 0a19efe01..9919c7081 100644 --- a/cmd/release_config/release_config_lib/util.go +++ b/cmd/release_config/release_config_lib/util.go @@ -25,6 +25,7 @@ import ( "slices" "strings" + "github.com/google/blueprint/pathtools" "google.golang.org/protobuf/encoding/prototext" "google.golang.org/protobuf/proto" ) @@ -101,7 +102,7 @@ func WriteFormattedMessage(path, format string, message proto.Message) (err erro if err != nil { return err } - return os.WriteFile(path, data, 0644) + return pathtools.WriteFileIfChanged(path, data, 0644) } // Read a message from a file.