;ς |oPFc@ssdZdkZdkZdkZdklZlZhadfd„ƒYZdfd„ƒYZdgd„Z dS( s1Actions are used to build the nodes of most tasksN(sdebugsfatalsActioncBsMtZdZgedd„Zd„Zd„Zd„Zd„Zd„Z RS(sBase class for all ActionssGREENcCs2||_||_||_|iƒ||_ dS(sωIf the action is simple, func is not defined, else a function can be attached and will be launched instead of running the string generated by 'setstr' see Runner for when this is used - a parameter is given, it is the task. Each action must nameN( snamesselfsm_namesvarssm_varssfuncsm_function_to_runs _add_actionscolorsm_color(sselfsnamesvarssfuncscolor((sM/mnt/gmirror/ports/audio/ruby-xmms2/work/xmms2-0.2DrJekyll/wafadmin/Action.pys__init__s     cCs |iSdS(N(sselfsm_name(sself((sM/mnt/gmirror/ports/audio/ruby-xmms2/work/xmms2-0.2DrJekyll/wafadmin/Action.pys__str__scCsM|itjotd|idƒn|t|i'ss* %s : %s -> %scs|iˆiƒS(N(sas nice_pathstasksm_env(sa(stask(sM/mnt/gmirror/ports/audio/ruby-xmms2/work/xmms2-0.2DrJekyll/wafadmin/Action.pys+ss exceptionsleveliN( sParamss g_verbosesjoinsmapstasksm_inputsssrc_strs m_outputsstgt_strsselfsm_namesdebug(sselfstaskssrc_strstgt_str((stasksM/mnt/gmirror/ports/audio/ruby-xmms2/work/xmms2-0.2DrJekyll/wafadmin/Action.pysget_str#s !!!!cCsti|i|iƒ|_dS(sprepare the compilationN(sObjects sign_env_varsstasksm_envsselfsm_varssm_sig(sselfstask((sM/mnt/gmirror/ports/audio/ruby-xmms2/work/xmms2-0.2DrJekyll/wafadmin/Action.pysprepare3scCs1|i ot|idƒn|i|ƒSdS(srun the compilations action has no function !N(sselfsm_function_to_runsfatalsm_namestask(sselfstask((sM/mnt/gmirror/ports/audio/ruby-xmms2/work/xmms2-0.2DrJekyll/wafadmin/Action.pysrun7s ( s__name__s __module__s__doc__sNones__init__s__str__s _add_actionsget_strspreparesrun(((sM/mnt/gmirror/ports/audio/ruby-xmms2/work/xmms2-0.2DrJekyll/wafadmin/Action.pysAction s     salexcBs;tZdZd„Zd„Zd„Zd„Zd„ZRS(s΅ Actions declared using a string are compiled before use: A class with the necessary functions is created (so the string is parsed only once) All variables (CXX, ..) can be strings or lists of strings (only) The keywords TGT and SRC cannot be overridden (they represent the task input and output nodes) Example: - str = '${CXX} -o ${TGT[0]} ${SRC[0]} -I ${SRC[0].m_parent.bldpath()}' - act = simple_action('name', str) cCsC||_g|_g|_g|_d|_t|iƒ|_dS(Ni( sssselfsstrsoutsparamssm_varssislenssize(sselfss((sM/mnt/gmirror/ports/audio/ruby-xmms2/work/xmms2-0.2DrJekyll/wafadmin/Action.pys__init__Is      cCsx|i|ijo|i|i}|djoi|i|idjo|i|iddjo#|iidƒ|id7_q|ii|ƒnj|djoL|i|iddjo|id7_|iƒq|ii|ƒn|ii|ƒ|id7_qWdS(Ns\is$s{i(sselfsissizesstrscsoutsappendsvarmatch(sselfsc((sM/mnt/gmirror/ports/audio/ruby-xmms2/work/xmms2-0.2DrJekyll/wafadmin/Action.pysstartRs 2 cCsg}g}|i}xε||ijoΤ|i|djoUdi|ƒ}|i i di|ƒdi|ƒfƒ|i i dƒ||_Pn^|i|}|o|i |ƒn9|djp |djo|i |ƒn|i |ƒ|d7}qWdS(Ns}ss%ss.s[i( snamesmethsselfsiscurssizesstrsjoinsssparamssappendsoutsc(sselfscsnamesssmethscur((sM/mnt/gmirror/ports/audio/ruby-xmms2/work/xmms2-0.2DrJekyll/wafadmin/Action.pysvarmatches$ (   cCsbdg}|idƒ||i7}|idƒg}x¬|iD]‘\}}|djo-|o|id|ƒqα|idƒq@|djo-|o|id|ƒqα|id ƒq@|ii|ƒ|id |ƒq@W|o1|id ƒ|d i |ƒ7}|id ƒn|idƒ|idƒ|idƒ|idƒdi |ƒSdS(Ns.def f(task): env=task.m_env p=env.get_flat s try: cmd = "s"sSRCstask.m_inputs%ss5" ".join(map(lambda a:a.srcpath(env), task.m_inputs))sTGTstask.m_outputs%ss6" ".join(map(lambda a:a.bldpath(env), task.m_outputs))sp('%s')s % (\ s, \ s) s except: s task.debug() s raise s! return Runner.exec_command(cmd) s( slstsappendsselfsoutsalstsparamssnamesmethsm_varssjoin(sselfsmethslstsnamesalst((sM/mnt/gmirror/ports/audio/ruby-xmms2/work/xmms2-0.2DrJekyll/wafadmin/Action.pysres|s4            cBs|iƒdUedƒSdS(Nsf(sselfsresseval(sself((sM/mnt/gmirror/ports/audio/ruby-xmms2/work/xmms2-0.2DrJekyll/wafadmin/Action.pysfunžs(s__name__s __module__s__doc__s__init__sstartsvarmatchsressfun(((sM/mnt/gmirror/ports/audio/ruby-xmms2/work/xmms2-0.2DrJekyll/wafadmin/Action.pysalex=s    "sGREENcCstt|ƒ}|iƒ|iƒ}t|iƒdƒt|d|ƒ}||_ |i |_ |o ||_ ndS(shelper provided for conveniencesactionscolorN(salexslinesobjsstartsfunsfsdebugsressActionsnamescolorsactsm_function_to_runsm_varssvars(snameslinescolorsvarssfsactsobj((sM/mnt/gmirror/ports/audio/ruby-xmms2/work/xmms2-0.2DrJekyll/wafadmin/Action.pys simple_action’s     ( s__doc__sObjectsRunnersParamssdebugsfatals g_actionssActionsalexs simple_action(salexsRunnersObjectsActionsParamssdebugs simple_actionsfatal((sM/mnt/gmirror/ports/audio/ruby-xmms2/work/xmms2-0.2DrJekyll/wafadmin/Action.pys?s0e