736a8a8ac7
This is a typical problem with make: we want to trigger rebuilds only if file actually changed, not if its timestamp changed. In this case, it's aggravated by the fact that prj.conf depends on the value of BOARD variable, so we need to do some tricks anyway. We still don't try to detect if just BOARD changed, just try to generate new prj.conf.tmp every time (quick), but do actual replacement of prj.conf only if its content changed.
30 lines
656 B
Python
30 lines
656 B
Python
#!/usr/bin/env python3
|
|
import sys
|
|
import os
|
|
import hashlib
|
|
|
|
|
|
def hash_file(fname):
|
|
if not os.path.exists(fname):
|
|
return b""
|
|
hasher = hashlib.md5()
|
|
with open(fname, "rb") as f:
|
|
hasher.update(f.read())
|
|
return hasher.digest()
|
|
|
|
|
|
old_digest = hash_file(sys.argv[3])
|
|
|
|
with open(sys.argv[3] + ".tmp", "wb") as f:
|
|
f.write(open(sys.argv[1], "rb").read())
|
|
if os.path.exists(sys.argv[2]):
|
|
f.write(open(sys.argv[2], "rb").read())
|
|
|
|
new_digest = hash_file(sys.argv[3] + ".tmp")
|
|
|
|
if new_digest != old_digest:
|
|
print("Replacing")
|
|
os.rename(sys.argv[3] + ".tmp", sys.argv[3])
|
|
else:
|
|
os.remove(sys.argv[3] + ".tmp")
|