def list_packages(self, filters, latest): """ list packages""" try: self.repo.getPackageSack().populate(self.repo, 'metadata', None, 0) except yum.Errors.RepoError as e: if "No more mirrors" in str(e): reqFile = re.search('failure:\s+(.+)\s+from', str(e)).groups()[0] raise ChannelTimeoutException( "Retrieving '%s' failed: File not found in repository '%s'" % (reqFile, self.repo)) else: raise pkglist = ListPackageSack(self.repo.getPackageSack().returnPackages()) self.num_packages = len(pkglist) if latest: pkglist = pkglist.returnNewestByNameArch() pkglist = yum.misc.unique(pkglist) pkglist.sort(self._sort_packages) if not filters: # if there's no include/exclude filter on command line or in database # check repository config file for p in self.repo.includepkgs: filters.append(('+', [p])) for p in self.repo.exclude: filters.append(('-', [p])) filters = self._expand_package_groups(filters) if filters: pkglist = self._filter_packages(pkglist, filters) pkglist = self._get_package_dependencies( self.repo.getPackageSack(), pkglist) # do not pull in dependencies if they're explicitly excluded pkglist = self._filter_packages(pkglist, filters, True) self.num_excluded = self.num_packages - len(pkglist) to_return = [] for pack in pkglist: new_pack = ContentPackage() new_pack.setNVREA(pack.name, pack.version, pack.release, pack.epoch, pack.arch) new_pack.unique_id = pack new_pack.checksum_type = pack.checksums[0][0] if new_pack.checksum_type == 'sha': new_pack.checksum_type = 'sha1' new_pack.checksum = pack.checksums[0][1] for cs in pack.checksums: new_pack.checksums[cs[0]] = cs[1] to_return.append(new_pack) return to_return
def list_packages(self, filters, latest): """ list packages""" self.repo.getPackageSack().populate(self.repo, 'metadata', None, 0) pkglist = ListPackageSack(self.repo.getPackageSack().returnPackages()) self.num_packages = len(pkglist) if latest: pkglist = pkglist.returnNewestByNameArch() pkglist = yum.misc.unique(pkglist) pkglist.sort(self._sort_packages) if not filters: # if there's no include/exclude filter on command line or in database # check repository config file for p in self.repo.includepkgs: filters.append(('+', [p])) for p in self.repo.exclude: filters.append(('-', [p])) filters = self._expand_package_groups(filters) if filters: pkglist = self._filter_packages(pkglist, filters) pkglist = self._get_package_dependencies( self.repo.getPackageSack(), pkglist) # do not pull in dependencies if they're explicitly excluded pkglist = self._filter_packages(pkglist, filters, True) self.num_excluded = self.num_packages - len(pkglist) to_return = [] for pack in pkglist: if pack.arch == 'src': continue new_pack = ContentPackage() new_pack.setNVREA(pack.name, pack.version, pack.release, pack.epoch, pack.arch) new_pack.unique_id = pack new_pack.checksum_type = pack.checksums[0][0] if new_pack.checksum_type == 'sha': new_pack.checksum_type = 'sha1' new_pack.checksum = pack.checksums[0][1] to_return.append(new_pack) return to_return
def list_packages(self, filters, latest): """ list packages""" self.repo.getPackageSack().populate(self.repo, 'metadata', None, 0) pkglist = ListPackageSack(self.repo.getPackageSack().returnPackages()) self.num_packages = len(pkglist) if latest: pkglist = pkglist.returnNewestByNameArch() pkglist = yum.misc.unique(pkglist) pkglist.sort(self._sort_packages) if not filters: # if there's no include/exclude filter on command line or in database # check repository config file for p in self.repo.includepkgs: filters.append(('+', [p])) for p in self.repo.exclude: filters.append(('-', [p])) filters = self._expand_package_groups(filters) if filters: pkglist = self._filter_packages(pkglist, filters) pkglist = self._get_package_dependencies(self.repo.getPackageSack(), pkglist) # do not pull in dependencies if they're explicitly excluded pkglist = self._filter_packages(pkglist, filters, True) self.num_excluded = self.num_packages - len(pkglist) to_return = [] for pack in pkglist: if pack.arch == 'src': continue new_pack = ContentPackage() new_pack.setNVREA(pack.name, pack.version, pack.release, pack.epoch, pack.arch) new_pack.unique_id = pack new_pack.checksum_type = pack.checksums[0][0] if new_pack.checksum_type == 'sha': new_pack.checksum_type = 'sha1' new_pack.checksum = pack.checksums[0][1] to_return.append(new_pack) return to_return