From 2f5ee86efce4cdc7fb64ee8d13e226d3af866dac Mon Sep 17 00:00:00 2001 From: Andrei Litvin Date: Tue, 25 Feb 2025 15:14:17 -0500 Subject: [PATCH] Avoid always re-generating output file in clang coverage driver (#37590) * Do not always overwrite the clang coverage driver. Ninja seems to look at timestamps, so attempt to not change timestamps, so that compiles are not re-run. * Restyled by autopep8 --------- Co-authored-by: Restyled.io --- scripts/build/clang_coverage_wrapper.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/scripts/build/clang_coverage_wrapper.py b/scripts/build/clang_coverage_wrapper.py index a8b2cc98abbfd5..2497951069e6d7 100644 --- a/scripts/build/clang_coverage_wrapper.py +++ b/scripts/build/clang_coverage_wrapper.py @@ -14,6 +14,8 @@ # See the License for the specific language governing permissions and # limitations under the License. import logging +import os +import sys import click import coloredlogs @@ -80,9 +82,16 @@ def main(log_level, no_log_timestamps, output, raw_profile_filename): log_fmt = "%(levelname)-7s %(message)s" coloredlogs.install(level=__LOG_LEVELS__[log_level], fmt=log_fmt) + expected_output = jinja2.Template(_CPP_TEMPLATE).render(raw_profile_filename=raw_profile_filename) + if os.path.exists(output): + with open(output, 'rt') as f: + if f.read() == expected_output: + logging.info("File %s is already as expected. Will not re-write", output) + sys.exit(0) + logging.info("Writing output to %s (profile name: %s)", output, raw_profile_filename) with open(output, "wt") as f: - f.write(jinja2.Template(_CPP_TEMPLATE).render(raw_profile_filename=raw_profile_filename)) + f.write(expected_output) logging.debug("Writing completed")