# 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/. from __future__ import absolute_import from __future__ import print_function 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:])