diff options
author | Robert Yang <liezhi.yang@windriver.com> | 2018-04-17 14:44:50 +0800 |
---|---|---|
committer | Paul Eggleton <paul.eggleton@linux.intel.com> | 2018-04-24 10:12:27 +1200 |
commit | f4f2146370992fecf668ecce749b9a6c98794402 (patch) | |
tree | 0cf526fe56ed3e2516b7a264372f9b641218a3b4 /layerindex | |
parent | 611c96883c35240d3c291951146154d828745774 (diff) | |
download | openembedded-core-contrib-f4f2146370992fecf668ecce749b9a6c98794402.tar.gz |
update: fix dependency processing
The previous commit broke the layer order, e.g.:
A -> B -> C -> D
The algorithm is checking the dependencies one by one, and until we find D, add
D to layerquery_sorted, and add it "collections", the one in "collections"
means it's dependencies are OK, then C, B and A will check against collections,
so that update_layer.py will update them one by one. The previous commit added
A/B/C/D to collections directly, so that when check against it, all the
dependencies are met, thus broke the layer sorting, and then there would be
failures if we pass layer A to update_layer.py before B, C and D (suppose they
are newly to database). This commit fix the problem.
BTW., why I use collections to record the one whose dependencies are matched,
but not directly use layerquery_sorted, it is because collections contains both
the ones to be added/updated and the ones in database, but layerquery_sorted
only contains the ones to be updated/added.
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Diffstat (limited to 'layerindex')
-rwxr-xr-x | layerindex/update.py | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/layerindex/update.py b/layerindex/update.py index f60b943cb2..07240abfb8 100755 --- a/layerindex/update.py +++ b/layerindex/update.py @@ -348,12 +348,11 @@ def main(): deps = re.search("^LAYERDEPENDS = \"(.*)\"", output, re.M).group(1) or '' recs = re.search("^LAYERRECOMMENDS = \"(.*)\"", output, re.M).group(1) or '' - collections.add((col, ver)) - deps_dict = utils.explode_dep_versions2(bitbakepath, deps + ' ' + recs) if len(deps_dict) == 0: # No depends, add it firstly layerquery_sorted.append(layer) + collections.add((col, ver)) continue deps_dict_all[layer] = {'requires': deps_dict, 'collection': col, 'version': ver} @@ -374,6 +373,7 @@ def main(): # All the depends are in collections: del(deps_dict_all[layer]) layerquery_sorted.append(layer) + collections.add((value['collection'], value['version'])) if not len(deps_dict_all): break |