From 279dd5e809cd9bb2bcb0693bb6104a191060d4b7 Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Sat, 19 Jul 2014 15:53:43 +0300 Subject: [PATCH] Sort input files so command lines do not change. This allows Ninja to skip unnecessary build steps. --- ninjabackend.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ninjabackend.py b/ninjabackend.py index 7ea73f13b..2eaaaa1e9 100644 --- a/ninjabackend.py +++ b/ninjabackend.py @@ -67,9 +67,11 @@ class NinjaBuildElement(): self.elems.append((name, elems)) def write(self, outfile): - line = 'build %s: %s %s' % (' '.join([ninja_quote(i) for i in self.outfilenames]),\ + # Sort inputs so the command line does not change. + # This allows Ninja to skip unnecessary rebuilds. + line = 'build %s: %s %s' % (' '.join([ninja_quote(i) for i in self.outfilenames]),\ self.rule, - ' '.join([ninja_quote(i) for i in self.infilenames])) + ' '.join([ninja_quote(i) for i in sorted(self.infilenames)])) if len(self.deps) > 0: line += ' | ' + ' '.join([ninja_quote(x) for x in self.deps]) if len(self.orderdeps) > 0: