[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