The previous code didn't work when there is no deps or recs, it would return
immediately without removing the on-existed dependencies, this patch fixes the
problem.

Signed-off-by: Robert Yang <[email protected]>
---
 layerindex/utils.py | 30 +++++++++++++++++++-----------
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/layerindex/utils.py b/layerindex/utils.py
index 9d94015..4b6aeca 100644
--- a/layerindex/utils.py
+++ b/layerindex/utils.py
@@ -109,6 +109,18 @@ def get_dependency_layer(depname, version_str=None, 
logger=None):
 
     return None
 
+def remove_layerdeps(layer_name, need_remove, logger):
+    if need_remove:
+        import settings
+        remove_layer_dependencies = getattr(settings, 
'REMOVE_LAYER_DEPENDENCIES', False)
+        if remove_layer_dependencies:
+            logger.info('Removing obsolete dependencies "%s" for layer %s' % 
(need_remove, layer_name))
+            need_remove.delete()
+        else:
+            logger.warn('Dependencies "%s" are not in %s\'s conf/layer.conf' % 
(need_remove, layer_name))
+            logger.warn('Either set REMOVE_LAYER_DEPENDENCIES to remove them 
from the database, or fix conf/layer.conf')
+
+
 def add_dependencies(layerbranch, config_data, logger=None):
     _add_dependency("LAYERDEPENDS", 'dependency', layerbranch, config_data, 
logger=logger)
 
@@ -124,10 +136,15 @@ def _add_dependency(var, name, layerbranch, config_data, 
logger=None, required=T
     if layerbranch.collection:
         var_name = layerbranch.collection
 
-
     dep_list = config_data.getVar("%s_%s" % (var, var_name), True)
 
+    need_remove = 
LayerDependency.objects.filter(layerbranch=layerbranch).filter(required=required)
+
     if not dep_list:
+        # The need_remove contains all of the deps or recs according to
+        # required is True or False, remove deps or recs immediately if
+        # there are no deps or recs in conf/layer.conf
+        remove_layerdeps(layer_name, need_remove, logger)
         return
 
     try:
@@ -136,7 +153,6 @@ 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_remove = 
LayerDependency.objects.filter(layerbranch=layerbranch).filter(required=required)
     for dep, ver_list in list(dep_dict.items()):
         ver_str = None
         if ver_list:
@@ -177,15 +193,7 @@ def _add_dependency(var, name, layerbranch, config_data, 
logger=None, required=T
         layerdep.required = required
         layerdep.save()
 
-    if need_remove:
-        import settings
-        remove_layer_dependencies = getattr(settings, 
'REMOVE_LAYER_DEPENDENCIES', False)
-        if remove_layer_dependencies:
-            logger.info('Removing obsolete dependencies "%s" for layer %s' % 
(need_remove, layer_name))
-            need_remove.delete()
-        else:
-            logger.warn('Dependencies "%s" are not in %s\'s conf/layer.conf' % 
(need_remove, layer_name))
-            logger.warn('Either set REMOVE_LAYER_DEPENDENCIES to remove them 
from the database, or fix conf/layer.conf')
+        remove_layerdeps(layer_name, need_remove, logger)
 
 def set_layerbranch_collection_version(layerbranch, config_data, logger=None):
     layerbranch.collection = get_layer_var(config_data, 'BBFILE_COLLECTIONS', 
logger)
-- 
2.37.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#58848): https://lists.yoctoproject.org/g/yocto/message/58848
Mute This Topic: https://lists.yoctoproject.org/mt/95800731/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to