forked from rpms/kernel
		
	
		
			
				
	
	
		
			77 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/python
 | 
						|
#
 | 
						|
# Uses git config options user.name and user.email, falls
 | 
						|
# back to env vars $GIT_COMMITTER_NAME and $GIT_COMMITTER_EMAIL
 | 
						|
#
 | 
						|
import re
 | 
						|
import sys
 | 
						|
import time
 | 
						|
import os
 | 
						|
import string
 | 
						|
 | 
						|
class Specfile:
 | 
						|
    def __init__(self,filename):
 | 
						|
        file=open(filename,"r")
 | 
						|
        self.lines=file.readlines()
 | 
						|
        self.vr=""
 | 
						|
 | 
						|
    def getNextVR(self,aspec):
 | 
						|
         # Get VR for changelog entry.
 | 
						|
        (ver,rel) = os.popen("LC_ALL=C rpm --specfile -q --qf '%%{version} %%{release}\n' --define 'dist %%{nil}' %s | head -1" % aspec).read().strip().split(' ')
 | 
						|
	pos = 0
 | 
						|
        # general released kernel case, bump 1st field
 | 
						|
        fedora_build = rel.split('.')[pos]
 | 
						|
        if fedora_build == "0":
 | 
						|
            # this is a devel kernel, bump 2nd field
 | 
						|
            pos = 1
 | 
						|
        elif rel.split('.')[-1] != fedora_build:
 | 
						|
            # this is a branch, must bump 3rd field
 | 
						|
            pos = 2
 | 
						|
        fedora_build = rel.split('.')[pos]
 | 
						|
        if pos == 1 and len(rel.split('.')) > 4:
 | 
						|
            # uh... what? devel kernel in a branch? private build? just do no VR in clog...
 | 
						|
            print "Warning: not adding any VR to changelog, couldn't tell for sure which field to bump"
 | 
						|
            pos = -1
 | 
						|
        next_fedora_build = int(fedora_build) + 1
 | 
						|
        if pos == 0:
 | 
						|
            nextrel = str(next_fedora_build)
 | 
						|
        elif pos == 1:
 | 
						|
            nextrel = "0." + str(next_fedora_build)
 | 
						|
        elif pos == 2:
 | 
						|
            nextrel = rel.split('.')[0] + "." + rel.split('.')[1] + "." + str(next_fedora_build)
 | 
						|
        if pos >= 0:
 | 
						|
            for s in rel.split('.')[pos + 1:]:
 | 
						|
                nextrel = nextrel + "." + s
 | 
						|
            self.vr = " "+ver+'-'+nextrel
 | 
						|
 | 
						|
    def addChangelogEntry(self,entry):
 | 
						|
        user = os.popen("git config --get user.name").read().rstrip()
 | 
						|
        if (user == ""):
 | 
						|
            user = os.environ.get("GIT_COMMITTER_NAME","Unknown")
 | 
						|
        email = os.popen("git config --get user.email").read().rstrip()
 | 
						|
        if (email == ""):
 | 
						|
            email = os.environ.get("GIT_COMMITTER_EMAIL","unknown")
 | 
						|
        if (email == "unknown"):
 | 
						|
            email = os.environ.get("USER","unknown")+"@fedoraproject.org"
 | 
						|
        changematch=re.compile(r"^%changelog")
 | 
						|
        date=time.strftime("%a %b %d %Y",   time.localtime(time.time()))
 | 
						|
        newchangelogentry="%changelog\n* "+date+" "+user+" <"+email+">"+self.vr+"\n"+entry+"\n\n"
 | 
						|
        for i in range(len(self.lines)):
 | 
						|
            if(changematch.match(self.lines[i])):
 | 
						|
                self.lines[i]=newchangelogentry
 | 
						|
                break
 | 
						|
 | 
						|
    def writeFile(self,filename):
 | 
						|
        file=open(filename,"w")
 | 
						|
        file.writelines(self.lines)
 | 
						|
        file.close()
 | 
						|
 | 
						|
if __name__=="__main__":
 | 
						|
  aspec=(sys.argv[1])
 | 
						|
  s=Specfile(aspec)
 | 
						|
  entry=(sys.argv[2])
 | 
						|
  s.getNextVR(aspec)
 | 
						|
  s.addChangelogEntry(entry)
 | 
						|
  s.writeFile(aspec)
 | 
						|
 |