§
    žsPâG  ã            	       ó^  — d dl Z d dlZd dlZd dlZd dlmZmZmZ d ZdZ	dZ
dZdZdZdZd	Zd
ZdZdZd„ Zi a G d„ de¦  «        Z edefi ¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Zd„ Zd„ Zd„ Zd„ Z ej        dej         ¦  «        Z!d„ Z"d„ Z#d"d„Z$dddg g g g ddf	d„Z%d „ Z&d!„ Z'dS )#é    N)ÚUtilsÚLogsÚErrorsé   é   é   é   é	   éÿÿÿÿéþÿÿÿéýÿÿÿzÒ
def f(tsk):
	env = tsk.env
	gen = tsk.generator
	bld = gen.bld
	wd = getattr(tsk, 'cwd', None)
	p = env.get_flat
	tsk.last_cmd = cmd = ''' %s ''' % s
	return tsk.exec_command(cmd, cwd=wd, env=env.env or None)
a  
def f(tsk):
	env = tsk.env
	gen = tsk.generator
	bld = gen.bld
	wd = getattr(tsk, 'cwd', None)
	def to_list(xx):
		if isinstance(xx, str): return [xx]
		return xx
	tsk.last_cmd = lst = []
	%s
	lst = [x for x in lst if x]
	return tsk.exec_command(lst, cwd=wd, env=env.env or None)
c                 óV   ‡‡— | j         Šˆfd„}|| _         | j        Šˆfd„}|| _        | S )Nc                 óz   •— | j         j        }|j        r|j        s|                      ¦   «         rdS  ‰| ¦  «        S )Nr   )Ú	generatorÚbldÚcache_globalÚnocacheÚcan_retrieve_cache)Úselfr   Úm1s     €úQ/git_repos/lvtk-1.2.0/.waf3-1.7.2-89df5661dd0948598701ec3b9c0a4216/waflib/Task.pyÚrunzcache_outputs.<locals>.run*   sG   ø€ Ø
„nÔ€#ØÔð ˜cœkð Ø
×ÒÑÔð Øˆ1Ø	ˆˆD‰Œ€/ó    c                 óz   •— | j         j        } ‰| ¦  «        }|j        r|j        s|                      ¦   «          |S ©N)r   r   r   r   Úput_files_cache)r   r   ÚretÚm2s      €r   Úpost_runzcache_outputs.<locals>.post_run2   sE   ø€ Ø
„nÔ€#Ø€bˆ�h„h€#ØÔð ˜cœkð Ø×ÒÑÔÐØ	€*r   )r   r   )Úclsr   r   r   r   s      @@r   Úcache_outputsr!   (   s[   øø€ Ø„G€ðð ð ð ð ð 
€„Ø„L€ðð ð ð ð ð €„Ø€r   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )Ústore_task_typec                 óÜ  •— t          t          | ¦  «                             |||¦  «         | j        }|                     d¦  «        r|                     dd¦  «        }|dk    �r|dk    �r t          | dd ¦  «        rzt          | j        | j	        ¦  «        \  }}| j        | _
        d | _        || _        t          t          | j        |z   ¦  «        ¦  «        | _        | j                             ¦   «          n8t          | dd ¦  «        r'd| j        vrt#          j        | j        ¦  «        | _
        t          | dd ¦  «        st'          | ¦  «        } | t          | d	t(          ¦  «        |<   d S d S d S )
NÚ_taskÚ ÚevilÚTaskBaseÚrun_strr   Úhcoder   Úregister)Úsuperr#   Ú__init__Ú__name__ÚendswithÚreplaceÚgetattrÚcompile_funr)   Úshellr*   r   ÚlistÚsetÚvarsÚsortÚ__dict__r   Úh_funr!   Úclasses)r    ÚnameÚbasesÚdictÚfÚdvarsÚ	__class__s         €r   r-   zstore_task_type.__init__<   sS  ø€ Ý�˜ÑÔ×%Ò% d¨5°Ñ6Ô6Ð6Ø
„|€$Ø	‡]‚]�7ÑÔð !Ø�Š�W˜RÑ Ô €4Ø	ˆ6‚\�\�T˜:Ò%Ñ%åˆc�)˜DÑ!Ô!ð #Ý˜#œ+ c¤iÑ0Ô0�I€Q€uØŒk€C„IØ€C„KØ€C„GÝ•#�c”h˜u‘nÑ%Ô%Ñ&Ô&€C„HØ„H‡M‚M�O„O€O€OÝ��E˜$ÑÔð # g°´Ð&<Ð&<ÝŒk˜#œ'Ñ"Ô"€C„IÝ
�#�i Ñ
%Ô
%ð Ý�cÑÔ€CØ),…7ˆ3ˆz�'Ñ"Ô" 4Ñ(Ð(Ð(ð €\Ð%Ð%r   )r.   Ú
__module__Ú__qualname__r-   Ú__classcell__)r@   s   @r   r#   r#   ;   s8   ø€ € € € € ð-ð -ð -ð -ð -ð -ð -ð -ð -r   r#   r'   c                   ó‚   — e Zd ZdZg Zg Zg Zg ZdZd„ Z	d„ Z
d„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ ZdS )r(   ÚGREENr&   c                 ój   — t           | _        	 |d         | _        d S # t          $ r | | _        Y d S w xY w)Nr   )ÚNOT_RUNÚhasrunr   ÚKeyError©r   ÚkÚkws      r   r-   zTaskBase.__init__W   sE   € Ý€$„+ðØ�[”/€4„>€>€>øÝ	ð ð ð Ø€4„>€>€>€>ðøøøs   Ž �2±2c                 ó€   — d| j         j        ›dt          | ¦  «        ›dt          t	          | dd¦  «        ¦  «        ›d�S )Nz
	{task ú: ú Úfunr&   ú})r@   r.   ÚidÚstrr1   ©r   s    r   Ú__repr__zTaskBase.__repr__]   sB   € € Ø $¤Ô 7Ð 7Ð 7½¸4¹¼¸¸ÅÅWÈTÐRWÐXZÑE[ÔE[ÑA\ÔA\ÐA\ÐA\Ð]Ð]r   c                 ó^   — t          | d¦  «        rd| j        j        z  S | j        j        dz   S )NrP   zexecuting: %s
ú
)ÚhasattrrP   r.   r@   rT   s    r   Ú__str__zTaskBase.__str___   s4   € ÝˆT�%ÑÔð -Ø	˜4œ8Ô,Ñ	,Ð,Ø	ŒÔ	  Ñ	%Ð%r   c                 ó    — t          | ¦  «        S r   )rR   rT   s    r   Ú__hash__zTaskBase.__hash__c   s   € Ý	ˆD‰Œ€/r   c                 ó¼   — | j         j        }	 |                     dd ¦  «        s
|j        |d<   n!# t          $ r |j        x|_        |d<   Y nw xY w |j        |fi |¤ŽS )NÚcwd)r   r   Úgetr]   ÚAttributeErrorÚvariant_dirÚexec_command)r   ÚcmdrL   r   s       r   ra   zTaskBase.exec_commande   s   € Ø
„nÔ€#ð%Ø
�&Š&��tÑ
Ô
ð ØŒg€B€u�IøøÝ	ð %ð %ð %Ø”_Ð$€3„7ˆ2ˆe‰9ˆ9ˆ9ð%øøøà	ˆÔ	˜#Ð	#Ð	# Ð	#Ð	#Ð#s   Ž / ¯AÁAc                 ó   — t           S r   )ÚRUN_MErT   s    r   Úrunnable_statuszTaskBase.runnable_statusm   s   € Ý	€-r   c                 ó¶  — | j         }|j        r|j                             | ¦  «         d S 	 | j        j        j        |                      ¦   «         = n# t          $ r Y nw xY w	 | j        j        j	         
                    | ¦  «         |                      | j        j        ¦  «         |                      ¦   «         }nd# t          $ rW t          j        ¦   «         | _        t"          | _        |                     | ¦  «         |j                             | ¦  «         Y d S w xY w|r|| _        t*          | _        nf	 |                      ¦   «          t.          | _        nD# t0          j        $ r Y n3t          $ r' t          j        ¦   «         | _        t"          | _        Y nw xY w| j        t.          k    r|                     | ¦  «         |j                             | ¦  «         d S r   )ÚmasterÚstopÚoutÚputr   r   Ú	task_sigsÚuidrI   Úreturned_tasksÚappendÚlog_displayr   Ú	Exceptionr   Úex_stackÚerr_msgÚ	EXCEPTIONrH   Úerror_handlerÚerr_codeÚCRASHEDr   ÚSUCCESSr   ÚWafError)r   Úmr   s      r   ÚprocesszTaskBase.processo   sÊ  € Ø„K€!Ø„Vð 
Ø„5‡9‚9ˆT�?„?€?Ø	€6ðØ„~ÔÔ# D§H¢H¡J¤JÐ/Ð/øÝ	ð ð ð Ø€4ðøøøð	
Ø„>ÔÔ$×+Ò+¨DÑ1Ô1Ð1Ø×Ò�D”NÔ&Ñ'Ô'Ð'Ø‡x‚x�z„z€3€3øÝ	ð 
ð 
ð 
Ý”Ñ Ô €4„<Ý€4„;Ø‡?‚?�4ÑÔÐØ„5‡9‚9ˆT�?„?€?Ø	€6€6ð
øøøð 	ð Ø€4„=Ý€4„;€;ðØ‡M‚M�O„O€Oõ €D„K€Køõ Œ/ð 	ð 	ð 	Ø€DÝ
ð ð ð Ý”Ñ!Ô!€D„LÝ€D„K€K€Kðøøøð
 
„[•'ÒÐØ‡?‚?�4ÑÔÐØ„%‡)‚)ˆD�/„/€/€/€/s=   ¬$A Á
AÁAÁ"AB: Â:ADÄDÄ5E ÅFÅ'-FÆFc                 óP   — t          | d¦  «        r|                      | ¦  «        S dS )NrP   r   )rX   rP   rT   s    r   r   zTaskBase.run’   s)   € ÝˆT�%ÑÔð Ø
�(Š(�4‰.Œ.ÐØ	
ˆr   c                 ó   — d S r   © rT   s    r   r   zTaskBase.post_run–   s   € Ø€$r   c                 óT   — |                      |                      ¦   «         ¦  «         d S r   )Úto_logÚdisplay)r   r   s     r   ro   zTaskBase.log_display˜   s"   € Ø‡*‚*ˆT�\Š\‰^Œ^ÑÔÐÐÐr   c                 ó  ‡— t          j        | j        ¦  «        }t           j        j        }| j        Šˆfd„}| j        j        j        dk    r/| j        j                              |¦   «         ‰j	        ||¦  «        S | j        j        j        dk    r­t          | j        j        j        ¦  «        }	 d                     d„ | j        D ¦   «         ¦  «        }n# t          $ r d}Y nw xY w	 d                     d„ | j        D ¦   «         ¦  «        }n# t          $ r d}Y nw xY wd‰j	        ›d	 |¦   «         ›d
|›d|›d|›d�S t          | ¦  «        }|sd S ‰j	        }t!          t          |¦  «        ¦  «        }	d|	|	fz  }
|
 |¦   «         ||||fz  S )Nc                  ót   •— d} t          ‰d¦  «        r| ‰j                             ¦   «         z  } ‰j        | z   S )Nr   Úready)rX   rƒ   ÚqsizeÚ	processed)Útmprg   s    €r   ÚcurzTaskBase.display.<locals>.curž   s@   ø€ Ø	€3Ýˆf�WÑÔð ØˆŒ×	Ò	Ñ	Ô	Ñ€CØ
Ô
˜3Ñ
Ðr   r   r   ú,c                 ó   — g | ]	}|j         ‘Œ
S r}   ©r;   ©Ú.0Úns     r   ú
<listcomp>z$TaskBase.display.<locals>.<listcomp>¨   s   € Ð.Ð.Ð.˜Q�!”&Ð.Ð.Ð.r   r&   c                 ó   — g | ]	}|j         ‘Œ
S r}   rŠ   r‹   s     r   rŽ   z$TaskBase.display.<locals>.<listcomp>¬   s   € Ð0Ð0Ð0˜a�1”6Ð0Ð0Ð0r   z|Total z	|Current z|Inputs z	|Outputs z|Time z|
z[%%%dd/%%%dd] %%s%%s%%s)r   ÚcolorsÚcolorÚNORMALrg   r   r   Úprogress_barÚprogress_lineÚtotalrS   ÚtimerÚjoinÚinputsr_   ÚoutputsÚlen)r   Úcol1Úcol2r‡   ÚelaÚinsÚoutsÚsr•   r�   Úfsrg   s              @r   r€   zTaskBase.displayš   sÍ  ø€ Ý„{�4”:ÑÔ€$Ý„{Ô€$Ø	Œ€&ðð ð ð ð ð
 
„^ÔÔ$ aÒ'Ð'Ø
Œ.Ô
×
*Ò
*¨3¨3©5¬5°´¸dÀ4Ñ
HÔ
HÐHØ	„^ÔÔ$ aÒ'Ð'Ý
ˆ4Œ>ÔÔ#Ñ$Ô$€3ðØ�ŠÐ.Ð. $¤+Ð.Ñ.Ô.Ñ/Ô/€C€CøÝ
ð ð ð Ø
€C€C€CðøøøðØ	�ŠÐ0Ð0 4¤<Ð0Ñ0Ô0Ñ	1Ô	1€D€DøÝ
ð ð ð Ø	€D€D€DðøøøøàAGÄÀÀÈcÈcÉeÌeÈeÈeÐTWÐTWÐTWÐX\ÐX\ÐX\Ð]`Ð]`Ð]`Ð	aÐaÝˆ�I„I€!Ø	
ð Ø
ˆ$ØŒ€%Ý�ˆE‰
Œ
�O„O€!Ø  !˜uÑ$€"Ø	ˆSˆS‰UŒU�5˜˜a Ð%Ñ	%Ð%s$   Â0$C ÃC$Ã#C$Ã($D ÄDÄDNc                 ó\   — t          | || ¦  «        }|| u rt          | j        ||¦  «        S |S r   )r1   r@   )r   ÚattÚdefaultr   s       r   ÚattrzTaskBase.attr·   s4   € Ýˆd�3�tÑÔ€#ØˆD€[€[� ¤¨s°7Ñ;Ô;Ð;Ø	€*r   c                 óæ   — | j         }t          |j        ¦  «        t          |j        ¦  «        t          |j        ¦  «        t          |j        ¦  «        |j        |j        f}t          |¦  «        }|S r   )	r@   rS   ÚbeforeÚafterÚext_inÚext_outr.   r*   Úhash)r   r    ÚtupÚhs       r   Úhash_constraintszTaskBase.hash_constraints»   sS   € Ø
„n€#Ý
ˆ3Œ:�„•s˜3œ9‘~”~¥c¨#¬*¡o¤oµc¸#¼+Ñ6FÔ6FÀsÄ|ÐTWÔT]Ð^€#Ýˆ�I„I€!Ø	
€(r   c                 ój  — t          | dd¦  «        }t          | j        dd¦  «        }t          | dd ¦  «        r| j        S | j        sd|›d| ›�S | j        t          k    r.d|›d| j        ›d	| ›d
|›�S # t          $ r d|›d| ›d
|›�cY S w xY w| j        t          k    rd|›d| ›d
|›�S d|›d| j        ›�S )NÚlast_cmdr&   r;   rr   ztask in z# was not executed for some reason: z -> task in z failed (exit status z): rW   z	 failed: z -> missing files in rN   zinvalid status for task in )r1   r   rr   rH   rv   ru   r_   ÚMISSING)r   Úmsgr;   s      r   Úformat_errorzTaskBase.format_errorÀ   s  € Ýˆd�:˜bÑ!Ô!€#ÝˆtŒ~˜f RÑ(Ô(€$ÝˆT�)˜DÑ!Ô!ð @Ø
Œ,ÐØŒ;ð 
@ð 
@Ø<@¸D¸DÀÀÐ	FÐFØ„{•GÒÐð:Ø<@¸D¸DÀÄÀÀÈtÈtÈtÐTWÐTWÐ
XÐXøÝ
ð :ð :ð :ð :Ø+/¨4¨4°°°°S°SÐ
9Ð9Ð9Ð9ð:øøøà„{•GÒÐÐØ,0¨D¨D°°°°c°cÐ	:Ð:ð ð /3¨d¨d°4´;°;Ð	?Ð?s   ÁA2 Á2B
Â	B
c           	      óz  ‡— | j         |         Št          |t          ¦  «        r| j         |         }n|}t          ‰t          ¦  «        rˆfd„|D ¦   «         S t          j        r'‰s%|r#t          j        d|›d| ›d| j        ›d�¦  «         g }|D ],}|                     ‰¦  «         |                     |¦  «         Œ-|S )Nc                 ó   •— g | ]}‰|z  ‘ŒS r}   r}   )rŒ   Úxr†   s     €r   rŽ   z"TaskBase.colon.<locals>.<listcomp>×   s   ø€ Ð	Ð	Ð	�Aˆ#ˆa‰%Ð	Ð	Ð	r   zMissing env variable z
 for task z (generator ú))	ÚenvÚ
isinstancerS   r   ÚverboseÚwarnr   Úextendrn   )r   Úvar1Úvar2ÚitÚlstÚyr†   s         @r   ÚcolonzTaskBase.colonÐ   sÙ   ø€ Ø
„hˆt„n€#Ý�•SÑÔð Ø
„hˆt„n€2€2à
€2Ý�•CÑÔð 	Ø	Ð	Ð	Ð	˜Ð	Ñ	Ô	Ðå
„lð _˜3ð _ 2ð _Ý„I€IÀDÀDÀDÈÈÈÈdÌnÈnÈnÐ]Ñ^Ô^Ð^Ø	€3Øð ð €qØ‡J‚Jˆs�O„O€OØ‡J‚Jˆq�M„M€M€MØ
€:r   r   )r.   rA   rB   r‘   r©   rª   r§   r¨   r*   r-   rU   rY   r[   ra   re   rz   r   r   ro   r€   r¥   r®   r³   rÂ   r}   r   r   r(   r(   P   s  € € € € € Ø€Ø
€Ø	€Ø
€Ø	€Ø	€ðð ð ð^ð ^ð ^ð&ð &ð &ðð ð ð$ð $ð $ðð ð ð"ð "ð "ðFð ð ðð ð ðð ð ð&ð &ð &ð:ð ð ð ðð ð ð
@ð @ð @ð ð ð ð ð r   r(   c                   ó€   — e Zd Zg ZdZd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ ZdZd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTaskFc                 óœ   — t          j        | g|¢R i |¤Ž |d         | _        g | _        g | _        g | _        t          g ¦  «        | _        d S )Nr¸   )r(   r-   r¸   r˜   r™   Ú	dep_nodesr5   Ú	run_afterrJ   s      r   r-   zTask.__init__ã   sT   € Ý
Ô�DÐ!˜!Ð!Ð!Ð!˜bÐ!Ð!Ð!ØˆeŒ9€$„(Ø€$„+Ø€$„,Ø€$„.Ý�R‘”€$„.€.€.r   c                 ó  — | j         }d                     d„ | j        D ¦   «         ¦  «        }d                     d„ | j        D ¦   «         ¦  «        }| j        rd}nd}| j        j                             dd¦  «        ›d|›|›|›d�S )	NrO   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r}   ©Ú	nice_path©rŒ   Úas     r   rŽ   z Task.__str__.<locals>.<listcomp>ì   s    € Ð6Ð6Ð6 Q�A—K’K‘M”MÐ6Ð6Ð6r   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r}   rÊ   rÌ   s     r   rŽ   z Task.__str__.<locals>.<listcomp>í   s    € Ð7Ð7Ð7 Q�A—K’K‘M”MÐ7Ð7Ð7r   ú -> r&   r%   rN   rW   )r¸   r—   r˜   r™   r@   r.   r0   )r   r¸   Úsrc_strÚtgt_strÚseps        r   rY   zTask.__str__ê   s—   € Ø
„h€#Ø
�(Š(Ð6Ð6¨$¬+Ð6Ñ6Ô6Ñ
7Ô
7€'Ø
�(Š(Ð7Ð7¨$¬,Ð7Ñ7Ô7Ñ
8Ô
8€'Ø	„\ð �f�#�#Ø€sØœÔ/×7Ò7¸ÀÑCÔCÐCÐCÀGÀGÈCÈCÐPWÐPWÐPWÐXÐXr   c           	      ó²  — 	 d                      d„ | j        D ¦   «         ¦  «        }d                      d„ | j        D ¦   «         ¦  «        }nX# t          $ rK d                      d„ | j        D ¦   «         ¦  «        }d                      d„ | j        D ¦   «         ¦  «        }Y nw xY wd                      dt	          | ¦  «        z  | j        j        d|d	|d
g¦  «        S )Nrˆ   c                 ó   — g | ]	}|j         ‘Œ
S r}   rŠ   ©rŒ   r¶   s     r   rŽ   z!Task.__repr__.<locals>.<listcomp>ó   s   € Ð-Ð-Ð-˜A�”Ð-Ð-Ð-r   c                 ó   — g | ]	}|j         ‘Œ
S r}   rŠ   rÕ   s     r   rŽ   z!Task.__repr__.<locals>.<listcomp>ô   s   € Ð/Ð/Ð/˜Q�!”&Ð/Ð/Ð/r   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r}   ©rS   rÕ   s     r   rŽ   z!Task.__repr__.<locals>.<listcomp>ö   s   € Ð,Ð,Ð,˜1•�Q‘”Ð,Ð,Ð,r   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r}   rØ   rÕ   s     r   rŽ   z!Task.__repr__.<locals>.<listcomp>÷   s   € Ð.Ð.Ð.˜A•#�a‘&”&Ð.Ð.Ð.r   r&   z
	{task %r: rO   rÏ   rQ   )r—   r˜   r™   r_   rR   r@   r.   )r   rž   rŸ   s      r   rU   zTask.__repr__ñ   sæ   € ð0Ø
‡x‚xÐ-Ð- ¤Ð-Ñ-Ô-Ñ.Ô.€3Ø�ŠÐ/Ð/ $¤,Ð/Ñ/Ô/Ñ0Ô0€4€4øÝ	ð 0ð 0ð 0Ø
‡x‚xÐ,Ð, ¤Ð,Ñ,Ô,Ñ-Ô-€3Ø�ŠÐ.Ð. ¤Ð.Ñ.Ô.Ñ/Ô/€4€4€4ð0øøøð 	�ŠÐ!¥" T¡(¤(Ñ*¨4¬>Ô+BÀ3ÀsÈ6ÐRVÐWZÐ[Ñ\Ô\Ð\s   ‚AA ÁAB ÂB c                 óv  — 	 | j         S # t          $ r¥ t          j        ¦   «         }|j        } || j        j                             ¦   «         ¦  «         | j        | j	        z   D ]1} || 
                    ¦   «                              ¦   «         ¦  «         Œ2|                     ¦   «         | _         | j         cY S w xY wr   )Úuid_r_   r   Úmd5Úupdater@   r.   Úencoder˜   r™   ÚabspathÚdigest)r   ry   Úupr¶   s       r   rl   zTask.uidù   s¹   € ð	Ø
Œ)ÐøÝ	ð ð ð Ý
„Y�[„[€1Ø„h€2Ø€2€d„nÔ×$Ò$Ñ&Ô&Ñ'Ô'Ð'ØŒK˜œÑ$ð ð €qØ€B€q‡y‚y�{„{×ÒÑÔÑÔÐÐØ�XŠX‰ZŒZ€4„9Ø
Œ)ÐÐÐðøøøs   ‚	 ‰B,B8Â7B8c                 óˆ   — t          |t          ¦  «        r| xj        |z  c_        d S | j                             |¦  «         d S r   )r¹   r4   r˜   rn   )r   Úinps     r   Ú
set_inputszTask.set_inputs  sC   € Ý�•DÑÔð ˜$˜+œ+ sÑ*˜+œ+˜+˜+Ø„{×Ò˜#ÑÔÐÐÐr   c                 óˆ   — t          |t          ¦  «        r| xj        |z  c_        d S | j                             |¦  «         d S r   )r¹   r4   r™   rn   )r   ri   s     r   Úset_outputszTask.set_outputs  sC   € Ý�•DÑÔð  ˜$˜,œ,¨Ñ+˜,œ,˜,˜,Ø„|×Ò˜3ÑÔÐÐÐr   c                 óh   — t          |t          ¦  «        sJ ‚| j                             |¦  «         d S r   )r¹   r(   rÇ   Úadd)r   Útasks     r   Úset_run_afterzTask.set_run_after
  s4   € Ý	�D�Ñ	"Ô	"Ð"Ð"Ð"Ø„.×Ò�TÑÔÐÐÐr   c                 óâ  — | j         S # t          $ r Y nw xY wt          j        ¦   «         | _        | j                             | j                             ¦   «         ¦  «         |                      ¦   «          |  	                    ¦   «          | j
        r?	 |                      ¦   «          n)# t          j        $ r |                      ¦   «         cY S w xY w| j                             ¦   «         x}| _         |S r   )Ú	cache_sigr_   r   rÜ   ry   rÝ   r*   rÞ   Úsig_explicit_depsÚsig_varsÚscanÚsig_implicit_depsr   Ú
TaskRescanÚ	signaturerà   )r   r   s     r   rò   zTask.signature  sâ   € ØŒ^ÐøÝ	ÐÐÐ˜˜ÐøøøÝ	Œ‰Œ€$„&Ø„&‡-‚-�”
×!Ò!Ñ#Ô#Ñ$Ô$Ð$Ø×ÒÑÔÐØ‡-‚-�/„/€/Ø	„Yð ðØ×ÒÑÔÐÐøÝ
Ô
ð ð ð Ø�>Š>ÑÔÐÐÐðøøøà”V—]’]‘_”_Ð$€#€d„nØ	€*s   � ˆ
”ÂB& Â&#CÃCc                 ó  — | j         D ]}|j        s	t          c S Œ| j        j        }	 |                      ¦   «         }n# t          j        $ r
 t          cY S w xY w|                      ¦   «         }	 |j	        |         }n.# t          $ r! t          j        d| z  ¦  «         t          cY S w xY w| j        D ]G}	 |j        |k    r	t          c S Œ# t           $ r# t          j        d| z  ¦  «         t          cY c S w xY w||k    rt          S t"          S )NzJtask: task %r must run as it was never run before or the task code changedz7task: task %r must run as the output nodes do not exist)rÇ   rH   Ú	ASK_LATERr   r   rò   r   ÚTaskNotReadyrl   rk   rI   r   Údebugrd   r™   Úsigr_   ÚSKIP_ME)r   Útr   Únew_sigÚkeyÚprev_sigÚnodes          r   re   zTask.runnable_status  s[  € ØŒ>ð ð €aØ
Œ(ð ÝÐÐÐðà
„nÔ€#ðØ�>Š>ÑÔ€7€7øÝ	Ô	ð ð ð Ý
ÐÐÐðøøøà
‡h‚h�j„j€#ðØŒM˜#Ô€8€8øÝ	ð ð ð Ý„:ÐZÐ[_Ñ_Ñ`Ô`Ð`Ý
€=€=€=ðøøøð Œlð ð €dðØ„x�ÒÐÝ€]€]€]ð øå
ð ð ð Ý„JÐHÈÑMÑNÔNÐNÝ€M€M€M€M€Mðøøøð ˆhÒÐÝ
€=Ý	€.s3   ¨= ½AÁAÁ.A< Á<(B'Â&B'Â4C	Ã	(C6Ã5C6c                 ó˜  — | j         j        }|                      ¦   «         }| j        D ]€}	 t	          j        |                     ¦   «         ¦  «         nO# t          $ rB t          | _	        d|                     ¦   «         z  | _
        t          j        | j
        ¦  «        ‚w xY w||_        Œ�| j        |j        |                      ¦   «         <   d S )Nz-> missing file: %r)r   r   rò   r™   ÚosÚstatrß   ÚOSErrorr±   rH   rr   r   rx   r÷   rì   rk   rl   )r   r   r÷   rý   s       r   r   zTask.post_run4  s»   € Ø
„nÔ€#Ø
‡n‚nÑÔ€#ØŒlð ð €dð(Ý„GˆD�LŠL‰NŒNÑÔÐÐøÝ
ð (ð (ð (Ý€D„KØ& t§|¢|¡~¤~Ñ5€D„LÝ
Œ/˜$œ,Ñ
'Ô
'Ð'ð(øøøð €4„8€8Ø œN€#„-�—’‘
”
ÑÐÐs   «&AÁABc           
      ó¸  — | j         j        }| j        j        }| j        | j        z   D ]P}	  ||                     ¦   «         ¦  «         Œ!# t          t          f$ r t          j
        d|›d| ›d�¦  «        ‚w xY w|j        rÃ|j        }| j        | j        z   D ]¬}	 |t          |¦  «                 }n# t          $ r Y Œ%w xY w|D ]€}t          ||j        j        ¦  «        r?	 |                     ¦   «         }nC# t          $ r t          j
        d|›d| ›d�¦  «        ‚w xY wt%          |d¦  «        r
 |¦   «         } ||¦  «         Œ�Œ­| j                             ¦   «         S )NzMissing node signature for z (required by r·   Ú__call__)r   r   ry   rÝ   r˜   rÆ   Úget_bld_sigr_   Ú	TypeErrorr   rx   Údeps_manr™   rR   rI   r¹   Úrootr@   rX   rà   )r   r   Úupdr¶   Úadditional_depsÚdÚvs          r   rí   zTask.sig_explicit_deps@  s²  € Ø
