mirror of
https://github.com/python/cpython.git
synced 2024-11-25 02:44:06 +08:00
b091bec824
* bpo-31536: Avoid wholesale rebuild after `make regen-all` * Add NEWS
29 lines
762 B
Python
29 lines
762 B
Python
"""
|
|
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 <path to be updated> <path with new contents>" % (sys.argv[0],))
|
|
sys.exit(1)
|
|
main(sys.argv[1], sys.argv[2])
|