rebuild-scripts bumpspecfile.py, 1.1.1.1, 1.2 semi_auto_rebuild.txt, 1.1.1.1, 1.2

Michael Schwendt (mschwendt) fedora-extras-commits at redhat.com
Mon Feb 11 18:21:12 UTC 2008


Author: mschwendt

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

Modified Files:
	bumpspecfile.py semi_auto_rebuild.txt 
Log Message:
* add EVR right of the changelog entry
* retain whitespace around release value
* add options -c/--comment and -u/--userstring for changelog comment
and packager name+email
* add env variable RPM_PACKAGER for packager name+email
* remove unused module imports
* please pylint at least a bit




Index: bumpspecfile.py
===================================================================
RCS file: /cvs/fedora/rebuild-scripts/bumpspecfile.py,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- bumpspecfile.py	6 Oct 2006 22:22:02 -0000	1.1.1.1
+++ bumpspecfile.py	11 Feb 2008 18:21:12 -0000	1.2
@@ -1,116 +1,125 @@
 #!/usr/bin/python -t
 # -*- mode: Python; indent-tabs-mode: nil; -*-
 
-import fcntl
-import os, sys
-import rpmUtils
-import shutil
-import string
+import errno, os, sys
 import re
 import time
+from optparse import OptionParser
 
 EXIT_ON_WARN = False
 
 class SpecFile:
-    def __init__(self,filename):
+    def __init__(self, filename):
         self.filename = filename
-        file=open(filename,"r")
-        self.lines=file.readlines()
-        file.close()
-
+        f = open(filename,"r")
+        self.lines = f.readlines()
+        f.close()
+        
     def bumpRelease(self):
