123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- # 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:])
|