ui/crumbs/tasklistmodel: ignore tasks and images when marking dependencies

When calculating what dependencies are affected by the removal of an item
we should ignore images and tasks as they are not constructs which make
sense in the GUI.
E.g: if we don't ignore tasks and remove opkg from an image based on
core-image-minimal the fact that opkg was brought in by task-core results
in task-core and all of the packages it brought in being removed and,
eventually, an empty image.

(Bitbake rev: 205b52bfc7f28af0c50fef1f741fae6af16fb0dc)

Signed-off-by: Joshua Lock <josh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Joshua Lock
2011-07-20 16:44:06 -07:00
committed by Richard Purdie
parent 2bdd51854f
commit e2d2377257

View File

@@ -306,9 +306,16 @@ class TaskListModel(gtk.ListStore):
# Remove all dependent packages, update binb
while it:
path = self.get_path(it)
it = self.iter_next(it)
inc = self[path][self.COL_INC]
deps = self[path][self.COL_DEPS]
binb = self[path][self.COL_BINB]
itype = self[path][self.COL_TYPE]
# We ignore anything that isn't a package
if not itype == "package":
continue
# FIXME: need to ensure partial name matching doesn't happen
if inc and deps.count(name):
@@ -318,8 +325,6 @@ class TaskListModel(gtk.ListStore):
bib = self.find_alt_dependency(name)
self[path][self.COL_BINB] = bib
it = self.iter_next(it)
"""
Remove items from contents if the have an empty COL_BINB (brought in by)
caused by all packages they are a dependency of being removed.
@@ -488,10 +493,18 @@ class TaskListModel(gtk.ListStore):
it = self.contents.get_iter_first()
while it:
if self.contents.get_value(it, self.COL_DEPS).count(pn) != 0:
revdeps.append(self.contents.get_value(it, self.COL_NAME))
name = self.contents.get_value(it, self.COL_NAME)
itype = self.contents.get_value(it, self.COL_TYPE)
deps = self.contents.get_value(it, self.COL_DEPS)
it = self.contents.iter_next(it)
if not itype == 'package':
continue
if deps.count(pn) != 0:
revdeps.append(name)
if pn in revdeps:
revdeps.remove(pn)
return revdeps