From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- config/rebuild_check.py | 68 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 config/rebuild_check.py (limited to 'config/rebuild_check.py') diff --git a/config/rebuild_check.py b/config/rebuild_check.py new file mode 100644 index 0000000000..a906fdc304 --- /dev/null +++ b/config/rebuild_check.py @@ -0,0 +1,68 @@ +# 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 errno +import os + + +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 deptime > t: + newer.append(dep) + + def format_filelist(filelist): + if not filelist: + return None + + limit = 5 + length = len(filelist) + if length < limit: + return ", ".join(filelist) + + truncated = filelist[:limit] + remaining = length - limit + + return "%s (and %d other files)" % (", ".join(truncated), remaining) + + newer = format_filelist(newer) + removed = format_filelist(removed) + + if newer and removed: + print( + "Rebuilding %s because %s changed and %s was removed" + % (target, newer, removed) + ) + elif newer: + print("Rebuilding %s because %s changed" % (target, newer)) + elif removed: + print("Rebuilding %s because %s was removed" % (target, removed)) + else: + print("Rebuilding %s for an unknown reason" % target) + + +if __name__ == "__main__": + import sys + + rebuild_check(sys.argv[1:]) -- cgit v1.2.3