[yocto] [PATCH V4 03/10] utils.py: remove obsolete dependencies
Robert Yang
liezhi.yang at windriver.com
Thu Jun 22 03:47:31 PDT 2017
On 06/21/2017 05:06 PM, Paul Eggleton wrote:
> On Tuesday, 13 June 2017 4:36:44 AM CEST Robert Yang wrote:
>> Fixed:
>> - set LAYERDEPENDS_openembedded-layer = "core"
>> - $ "update.py -l meta-oe -b master"
>> Check from web, its dependency is "openembedded-core"
>> - Change LAYERDEPENDS_openembedded-layer = "foo"
>> - Run "update.py -l meta-oe -b master"
>> Check from web, its dependency is "openembedded-core and foo", this is
>> wrong, it should be "foo" only, this patch can fix the problem.
>>
>> And also the existing checking should filter(required=required),
>> otherwise it can't work well when a layer is in both depends and
>> recommends, this can't happen in a normal case, but it would surprise the
>> user when this happens.
>>
>> Signed-off-by: Robert Yang <liezhi.yang at windriver.com>
>> ---
>> layerindex/utils.py | 13 ++++++++++++-
>> 1 file changed, 12 insertions(+), 1 deletion(-)
>>
>> diff --git a/layerindex/utils.py b/layerindex/utils.py
>> index 442b121..b7165d0 100644
>> --- a/layerindex/utils.py
>> +++ b/layerindex/utils.py
>> @@ -88,6 +88,7 @@ def _add_dependency(var, name, layerbranch, config_data,
> logger=None, required=T
>> logger.debug('Error parsing %s_%s for %s\n%s' % (var, var_name,
> layer_name, str(vse)))
>> return
>>
>> + need_delete = None
>> for dep, ver_list in list(dep_dict.items()):
>> ver_str = None
>> if ver_list:
>> @@ -106,8 +107,14 @@ def _add_dependency(var, name, layerbranch,
> config_data, logger=None, required=T
>> logger.error('Cannot resolve %s %s (version %s) for %s' %
> (name, dep, ver_str, layer_name))
>> continue
>>
>> + # Preparing to remove obsolete ones
>> + if not need_delete:
>> + need_delete =
> LayerDependency.objects.filter(layerbranch=layerbranch).filter(required=required).exclude(dependency=dep_layer)
>> + else:
>> + need_delete = need_delete.exclude(dependency=dep_layer)
>> +
>> # Skip existing entries.
>> - existing =
> list(LayerDependency.objects.filter(layerbranch=layerbranch).filter(dependency=dep_layer))
>> + existing =
> list(LayerDependency.objects.filter(layerbranch=layerbranch).filter(required=required).filter(dependency=dep_layer))
>> if existing:
>> logger.debug('Skipping %s - already a dependency for %s' %
> (dep, layer_name))
>> continue
>> @@ -121,6 +128,10 @@ def _add_dependency(var, name, layerbranch,
> config_data, logger=None, required=T
>> layerdep.required = required
>> layerdep.save()
>>
>> + if need_delete:
>> + logger.debug("Removing obsolete dependencies: %s" % need_delete)
>> + need_delete.delete()
>> +
>> def set_layerbranch_collection_version(layerbranch, config_data,
> logger=None):
>> layerbranch.collection = config_data.getVar('BBFILE_COLLECTIONS', True)
>> ver_str = "LAYERVERSION_"
>
> So I do see the need to clear out old dependency values when your list of
> dependencies is coming entirely from LAYERDEPENDS, however if you have only
> manually added dependencies and LAYERDEPENDS is not complete (as is often the
> case in the OE layer index), will this automatically remove those? If so I
The dependencies will be removed if it is not in conf/layer.conf.
> think we're going to have to come up with some mechanism to avoid that.
> Probably the easiest one would be to avoid touching the dependencies unless
> LAYERDEPENDS actually changes. Of course if that means we're going to store
> the previous LAYERDEPENDS value somewhere to compare to, we'd need to avoid it
> triggering initially when none of those values are set.
Why not fix conf/layer.conf rather than fix it from database ? If
conf/layer.conf is wrong, we would meet problems elsewhere. The database
should obey local.conf when mismatches, otherwise, this would confuse
users a lot when they want to update LAYERDEPENDS.
I'm glad to fix oe-classic's LAYERDEPENDS issues if they are wrong.
// Robert
>
> Cheers,
> Paul
>
More information about the yocto
mailing list