1# 2# Copyright OpenEmbedded Contributors 3# 4# SPDX-License-Identifier: GPL-2.0-only 5# 6 7import json 8import oe.maketype 9 10def typed_value(key, d): 11 """Construct a value for the specified metadata variable, using its flags 12 to determine the type and parameters for construction.""" 13 var_type = d.getVarFlag(key, 'type') 14 flags = d.getVarFlags(key) 15 if flags is not None: 16 flags = dict((flag, d.expand(value)) 17 for flag, value in list(flags.items())) 18 else: 19 flags = {} 20 21 try: 22 return oe.maketype.create(d.getVar(key) or '', var_type, **flags) 23 except (TypeError, ValueError) as exc: 24 bb.msg.fatal("Data", "%s: %s" % (key, str(exc))) 25 26def export2json(d, json_file, expand=True, searchString="",replaceString=""): 27 data2export = {} 28 keys2export = [] 29 30 for key in d.keys(): 31 if key.startswith("_"): 32 continue 33 elif key.startswith("BB"): 34 continue 35 elif key.startswith("B_pn"): 36 continue 37 elif key.startswith("do_"): 38 continue 39 elif d.getVarFlag(key, "func"): 40 continue 41 42 keys2export.append(key) 43 44 for key in keys2export: 45 try: 46 data2export[key] = d.getVar(key, expand).replace(searchString,replaceString) 47 except bb.data_smart.ExpansionError: 48 data2export[key] = '' 49 except AttributeError: 50 pass 51 52 with open(json_file, "w") as f: 53 json.dump(data2export, f, skipkeys=True, indent=4, sort_keys=True) 54