diff options
author | Rolf Eike Beer <eike@sf-mail.de> | 2018-01-05 19:48:00 +0100 |
---|---|---|
committer | Rolf Eike Beer <eike@sf-mail.de> | 2018-01-05 19:50:13 +0100 |
commit | 8dab21d27a56821b0944714f7a3ed212254d89f6 (patch) | |
tree | 86992c331e3cc6152818ea92d8e104c1e595c428 /tatt | |
parent | keep logfiles of failed logs (diff) | |
download | tatt-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.py | 90 |
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) |