„nÔ€#Ø
„f„m€#ØŒ;�t”~Ñ%ð Uð U€aðUØ€Cˆ�Š‰ŒÑÔÐÐøÝ
�Ð	#ð Uð Uð UÝ
Œ/ˆ/ÈAÈAÈAÈdÈdÈdÐSÑ
TÔ
TÐTðUøøøà„\ð Ø”<€?ØŒK˜œÑ$ð ð €qðØ•r˜!‘u”uÔ€Q€QøÝð ð ð Ø€Xðøøøàð ð ˆÝ�1�S”XÔ'Ñ(Ô(ð ðXØ	
�Š‰Œ€q€qøÝð Xð Xð XÝŒ_ˆ_ÈqÈqÈqÐQUÐQUÐQUÐVÑWÔWÐWðXøøøå
�!�JÑ
Ô
ð Ø	ˆ‰Œ€aØ€Sˆ�V„V€V€Vðð 
Œ�Š‰ŒÐs)   «A	Á	-A6ÂB/Â/
B<Â;B<ÃC3Ã3&Dc                 ó,  — | j         j        }| j        }| j        j        }|                     || j        j        ¦  «        } ||¦  «         t          | dd ¦  «        }|r ||                     ||¦  «        ¦  «         | j         	                    ¦   «         S )NÚdep_vars)
r   r   r¸   ry   rÝ   Úhash_env_varsr@   r6   r1   rà   )r   r   r¸   r  Úact_sigr  s         r   rî   zTask.sig_varsY  sŒ   € Ø
„nÔ€#Ø
„h€#Ø
„f„m€#Ø
×
Ò
˜C ¤Ô 3Ñ
4Ô
4€'Ø€#€g�,„,€,Ý�4˜
 4Ñ(Ô(€(Øð (Ø€3€s×Ò˜˜XÑ&Ô&Ñ'Ô'Ð'Ø	Œ�Š‰ŒÐr   Nc           
      óÜ  — | j         j        }|                      ¦   «         }|j                             |dfg ¦  «        }|rð	 ||                      ¦   «         k    r|S n¶# t          $ r© |j                             |                      ¦   «         g ¦  «        D ]x}|                     |j	        ¦  «        r\	 t          j        |                     ¦   «         ¦  «         ŒD# t          $ r' 	 |j        j        |j        = n# t"          $ r Y nw xY wY Œtw xY wŒyY nw xY w|j        |df= t%          j        d¦  «        ‚|                      ¦   «         \  }}t*          j        rDt+          j        dt1          | ¦  «        ›dt1          |¦  «        ›dt1          |¦  «        ›�¦  «         ||j        |<   ||j        |<   |                      ¦   «          	 |                      ¦   «         x|j        |df<   }|S # t          $ r t*          j        rl|j                             |                      ¦   «         g ¦  «        D ]A}	 |                     ¦   «          Œ# t          $ r t+          j        d|z  ¦  «         Y Œ;w xY wY d S Y d S w xY w)NÚimpÚrescanzdeps: scanner for z
 returned rO   z2Missing signature for node %r (may cause rebuilds))r   r   rl   rk   r^   Úcompute_sig_implicit_depsrp   Ú	node_depsÚis_child_ofÚsrcnoderÿ   r   rß   r  ÚparentÚchildrenr;   rI   r   rñ   rï   r   rº   rö   rS   Úraw_depsÚare_implicit_nodes_readyr  r»   )	r   r   rû   Úprevr¶   ÚnodesÚnamesr÷   rK   s	            r   rð   zTask.sig_implicit_depsd  sÓ  € Ø
„nÔ€#Ø
‡h‚h�j„j€#Ø
„}×Ò˜#˜e˜ RÑ(Ô(€$Ø	ð %ðØˆT×+Ò+Ñ-Ô-Ò-Ð-Ø€[ð .øå
ð 	ð 	ð 	ØŒ]×Ò˜tŸxšx™zœz¨"Ñ-Ô-ð ð ˆØ	�Š�c”kÑ"Ô"ð ðÝ	„wˆq�yŠy‰{Œ{ÑÔÐÐøÝð ð ð ðØŒHÔ˜aœfÐ%Ð%øÝð ð ð Øˆðøøøøøðøøøððð ð	øøøð „}�c˜%�[Ð!Ý	Ô	˜8Ñ	$Ô	$Ð$Ø—	’	‘”�-€5ˆÝ	„\ð WÝ„:€:µS¸±Y´Y°Y°Y½sÀ5¹z¼z¸z¸zÍ#ÈeÉ*Ì*È*ÐUÑVÔVÐVØ€#„-�ÑØ€#„,ˆsÑØ×ÒÑ!Ô!Ð!ð
Ø"&×"@Ò"@Ñ"BÔ"BÐB€3„=�#�e�Ñ˜cð €:øõ 
ð Hð Hð HÝ
„lð HØŒ]×Ò˜tŸxšx™zœz¨"Ñ-Ô-ð Hð HˆðHØ‡m‚m�o„o€o€oøÝð Hð Hð HÝ
„iÐDÀQÑFÑGÔGÐGÐGÐGðHøøøð	Hð Hð HðHð Hð HðHøøøs’   ÁA ÁADÂ0&CÃDÃ
DÃ"C5Ã4DÃ5
D	Ã?DÄD	ÄDÄDÄDÄDÄDÇ  G" Ç"AI+È(H=È<I+È=!I!ÉI+É I!É!I+É*I+c                 ó&  — | j         j        }| j        j        }|                      ¦   «          |j                             |                      ¦   «         g ¦  «        D ]} ||                     ¦   «         ¦  «         Œ | j          	                    ¦   «         S r   )
ry   rÝ   r   r   r  r  r^   rl   r  rà   )r   r  r   rK   s       r   r  zTask.compute_sig_implicit_deps‰  s{   € Ø
„f„m€#Ø
„nÔ€#Ø×ÒÑ!Ô!Ð!ØŒ=×Ò˜TŸXšX™ZœZ¨Ñ+Ô+ð ð €aØ€3€q‡}‚}�„ÑÔÐÐØ	Œ�Š‰ŒÐr   c                 óì  — | j         j        }	 |j        }n# t          $ r i x|_        }Y nw xY w	 ||j                 }n5# t
          $ r( i x}||j        <   |j        D ]}|j        D ]}|||<   ŒŒY nw xY wd}|j         	                    |  
                    ¦   «         g ¦  «        D ](}||v r"| j                             ||         ¦  «         d}Œ)|r%| j        D ]}|j        st          j        d¦  «        ‚Œd S d S )NFTz	not ready)r   r   Údct_implicit_nodesr_   r‡   rI   Ú	cur_tasksr™   r  r^   rl   rÇ   rè   rH   r   rõ   )r   r   ÚcacheÚdctÚtskr¶   Úmodifieds          r   r  zTask.are_implicit_nodes_ready�  sf  € Ø
„nÔ€#ð#Ø	Ô	€5€5øÝ	ð #ð #ð #Ø "Ð"€3Ô˜%˜%˜%ð#øøøðØˆSŒW„~€3€3øÝ	ð ð ð ØÐ€3€uˆSŒW�~ØŒmð ð €sØŒ[ð ð ˆØ€Sˆ�V€Vððð ðøøøð
 €(ØŒ=×Ò˜TŸXšX™ZœZ¨Ñ+Ô+ð ð €aØˆ3€h€hØ„N×Ò�s˜1”vÑÔÐØ€HøØð ,ØŒnð ,ð ,€sØŒ:ð ,ÝÔ˜{Ñ+Ô+Ð+ð,ð,ð ,ð,ð ,s   Ž –,«,°> ¾/A0Á/A0c                 óÜ  — t          | dd ¦  «        sd S |                      ¦   «         }t          j        |                      ¦   «         ¦  «        t          j        |¦  «        z   }t
          j                             | j        j	        j
        |¦  «        }	 t          j        |¦  «        j        }n# t          $ r Y d S w xY w| j        D ]‘}t
          j                             ||j        ¦  «        }	 t!          j        ||                     ¦   «         ¦  «         t          j        |d ¦  «         Œe# t          t(          f$ r t+          j        d¦  «         Y  d S w xY w	 t          j        |¦  «        j        }n# t          $ r Y d S w xY w||k    rd S | j        D ]R}||_        | j        j	        j        dk     r4| j        j	                             d|                     ¦   «         z  ¦  «         ŒSd| _        dS )Nr™   ztask: failed retrieving filer   zrestoring from cache %r
