From 5c2e554853b9758eb6e7db5567c6f52003d7467d Mon Sep 17 00:00:00 2001 From: Rhody Lugo Date: Thu, 1 Mar 2018 23:43:15 -0400 Subject: [PATCH] prune cache only at the start and end of build (cherry picked from commit 29e6ec659405521c3ae0e2fe86098c45933fd2dc) --- SConstruct | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/SConstruct b/SConstruct index 63229410f3c..d01ccb8597a 100644 --- a/SConstruct +++ b/SConstruct @@ -498,7 +498,6 @@ screen = sys.stdout node_count = 0 node_count_max = 0 node_count_interval = 1 -node_pruning = 8 # Number of nodes to process before prunning the cache if ('env' in locals()): node_count_fname = str(env.Dir('#')) + '/.scons_node_count' # Progress reporting is not available in non-TTY environments since it @@ -513,17 +512,15 @@ import time, math class cache_progress: # The default is 1 GB cache and 12 hours half life def __init__(self, path = None, limit = 1073741824, half_life = 43200): - global node_pruning self.path = path self.limit = limit self.exponent_scale = math.log(2) / half_life if env['verbose'] and path != None: screen.write('Current cache limit is ' + self.convert_size(limit) + ' (used: ' + self.convert_size(self.get_size(path)) + ')\n') - self.pruning = node_pruning self.delete(self.file_list()) def __call__(self, node, *args, **kw): - global node_count, node_count_max, node_count_interval, node_count_fname, node_pruning, show_progress + global node_count, node_count_max, node_count_interval, node_count_fname, show_progress if show_progress: # Print the progress percentage node_count += node_count_interval @@ -536,11 +533,6 @@ class cache_progress: else: screen.write('\r[Initial build] ') screen.flush() - # Prune if the number of nodes processed is 'node_pruning' or bigger - self.pruning -= node_count_interval - if self.pruning <= 0: - self.pruning = node_pruning - self.delete(self.file_list()) def delete(self, files): if len(files) == 0: @@ -548,7 +540,7 @@ class cache_progress: if env['verbose']: # Utter something screen.write('\rPurging %d %s from cache...\n' % (len(files), len(files) > 1 and 'files' or 'file')) - map(os.remove, files) + [os.remove(f) for f in files] def file_list(self): if self.path == None: