pungi/pungi-2.11-wildcard-fix.patch

40 lines
1.8 KiB
Diff
Raw Normal View History

diff --git a/src/pypungi/__init__.py b/src/pypungi/__init__.py
index 059b748..337b32a 100644
--- a/src/pypungi/__init__.py
+++ b/src/pypungi/__init__.py
@@ -506,22 +506,22 @@ class Pungi(pypungi.PungiBase):
else:
# nogreedy
for name in searchlist:
- arch = None
- if "." in name:
- name, arch = name.rsplit(".", 1)
+ packages_by_name = {}
+ exactmatched, matched, unmatched = yum.packages.parsePackages(self.ayum.pkgSack.returnPackages(), [name], casematch=1)
+ matches = filter(self._filtersrcdebug, exactmatched + matched)
- pkg_sack = self.ayum.pkgSack.searchNevra(name=name, arch=arch)
- # filter sources out of the package sack
- pkg_sack = [ i for i in pkg_sack if i.arch not in ("src", "nosrc") ]
- pkg_sack = self.excludePackages(pkg_sack)
-
- match = self.ayum._bestPackageFromList(pkg_sack)
- if not match:
+ if not matches:
self.logger.warn('Could not find a match for %s in any configured repo' % name)
continue
- self.ayum.tsInfo.addInstall(match)
- self.logger.info('Found %s.%s' % (match.name, match.arch))
+ for i in matches:
+ packages_by_name.setdefault(i.name, []).append(i)
+
+ for i, pkg_sack in packages_by_name.iteritems():
+ pkg_sack = self.excludePackages(pkg_sack)
+ match = self.ayum._bestPackageFromList(pkg_sack)
+ self.ayum.tsInfo.addInstall(match)
+ self.logger.info('Found %s.%s' % (match.name, match.arch))
if len(self.ayum.tsInfo) == 0:
raise yum.Errors.MiscError, 'No packages found to download.'