# This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. import os import errno def mtime(path): try: return os.stat(path).st_mtime except OSError as e: if e.errno == errno.ENOENT: return -1 raise def rebuild_check(args): target = args[0] deps = args[1:] t = mtime(target) if t < 0: print target return newer = [] removed = [] for dep in deps: deptime = mtime(dep) if deptime < 0: removed.append(dep) elif mtime(dep) > t: newer.append(dep) if newer and removed: print 'Rebuilding %s because %s changed and %s was removed' % (target, ', '.join(newer), ', '.join(removed)) elif newer: print 'Rebuilding %s because %s changed' % (target, ', '.join(newer)) elif removed: print 'Rebuilding %s because %s was removed' % (target, ', '.join(removed)) else: print 'Rebuilding %s for an unknown reason' % target if __name__ == '__main__': import sys rebuild_check(sys.argv[1:])