[yum-cvs] yum/yum __init__.py,1.144,1.145 sqlitesack.py,1.24,1.25

Seth Vidal skvidal at login.linux.duke.edu
Mon Nov 7 06:55:22 UTC 2005


Update of /home/groups/yum/cvs/yum/yum
In directory login:/tmp/cvs-serv18765

Modified Files:
	__init__.py sqlitesack.py 
Log Message:

- initial implementation of yum.install()
- make sqlitesack's searchNevra() ignore args that are None - works more
like the repomd searchNevra()


Index: __init__.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/__init__.py,v
retrieving revision 1.144
retrieving revision 1.145
diff -u -r1.144 -r1.145
--- __init__.py	7 Nov 2005 05:10:32 -0000	1.144
+++ __init__.py	7 Nov 2005 06:55:19 -0000	1.145
@@ -1480,14 +1480,40 @@
         return results
 
     def install(self, po=None, **kwargs):
-        """try to mark for install the input
-         - input can be a pkg object or string"""
-        # convert 'input'
-        # try to install 'best version of input'
-        # if nothing can be installed raise an exception
-        # if any pkgs can be installed then return a list of the
-        # transaction members for those.
-        pass
+        """try to mark for install the item specified. Uses provided package 
+           object, if available. If not it uses the kwargs and gets the best
+           package from the keyword options provided"""
+        
+        results = []
+        if po:
+            txmbr = self.tsInfo.addInstall(po)
+            results.append(txmbr)
+            
+        else:
+            if not hasattr(self, 'pkgSack'):
+                self.doRepoSetup()
+                self.doSackSetup()
+            # keys we care about:
+            name = epoch = arch = version = release = None
+            try: name = kwargs['name']
+            except KeyError: pass
+            try: epoch = kwargs['epoch']
+            except KeyError: pass
+            try: arch = kwargs['arch']
+            except KeyError: pass
+            try: version = kwargs['version']
+            except KeyError: pass
+            try: release = kwargs['release']
+            except KeyError: pass
+
+            pkgs = self.pkgSack.searchNevra(name=name, epoch=epoch, arch=arch,
+                    ver=version, rel=release)
+            if pkgs:
+                po = self.bestPackageFromList(pkgs)
+                txmbr = self.tsInfo.addInstall(po)
+                results.append(txmbr)
+        
+        return results
     
     def update(self, input):
         """try to find and mark for update the input

Index: sqlitesack.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/sqlitesack.py,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- sqlitesack.py	24 Oct 2005 16:01:47 -0000	1.24
+++ sqlitesack.py	7 Nov 2005 06:55:19 -0000	1.25
@@ -450,10 +450,30 @@
     def searchNevra(self, name=None, epoch=None, ver=None, rel=None, arch=None):        
         """return list of pkgobjects matching the nevra requested"""
         returnList = []
-        # Search all repositories
+        
+        # make sure some dumbass didn't pass us NOTHING to search on
+        empty = True
+        for arg in (name, epoch, ver, rel, arch):
+            if arg:
+                empty = False
+        if empty:
+            return returnList
+        
+        # make up our execute string
+        q = "select * from packages WHERE"
+        for (col, var) in [('name', name), ('epoch', epoch), ('ver', ver),
+                           ('arch', arch), ('rel', rel)]:
+            if var:
+                if q[-5:] != 'WHERE':
+                    q = q + ' AND %s = "%s"' % (col, var)
+                else:
+                    q = q + ' %s = "%s"' % (col, var)
+            
+        # Search all repositories            
         for (rep,cache) in self.primarydb.items():
             cur = cache.cursor()
-            cur.execute("select * from packages WHERE name = %s AND epoch = %s AND version = %s AND release = %s AND arch = %s" , (name,epoch,ver,rel,arch))
+            #cur.execute("select * from packages WHERE name = %s AND epoch = %s AND version = %s AND release = %s AND arch = %s" , (name,epoch,ver,rel,arch))
+            cur.execute(q)
             for x in cur.fetchall():
                 if (self.excludes[rep].has_key(x.pkgId)):
                     continue




More information about the Yum-cvs-commits mailing list