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)
|
|
|