[yum-cvs] yum-utils repoquery.py,1.11,1.12
Panu Matilainen
pmatilai at login.linux.duke.edu
Tue Jun 21 19:12:51 UTC 2005
Update of /home/groups/yum/cvs/yum-utils
In directory login:/tmp/cvs-serv20951
Modified Files:
repoquery.py
Log Message:
Repoquery:
- unbreak group queries
- show srpm name with --source like described in help text
- querying the source rpm now happens by specifying .src as package arch
- add support for "envra" query format
Index: repoquery.py
===================================================================
RCS file: /home/groups/yum/cvs/yum-utils/repoquery.py,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- repoquery.py 9 Jun 2005 20:04:50 -0000 1.11
+++ repoquery.py 21 Jun 2005 19:12:49 -0000 1.12
@@ -31,14 +31,17 @@
import yum.Errors
import yum.packages
import repomd.mdErrors
+from rpmUtils.arch import getArchList
-version = "0.0.7"
+version = "0.0.8"
flags = { 'EQ':'=', 'LT':'<', 'LE':'<=', 'GT':'>', 'GE':'>=', 'None':' '}
std_qf = {
'nvr': '%{name}-%{version}-%{release}',
'nevra': '%{name}-%{epoch}:%{version}-%{release}.%{arch}',
+'envra': '%{epoch}:%{name}-%{version}-%{release}.%{arch}',
+'source': '%{sourcerpm}',
'info': """
Name : %{name}
Version : %{version}
@@ -166,6 +169,10 @@
else:
raise queryError("Invalid group query: %s" % method)
+ # XXX temporary hack to make --group -a query work
+ def fmt_queryformat(self):
+ return self.fmt_nevra()
+
def fmt_nevra(self):
return ["%s - %s" % (self.group.id, self.group.name)]
@@ -217,21 +224,11 @@
qpkgs.append(qpkg)
return qpkgs
- def returnItems(self):
- if self.options.group:
- grps = []
- for name in self.groupInfo.grouplist:
- grp = groupQuery(self.groupInfo, name,
- grouppkgs = self.options.grouppkgs)
- grps.append(grp)
- return grps
- else:
- return self.queryPkgFactory(self.pkgSack.returnPackages())
-
def returnNewestByName(self, name):
pkgs = []
try:
- pkgs = self.pkgSack.returnNewestByName(name)
+ exact, match, unmatch = yum.packages.parsePackages(self.pkgSack.returnPackages(), [name], casematch=1)
+ pkgs = exact + match
except repomd.mdErrors.PackageSackError, err:
self.errorlog(0, err)
return self.queryPkgFactory(pkgs)
@@ -244,9 +241,28 @@
self.errorlog(0, "No package provides %s" % depstring)
return self.queryPkgFactory(provider)
+ def returnGroups(self):
+ grps = []
+ for name in self.groupInfo.grouplist:
+ grp = groupQuery(self.groupInfo, name,
+ grouppkgs = self.options.grouppkgs)
+ grps.append(grp)
+ return grps
+
+ def matchGroups(self, items):
+ if not items:
+ return self.returnGroups()
+ grps = []
+ for grp in self.returnGroups():
+ for expr in items:
+ if grp.name == expr or fnmatch.fnmatch("%s" % grp.name, expr):
+ grps.append(grp)
+ return grps
+
+
def matchPkgs(self, items):
if not items:
- return self.returnItems()
+ return self.queryPkgFactory(self.pkgSack.returnPackages())
pkgs = []
notfound = {}
@@ -259,7 +275,11 @@
return self.queryPkgFactory(pkgs)
def runQuery(self, items):
- pkgs = self.matchPkgs(items)
+ if self.options.group:
+ pkgs = self.matchGroups(items)
+ else:
+ pkgs = self.matchPkgs(items)
+
for pkg in pkgs:
for oper in self.pkgops:
try:
@@ -354,7 +374,9 @@
parser.add_option("--location", default=0, action="store_true",
help="show download URL for this package")
parser.add_option("--nevra", default=0, action="store_true",
- help="show name, epoch, version, release, architecture info of package")
+ help="show name-epoch:version-release.architecture info of package")
+ parser.add_option("--envra", default=0, action="store_true",
+ help="show epoch:name-version-release.architecture info of package")
parser.add_option("--nvr", default=0, action="store_true",
help="show name, version, release info of package")
parser.add_option("-s", "--source", default=0, action="store_true",
@@ -414,10 +436,12 @@
pkgops.append("list")
if opts.info:
pkgops.append("info")
+ if opts.envra:
+ pkgops.append("envra")
if opts.nvr:
pkgops.append("nvr")
if opts.source:
- archlist = ['src']
+ pkgops.append("source")
if opts.whatrequires:
sackops.append("whatrequires")
if opts.whatprovides:
@@ -450,6 +474,12 @@
repo.enable()
repoq.doRepoSetup()
+
+ for exp in regexs:
+ if exp.endswith('.src'):
+ archlist = getArchList()
+ archlist.append('src')
+ break
try:
repoq.doSackSetup(archlist=archlist)
More information about the Yum-cvs-commits
mailing list