diff --git a/spritz/src/etpgui/packages.py b/spritz/src/etpgui/packages.py
index 3f6dcbb2b..ba6baa1f1 100644
--- a/spritz/src/etpgui/packages.py
+++ b/spritz/src/etpgui/packages.py
@@ -74,7 +74,7 @@ class EntropyPackage:
if self.pkgset:
# must be available!
- set_from, set_name, set_deps = EquoConnection.packageSetMatch(self.matched_atom[1:])
+ set_from, set_name, set_deps = EquoConnection.packageSetMatch(self.matched_atom[1:])[0]
self.from_installed = False
self.dbconn = None
self.dummy_type = -2
@@ -274,7 +274,7 @@ class EntropyPackage:
return self.dbconn.retrieveSlot(self.matched_id)
def getDependencies(self):
- if self.pkgset: self.set_matches
+ if self.pkgset: self.set_matches.copy()
return self.dbconn.retrieveDependencies(self.matched_id)
def getDependsFmt(self):
diff --git a/spritz/src/packages.py b/spritz/src/packages.py
index 133181a84..a78c45fbb 100644
--- a/spritz/src/packages.py
+++ b/spritz/src/packages.py
@@ -223,12 +223,34 @@ class EntropyPackages:
objs = self.getPackages("updates") + self.getPackages("available") + self.getPackages('reinstallable')
return [x for x in objs if x.user_unmasked]
+ def _pkg_get_pkgset_matches_installed_matches(self, set_deps):
+ set_matches = []
+ set_installed_matches = []
+ for set_dep in set_deps:
+ if set_dep.startswith(etpConst['packagesetprefix']):
+ set_matches.append((set_dep,None,))
+ set_installed_matches.append((set_dep,None,))
+ else:
+ set_match = self.Entropy.atomMatch(set_dep)
+ if set_match[0] != -1:
+ set_matches.append(set_match)
+ set_installed_match = self.Entropy.clientDbconn.atomMatch(set_dep)
+ if set_match[0] != -1:
+ set_installed_matches.append(set_installed_match)
+ return set_matches,set_installed_matches
+
+ def _pkg_get_pkgset_set_from_desc(self, set_from):
+ my_set_from = _('Set from')
+ set_from_desc = _('Unknown')
+ if set_from in self.Entropy.validRepositories:
+ set_from_desc = etpRepositories[set_from]['description']
+ elif set_from == etpConst['userpackagesetsid']:
+ set_from_desc = _("User configuration")
+ return "%s: %s" % (my_set_from,set_from_desc,)
+
def _pkg_get_pkgsets(self):
gp_call = self.getPackageItem
- cdb_atomMatch = self.Entropy.clientDbconn.atomMatch
- atomMatch = self.Entropy.atomMatch
- valid_repos = self.Entropy.validRepositories
# make sure updates will be marked as such
self.getPackages("updates")
@@ -238,30 +260,28 @@ class EntropyPackages:
self.getPackages("reinstallable")
objects = []
- my_set_from = _('Set from')
- for set_from, set_name, set_deps in self.getPackageSets():
- set_matches = []
- set_installed_matches = []
- for set_dep in set_deps:
- if set_dep.startswith(etpConst['packagesetprefix']):
- set_matches.append((set_dep,None,))
- set_installed_matches.append((set_dep,None,))
- else:
- set_match = atomMatch(set_dep)
- if set_match[0] != -1:
- set_matches.append(set_match)
- set_installed_match =cdb_atomMatch(set_dep)
- if set_match[0] != -1:
- set_installed_matches.append(set_installed_match)
+
+ pkgsets = self.getPackageSets()
+ for set_from, set_name, set_deps in pkgsets:
+
+ set_matches, set_installed_matches = self._pkg_get_pkgset_matches_installed_matches(set_deps)
if not (set_matches and set_installed_matches): continue
- set_from_desc = _('Unknown')
- if set_from in valid_repos:
- set_from_desc = etpRepositories[set_from]['description']
- elif set_from == etpConst['userpackagesetsid']:
- set_from_desc = _("User configuration")
- cat_namedesc = "%s: %s" % (my_set_from,set_from_desc,)
+ cat_namedesc = self._pkg_get_pkgset_set_from_desc(set_from)
set_objects = []
- def fm(match):
+
+ def update_yp(yp):
+ yp.color = SpritzConf.color_install
+ yp.set_cat_namedesc = cat_namedesc
+ yp.set_names.add(set_name)
+ yp.set_from = set_from
+ yp.set_matches = set_matches
+ yp.set_installed_matches = set_installed_matches
+
+ # add myself, to make sure we have an element in cache
+ #yp, new = gp_call("%s%s" % (etpConst['packagesetprefix'],set_name,),True)
+ #update_yp(yp)
+
+ for match in set_matches:
# set dependency
if match[1] == None:
yp, new = gp_call(match[0],True)
@@ -270,17 +290,10 @@ class EntropyPackages:
try:
yp, new = gp_call(match,True)
except exceptionTools.RepositoryError:
- return 0
- yp.color = SpritzConf.color_install
- yp.set_cat_namedesc = cat_namedesc
- yp.set_names.add(set_name)
- yp.set_from = set_from
- yp.set_matches = set_matches
- yp.set_installed_matches = set_installed_matches
- return yp
- set_objects = map(fm,set_matches)
- if int in [type(x) for x in set_objects]: continue
- objects += set_objects
+ continue
+ update_yp(yp)
+ objects.append(yp)
+
return objects
def _pkg_get_fake_updates(self):
diff --git a/spritz/src/views.py b/spritz/src/views.py
index 8fe33bd33..5f937e608 100644
--- a/spritz/src/views.py
+++ b/spritz/src/views.py
@@ -1113,12 +1113,13 @@ class EntropyPackageView:
mydummy = DummyEntropyPackage(namedesc = cat_text, dummy_type = SpritzConf.dummy_category, onlyname = category)
mydummy.color = SpritzConf.color_package_category
if pkgsets:
- j = categories[category][0]
- mydummy.set_from = j.set_from
- mydummy.set_names = j.set_names
- mydummy.set_matches = j.set_matches
- mydummy.set_installed_matches = j.set_installed_matches
+
+ set_from, set_name, set_deps = self.Equo.packageSetMatch(category)[0]
mydummy.set_category = category
+ mydummy.set_from = set_from
+ mydummy.set_matches, mydummy.set_installed_matches = self.etpbase._pkg_get_pkgset_matches_installed_matches(set_deps)
+ mydummy.namedesc = "%s\n%s" % (category,cleanMarkupString(self.etpbase._pkg_get_pkgset_set_from_desc(set_from)),)
+
self.dummyCats[category] = mydummy
parent = self.store.append( None, (mydummy,) )
for po in categories[category]: