[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