~mmcg069/software-center/sc-janitor

« back to all changes in this revision

Viewing changes to softwarecenter/apt/aptcache.py

  • Committer: Michael Vogt
  • Date: 2010-08-27 13:40:55 UTC
  • mfrom: (1081.1.1 addons-provides)
  • Revision ID: michael.vogt@ubuntu.com-20100827134055-fjg6y4r1sma4lhwo
* merged lp:~ilidrissi.amine/software-center/addons-provides and
  added test
* softwarecenter/apt/aptcache.py: Packages that enhance a package that
  is provided by the main app are now add-ons (LP: #625252)

Show diffs side-by-side

added added

removed removed

Lines of Context:
220
220
    def get_enhances(self, pkg):
221
221
        return self._get_depends_by_type_str(pkg, self.ENHANCES_TYPES)
222
222
    def get_provides(self, pkg):
223
 
        return self._get_depends_by_type_str(pkg, self.PROVIDES_TYPES)
 
223
        provides_list = pkg.candidate._cand.provides_list
 
224
        provides = []
 
225
        for provided in provides_list:
 
226
            provides.append(provided[0]) # the package name
 
227
        return provides
224
228
 
225
229
    # reverse pkg relations
226
230
    def get_rdepends(self, pkg):
231
235
        return self._get_rdepends_by_type(pkg, self.SUGGESTS_TYPES, False)
232
236
    def get_renhances(self, pkg):
233
237
        return self._get_rdepends_by_type(pkg, self.ENHANCES_TYPES, False)
 
238
    def get_renhances_lowlevel_apt_pkg(self, pkg):
 
239
        """ takes a apt_pkg.Package and returns a list of pkgnames that 
 
240
            enhance this package - this is needed to support enhances
 
241
            for virtual packages
 
242
        """
 
243
        renhances = []
 
244
        for dep in pkg.rev_depends_list:
 
245
            if dep.dep_type_untranslated == "Enhances":
 
246
                renhances.append(dep.parent_pkg.name)
 
247
        return renhances
234
248
    def get_rprovides(self, pkg):
235
249
        return self._get_rdepends_by_type(pkg, self.PROVIDES_TYPES, False)
236
250
 
369
383
        renhances = self.get_renhances(pkg)
370
384
        LOG.debug("renhances: %s" % renhances)
371
385
        addons_sug += renhances
 
386
        provides = self.get_provides(pkg)
 
387
        LOG.debug("provides: %s" % provides)
 
388
        for provide in provides:
 
389
            virtual_aptpkg_pkg = self._cache._cache[provide]
 
390
            renhances = self.get_renhances_lowlevel_apt_pkg(virtual_aptpkg_pkg)
 
391
            LOG.debug("renhances of %s: %s" % (provide, renhances))
 
392
            addons_sug += renhances
372
393
 
373
394
        # get more addons, the idea is that if a package foo-data
374
395
        # just depends on foo we want to get the info about