""" A script that replaces an old file with a new one, only if the contents actually changed. If not, the new file is simply deleted. This avoids wholesale rebuilds when a code (re)generation phase does not actually change the in-tree generated code. """ import os import sys def main(old_path, new_path): with open(old_path, 'rb') as f: old_contents = f.read() with open(new_path, 'rb') as f: new_contents = f.read() if old_contents != new_contents: os.replace(new_path, old_path) else: os.unlink(new_path) if __name__ == '__main__': if len(sys.argv) != 3: print("Usage: %s " % (sys.argv[0],)) sys.exit(1) main(sys.argv[1], sys.argv[2])