mò fDc@s$dkZdkZdkZdkZdkZdkZdkZdkZdklZl Z l Z l Z da d„Z d„Zdfd„ƒYZdfd„ƒYZdkZdkZdadadadadagad eifd „ƒYZd eifd „ƒYZd fd„ƒYZdS(N(sdebugserrorstracesfatalicCs”d}}xƒ|o|pt|p1|iƒ}|p d}qStii|ƒn|p1|iƒ}|p d}q‹ti i|ƒq q WdS(Nii( t stdout_eoft stderr_eoft cmd_stdouttreadtstrtsyststdouttwritet cmd_stderrtstderr(RRRRR((t(/home/samy/kbilliards/wafadmin/Runner.pytprocess_cmd_output s     cCsŒtd|ƒtidjo |GHnti|dddtidtiƒ}t|i |i ƒ|i ƒ}|d@o |dBSn|d?S( Nssystem command -> itshellRR iÿi€i( ttraceRtParamst g_verbosetpproctPopentPIPEtprocR RR twaittstat(RRR((R t exec_commands '  t JobGeneratorcBs>tZd„Zd„Zd„Zd„Zd„Zd„ZRS(NcCsY||_ti|_h|_g|_h|_d|_ d|_ |i ƒd|_ dS(Nii( ttreetselftm_treetTasktg_taskstm_taskstm_current_grouptm_task_prio_lsttm_current_task_lsttm_totalt m_processedt compute_totalt m_switchflag(RR((R t__init__'s        cCsMd|_x=|iD]2}x)|iƒD]}|it|ƒ7_q&WqWdS(Ni(RR!Rthtbltvaluesttaskstlen(RR(R&((R R#>s    cCs»y)|iidƒ}|id7_|SWn‹y |i|iidƒ|_WnWy8|iidƒ|_|iiƒ|_|ii ƒWq©t dƒdSq©XnX|i ƒSnXdS(Niisno more task to give( RR tpopttR"RRRtkeystsortterrortNonetget_next(RR+((R R0Es    cCs|i|ifS(N(RR"R!(R((R tprogressWscCsW|id8_|i |_|idjo|g|i|_n|ii|ƒdS(Nii(RR"R$ttaskR tappend(RR2((R tpostponeZs  cCsItdƒd}x(tiD]}|t|iƒd7}qWt|ƒdS(Ns'debugging a task: something went wrong:tt (R.tsRRR+Rtm_idxR (RR7R+((R tdebugbs   (t__name__t __module__R%R#R0R1R4R9(((R R&s      tSerialcBstZd„Zd„ZRS(NcCs ||_dS(N(t generatorRt m_generator(RR=((R R%mscCsOtdƒx|iiƒ}|djoPntdt|iƒƒ|i ot dt|iƒƒn|i ƒpAtdt|iƒƒ|ii |ƒ|iiƒd}q n|i ƒ|iƒp'd|_ tdt|iƒƒq ntdt|iƒƒtid pn|iiƒ\}}d }d }y$ti|ii}tid }WnnXd ||||i|fGHn|iio|ii|ƒ}nt|iƒ}|o8t d t|ƒt|iƒfƒ|idƒ|Sny|iƒWnt dƒnXd|_ q Wtdƒtid p dGHndS(NsSerial start calledisretrieving task stask has already run! sdelaying task no istask is up-to_date sexecuting task t configureR5tNORMALs[%d/%d] %s%s%ss,task failed! (return code %s and task id %s)s"the nodes have not been produced !s Serial endsBuild finished successfullyi(R9RR>R0RR/R RR8tm_hasrunR.t may_startR4tpreparetmust_runRt g_commandsR1R7R+tcol1tcol2tg_colorstm_actiontm_nametm_strtm_function_to_runtretRtm_cmdt update_stat(RRGRMRFR7R+R((R tstartos`         #    (R:R;R%RP(((R R<ls t TaskPrintercBstZd„Zd„ZRS(NcCs4tii|ƒ|idƒ||_|iƒdS(Ni(t threadingtThreadR%Rt setDaemontmastertm_masterRP(RtidRU((R R%Ôs  cCsIxBtiƒtitiƒttfƒtiƒtidƒqWdS(Nif0.10000000000000001( tlocktacquireRR3ttimetcounttrunningtreleasetsleep(R((R trunÚs  (R:R;R%R_(((R RQÓs t TaskConsumercBs,tZd„Zd„Zd„Zd„ZRS(NcCsOtii|ƒ|idƒ||_||_|i ƒd|_ d|_ dS(Nii( RRRSR%RRTRURVRWtm_idRPtm_counttm_stop(RRWRU((R R%ãs     cCs"tiƒtiƒtiƒdS(N(t conditionRYtnotifyR](R((R Reís  cCs"tiƒt|7atiƒdS(N(RXRYR\tnumR](RRf((R tdo_statós  cCs x™tiƒt|_tiƒ|iotidƒqn|ii i ddƒ}|i dƒ|i GH|iio|ii|ƒ}nt|iƒ}|i dƒ|oetiƒtdt|ƒt|iƒfƒ|idƒtd8ada|iƒtiƒqny|iƒWn?tiƒtdƒtd8ada|iƒtiƒnXd|_tiƒtd8atiƒ|iƒqWdS(Nitblockiÿÿÿÿs,task failed! (return code %s and task id %s)s"the nodes have not been produced !(RXRYtstopRRcR]RZR^RVtm_readytgetRRgRKRIRLRMRRNR.RR8R9R[ReRORA(RRMR((R R_ùsN         #            (R:R;R%ReRgR_(((R R`âs  tParallelcBs5tZd„Zd„Zd„Zd„Zd„ZRS(NcCsŒ||_||_ti|_d|_d|_ g|_ t i dƒ|_ g|_ d|_d|_|iƒtiƒatiƒadS(Niii–(RRRtnumjobst m_numjobsRRRR!R"t m_outstandingtQueueRjtm_frozenRbRcR#RRt ConditionRdtLockRX(RRRm((R R%6s           cCsMd|_x=|iD]2}x)|iƒD]}|it|ƒ7_q&WqWdS(Ni(RR!RR&R'R(R)(RR(R&((R R#Xs    cCs*tiƒt|_t|_tiƒdS(N(RXRYRiRRcR[RbR](R((R t read_values^s    cCsDtiƒx)|idjotiƒ|iƒq WtiƒdS(Ni(RdRYRRbRRtR](R((R twait_all_finishedgs  cCséx$t|iƒD]} t| |ƒqWtotd|ƒnd}d}d}x|i ƒ|i o|i ƒPn|i o«|i o |i ƒ|psyZ|iidƒ}g}|iƒ}|iƒx%|D]} |i| || fƒqÖWWq|i ƒPqXn|idƒ\}|_n|ddjoDtiƒx)|idjotiƒ|i ƒqKWtiƒnHtiƒx0|i|idjotiƒ|i ƒqWtiƒ|d7}|ip|i|_g|_n|ioV|iidƒ}|iƒpjtiddƒo|ii|ƒn|g|i|_|ip"tiƒtiƒtiƒqRqV|i ƒ|i!ƒpd|_"qTnd} d}y$t%i&|i'i(} t%i&d}WnnXd|i)|i*| |i+|f|_+t,iƒt-d7a-|i)d7_)t,iƒ|i.i/|d dƒqTqTWt0d t1|ƒƒtoot2oht3d d ƒ}t2d\} } }x5t2D]-\}} }|i9d || | |fƒq¦W|i:ƒndS(Niÿÿÿÿiiii R5R@s[%d/%d] %s%s%sRhsamount of loops stest.dattws %f %f %f (;trangeRRntiR`tdostatRQR/tgroupt currentpriotloopRtRcRuRqRoRR*tlstR,R-tkeyR3RdRYRbRR]RRBtrandomtrandintRCRDRARFRGRRHRIRJR"R!RKRXR[RjtputR RRtopentfilett1tqueueR_RZRtclose(RR}RƒRzRR_R,RGR{RFR~RxR„R…RZR|((R RPos¦                         %   "(R:R;R%R#RtRuRP(((R Rl5s  "  (tostpopen2RRZRRRRR9R.R tfatalRyR RRR<RRRpR/RXRdR[RiR\RRSRQR`Rl(R RRRˆRRR`R‰RlRR RZRpRRRQRRR.R9R<R‡((R t?s&-  FT   S