summaryrefslogtreecommitdiffstats
path: root/meta-xilinx-core/lib/oe/data.py
diff options
context:
space:
mode:
Diffstat (limited to 'meta-xilinx-core/lib/oe/data.py')
-rw-r--r--meta-xilinx-core/lib/oe/data.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/meta-xilinx-core/lib/oe/data.py b/meta-xilinx-core/lib/oe/data.py
new file mode 100644
index 00000000..37121cfa
--- /dev/null
+++ b/meta-xilinx-core/lib/oe/data.py
@@ -0,0 +1,53 @@
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)