aboutsummaryrefslogtreecommitdiff
path: root/tatt
diff options
context:
space:
mode:
authorRolf Eike Beer <eike@sf-mail.de>2018-01-05 19:48:00 +0100
committerRolf Eike Beer <eike@sf-mail.de>2018-01-05 19:50:13 +0100
commit8dab21d27a56821b0944714f7a3ed212254d89f6 (patch)
tree86992c331e3cc6152818ea92d8e104c1e595c428 /tatt
parentkeep logfiles of failed logs (diff)
downloadtatt-8dab21d27a56821b0944714f7a3ed212254d89f6.tar.gz
tatt-8dab21d27a56821b0944714f7a3ed212254d89f6.tar.bz2
tatt-8dab21d27a56821b0944714f7a3ed212254d89f6.zip
use scriptTemplate() in more places
This allows more replace variables to be used in all snippets.
Diffstat (limited to 'tatt')
-rw-r--r--tatt/scriptwriter.py90
1 files changed, 33 insertions, 57 deletions
diff --git a/tatt/scriptwriter.py b/tatt/scriptwriter.py
index 9eabdc0..69449c1 100644
--- a/tatt/scriptwriter.py
+++ b/tatt/scriptwriter.py
@@ -11,27 +11,38 @@ from .tool import unique
#### USE-COMBIS ########
-def scriptTemplate(jobname, config, filename):
+def scriptTemplate(job, config, filename):
""" open snippet file and replace common placeholders """
try:
snippetfile=open(config['template-dir'] + filename, 'r')
except IOError:
- print("use-snippet not found in " + config['template-dir'])
+ print("template " + filename + " not found in " + config['template-dir'])
sys.exit(1)
- reportname = jobname + ".report"
+ reportname = job.name + ".report"
+ if job.type == "stable":
+ newkeyword = config['arch']
+ elif job.type == "keyword":
+ newkeyword = "~" + config['arch']
+ else:
+ print ("No job type? Can't continue. This is a bug")
+ sys.exit(1)
snippet = snippetfile.read()
snippet = snippet.replace("@@EMERGEOPTS@@", config['emergeopts'])
- snippet = snippet.replace("@@JOB@@", jobname)
+ snippet = snippet.replace("@@BUG@@", job.bugnumber)
+ snippet = snippet.replace("@@JOB@@", job.name)
snippet = snippet.replace("@@ARCH@@", config['arch'])
+ snippet = snippet.replace("@@REPODIR@@", config['repodir'])
snippet = snippet.replace("@@REPORTFILE@@", reportname)
snippet = snippet.replace("@@BUILDLOGDIR@@", config['buildlogdir'])
+ snippet = snippet.replace("@@KEYWORDFILE@@", config['unmaskfile'])
+ snippet = snippet.replace("@@NEWKEYWORD@@", newkeyword)
return snippet
-def useCombiTestString(jobname, pack, config, port):
+def useCombiTestString(job, pack, config, port):
""" Build with diffent useflag combis """
- usesnippet = scriptTemplate(jobname, config, "use-snippet")
+ usesnippet = scriptTemplate(job, config, "use-snippet")
s = "" # This will contain the resulting string
usesnippet = usesnippet.replace("@@CPV@@", pack.packageString() )
@@ -49,7 +60,7 @@ def useCombiTestString(jobname, pack, config, port):
def writeusecombiscript(job, config):
# job is a tatt job object
# config is a tatt configuration
- useheader = scriptTemplate(job.name, config, "use-header")
+ useheader = scriptTemplate(job, config, "use-header")
outfilename = (job.name + "-useflags.sh")
reportname = (job.name + ".report")
@@ -60,7 +71,7 @@ def writeusecombiscript(job, config):
port = portage.db[portage.root]["porttree"].dbapi
for p in job.packageList:
outfile.write("\n# Code for " + p.packageString() + "\n")
- outfile.write(useCombiTestString(job.name, p, config, port))
+ outfile.write(useCombiTestString(job, p, config, port))
outfile.write("echo >> " + reportname + "\n")
# Note: fchmod needs the filedescriptor which is an internal
# integer retrieved by fileno().
@@ -70,8 +81,8 @@ def writeusecombiscript(job, config):
######################################
############ RDEPS ################
-def rdepTestString(jobname, rdep, config):
- rdepsnippet = scriptTemplate(jobname, config, "revdep-snippet")
+def rdepTestString(job, rdep, config):
+ rdepsnippet = scriptTemplate(job, config, "revdep-snippet")
snip = rdepsnippet.replace("@@FEATURES@@", "FEATURES=\"${FEATURES} test\"")
uflags = []
@@ -99,7 +110,7 @@ def writerdepscript(job, config):
return
# If there are rdeps, write the script
- rdepheader = scriptTemplate(job.name, config, "revdep-header")
+ rdepheader = scriptTemplate(job, config, "revdep-header")
outfilename = (job.name + "-rdeps.sh")
if os.path.isfile(outfilename):
print("WARNING: Will overwrite " + outfilename)
@@ -108,7 +119,7 @@ def writerdepscript(job, config):
for r in rdeps:
# Todo: remove duplicates
- outfile.write(rdepTestString(job.name, r, config))
+ outfile.write(rdepTestString(job, r, config))
os.fchmod(outfile.fileno(), 0o744)
outfile.close()
@@ -116,16 +127,9 @@ def writerdepscript(job, config):
#######Write report script############
def writesucessreportscript (job, config):
outfilename = (job.name + "-success.sh")
- reportname = (job.name + ".report")
if os.path.isfile(outfilename):
print("WARNING: Will overwrite " + outfilename)
- try:
- updatebugtemplate=open(config['template-dir'] + "updatebug", 'r')
- except IOError:
- print("updatebug not found in " + config['template-dir'])
- sys.exit(1)
- updatebug=updatebugtemplate.read().replace("@@ARCH@@", config['arch'])
- updatebug=updatebug.replace("@@BUG@@", job.bugnumber)
+ updatebug = scriptTemplate(job, config, "updatebug")
outfile = open(outfilename,'w')
outfile.write(updatebug)
os.fchmod(outfile.fileno(), 0o744)
@@ -135,22 +139,15 @@ def writesucessreportscript (job, config):
####### Write the commit script #########
def writecommitscript (job, config):
- try:
- commitheaderfile=open(config['template-dir'] + "commit-header", 'r')
- commitsnippetfile=open(config['template-dir'] + "commit-snippet", 'r')
- commitsnippetfile2=open(config['template-dir'] + "commit-snippet-2", 'r')
- commitfooterfile=open(config['template-dir'] + "commit-footer", 'r')
- except IOError:
- print("Some commit template not found in " + config['template-dir'])
- sys.exit(1)
- csnippet = commitsnippetfile.read().replace("@@JOB@@", job.name)
- csnippet2 = commitsnippetfile2.read().replace("@@JOB@@", job.name)
+ cheader = scriptTemplate(job, config, "commit-header")
+ csnippet = scriptTemplate(job, config, "commit-snippet")
+ csnippet2 = scriptTemplate(job, config, "commit-snippet-2")
+ cfooter = scriptTemplate(job, config, "commit-footer")
+
outfilename = (job.name + "-commit.sh")
if os.path.isfile(outfilename):
print("WARNING: Will overwrite " + outfilename)
outfile = open(outfilename,'w')
- cheader = commitheaderfile.read().replace("@@JOB@@", job.name)
- cheader = cheader.replace("@@REPODIR@@", config['repodir'])
outfile.write (cheader)
# Here's a catch: If there are multiple versions of the same package to be
# stabilized, then we want only one keywording block and one commit block
@@ -165,34 +162,21 @@ def writecommitscript (job, config):
packageHash[pack.packageCatName()] = [pack]
# First round (ekeyword)
for pack in packageHash.keys():
- s = csnippet.replace("@@BUG@@", job.bugnumber)
- s = s.replace("@@ARCH@@", config['arch'])
- if job.type=="stable":
- newkeyword=config['arch']
- elif job.type=="keyword":
- newkeyword="~"+config['arch']
- else:
- print ("No job type? Can't continue. This is a bug")
- sys.exit(1)
- s = s.replace("@@NEWKEYWORD@@", newkeyword)
# Prepare a list of ebuild names strings
ebuilds = [p.packageName()+"-"+p.packageVersion()+".ebuild" for p in packageHash[pack]]
- s = s.replace("@@EBUILD@@", " ".join(ebuilds))
+ s = csnippet.replace("@@EBUILD@@", " ".join(ebuilds))
s = s.replace("@@CP@@", pack)
outfile.write(s)
# Second round: repoman -d full checks and commit, should be done once per
# key of packageHash
for pack in packageHash.keys():
- s = csnippet2.replace("@@BUG@@", job.bugnumber)
- s = s.replace("@@ARCH@@", config['arch'])
- s = s.replace("@@NEWKEYWORD@@", newkeyword)
# Prepare a list of ebuild names strings
ebuilds = [p.packageName()+"-"+p.packageVersion()+".ebuild" for p in packageHash[pack]]
- s = s.replace("@@EBUILD@@", " ".join(ebuilds))
+ s = csnippet2.replace("@@EBUILD@@", " ".join(ebuilds))
s = s.replace("@@CP@@", pack)
outfile.write(s)
# Footer (committing)
- outfile.write (commitfooterfile.read().replace("@@ARCH@@", config['arch']).replace("@@BUG@@", job.bugnumber))
+ outfile.write(cfooter)
os.fchmod(outfile.fileno(), 0o744)
outfile.close()
print("Commit script written to " + outfilename)
@@ -200,15 +184,7 @@ def writecommitscript (job, config):
######## Write clean-up script ##############
def writeCleanUpScript (job, config):
- try:
- cleanUpTemplate=open(config['template-dir'] + "cleanup", 'r')
- except IOError:
- print("Clean-Up template not found in" + config['template-dir'])
- print("No clean-up script written")
- return
- script = cleanUpTemplate.read().replace("@@JOB@@", job.name)
- script = script.replace("@@CPV@@", job.name)
- script = script.replace("@@KEYWORDFILE@@", config['unmaskfile'])
+ script = scriptTemplate(job, config, "cleanup")
outfilename = (job.name + "-cleanup.sh")
if os.path.isfile(outfilename):
print("WARNING: Will overwrite " + outfilename)