T)r1   rò   r   Úto_hexrl   rÿ   Úpathr—   r   r   r   r   Úst_mtimer  r™   r;   ÚshutilÚcopy2rß   ÚutimeÚIOErrorr   rö   r÷   r“   r   Úcached)r   r÷   ÚssigÚdnameÚt1rý   ÚorigÚt2s           r   r   zTask.can_retrieve_cache¦  sä  € Ý	��i Ñ	%Ô	%ð Ø
ˆ$Ø
‡n‚nÑÔ€#Ý„|�D—H’H‘J”JÑÔ¥¤¨SÑ 1Ô 1Ñ1€$Ý
Œ�Š�T”^Ô'Ô4°TÑ:Ô:€%ðÝ„gˆe�n„nÔ€2€2øÝ	ð ð ð Ø
ˆ$ˆ$ðøøøàŒlð ð €dÝ
Œ�Š�U˜4œ9Ñ%Ô%€4ðÝ
„L��d—l’l‘n”nÑ%Ô%Ð%Ý„HˆT�$ÑÔÐÐøÝ
•'Ð	ð ð ð Ý„JÐ-Ñ.Ô.Ð.Øˆ4ˆ4ˆ4ðøøøðÝ„gˆe�n„nÔ€2€2øÝ	ð ð ð Ø
ˆ$ˆ$ðøøøàˆ‚V€VØ
ˆ$ØŒlð Jð J€dØ€4„8Ø
„nÔÔ% aÒ'Ð'Ø„NÔ×ÒÐ9¸$¿,º,¹.¼.ÑHÑIÔIÐIøØ€$„+Ø	ˆs6   ÂB- Â-
B;Â:B;Ã-<D*Ä*%EÅEÅE2 Å2
F Å?F c                 ó2  — t          | dd ¦  «        rd S t          | dd ¦  «        sd S |                      ¦   «         }t          j        |                      ¦   «         ¦  «        t          j        |¦  «        z   }t
          j                             | j        j	        j
        |¦  «        }t          j        | j        j	        j
        t
          j        z   dz   ¬¦  «        }	 t          j        |¦  «         n# t           $ r Y nw xY w	 | j        D ]N}t
          j                             ||j        ¦  «        }t          j        |                     ¦   «         |¦  «         ŒO	 	 t          j        ||¦  «         	 t          j        |t          j        ¦  «         d S # t           $ r Y d S w xY w# t0          $ r- 	 t          j        |¦  «         n# t           $ r Y nw xY wY d S Y d S w xY w# t0          t2          f$ r+ 	 t          j        |¦  «         Y d S # t           $ r Y Y d S w xY ww xY w)Nr.  r™   Úwaf)Úprefix)r1   rò   r   r'  rl   rÿ   r(  r—   r   r   r   ÚtempfileÚmkdtemprÒ   r*  Úrmtreerp   r™   r;   r+  rß   ÚrenameÚchmodÚO755r  r-  )r   r÷   r/  r0  Útmpdirrý   Údests          r   r   zTask.put_files_cacheÄ  sW  € ÝˆT�(˜4Ñ Ô ð Ø
ˆ$Ý	��i Ñ	%Ô	%ð Ø
ˆ$Ø
‡n‚nÑÔ€#Ý„|�D—H’H‘J”JÑÔ¥¤¨SÑ 1Ô 1Ñ1€$Ý
Œ�Š�T”^Ô'Ô4°TÑ:Ô:€%Ý	Ô	 ¤Ô!3Ô!@ÅÄÑ!GÈÑ!MÐ	NÑ	NÔ	N€&ðÝ	„=�ÑÔÐÐøÝ	ð ð ð Ø€4ðøøøð
ØŒ|ð &ð &€tÝ	Œ�Š�f˜TœYÑ	'Ô	'€DÝ
„L�—’‘” Ñ%Ô%Ð%Ð%ð&ð
Ý„Iˆf�UÑÔÐð
Ý„Xˆe•E”JÑÔÐÐÐøÝð 
ð 
ð 
Ø	€T€Tð
øøøøõ ð 
ð 
ð 
ð
Ý„]�6ÑÔÐÐøÝð 
ð 
ð 
Ø	€Tð
øøøð ÐÐà	€T€Tð	
øøøøõ 
•Ðð 	ð 	ð 	ð	Ý
„M�&ÑÔÐÐÐÐøÝ
ð 	ð 	ð 	Ø€D€D€Dð	øøøð	øøøs…   ÃC/ Ã/
C<Ã;C<Ä AG ÅF  Å.F Æ
FÆFÆ 
GÆ+G Æ?GÇ 
GÇ
GÇGÇGÇGÇHÇ,HÈ
HÈHÈHÈH)r.   rA   rB   r6   r3   r-   rY   rU   rl   rä   ræ   rê   rò   re   r   rí   rî   rï   rð   r  r  r   r   r}   r   r   rÄ   rÄ   à   s+  € € € € € Ø€Ø€ðð ð ðYð Yð Yð]ð ]ð ]ð
ð 
ð 
ðð ð ð ð  ð  ðð ð ðð ð ðð ð ð2+ð +ð +ðð ð ð2	ð 	ð 	ð €ð$ð $ð $ðJð ð ð,ð ,ð ,ð,ð ð ð<"
ð "
ð "
ð "
ð "
r   rÄ   c                 óæ   — t           j        } ||j        ¦  «        D ]}| || j        ¦  «        v r dS Œ| j        j         ||j        ¦  «        v rdS |j        j         || j        ¦  «        v rdS dS )Nr   r   )r   Úto_listr©   rª   r@   r.   r¨   r§   )r1  r3  r@  rK   s       r   Ú	is_beforerA  ç  sŽ   € Ý	Œ€Ø
ˆ'�"”)Ñ
Ô
ð ð €QØˆ'ˆ'�"”*Ñ
Ô
ÐÐØ
ˆ!ˆ!ð à„LÔ˜W˜W R¤XÑ.Ô.Ð.Ð.Ø	
ˆØ„LÔ˜W˜W R¤YÑ/Ô/Ð/Ð/Ø	
ˆØ	ˆr   c                 ót  — t          j        t          ¦  «        }t          j        t          ¦  «        }| D ]Œ}t          |dg ¦  «        t          |dg ¦  «        z   D ]*}|t	          |¦  «                                      |¦  «         Œ+t          |dg ¦  «        D ]*}|t	          |¦  «                                      |¦  «         Œ+Œ�t          |                     ¦   «         ¦  «                             |                     ¦   «         ¦  «        }|D ]-}||         D ]"}|j         	                    ||         ¦  «         Œ#Œ.d S )Nr˜   rÆ   r™   )
r   Údefaultdictr5   r1   rR   rè   ÚkeysÚintersectionrÇ   rÝ   )Útasksrž   rŸ   r¶   rÍ   ÚlinksrK   s          r   Úset_file_constraintsrH  ñ  s2  € Ý
Ô•sÑÔ€ÝÔ�ÑÔ€Ø
ð ð €QÝ�1�X˜bÑ!Ô!¥'¨!¨K¸Ñ";Ô";Ñ;ð ð €aØ…rˆ!�u„u„:‡>‚>�!ÑÔÐÐÝ�1�Y˜rÑ"Ô"ð ð €aØ�ˆ1‰Œ„;‡?‚?�1ÑÔÐÐðå
ˆ3�8Š8‰:Œ:�„×#Ò# D§I¢I¡K¤KÑ0Ô0€Ø
ð ð €QØˆqŒ6ð ð €aØ„;×Ò�d˜1”gÑÔÐÐððð r   c                 ó‚  — t          j        t          ¦  «        }| D ]1}|                     ¦   «         }||                              |¦  «         Œ2t          |                     ¦   «         ¦  «        }t          |¦  «        }t          |¦  «        D ]±}|||                  d         }t          |dz   |¦  «        D ]‡}|||                  d         }	t          ||	¦  «        r|}
|}nt          |	|¦  «        r|}
|}nŒAt          |||
                  ¦  «        }|||                  D ]}|j
                             |¦  «         ŒŒˆŒ²d S )Nr   r   )r   rC  r4   r®   rn   rD  rš   ÚrangerA  r5   rÇ   rÝ   )rF  Úcstr_groupsr¶   r­   rD  ÚmaxiÚir1  Újr3  rÍ   ÚbÚavals                r   Úset_precedence_constraintsrQ  ý  sa  € ÝÔ�tÑ$Ô$€Ø
