def check_branch(view, target=clearmake): smartbuilddir="/mot/proj/wibb_bts/daily/tmpsmartbuild/{view}".format(view=view) os.umask(0002) if not os.path.exists(smartbuilddir): os.makedirs(smartbuilddir, 0775) os.utime(smartbuilddir+"/prev_cs_"+target,None) os.utime(smartbuilddir+"/prev_cr_"+target,None) # Compare config spec. If identical, exit 0; else non-zero prevcs=smartbuilddir+"/prev_cs_"+target currcs=smartbuilddir+"/curr_cs_"+target clearcase.ct("catcs -tag {view} > {currcs}".format(view=view,currcs=currcs)) csdiff = filecmp.cmp(prevcs,currcs) # Compare CR list. If identical, exit 0; else non-zero prevcr=smartbuilddir+"/prev_cr_"+target currcr=smartbuilddir+"/curr_cr_"+target command.run(". {scstart} wibb_bts".format(scstart=bmc.config.get("scstart"))) clearcase.ctInView("{mergestat} -a|grep -E '.*yes.*yes.*|.*no.*yes.*' > {currcr}".format(mergestat=bmc.config.get("mergestat"),currcr=currcr)) crdiff = filecmp.cmp(prevcr,currcr) # Update the log entry os.rename(currcs,prevcs) os.rename(currcr,prevcr) # If both config spec and merged CR log are unchanged, then exit 0; else, exit 1. if not (csfiff and crdiff): logger.warn("Nightly build under view {view} for {target} was not kicked off because there's no change to the code or config spec.".format(view=view, target=target)) subject = "Nightly build under view {view} for {target} was not kicked off because there's no change to the code or config spec.".format(view=view, target=target) message = subject utils.sendmail(bmc.config.get("MAILFROM"), mailto, subject, message) raise Exception(message)
def sUpdateNBVer(ins): currVer = clearcase.getNextLabel(ins.getNBView(),ins.getWuceProduct()) nextBlVer = clearcase.getNextBaselineLabel(ins.getNBView(),ins.getWuceProduct()) l = clearcase.parseLabel(nextBlVer) if len(l) < 8: raise Exception("Invalid baseline label {label}".format(label=nextBlVer)) clearcase.ctInView(ins.getNBView(), "cd {vt}/bld/wuce/ver; {ct} co -nc sys prod sysrel bld iter prodver bldrev extra".format(vt=ins.getVobTag(),ct=bmc.config.get('cleartool'))) clearcase.ctInView(ins.getNBView(), "cd {vt}/bld/wuce/ver; echo {sys}>sys; echo {prod}>prod; echo {sysrel}>sysrel; echo {bld}>bld; echo {iter}>iter; echo {prodver}>prodver; echo {bldrev}>bldrev; echo {extra}>extra;".format(vt=ins.getVobTag(), sys=l[0],prod=l[1],sysrel=l[2],bld=l[3],iter=l[4],prodver=l[5],bldrev=l[6],extra=l[7])) clearcase.ctInView(ins.getNBView(), "cd {vt}/bld/wuce/ver; {ct} ci -nc -iden sys prod sysrel bld iter prodver bldrev extra".format(vt=ins.getVobTag(),ct=bmc.config.get('cleartool')))
def sIncreNBVer(ins): """ Increase nightly build version, e.g. if current version is 02, then increase to 03 """ currVer = clearcase.getNextLabel(ins.getNBView(),ins.getWuceProduct()) l = clearcase.parseLabel(currVer) (incfile,ver) = ('bldrev',int(l[6])) if float(l[2]) >= 5.0: #mainline release greater than 5.0 (incfile,ver) = ('prodver',int(l[5])) clearcase.ctInView(ins.getNBView(), "cd {vt}/bld/wuce/ver; {ct} co -nc {incfile}".format(vt=ins.getVobTag(),ct=bmc.config.get('cleartool'),incfile=incfile)) clearcase.ctInView(ins.getNBView(), "cd {vt}/bld/wuce/ver; echo {ver}>{incfile}".format(vt=ins.getVobTag(),ct=bmc.config.get('cleartool'),ver=ver,incfile=incfile)) clearcase.ctInView(ins.getNBView(), "cd {vt}/bld/wuce/ver; {ct} ci -nc -iden {incfile}".format(vt=ins.getVobTag(),ct=bmc.config.get('cleartool'),incfile=incfile))
def sCloseScmBl(): targetScmtBl = clearcase.getScmBaselineLabel(ins.getNBView(),ins.getWuceProduct()) clearcase.ctInView(bmc.config.get('commonView'), "cd {vt}; {cqtool} closebl {targetScmtBl}".format(vt=ins.getVobTag(),cqtool=bmc.config.get('cqtool'),targetScmtBl=targetScmtBl))
def sLinkScmBlC(): targetIntBl = clearcase.getBaselineLabel(ins.getNBView(),ins.getWuceProduct()) targetScmBl = clearcase.getScmBaselineLabel(ins.getNBView(),ins.getWuceProduct()) clearcase.ctInView(bmc.config.get('commonView'), "cd {vt}; {cqtool} linkbl {targetScmBl} -a -child {targetIntBl}".format(vt=ins.getVobTag(),cqtool=bmc.config.get('cqtool'),targetIntBl=targetIntBl, targetScmBl=targetScmBl))
def sLinkScmBlP(): targetScmBl = clearcase.getScmBaselineLabel(ins.getNBView(),ins.getWuceProduct()) preScmBl = clearcase.getPreviousScmBaselineLabel(ins.getNBView(),ins.getWuceProduct()) clearcase.ctInView(bmc.config.get('commonView'), "cd {vt}; {cqtool} linkbl {targetScmBl} -a -predecessor {preScmBl}".format(vt=ins.getVobTag(),cqtool=bmc.config.get('cqtool'),targetScmBl=targetScmBl, preScmBl=preScmBl))