diff options
-rw-r--r-- | mesonbuild/mconf.py | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/mesonbuild/mconf.py b/mesonbuild/mconf.py index c921409..2ab5f92 100644 --- a/mesonbuild/mconf.py +++ b/mesonbuild/mconf.py @@ -22,6 +22,8 @@ parser = argparse.ArgumentParser() parser.add_argument('-D', action='append', default=[], dest='sets', help='Set an option to the given value.') parser.add_argument('directory', nargs='*') +parser.add_argument('--clearcache', action='store_true', default=False, + help='Clear cached state (e.g. found dependencies)') class ConfException(mesonlib.MesonException): def __init__(self, *args, **kwargs): @@ -42,13 +44,16 @@ class Conf: raise ConfException('Version mismatch (%s vs %s)' % (coredata.version, self.coredata.version)) + def clear_cache(self): + self.coredata.deps = {} + def save(self): # Only called if something has changed so overwrite unconditionally. with open(self.coredata_file, 'wb') as f: pickle.dump(self.coredata, f) # We don't write the build file because any changes to it - # are erased when Meson is executed the nex time, i.e. the next - # time Ninja is run. + # are erased when Meson is executed the next time, i.e. whne + # Ninja is run. def print_aligned(self, arr): if len(arr) == 0: @@ -223,11 +228,17 @@ def run(args): builddir = options.directory[0] try: c = Conf(builddir) + save = False if len(options.sets) > 0: c.set_options(options.sets) - c.save() + save = True + elif options.clearcache: + c.clear_cache() + save = True else: c.print_conf() + if save: + c.save() except ConfException as e: print('Meson configurator encountered an error:\n') print(e) |