diff options
author | Matthias Clasen <mclasen@redhat.com> | 2020-04-06 20:22:01 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-04-06 20:22:01 +0000 |
commit | da6faf321c9df46f78c65b45d7722ac959bb2da2 (patch) | |
tree | d3c3a24b39b3807184b621d6efb546b6662f510d /gdk/broadway | |
parent | c8b791a7631e1ce8244ed207c04361014e6e5006 (diff) | |
parent | eaef24c527833232bd4725789b0f35304de8123b (diff) | |
download | gtk+-da6faf321c9df46f78c65b45d7722ac959bb2da2.tar.gz |
Merge branch 'misc-meson-fixes' into 'master'
Reduce useless relinking on configure and fix check for buildtype arguments
See merge request GNOME/gtk!1614
Diffstat (limited to 'gdk/broadway')
-rw-r--r-- | gdk/broadway/gen-c-array.py | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/gdk/broadway/gen-c-array.py b/gdk/broadway/gen-c-array.py index afffda34e5..a25d2e4159 100644 --- a/gdk/broadway/gen-c-array.py +++ b/gdk/broadway/gen-c-array.py @@ -1,21 +1,43 @@ #!/usr/bin/env python3 +import os import argparse import sys +import filecmp + +def replace_if_changed(new, old): + ''' + Compare contents and only replace if changed to avoid triggering a rebuild. + ''' + try: + changed = not filecmp.cmp(new, old, shallow=False) + except FileNotFoundError: + changed = True + if changed: + os.replace(new, old) + else: + os.remove(new) parser = argparse.ArgumentParser() parser.add_argument('--array-name', help='The name of the array variable') -parser.add_argument('--output', metavar='FILE', help='Output file', - type=argparse.FileType('w'), - default=sys.stdout) +parser.add_argument('--output', metavar='STRING', help='Output filename', + default=None) parser.add_argument('input', metavar='FILE', help='The input file', type=argparse.FileType('r')) args = parser.parse_args() -args.output.write('static const char {}[] = {{\n'.format(args.array_name)) -for line in args.input: - for ch in line: - args.output.write(' 0x{:02x},\n'.format(ord(ch))) +if args.output is None: + output = sys.stdout +else: + output = args.output + '~' + +with open(output, 'w') as f: + f.write('static const char {}[] = {{\n'.format(args.array_name)) + for line in args.input: + for ch in line: + f.write(' 0x{:02x},\n'.format(ord(ch))) + f.write('};') -args.output.write('};') +if args.output is not None: + replace_if_changed(output, args.output) |