rebuild-scripts bumpspecfile.py,1.2,1.3

Michael Schwendt (mschwendt) fedora-extras-commits at redhat.com
Sat Feb 23 00:43:35 UTC 2008


Author: mschwendt

Update of /cvs/fedora/rebuild-scripts
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv18846

Modified Files:
	bumpspecfile.py 
Log Message:
- add support for Fedora jpackage release versions (i.e. bump the number
  after the "jpp"
- add a fallback for unsupported/unrecognised release strings (i.e.
  try to bump the least-significant number at the very right or add .1)
- remove the Fedora Extras EXIT_ON_WARN flag
- shorten a few functions



Index: bumpspecfile.py
===================================================================
RCS file: /cvs/fedora/rebuild-scripts/bumpspecfile.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- bumpspecfile.py	11 Feb 2008 18:21:12 -0000	1.2
+++ bumpspecfile.py	23 Feb 2008 00:43:35 -0000	1.3
@@ -6,7 +6,8 @@
 import time
 from optparse import OptionParser
 
-EXIT_ON_WARN = False
+class BumpSpecError(Exception):
+    pass
 
 class SpecFile:
     def __init__(self, filename):
@@ -45,38 +46,73 @@
     def increaseMain(self, release):
         relre = re.compile(r'(?P<pre>0\.)?(?P<rel>\d+)(?P<post>.*)', re.I)
         relmatch = relre.search(release)
-        
-        pre = relmatch.group('pre')
+        pre = relmatch.group('pre') or ''
         value = int(relmatch.group('rel'))
         post = relmatch.group('post')
 
-        old = ''
-        if pre != None:
-            old += pre
+        old = pre
         old += relmatch.group('rel')+post
         
-        if pre == None:
+        if pre == '':
             if post.find('rc')>=0:
-                print 'CRUCIAL WARNING: Bad pre-release versioning scheme!'
+                print 'WARNING: Bad pre-release versioning scheme!'
                 print self.filename
-                if EXIT_ON_WARN:
-                    sys.exit(errno.EIO)
+                raise BumpSpecError
             new = `value+1`+post
             if True or post != '%{?dist}' and len(post):
                 self.debugdiff(old, new)
         else:
             if value == None or value > 10000:
-                print 'CRUCIAL WARNING: Bad pre-release versioning scheme!'
+                print 'WARNING: Bad pre-release versioning scheme!'
                 print self.filename
-                if EXIT_ON_WARN:
-                    sys.exit(errno.EIO)
+                raise BumpSpecError
             new = '0.'+`value+1`+post
             self.debugdiff(old, new)
         return new
 
+    def increaseJPP(self, release):
+        """Fedora jpackage release versioning scheme"""
+        old = release
+        relre = re.compile(r'(?P<pre>0\.)?(?P<rel>\d+)(?P<jpp>jpp\.)(?P<post>.*)', re.I)
+        relmatch = relre.search(release)
+        
+        pre = relmatch.group('pre') or ''
+        value = int(relmatch.group('rel'))
+        jpp = relmatch.group('jpp')
+        post = relmatch.group('post')
+
+        newpost = self.increaseMain(post)
+        new = pre+str(value)+jpp+newpost
+        self.debugdiff(old, new)
+        return new
+
+    def increaseFallback(self, release):
+        """bump at the very-right or add .1 as a last resort"""
+        old = release
+        relre = re.compile(r'(?P<prefix>.+\.)(?P<post>\d+$)', re.I)
+        relmatch = relre.search(release)
+        if relmatch:
+            prefix = relmatch.group('prefix')
+            post = relmatch.group('post')
+            new = prefix+self.increaseMain(post)
+        else:
+            new = old+'.1'
+        self.debugdiff(old, new)
+        return new
+
+    def increaseSafe(self, release):
+        if release.find('jpp')>0:
+            new = self.increaseJPP(release)
+        else:
+            new = self.increaseMain(release)
+        return new
+
     def increase(self, match):
         old = match.group(1)
-        new = self.increaseMain(old)
+        try:
+            new = self.increaseSafe(old)
+        except BumpSpecError:
+            new = self.increaseFallback(old)
         return match.group(0).replace(old, new)
 
     def writeFile(self, filename):




More information about the fedora-extras-commits mailing list