diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2024-03-28 13:57:18 -0700 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2024-03-29 13:06:54 -0700 |
commit | 2f8d51c833546b048f453947278fe03f33b26e59 (patch) | |
tree | 0e0ff5cd80519de6d294f1e72b452947981b0cd7 /mesonbuild/backend | |
parent | 3e9021a4c421d88501ee04aaaebb0e03f1f05540 (diff) | |
download | meson-2f8d51c833546b048f453947278fe03f33b26e59.zip meson-2f8d51c833546b048f453947278fe03f33b26e59.tar.gz meson-2f8d51c833546b048f453947278fe03f33b26e59.tar.bz2 |
backend/ninja: don't rewrite the pickle data if it hasn't changed
Which prevents spurious rebuilds of dyndeps
Diffstat (limited to 'mesonbuild/backend')
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 462ea27..a2e7c2b 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -1103,8 +1103,16 @@ class NinjaBackend(backends.Backend): scaninfo = TargetDependencyScannerInfo( self.get_target_private_dir(target), source2object, scan_sources) - with open(pickle_abs, 'wb') as p: - pickle.dump(scaninfo, p) + + write = True + if os.path.exists(pickle_abs): + with open(pickle_abs, 'rb') as p: + old = pickle.load(p) + write = old != scaninfo + + if write: + with open(pickle_abs, 'wb') as p: + pickle.dump(scaninfo, p) elem = NinjaBuildElement(self.all_outputs, depscan_file, rule_name, pickle_file) # Add any generated outputs to the order deps of the scan target, so |