| #!/usr/bin/env python |
| # |
| # Copyright 2013 The Flutter Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """ Parses manifest file and dumps it to json. |
| """ |
| |
| import argparse |
| import json |
| import os |
| import sys |
| import hashlib |
| |
| def main(): |
| parser = argparse.ArgumentParser() |
| |
| parser.add_argument( |
| '--input', dest='file_path', action='store', required=True) |
| parser.add_argument( |
| '--clang-cpu', dest='clang_cpu', action='store', required=True) |
| |
| args = parser.parse_args() |
| |
| with open(args.file_path) as f: |
| data = json.load(f) |
| |
| output = {} |
| target = args.clang_cpu + '-fuchsia' |
| |
| for d in data: |
| if target in d['target']: |
| for runtime in d['runtime']: |
| # key contains the soname and the cflags used to compile it. |
| # this allows us to distinguish between different sanitizers |
| # and experiments |
| key = runtime['soname'] + ''.join(d['cflags']) |
| md5 = hashlib.md5(key.encode()).hexdigest() |
| hash_key = 'md5_%s' % md5 |
| # Uncomment this line to get the hash keys |
| # print runtime['dist'], d['cflags'], hash_key |
| output[hash_key] = os.path.dirname(runtime['dist']) |
| |
| print(json.dumps(output)) |
| |
| return 0 |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |