diff options
author | Colin Cross <ccross@android.com> | 2019-03-29 13:54:39 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2019-04-01 10:43:20 -0700 |
commit | d1c1e6fd6c55f88e1d8322f9db9f99d9a3747ba8 (patch) | |
tree | 9cb5055b6e9867120505d8986b4b65dc16c88438 | |
parent | 65c95ff1fb3e50927f49e0e95c1f980af850f034 (diff) | |
download | build_soong-d1c1e6fd6c55f88e1d8322f9db9f99d9a3747ba8.tar.gz build_soong-d1c1e6fd6c55f88e1d8322f9db9f99d9a3747ba8.tar.bz2 build_soong-d1c1e6fd6c55f88e1d8322f9db9f99d9a3747ba8.zip |
Touch output files in sbox
Some tools used by genrules set the timestamp of the generated file
to an old value. For example, when using tar to extract files it
will set the timestamp of the extracted file to the value stored in
the tar file. This can cause unnecessary rebuilds due to output files
that are older than their inputs. Touch output files in sbox before
moving them into the output location.
Test: m checkbuild && m checkbuild
Change-Id: Idb0e71d2bf0ac3618338371132cc71be74bf9d9d
-rw-r--r-- | cmd/sbox/sbox.go | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/cmd/sbox/sbox.go b/cmd/sbox/sbox.go index 0af18863..4167edb3 100644 --- a/cmd/sbox/sbox.go +++ b/cmd/sbox/sbox.go @@ -24,6 +24,7 @@ import ( "path" "path/filepath" "strings" + "time" ) var ( @@ -265,6 +266,15 @@ func run() error { if err != nil { return err } + + // Update the timestamp of the output file in case the tool wrote an old timestamp (for example, tar can extract + // files with old timestamps). + now := time.Now() + err = os.Chtimes(tempPath, now, now) + if err != nil { + return err + } + err = os.Rename(tempPath, destPath) if err != nil { return err |