diff options
author | Nicolas Dechesne <nicolas.dechesne@linaro.org> | 2020-06-26 14:29:30 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2020-06-28 08:36:00 +0100 |
commit | c0a16eaae08edaa21c551947726b189a1afec1ae (patch) | |
tree | a2920e9064d4256e5cd4fec796553aafdb0205d2 /scripts/lib/checklayer | |
parent | 1db853620440833aa92ac902bb32ce8183709a46 (diff) | |
download | poky-c0a16eaae08edaa21c551947726b189a1afec1ae.tar.gz |
checklayer: parse LAYERDEPENDS with bb.utils.explode_dep_versions2()
LAYERDEPENDS is a string of this format:
"DEPEND1 (optional version) DEPEND2 (optional version) ..."
However when we parse LAYERDEPENDS in _get_layer_collections() we
parse it as a simple string, and if any optional versions are there the
'depends' field is wrong. For example, running yocto-check-layer
might result in such errors:
ERROR: Layer meta-python depends on (>= and isn't found.
ERROR: Layer meta-python depends on 12) and isn't found.
Let's use bb.utils.explode_dep_versions2() to parse LAYERDEPENDS, and
create a string that contains all dependencies, effectively
skipping/ignoring any optional versions.
[YOCTO #13957]
(From OE-Core rev: f81f07afc200fe06c5c06ea81a4f8a3a43436faf)
Signed-off-by: Nicolas Dechesne <nicolas.dechesne@linaro.org>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib/checklayer')
-rw-r--r-- | scripts/lib/checklayer/__init__.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/scripts/lib/checklayer/__init__.py b/scripts/lib/checklayer/__init__.py index 1138000275..f625d59896 100644 --- a/scripts/lib/checklayer/__init__.py +++ b/scripts/lib/checklayer/__init__.py | |||
@@ -59,9 +59,14 @@ def _get_layer_collections(layer_path, lconf=None, data=None): | |||
59 | pattern = ldata.getVar('BBFILE_PATTERN_%s' % name) | 59 | pattern = ldata.getVar('BBFILE_PATTERN_%s' % name) |
60 | depends = ldata.getVar('LAYERDEPENDS_%s' % name) | 60 | depends = ldata.getVar('LAYERDEPENDS_%s' % name) |
61 | compat = ldata.getVar('LAYERSERIES_COMPAT_%s' % name) | 61 | compat = ldata.getVar('LAYERSERIES_COMPAT_%s' % name) |
62 | try: | ||
63 | depDict = bb.utils.explode_dep_versions2(depends or "") | ||
64 | except bb.utils.VersionStringException as vse: | ||
65 | bb.fatal('Error parsing LAYERDEPENDS_%s: %s' % (name, str(vse))) | ||
66 | |||
62 | collections[name]['priority'] = priority | 67 | collections[name]['priority'] = priority |
63 | collections[name]['pattern'] = pattern | 68 | collections[name]['pattern'] = pattern |
64 | collections[name]['depends'] = depends | 69 | collections[name]['depends'] = ' '.join(depDict.keys()) |
65 | collections[name]['compat'] = compat | 70 | collections[name]['compat'] = compat |
66 | 71 | ||
67 | return collections | 72 | return collections |