-        bump_patterns=[(re.compile(r"^Release:(\s*)(\d+.*)",re.I), self.increase),
-                       (re.compile(r"^%define\s+rel\s+(\d+.*)"), self.increase2),
-                       (re.compile(r"^%define\s+release\s+(\d+.*)"), self.increase3),
-                       (re.compile(r"^%define\s+RELEASE\s+(\d+.*)"), self.increase4),
-                       (re.compile(r"^Release:\s+%release_func\s+(\d+.*)"), self.increase5)
+        bump_patterns = [(re.compile(r"^Release:\s*(\d+.*)", re.I), self.increase), 
+                       (re.compile(r"^%define\s+rel\s+(\d+.*)"), self.increase), 
+                       (re.compile(r"^%define\s+release\s+(\d+.*)"), self.increase), 
+                       (re.compile(r"^%define\s+RELEASE\s+(\d+.*)"), self.increase), 
+                       (re.compile(r"^Release:\s+%release_func\s+(\d+.*)"), self.increase)
                        ]
-        skip_pattern=re.compile(r"\$Revision:")
+        skip_pattern = re.compile(r"\$Revision:")
         for i in range(len(self.lines)):
-            if skip_pattern.search(self.lines[i]): continue
+            if skip_pattern.search(self.lines[i]):
+                continue
             for bumpit, bumpit_func in bump_patterns:
-                self.lines[i]=bumpit.sub(bumpit_func,self.lines[i])
+                self.lines[i] = bumpit.sub(bumpit_func, self.lines[i])
 
-    def addChangelogEntry(self,entry,email):
-        versionre=re.compile(r"^Version:\s*(\S+)")
-        changematch=re.compile(r"^%changelog")
-        date=time.strftime("%a %b %d %Y",   time.localtime(time.time()))
+    def addChangelogEntry(self, evr, entry, email):
+        if len(evr):
+            evrstring = ' - %s' % evr
+        else:
+            evrstring = ''
+        changematch = re.compile(r"^%changelog")
+        date = time.strftime("%a %b %d %Y",   time.localtime(time.time()))
+        newchangelogentry = "%changelog\n* "+date+" "+email+evrstring+"\n"+entry+"\n\n"
         for i in range(len(self.lines)):
-            versionmatch=versionre.search(self.lines[i])
-            if(versionmatch):
-                version=versionmatch.group(1)
             if(changematch.match(self.lines[i])):
-                newchangelogentry="%changelog\n* "+date+" "+email+" "+version+"-"+self.newrelease+"\n"+entry+"\n\n"
-                self.lines[i]=newchangelogentry
+                self.lines[i] = newchangelogentry
                 break
 
-    def increaseMain(self,release):
-        relre = re.compile(r'(?P<pre>0\.)?(?P<rel>\d+)(?P<post>.*)',re.I)
+    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')
         value = int(relmatch.group('rel'))
-        self.newrelease = `value+1`
         post = relmatch.group('post')
 
         old = ''
         if pre != None:
             old += pre
         old += relmatch.group('rel')+post
-
+        
         if pre == None:
             if post.find('rc')>=0:
                 print 'CRUCIAL WARNING: Bad pre-release versioning scheme!'
                 print self.filename
                 if EXIT_ON_WARN:
-                    sys.exit(1)
+                    sys.exit(errno.EIO)
             new = `value+1`+post
             if True or post != '%{?dist}' and len(post):
-                self.debugdiff(old,new)
+                self.debugdiff(old, new)
         else:
             if value == None or value > 10000:
                 print 'CRUCIAL WARNING: Bad pre-release versioning scheme!'
                 print self.filename
                 if EXIT_ON_WARN:
-                    sys.exit(1)
+                    sys.exit(errno.EIO)
             new = '0.'+`value+1`+post
-            self.debugdiff(old,new)
+            self.debugdiff(old, new)
         return new
 
-    def increase(self,match):
-        return 'Release:' + match.group(1) + self.increaseMain(match.group(2))
-
-    def increase2(self,match):
-        return '%define rel ' + self.increaseMain(match.group(1))
-
-    def increase3(self,match):
-        return '%define release ' + self.increaseMain(match.group(1))
-
-    def increase4(self,match):
-        return '%define RELEASE ' + self.increaseMain(match.group(1))
+    def increase(self, match):
+        old = match.group(1)
+        new = self.increaseMain(old)
+        return match.group(0).replace(old, new)
+
+    def writeFile(self, filename):
+        f = open(filename, "w")
+        f.writelines(self.lines)
+        f.close()
 
-    def increase5(self,match):
-        return 'Release: %release_func ' + self.increaseMain(match.group(1))
-
-    def writeFile(self,filename):
-        file=open(filename,"w")
-        file.writelines(self.lines)
-        file.close()
-
-    def debugdiff(self,old,new):
+    def debugdiff(self, old, new):
         print '-%s' % old
         print '+%s\n' % new
 
-if __name__=="__main__":
-    if len(sys.argv) < 2:
-        print 'SYNTAX: %s <specfile> [specfile]...' % sys.argv[0]
-        sys.exit(22)
-
-    userstring = "You <Your.Address at your.domain>"
-    for aspec in sys.argv[1:]:
-        s=SpecFile(aspec)
+if __name__ == "__main__":
+    usage = "Usage: %s <options> <specfile(s)>" % sys.argv[0]
+    parser = OptionParser(usage=usage)
+    parser.add_option("-c", "--comment", default='- rebuilt',
+                      help="changelog comment (default:- rebuilt)")
+    parser.add_option("-u", "--userstring", default=None,
+                      help="user name+email string")
+    (opts, args) = parser.parse_args()
+
+    userstring = os.getenv('RPM_PACKAGER')
+    if not userstring and not opts.userstring:
+        print 'ERROR: Set $RPM_PACKAGER environment variable or use option -u!'
+        sys.exit(errno.EINVAL)
+    elif opts.userstring:
+        userstring = opts.userstring
+
+    for aspec in args:
+        s = SpecFile(aspec)
         s.bumpRelease()
-        s.addChangelogEntry(" - rebuilt for unwind info generation, broken in gcc-4.1.1-21", userstring)
+        s.writeFile(aspec)
+
+        # Get EVR for changelog entry.
+        evr = ''
+        epoch = os.popen("LC_ALL=C rpm --specfile -q --qf '%%{epoch}\n' %s | head -1" % aspec).read().strip()
+        if epoch != '(none)':
+            evr += str(epoch)+':'
+        ver = os.popen("LC_ALL=C rpm --specfile -q --qf '%%{version}\n' %s | head -1" % aspec).read().strip()
+        evr += ver
+        rel = os.popen("LC_ALL=C rpm --specfile -q --qf '%%{release}\n' --define 'dist %%{nil}' %s | head -1" % aspec).read().strip()
+        evr += '-'+rel
+
+        s.addChangelogEntry(evr, opts.comment, userstring)
         s.writeFile(aspec)
 
 sys.exit(0)


Index: semi_auto_rebuild.txt
===================================================================
RCS file: /cvs/fedora/rebuild-scripts/semi_auto_rebuild.txt,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- semi_auto_rebuild.txt	6 Oct 2006 22:22:02 -0000	1.1.1.1
+++ semi_auto_rebuild.txt	11 Feb 2008 18:21:12 -0000	1.2
@@ -44,6 +44,7 @@
 popd
 
 # Do the automated mass rebuild for the simple packages
+export RPM_PACKAGER="You <Your.Address at your.domain>"
 for f in `awk '{print $6}' lst_auto.txt`; do
   echo $f
   ./bumpspecfile.py /export/scratch/extras/$f/devel/$f.spec




More information about the fedora-extras-commits mailing list