From 018fa4b90f80b6d3c27583af55dd50c35e1a9359 Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Fri, 29 Jul 2016 08:18:07 +0530 Subject: [PATCH] vs: Fix regen_checker by using the correct coredata mtime After c01b183e5, the mtime of coredata.dat is always newer than all the other build files, which made regen_checker think that they always had to be regenerated. Now we set the mtime of the file to a value before the build files are generated and that makes everything behave as it did earlier. --- mesonbuild/environment.py | 3 ++- mesonbuild/mesonmain.py | 9 +++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py index a105cb855..74bf119fc 100644 --- a/mesonbuild/environment.py +++ b/mesonbuild/environment.py @@ -171,9 +171,10 @@ class Environment(): def is_cross_build(self): return self.cross_info is not None - def dump_coredata(self): + def dump_coredata(self, mtime): cdf = os.path.join(self.get_build_dir(), Environment.coredata_file) coredata.save(self.coredata, cdf) + os.utime(cdf, times=(mtime, mtime)) def get_script_dir(self): import mesonbuild.scripts diff --git a/mesonbuild/mesonmain.py b/mesonbuild/mesonmain.py index e61c6025c..e002d9ac3 100644 --- a/mesonbuild/mesonmain.py +++ b/mesonbuild/mesonmain.py @@ -15,7 +15,7 @@ # limitations under the License. import sys, stat, traceback, pickle, argparse -import datetime +import time, datetime import os.path from . import environment, interpreter, mesonlib from . import build @@ -164,6 +164,7 @@ itself as required.''' mlog.log('Build machine cpu family:', mlog.bold(intr.builtin['build_machine'].cpu_family_method([], {}))) mlog.log('Build machine cpu:', mlog.bold(intr.builtin['build_machine'].cpu_method([], {}))) intr.run() + coredata_mtime = time.time() g.generate(intr) g.run_postconf_scripts() dumpfile = os.path.join(env.get_scratch_dir(), 'build.dat') @@ -173,7 +174,11 @@ itself as required.''' # that pops up during generation, post-conf scripts, etc to cause us to # incorrectly signal a successful meson run which will cause an error # about an already-configured build directory when the user tries again. - env.dump_coredata() + # + # However, we set the mtime to an earlier value to ensure that doing an + # mtime comparison between the coredata dump and other build files + # shows the build files to be newer, not older. + env.dump_coredata(coredata_mtime) def run_script_command(args): cmdname = args[0]