1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/config/rebuild_check.py Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,44 @@ 1.4 +# This Source Code Form is subject to the terms of the Mozilla Public 1.5 +# License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 +# file, You can obtain one at http://mozilla.org/MPL/2.0/. 1.7 + 1.8 +import os 1.9 +import errno 1.10 + 1.11 +def mtime(path): 1.12 + try: 1.13 + return os.stat(path).st_mtime 1.14 + except OSError as e: 1.15 + if e.errno == errno.ENOENT: 1.16 + return -1 1.17 + raise 1.18 + 1.19 +def rebuild_check(args): 1.20 + target = args[0] 1.21 + deps = args[1:] 1.22 + t = mtime(target) 1.23 + if t < 0: 1.24 + print target 1.25 + return 1.26 + 1.27 + newer = [] 1.28 + removed = [] 1.29 + for dep in deps: 1.30 + deptime = mtime(dep) 1.31 + if deptime < 0: 1.32 + removed.append(dep) 1.33 + elif mtime(dep) > t: 1.34 + newer.append(dep) 1.35 + 1.36 + if newer and removed: 1.37 + print 'Rebuilding %s because %s changed and %s was removed' % (target, ', '.join(newer), ', '.join(removed)) 1.38 + elif newer: 1.39 + print 'Rebuilding %s because %s changed' % (target, ', '.join(newer)) 1.40 + elif removed: 1.41 + print 'Rebuilding %s because %s was removed' % (target, ', '.join(removed)) 1.42 + else: 1.43 + print 'Rebuilding %s for an unknown reason' % target 1.44 + 1.45 +if __name__ == '__main__': 1.46 + import sys 1.47 + rebuild_check(sys.argv[1:])