[yum-cvs] yum/yum __init__.py, 1.77.2.1, 1.77.2.2 config.py, 1.41.2.2, 1.41.2.3 repos.py, 1.59.2.3, 1.59.2.4

Seth Vidal skvidal at login.linux.duke.edu
Tue Mar 15 06:56:35 UTC 2005


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

Modified Files:
      Tag: yum-2_2_X
	__init__.py config.py repos.py 
Log Message:

backport bugfixes/features:
 - make lockfile local to installroot
 - install by dep (yum install "foo > 1.1")
 - gpgkey has variableReplace() run on it now
 - updated urlgrabber to current
 - repo globbing patch included
 - display obsoletes in transaction list
 - make sure removal deps are listed as deps.



Index: __init__.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/__init__.py,v
retrieving revision 1.77.2.1
retrieving revision 1.77.2.2
diff -u -r1.77.2.1 -r1.77.2.2
--- __init__.py	7 Feb 2005 06:39:20 -0000	1.77.2.1
+++ __init__.py	15 Mar 2005 06:56:32 -0000	1.77.2.2
@@ -307,7 +307,10 @@
         # if we're not root then we don't lock - just return nicely
         if self.conf.getConfigOption('uid') != 0:
             return
-        
+
+        root = self.conf.installroot
+        lockfile = root + '/' + lockfile # lock in the chroot
+
         mypid=str(os.getpid())    
         while not self._lock(lockfile, mypid, 0644):
             fd = open(lockfile, 'r')
@@ -336,6 +339,10 @@
         # if we're not root then we don't lock - just return nicely
         if self.conf.getConfigOption('uid') != 0:
             return
+
+        root = self.conf.installroot
+        lockfile = root + '/' + lockfile # lock in the chroot
+
         self._unlock(lockfile)
         
     def _lock(self, filename, contents='', mode=0777):
@@ -1044,7 +1051,8 @@
         """Pass in a generic [build]require string and this function will 
            pass back the best(or first) package it finds providing that dep."""
         
-        flags = {'>':'GT', '<':'LT', '=': 'EQ', '>=':'GE', '<=':'LE'}
+        flags = {'>':'GT', '<':'LT', '=': 'EQ', '==': 'EQ', '>=':'GE', '<=':'LE'}
+
         self.doRepoSetup()
         # parse the string out
         #  either it is 'dep (some operator) e:v-r'
@@ -1058,6 +1066,8 @@
             # not a file dep - look at it for being versioned
             if re.search('[>=<]', depstring):  # versioned
                 depname, flagsymbol, depver = depstring.split()
+                if not flags.has_key(flagsymbol):
+                    raise Errors.YumBaseError, 'No Packages found for %s' % depstring
                 depflags = flags[flagsymbol]
                 
         sack = self.whatProvides(depname, depflags, depver)

Index: config.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/config.py,v
retrieving revision 1.41.2.2
retrieving revision 1.41.2.3
diff -u -r1.41.2.2 -r1.41.2.3
--- config.py	7 Mar 2005 04:49:29 -0000	1.41.2.2
+++ config.py	15 Mar 2005 06:56:32 -0000	1.41.2.3
@@ -421,6 +421,7 @@
         if s not in ('http', 'ftp', 'file', 'https'):
             print 'gpgkey must be ftp, http[s], or file URL, ignoring - %s' % gpgkey
             gpgkey = ''
+    gpgkey = variableReplace(globconfig.yumvar, gpgkey)
     thisrepo.set('gpgkey', gpgkey)
 
 

Index: repos.py
===================================================================
RCS file: /home/groups/yum/cvs/yum/yum/repos.py,v
retrieving revision 1.59.2.3
retrieving revision 1.59.2.4
diff -u -r1.59.2.3 -r1.59.2.4
--- repos.py	7 Mar 2005 06:28:19 -0000	1.59.2.3
+++ repos.py	15 Mar 2005 06:56:33 -0000	1.59.2.4
@@ -21,6 +21,8 @@
 import types
 import re
 import urlparse
+import fnmatch
+
 
 import Errors
 from urlgrabber.grabber import URLGrabber
@@ -32,6 +34,9 @@
 from packages import YumAvailablePackage
 import mdcache
 
+_is_fnmatch_pattern = re.compile(r"[*?[]").search
+
+
 class YumPackageSack(packageSack.PackageSack):
     """imports/handles package objects from an mdcache dict object"""
     def __init__(self, packageClass):
@@ -122,15 +127,42 @@
             raise Errors.RepoError, \
                 'Error getting repository data for %s, repository not found' % (repoid)
 
+    def findRepos(self,pattern):
+        """find all repositories matching fnmatch `pattern`"""
+
+        result = []
+        match = re.compile(fnmatch.translate(pattern)).match
+
+        for name,repo in self.repos.items():
+            if match(name):
+                result.append(repo)
+        return result
+
+
     def disableRepo(self, repoid):
-        """disable a repository from use"""
-        thisrepo = self.getRepo(repoid)
-        thisrepo.disable()
-            
+        """disable a repository from use
+
+        fnmatch wildcards may be used to disable a group of repositories.
+        """
+        if _is_fnmatch_pattern(repoid):
+            for repo in self.findRepos(repoid):
+                repo.disable()
+        else:
+            thisrepo = self.getRepo(repoid)
+            thisrepo.disable()
+
     def enableRepo(self, repoid):
-        """disable a repository from use"""
-        thisrepo = self.getRepo(repoid)
-        thisrepo.enable()
+        """enable a repository for use
+
+        fnmatch wildcards may be used to enable a group of repositories.
+        """
+        if _is_fnmatch_pattern(repoid):
+            repos = self.findRepos(repoid)
+            for repo in self.findRepos(repoid):
+                repo.enable()
+        else:
+            thisrepo = self.getRepo(repoid)
+            thisrepo.enable()
             
     def listEnabled(self):
         """return list of enabled repo objects"""




More information about the Yum-cvs-commits mailing list