| # |
| # SPDX-License-Identifier: GPL-2.0-only |
| # |
| |
| import json |
| import oe.maketype |
| |
| def typed_value(key, d): |
| """Construct a value for the specified metadata variable, using its flags |
| to determine the type and parameters for construction.""" |
| var_type = d.getVarFlag(key, 'type') |
| flags = d.getVarFlags(key) |
| if flags is not None: |
| flags = dict((flag, d.expand(value)) |
| for flag, value in list(flags.items())) |
| else: |
| flags = {} |
| |
| try: |
| return oe.maketype.create(d.getVar(key) or '', var_type, **flags) |
| except (TypeError, ValueError) as exc: |
| bb.msg.fatal("Data", "%s: %s" % (key, str(exc))) |
| |
| def export2json(d, json_file, expand=True, searchString="",replaceString=""): |
| data2export = {} |
| keys2export = [] |
| |
| for key in d.keys(): |
| if key.startswith("_"): |
| continue |
| elif key.startswith("BB"): |
| continue |
| elif key.startswith("B_pn"): |
| continue |
| elif key.startswith("do_"): |
| continue |
| elif d.getVarFlag(key, "func"): |
| continue |
| |
| keys2export.append(key) |
| |
| for key in keys2export: |
| try: |
| data2export[key] = d.getVar(key, expand).replace(searchString,replaceString) |
| except bb.data_smart.ExpansionError: |
| data2export[key] = '' |
| except AttributeError: |
| pass |
| |
| with open(json_file, "w") as f: |
| json.dump(data2export, f, skipkeys=True, indent=4, sort_keys=True) |