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