From 3640ea4c0d1e47c672cae94d3f3efe63a845d0ae Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Fri, 17 Aug 2018 22:42:26 +0200 Subject: build: don't clobber rust depfile mtime when fixing its paths This avoids ninja unnecessarily rebuilding rust targets. Add a check for problems like these to be run on appveyor. --- tools/run_rustc.py | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'tools/run_rustc.py') diff --git a/tools/run_rustc.py b/tools/run_rustc.py index 81841eff9..f56ca8eb8 100644 --- a/tools/run_rustc.py +++ b/tools/run_rustc.py @@ -14,6 +14,9 @@ import util # Updates the path of the main target in the depfile to the relative path # from base_path build_output_path def fix_depfile(depfile_path, base_path, build_output_path): + # It's important that the fixed-up depfile has the same mtime as before. + # Ninja relies on it to decide whether to rebuild the target it belongs to. + stat = os.stat(depfile_path) with open(depfile_path, "r") as depfile: content = depfile.read() content_split = content.split(': ', 1) @@ -21,6 +24,7 @@ def fix_depfile(depfile_path, base_path, build_output_path): new_content = "%s: %s" % (target_path, content_split[1]) with open(depfile_path, "w") as depfile: depfile.write(new_content) + os.utime(depfile_path, (stat.st_atime, stat.st_mtime)) def main(): -- cgit v1.2.3