diff options
Diffstat (limited to 'meta/classes/toaster.bbclass')
-rw-r--r-- | meta/classes/toaster.bbclass | 68 |
1 files changed, 67 insertions, 1 deletions
diff --git a/meta/classes/toaster.bbclass b/meta/classes/toaster.bbclass index 8dc1663165..ec9b6c58b7 100644 --- a/meta/classes/toaster.bbclass +++ b/meta/classes/toaster.bbclass | |||
@@ -24,7 +24,73 @@ | |||
24 | # | 24 | # |
25 | # | 25 | # |
26 | 26 | ||
27 | # 1. Dump package file info data | 27 | # Find and dump layer info when we got the layers parsed |
28 | |||
29 | |||
30 | |||
31 | python toaster_layerinfo_dumpdata() { | ||
32 | import subprocess | ||
33 | |||
34 | def _get_git_branch(layer_path): | ||
35 | branch = subprocess.Popen("git symbolic-ref HEAD 2>/dev/null ", cwd=layer_path, shell=True, stdout=subprocess.PIPE).communicate()[0] | ||
36 | branch = branch.replace('refs/heads/', '').rstrip() | ||
37 | return branch | ||
38 | |||
39 | def _get_git_revision(layer_path): | ||
40 | revision = subprocess.Popen("git rev-parse HEAD 2>/dev/null ", cwd=layer_path, shell=True, stdout=subprocess.PIPE).communicate()[0].rstrip() | ||
41 | return revision | ||
42 | |||
43 | def _get_url_map_name(layer_name): | ||
44 | """ Some layers have a different name on openembedded.org site, | ||
45 | this method returns the correct name to use in the URL | ||
46 | """ | ||
47 | |||
48 | url_name = layer_name | ||
49 | url_mapping = {'meta': 'openembedded-core'} | ||
50 | |||
51 | for key in url_mapping.keys(): | ||
52 | if key == layer_name: | ||
53 | url_name = url_mapping[key] | ||
54 | |||
55 | return url_name | ||
56 | |||
57 | def _get_layer_version_information(layer_path): | ||
58 | |||
59 | layer_version_info = {} | ||
60 | layer_version_info['branch'] = _get_git_branch(layer_path) | ||
61 | layer_version_info['commit'] = _get_git_revision(layer_path) | ||
62 | layer_version_info['priority'] = 0 | ||
63 | |||
64 | return layer_version_info | ||
65 | |||
66 | |||
67 | def _get_layer_dict(layer_path): | ||
68 | |||
69 | layer_info = {} | ||
70 | layer_name = layer_path.split('/')[-1] | ||
71 | layer_url = 'http://layers.openembedded.org/layerindex/layer/{layer}/' | ||
72 | layer_url_name = _get_url_map_name(layer_name) | ||
73 | |||
74 | layer_info['name'] = layer_name | ||
75 | layer_info['local_path'] = layer_path | ||
76 | layer_info['layer_index_url'] = layer_url.format(layer=layer_url_name) | ||
77 | layer_info['version'] = _get_layer_version_information(layer_path) | ||
78 | |||
79 | return layer_info | ||
80 | |||
81 | |||
82 | bblayers = e.data.getVar("BBLAYERS", True) | ||
83 | |||
84 | llayerinfo = {} | ||
85 | |||
86 | for layer in { l for l in bblayers.strip().split(" ") if len(l) }: | ||
87 | llayerinfo[layer] = _get_layer_dict(layer) | ||
88 | |||
89 | |||
90 | bb.event.fire(bb.event.MetadataEvent("LayerInfo", llayerinfo), e.data) | ||
91 | } | ||
92 | |||
93 | # Dump package file info data | ||
28 | 94 | ||
29 | python toaster_package_dumpdata() { | 95 | python toaster_package_dumpdata() { |
30 | """ | 96 | """ |