ð ð €QØ×ÒÑÔ€!Øˆa„.×Ò˜ÑÔÐÐÝ
ˆ;×ÒÑÔÑÔ€Ý	ˆ$�i„i€Ý
�‰+Œ+ð ð €QØ��a”Ô˜!Ô€"Ý��1‘�T‰?Œ?ð ð €aØ�$�q”'Ô˜1Ô€2Ý��2ÑÔð Ø€AØ€A€AÝ�"�RÑÔð Ø€AØ€A€AàÝˆK˜˜QœÔ Ñ!Ô!€4Ø˜˜QœÔ ð ð €qØ„K×Ò�tÑÔÐÐðððð r   c                 ó6   — i }t          | |¦  «         |d         S )Nr>   )Úexec)ÚcÚdcs     r   ÚfunexrV    s   € Ø€Ý€aˆ�„€Ø
ˆ3Œ€r   zM(?P<backslash>\\)|(?P<dollar>\$\$)|(?P<subst>\$\{(?P<var>\w+)(?P<code>.*?)\})c                 óB  ‡	— g Š	ˆ	fd„}t                                || ¦  «        p| } g }g }|j        }‰	D ]ø\  }}|dk    r|r |d|z  ¦  «         Œ |d¦  «         Œ(|dk    r|r |d|z  ¦  «         Œ? |d¦  «         ŒK|r„|                     d¦  «        r_|d	d …         }|dk    rd
}n9|dk    rd}n0|d d…         dvr$|                     ||d	d …         g¦  «         d|z  } |d|›d|›d�¦  «         ŒÁ ||›|›�¦  «         ŒÑ||vr|                     |¦  «          |d|z  ¦  «         Œù|rdd                     |¦  «        z  }nd}t          | |fz  }t          j        d| 	                    ¦   «          
                    ¦   «         z  ¦  «         t          |¦  «        |fS )Nc                 ó¶   •— | j         } |d¦  «        rdS  |d¦  «        rdS  |d¦  «        r+‰                      |d¦  «         |d¦  «        f¦  «         dS d S )	NÚdollarú$Ú	backslashz\\ÚsubstÚvarÚcodez%s©Úgrouprn   ©ÚmatchÚgÚextrs     €r   Úreplzcompile_fun_shell.<locals>.repl  so   ø€ Ø	„K€!Ø€Q€x�[„[ð ?�s�sØ€qˆ�~„~ð ?˜F˜FØ€qˆ�z„zÐ>�$—+’+˜q˜q ™xœx¨¨¨&©	¬	Ð2Ñ3Ô3Ð3¸$¸$Ø	ˆr   ÚSRCztsk.inputs%sz8" ".join([a.path_from(bld.bldnode) for a in tsk.inputs])ÚTGTztsk.outputs%sz9" ".join([a.path_from(bld.bldnode) for a in tsk.outputs])ú:r   ú.[a.path_from(bld.bldnode) for a in tsk.inputs]ú/[a.path_from(bld.bldnode) for a in tsk.outputs]r   ©r$  Úgenr   ú%rz" ".join(tsk.colon(ú, ú))zp('%s')z%% (%s) z,
		r&   ú
action: %s)Úreg_actÚsubrn   Ú
startswithr¼   r—   ÚCOMPILE_TEMPLATE_SHELLr   rö   ÚstripÚ
splitlinesrV  )
Úlinere  Úparmr?   Úappr]  Úmethry   rT  rd  s
            @r   Úcompile_fun_shellr{    s8  ø€ Ø€ðð ð ð ð õ ‡k‚k�$�tÑÔÐ#˜t€Ø€Ø	€Ø	„[€Øð ð �J€SˆØˆ%‚Z€ZØ
ð Hˆ3ˆ3ˆ~˜dÑ"Ñ#Ô#Ð#Ð#ØˆÐFÑGÔGÐGÐGØ
ˆE‚z€zØ
ð Iˆ3ˆ3ˆ˜tÑ#Ñ$Ô$Ð$Ð$ØˆÐGÑHÔHÐHÐHØð Ø
‡o‚o�cÑÔð Ø
ˆ1ˆ2ˆ2„h€AØˆ%‚x€xØ7€Q€QØ	
ˆEŠˆØ8€Q€QØ	
ˆ2ˆAˆ2ŒÐ'Ð	'Ð	'Ø
‡\‚\�3�t˜A˜B˜B”x�.Ñ!Ô!Ð!ØˆA�v€QØ€C€C s s s¨1¨1¨1Ð-Ñ.Ô.Ð.Ð.à€C���D�DÐÑÔÐÐà
�ˆ,ˆ,�u—|’| CÑ(Ô(Ð(Ø€3€y��}ÑÔÐÐØð ˆj˜)Ÿ.š.¨Ñ.Ô.Ñ/ˆˆØ€dÝ˜4 ˜+Ñ%€Ý„ˆL˜Ÿš™œ×-Ò-Ñ/Ô/Ñ/Ñ0Ô0Ð0Ýˆa‰Œ�ÐÐr   c                 óŽ  ‡— g Šˆfd„}t                                || ¦  «        }|                     d¦  «        }‰sJ ‚g }g }|j        }t	          t          ‰¦  «        ¦  «        D �]H}||                              ¦   «         ||<   ||         r& |d||                              ¦   «         z  ¦  «         ‰|         \  }}	|dk    r|	r |d|	z  ¦  «         Œp |d¦  «         Œ||dk    r|	r |d|	z  ¦  «         Œ“ |d	¦  «         ŒŸ|	r€|	                     d
¦  «        rX|	dd …         }
|
dk    rd}
n1|
dk    rd}
n(|
d d…         dvr|                     ||
g¦  «         d|
z  }
 |d|›d|
