diff options
author | Eric Engestrom <eric.engestrom@intel.com> | 2018-08-14 18:02:04 +0100 |
---|---|---|
committer | Eric Engestrom <eric.engestrom@intel.com> | 2018-08-16 12:33:35 +0100 |
commit | c5dd02287fdfc97c2560a53e909fac8046282a40 (patch) | |
tree | fdd8abcc47514007ad5b081dbf0f31f401ccb74b /bin | |
parent | c2e00f9eeea0185f87ad3076dfd35475d868da21 (diff) |
bin: split `write_if_different()` out
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
Reviewed-by: Dylan Baker <dylan@pnwbakers.com>
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/git_sha1_gen.py | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/bin/git_sha1_gen.py b/bin/git_sha1_gen.py index 0ce839c98b..77c5fa9d29 100755 --- a/bin/git_sha1_gen.py +++ b/bin/git_sha1_gen.py @@ -28,6 +28,18 @@ def get_git_sha1(): git_sha1 = '' return git_sha1 +def write_if_different(contents): + """ + Avoid touching the output file if it doesn't need modifications + Useful to avoid triggering rebuilds when nothing has changed. + """ + if os.path.isfile(args.output): + with open(args.output, 'r') as file: + if file.read() == contents: + return + with open(args.output, 'w') as file: + file.write(contents) + parser = argparse.ArgumentParser() parser.add_argument('--output', help='File to write the #define in', required=True) @@ -39,11 +51,6 @@ if git_sha1: '..', 'src', 'git_sha1.h.in') with open(git_sha1_h_in_path, 'r') as git_sha1_h_in: new_sha1 = git_sha1_h_in.read().replace('@VCS_TAG@', git_sha1) - if os.path.isfile(args.output): - with open(args.output, 'r') as git_sha1_h: - if git_sha1_h.read() == new_sha1: - quit() - with open(args.output, 'w') as git_sha1_h: - git_sha1_h.write(new_sha1) + write_if_different(new_sha1) else: - open(args.output, 'w').close() + write_if_different('') |