›d�¦  «         �Œ |d|›|	›d�¦  «         �Œ! |d|z  ¦  «         ||vr|                     |¦  «         �ŒJ‰r.|d         r& |d|d                              ¦   «         z  ¦  «         t          d 
                    |¦  «        z  }t          j        d|                     ¦   «                              ¦   «         z  ¦  «         t          |¦  «        |fS )Nc                 óœ   •— | j         } |d¦  «        rdS  |d¦  «        r+‰                      |d¦  «         |d¦  «        f¦  «         dS d S )NrY  rZ  r\  r]  r^  ú<<|@|>>r_  ra  s     €r   re  z!compile_fun_noshell.<locals>.replB  s\   ø€ Ø	„K€!Ø€Q€x�[„[ð D�s�sØ€qˆ�z„zÐC�$—+’+˜q˜q ™xœx¨¨¨&©	¬	Ð2Ñ3Ô3Ð3¸)¸)Ø	ˆr   r~  zlst.extend(%r)rf  zlst.append(tsk.inputs%s)z:lst.extend([a.path_from(bld.bldnode) for a in tsk.inputs])rg  zlst.append(tsk.outputs%s)z;lst.extend([a.path_from(bld.bldnode) for a in tsk.outputs])rh  r   ri  rj  r   rk  rm  zlst.extend(tsk.colon(rn  ro  zlst.extend(gen.to_list(zlst.extend(to_list(env[%r]))r   z
	rp  )rq  rr  Úsplitrn   rJ  rš   ru  rs  r¼   ÚCOMPILE_TEMPLATE_NOSHELLr—   r   rö   rv  rV  )rw  re  Úline2ÚparamsÚbufr?   ry  r¶   r]  rz  ry   rP   rd  s               @r   Úcompile_fun_noshellr„  @  sÇ  ø€ Ø€ðð ð ð ð õ
 ‡{‚{�4˜ÑÔ€Ø�Š�IÑÔ€Ø€€€Ø€Ø	€Ø„Z€Ý
•�D‘	”	Ñ
Ô
ð )ñ )€QØ�1ŒI�OŠOÑÔ€&ˆ�)ØˆA„Yð +Ø€3Ð˜˜qœ	ŸšÑ)Ô)Ñ)Ñ*Ô*Ð*Ø�!ŒW�*€3€tØˆ%‚Z€ZØ
ð Jˆ3ˆ3Ð)¨$Ñ.Ñ/Ô/Ð/Ð/ØˆÐHÑIÔIÐIÐIØ
ˆE‚z€zØ
ð Kˆ3ˆ3Ð*¨4Ñ/Ñ0Ô0Ð0Ð0ØˆÐIÑJÔJÐJÐJØð )Ø
‡o‚o�cÑÔð 4Ø
ˆ1ˆ2ˆ2„h€AØˆ%‚x€xØ7€Q€QØ	
ˆEŠˆØ8€Q€QØ	
ˆ2ˆAˆ2ŒÐ'Ð	'Ð	'Ø
‡\‚\�3�q�'ÑÔÐØˆA�v€QØ€C€C¨¨¨¨Q¨Q¨QÐ/Ñ0Ô0Ð0Ñ0à€C€C¨¨¨T¨T¨TÐ2Ñ3Ô3Ð3Ñ3à€3Ð% cÑ)Ñ*Ô*Ð*Ø
�ˆ,ˆ,�u—|’| CÑ(Ô(Ð(ùØð ,ØˆB„Zð ,Ø€3Ð˜˜rœ
×(Ò(Ñ*Ô*Ñ*Ñ+Ô+Ð+Ý˜fŸkšk¨#Ñ.Ô.Ñ.€Ý„ˆL˜Ÿš™œ×/Ò/Ñ1Ô1Ñ1Ñ2Ô2Ð2Ýˆc‰
Œ
�5ÐÐr   Fc                 óÜ   — |                       d¦  «        dk    s2|                       d¦  «        dk    s|                       d¦  «        dk    rd}|rt          | ¦  «        S t          | ¦  «        S )Nú<r   ú>z&&T)Úfindr{  r„  )rw  r3   s     r   r2   r2   n  sh   € Ø‡I‚Iˆc�N„N�1ÒÐ˜Ÿ	š	 #™œ qÒ(Ð(¨D¯IªI°d©O¬O¸AÒ,=Ð,=Ø€%Ø	ð #Ý	˜4Ñ	 Ô	 Ð å	˜TÑ	"Ô	"Ð"r   rE   c
           
      óP  — |pg || t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        ||	dœ	}
t          |t          ¦  «        r||
d<   n||
d<    t	          t
          ¦  «        | t
          f|
¦  «        }|t          | <   |S )N)	r6   r‘   r;   r©   rª   r§   r¨   r3   rï   r)   r   )r   r@  r¹   rS   ÚtyperÄ   r:   )r;   Úfuncr6   r‘   r©   rª   r§   r¨   r3   rï   r‚  r    s               r   Útask_factoryrŒ  u  sÛ   € Ø�	�r %¨t½U¼]È6Ñ=RÔ=RÕ]bÔ]jÐkrÑ]sÔ]sõ  ~Cô  ~Kð  LRñ  ~Sô  ~Sõ  \aô  \ið  joñ  \pô  \pð  y~ð  FJð  	Lð  	L€Ýˆt•CÑÔð Ø€&ˆÑÐà€&ˆ�-Ø…T�$�Z„Z�•d�W˜VÑ$Ô$€à…ˆ�Ø€r   c                 ó.   ‡— | j         Šˆfd„}|| _         | S )Nc                 óB   •—  ‰| ¦  «        }|t           k    rt          }|S r   )rø   rd   )r   r   Úolds     €r   Úalwayszalways_run.<locals>.always�  s#   ø€ Ø	€cˆ$�i„i€#Ø�'‚\€\Ý€3Ø	€*r   )re   )r    r�  r�  s     @r   Ú
always_runr‘    s3   ø€ ØÔ€ðð ð ð ð ð
 €ÔØ€r   c                 óV   ‡‡— | j         Šˆfd„}|| _         | j        Šˆfd„}|| _        | S )Nc                 óø   •—  ‰| ¦  «         | j         D ]e}t          j        |                     ¦   «         ¦  «        |_        |                      ¦   «         | j        j        j        |                     ¦   «         <   Œfd S r   )	r™   r   Úh_filerß   r÷   rl   r   r   rk   )r   rý   Úold_post_runs     €r   r   z update_outputs.<locals>.post_runŠ  sl   ø€ Ø€,ˆtÑÔÐØŒlð ;ð ;€dÝŒL˜Ÿš™œÑ(Ô(€4„8Ø04·²±
´
€4„>ÔÔ §¢¡¤Ñ/Ð/ð;ð ;r   c                 óÄ  •—  ‰| ¦  «        }|t           k    r|S 	 | j        j        }|j        |                      ¦   «                  }||                      ¦   «         k    rV| j        D ]G}|j        r5|j        |                     ¦   «                  |                      ¦   «         k    r	t           c S ŒHt          S n&# t          $ r Y nt          $ r Y nt          $ r Y nw xY wt           S r   )rd   r   r   rk   rl   rò   r™   r÷   rß   rø   rI   Ú
IndexErrorr_   )r   Ústatusr   rü   r¶   Úold_runnable_statuss        €r   re   z'update_outputs.<locals>.runnable_status‘  s  ø€ Ø	Ð	˜TÑ	"Ô	"€&Ø�V‚^€^Ø
€=ðØ„~Ô€3ØŒM˜$Ÿ(š(™*œ*Ô%€8Ø�—’Ñ Ô Ò Ð ØŒ\ð ð ˆØŒEð �S”] 1§9¢9¡;¤;Ô/°·²±´Ò;Ð;Ý€m€m€mð <å€Nð	 !øõ
 
ð ð ð Ø€4Ý	ð ð ð Ø€4Ý	ð ð ð Ø€4ðøøøå	€-s$   ›BB5 Â,B5 Â5
CÃ	CÃ	CÃC)r   re   )r    r   re   r•  r™  s      @@r   Úupdate_outputsrš  ˆ  s^   øø€ ØŒl€ð;ð ;ð ;ð ;ð ;ð
 €„ØÔ(Ððð ð ð ð ð& %€ÔØ€r   )F)(rÿ   r*  Úrer7  Úwaflibr   r   r   rG   r±   rv   rs   ÚSKIPPEDrw   rô   rø   rd   rt  r€  r!   r:   rŠ  r#   Úobjectr'   r(   rÄ   rA  rH  rQ  rV  ÚcompileÚMrq  r{  r„  r2   rŒ  r‘  rš  r}   r   r   ú<module>r¡     s.  ðð
 Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø	€Ø	€Ø	€Ø
€	Ø	€Ø	€Ø
€	Ø
€Ø	€ð	Ð ðÐ ðð ð ð$ 	€ð-ð -ð -ð -ð -�dñ -ô -ð -ð( €_�V˜V˜I bÑ)Ô)€ðOð Oð Oð Oð Oˆtñ Oô Oð Oð`F
ð F
ð F
ð F
ð F
ˆ8ñ F
ô F
ð F
ðN	
ð 	
ð 	
ðð ð ðð ð ð,ð ð ð 	ˆŒ
ÐcÐdfÔdhÑiÔi€ð'ð 'ð 'ðP-ð -ð -ð\#ð #ð #ð #ð   T°¸rÈ"ÐTVÐ]_ÐfkÐquð 	ð 	ð 	ð 	ðð ð ðð ð ð ð r   