
<4Ic           @   s  d  d l  Z  e  j d k  r. d  d l m Z n  d  d l Z d  d l Z d  d l Z d  d l  Z  d  d l Z d  d l	 Z	 d  d l
 Z
 d  d l Z d  d l m Z d  d l Z d  d l Z 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  d l Te a d e f d     YZ d	 e f d
     YZ d e f d     YZ d e f d     YZ d e f d     YZ d   Z  e j! d e j"  Z# d   Z$ d g  g  g  g  g  d  Z% g  d g  g  g  g  d  Z& d S(   iNi (   t   Set(   t   md5(   t   debugt   errort   warn(   t   *t   TaskManagerc           B   s>   e  Z d    Z d   Z d   Z d   Z d   Z d   Z RS(   c         C   s   g  |  _  g  |  _ d |  _ d  S(   Ni    (   t   groupst
   tasks_donet   current_group(   t   self(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   __init__   s    		c         C   s_   d  } xR | rZ |  j t |  j  k  rZ |  j |  j j   } | rH | S|  j d 7_ q	 Wd S(   Ni   (   NN(   t   NoneR	   t   lenR   t   get_next_set(   R
   t   ret(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR      s    " c         C   s>   |  j  r' |  j  d j r' t d  n  |  j  j t    d  S(   Ni    s,   add_group: an empty group is already present(   R   t   tasksR   t   appendt	   TaskGroup(   R
   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt	   add_group   s    c         C   s.   |  j  s |  j   n  |  j  d j |  d  S(   Ni(   R   R   t   add_task(   R
   t   task(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR      s    	 c         C   s>   d } |  j  s d Sx$ |  j  D] } | t | j  7} q W| S(   Ni    (   R   R   R   (   R
   t   totalt   group(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR      s    	 c         C   se   |  j  j |  | j j } t j ra d  } d | j k rT | j d } | |  qa | j   n  d  S(   Nt   install(	   R   R   t	   generatort   bldt   Optionst
   is_installR   t   __dict__R   (   R
   t   tskR   t   f(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   add_finished$   s    	(   t   __name__t
   __module__R   R   R   R   R   R    (    (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR      s   					R   c           B   s}   e  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 RS(   c         C   s1   g  |  _  i  |  _ i  |  _ g  |  _ d |  _ d  S(   Ni    (   R   t   cstr_groupst
   cstr_ordert
   temp_taskst   ready(   R
   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR   /   s
    				c         C   se   x' |  j  D] } |  j |  j  | 7_ q
 W|  j |  j |  _ g  |  _ g  |  _  i  |  _ d |  _ d  S(   Ni    (   R#   R   R%   R$   R&   (   R
   t   x(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   reset5   s    			c         C   s!   d |  _  |  j   |  j   d  S(   Ni   (   R&   t   make_cstr_groupst   extract_constraints(   R
   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   prepare=   s    	
c         C   s   t  t k r$ |  j   } t j } nX t  t k rE |  j   \ } } n7 t  t k ri |  j   } t j } n t	 j
 d t    | s d S| | f S(   Ns   unknown algorithm type %s(    (   t   algotypet   NORMALt   tasks_in_parallelt   syst   maxintt
   JOBCONTROLt   tasks_by_max_jobst   MAXPARALLELt   tasks_with_inner_constraintst   Utilst   WafError(   R
   R   t   maxj(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR   A   s     c         C   si   i  |  _  xY |  j D]N } | j   } y |  j  | j |  Wq t k
 r` | g |  j  | <q Xq Wd  S(   N(   R#   R   t   hash_constraintsR   t   KeyError(   R
   R'   t   h(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR)   O   s    	  c         C   s8   y |  j  j |  Wn t k
 r3 | g |  _  n Xd  S(   N(   R   R   R9   (   R
   R   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR   U   s      c         C   sF   y |  j  | j |  Wn' t k
 rA t | g  |  j  | <n Xd  S(   N(   R$   t   addR9   t   set(   R
   t   at   b(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt	   set_orderX   s      c         C   s   d } d } | j  | d  } | j  | d  } x | D] } | | k r7 d Sq7 W| j  | d  } | j  | d	  } x | D] } | | k r| d Sq| Wd S(
   Nt   ext_int   ext_outii   i    (    (    (    (    (   t   attr(   R
   t   t1t   t2R'   t   yt   in_t   out_t   k(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   compare_exts[   s    c         C   s   d } d } | j  j } | | j | d  k r4 d S| | j | d  k rP d S| j  j } | | j | d  k rx d S| | j | d	  k r d Sd S(
   Nt   aftert   beforeii   i    (    (    (    (    (   t	   __class__R!   RB   (   R
   RC   RD   t   mt   nt   name(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   compare_partiali   s        c         C   s   |  j  j   } t |  } x t |  D] } |  j  | | d } x t | d |  D] } |  j  | | d } |  j | |  p |  j | |  } | d k r |  j | | | |  qW | d k  rW |  j | | | |  qW qW Wq( Wd  S(   Ni    i   (   R#   t   keysR   t   xrangeRI   RP   R?   (   R
   RQ   t   maxt   iRC   t   jRD   t   val(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR*   s   s    $c         C   s!  |  j  s |  j   n  |  j j   } g  } g  } xR | D]J } xA |  j j   D]# } | | k rN | j |  PqN qN W| j |  q8 Wg  } x" | D] } | j |  j |  q WxF | D]> } y |  j j |  Wn t	 k
 r n X|  j j |  q W| r| rt
 j d |   n  | S(   Ns%   circular order constraint detected %r(   R&   R+   R#   RQ   R$   t   valuesR   t   extendt   __delitem__R9   R5   R6   (   R
   RQ   t   unconnectedt	   remaindert   uRH   t   toreturnRE   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR.      s.    	   c         C   s   |  j  s |  j   n  |  j s1 |  j   |  _ n  |  j s> d St j } g  } g  } x |  j D]{ } t | d t |  j d t j   } | | k r | j	 |  q] | | k  r | | 7} | g } | } q] | j	 |  q] W| |  _ | | f S(   Nt   maxjobs(   NN(
   R&   R+   R%   R.   R   R/   R0   t   getattrRL   R   (   R
   R^   R   t	   remainingt   tRM   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR2      s(    	 	 	 	$
			c         C   s   |  j  s |  j   n  t |  d d   r, d  Sxf |  j D][ } xR |  j | D]C } x: |  j | D]+ } x" |  j | D] } | j |  qr Wq^ WqJ Wq6 Wi  |  _ i  |  _ d |  _ |  j S(   Nt   donei   (	   R&   R+   R_   R   R$   R#   t   set_run_afterRb   R   (   R
   t   pt   vRM   RN   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR4      s    	  			(   R!   R"   R   R(   R+   R   R)   R   R?   RI   RP   R*   R.   R2   R4   (    (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR   .   s   									
			t   store_task_typec           B   s   e  Z d    Z RS(   c         C   sZ   t  t |   j | | |  |  j } | j d  rV | j d d  } |  t j | <n  d  S(   Nt   _taskt    (   t   superRf   R   R!   t   endswitht   replacet   TaskBaset   classes(   t   clsRO   t   basest   dict(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR      s
    	(   R!   R"   R   (    (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyRf      s   Rl   c           B   s   e  Z e Z d  Z e j Z i  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 RS(   t   GREENc         O   sr   t  |  _ y | d |  _ Wn& t k
 rB |  |  _ t j |  _ n X| j d d  rn |  j j j j |   n  d  S(   NR   t   normali   (	   t   NOT_RUNt   hasrunR   R9   t   BuildR   t   gett   task_managerR   (   R
   RH   t   kw(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR      s    		c         C   s&   d |  j  j t t |  d d   f S(   Ns   
	{task: %s %s}t   funRh   (   RL   R!   t   strR_   (   R
   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   __repr__   s    c         C   s+   t  |  d  r d |  j j S|  j j d S(   NRy   s   executing: %s
s   
(   t   hasattrRy   R!   RL   (   R
   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   __str__   s    c         C   s   t  S(   N(   t   RUN_ME(   R
   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   runnable_status   s    c         C   s   t  S(   N(   t   False(   R
   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   can_retrieve_cache   s    c         C   s   |  j    r d S|  j   S(   Ni    (   R   t   run(   R
   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   call_run   s    c         C   s    t  |  d  r |  j |   Sd S(   NRy   i    (   R|   Ry   (   R
   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR      s    c         C   s   d  S(   N(    (   R
   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   post_run   s    c   
      C   s  t  j |  j  } t  j j } t j j d k rZ |  j j j	 |  j
 d |  j
 d | |  St j j d k rFy |  j j j } Wn* t k
 r t j   } |  j j _ n Xt j d t j t j   |   } d j g  |  j D] } | j ^ q  } d j g  |  j D] } | j ^ q	 } d |  j
 d |  j
 d | | | f S|  j
 d } t t |   } d | | f }	 |	 |  j
 d |  j
 d | t |   | f S(   Ni   i    i   s   %H:%M:%St   ,s3   |Total %s|Current %s|Inputs %s|Outputs %s|Time %s|
s   [%%%dd/%%%dd] %%s%%s%%s(   t   Logst   colorst   colorR-   R   t   optionst   progress_barR   R   t   progress_linet   positiont   init   AttributeErrort   timet   strftimet   gmtimet   joint   inputsRO   t   outputsR   Rz   (
   R
   t   col1t   col2R   t   elaRN   t   inst   outsR   t   fs(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   display   s"    *  %((%c         C   s   t  |  | t  |  j | |   S(   N(   R_   RL   (   R
   t   attt   default(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyRB      s    c         C   sx   d } d } t  | |  j j f  } x5 | D]- } t  | t |  j | t j   f  } q+ Wt  | |  j j f  } | S(   Ni    RK   RJ   R@   RA   (   s   befores   afters   ext_ins   ext_out(   t   hashRL   R!   Rz   RB   R/   R0   R^   (   R
   t   sumt   namesR'   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR8      s    +c         C   s   t  |  d d   r |  j S|  j t k rY y d |  j |  f SWq t k
 rU d |  SXn1 |  j t k ro |  j S|  j t	 k r d |  Sd Sd  S(   Nt	   error_msgs    -> task failed (err #%d): %rs    -> task failed: %rs    -> missing files: %rRh   (
   R_   R   R   Rt   t   CRASHEDt   err_codeR   t	   EXCEPTIONt   err_msgt   MISSING(   R
   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   format_error   s    c         C   s  |  j  j } |  j d  } |  j d  r	g  |  j D] } | j | j  ^ q4 } |  j d d  } |  j d  r | g  |  j D] } | j | j  ^ q 7} n  |  j d  r |  j |  j d  } | j |  j | d |  j	 |  q	| j
 |  j | |  j	 |  n  d  S(   NR   t   install_patht   chmodi  t   srct   filenamei    (   R   R   RB   R   t   relpath_gent   srcnodeR   R   t
   install_ast   envt   install_files(   R
   R   t   dR=   t   lstt   permt   dir(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR     s    (/#N(   R!   R"   Rf   t   __metaclass__R   R/   R0   R^   Rm   R   t   statR   R{   R}   R   R   R   R   R   R   RB   R8   R   R   (    (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyRl      s$   													t   Taskc           B   s   e  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 RS(   c         K   sA   t  j |  |  | |  _ g  |  _ g  |  _ g  |  _ g  |  _ d  S(   N(   Rl   R   R   R   R   t
   deps_nodest	   run_after(   R
   R   Rx   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR     s    				c         C   s   |  j  } d j g  |  j D] } | j |  ^ q  } d j g  |  j D] } | j |  ^ qG  } |  j rw d } n d } d |  j j | | | f S(   Nt    s    -> Rh   s   %s: %s%s%s
(   R   R   R   t	   nice_pathR   RL   R!   (   R
   R   R=   t   src_strt   tgt_strt   sep(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR}     s    	..	 	c      
   C   sl   d j  d |  j j d d j  g  |  j D] } | j ^ q%  d d j  g  |  j D] } | j ^ qM  d g  S(   NRh   s	   
	{task: R   R   s    -> t   }(   R   RL   R!   R   RO   R   (   R
   R'   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR{   #  s    c         C   s   y |  j  SWn t k
 r t   } | j } | |  j j    x( |  j |  j D] } | | j    qQ W| |  j	 j
  | t j |  j   | j   |  _  |  j  SXd  S(   N(   t   uidR   R   t   updateR   t   variantR   R   t   abspathRL   R!   R5   t   h_funR   t   digest(   R
   RM   t   upR'   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt	   unique_id%  s    		c         C   s;   t  |  t j k r' |  j | 7_ n |  j j |  d  S(   N(   t   typet   typest   ListTypeR   R   (   R
   t   inp(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt
   set_inputs2  s     c         C   s;   t  |  t j k r' |  j | 7_ n |  j j |  d  S(   N(   R   R   R   R   R   (   R
   t   out(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   set_outputs5  s     c         C   s)   t  | t  s t  |  j j |  d  S(   N(   t
   isinstanceRl   t   AssertionErrorR   R   (   R
   R   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyRc   8  s    c         C   s,   |  j  j j j |  } |  j j |  d  S(   N(   R   R   t   currentt   find_resourceR   R   (   R
   R   t   node(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   add_file_dependency;  s    c         C   s   y |  j  d SWn t k
 r" n Xt   } |  j   } | j |  |  j rZ |  j   p] t } | j |  |  j   } | j |  | j	   } | | | | f |  _  | S(   Ni    (
   t	   cache_sigR   R   t   sig_explicit_depsR   t   scant   sig_implicit_depst   SIG_NILt   sig_varsR   (   R
   RM   t   exp_sigt   imp_sigt   var_sigR   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt	   signature>  s      	c   
      C   s  |  j  r< |  j r< t |  j d d   s< t d |   q< n  x |  j D] } | j sF t SqF W|  j	 } |  j
 j } d  } xa |  j D]V } | j |  } y | j | | j } Wq t k
 r t d |   d  } Pq Xq W| d  k r$|  j r$y |  j   } Wn t k
 rt d  t SXt S|  j   } y | j | d }	 Wn  t k
 rgt d |   t SX|  j   } t j r|  j | j |  n  | |	 k rt St S(   Nt   quietsH   task is invalid : no inputs or outputs (override in a Task subclass?) %rs7   task: task %r must run as the first node does not exists=   task: something is wrong, computing the task signature failedi    sJ   task: task %r must run as it was never run before or the task code changed(   R   R   R_   RL   R   R   R   Rt   t	   ASK_LATERR   R   R   R   t	   node_sigst   idR9   R   R   R~   R   t	   task_sigsR   t   verboset	   debug_whyt   SKIP_ME(
   R
   Ra   R   R   R   R   R   t   new_sigt   keyt   prev_sig(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR   K  sH    			
	 c   	      C   s  |  j  j } |  j } |  j   } d } x |  j D] } | j |  } t j | j |   | | j	 | | j
 <t j r1 | j d  } t j j t j | d t |   } y t j | j |  |  Wn t k
 r t d  n X| d 7} q1 q1 W|  j | j |  j   <d |  _ d  S(   Ni    t   hext   -s%   Could not write the file to the cachei   (   R   R   R   R   R   R   t   osR   R   R   R   R   t   cache_globalt   encodet   pathR   Rz   t   shutilt   copy2t   IOErrorR   R   R   R   t   executed(	   R
   R   R   t   sigt   cntR   R   t   ssigt   dest(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR   o  s$    		&  c         C   s*  t  j s d  St  j j r d  S|  j } |  j   } d } x |  j D] } | j |  } | j	 d  } t
 j j t  j | d t |   } y- t j | | j |   t
 j | d   Wn" t t f k
 r t d  d  SX| d 7} | |  j j j | | j <|  j j j d | j |   qB Wd S(   Ni    R   R   s   task: failed retrieving filei   s   restoring from cache %r
(   R   R   R   R   t   nocacheR   R   R   R   R   R   R   R   Rz   R   R   R   t   utimet   OSErrorR   R   R   R   R   R   t   printoutt   bldpath(   R
   R   R   R   R   R   R   t   orig(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR     s*    	  	&

$c         C   s   |  j  } d   } t d |   d d d d g } d } x` t t |   D]L } | | | | k rK t | | | | | |  | | |  f  qK qK Wd  S(   Nc         S   s   |  j  d  S(   NR   (   R   (   R'   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyRe     s    s   Task %rs   Task must runs"   * Source file or manual dependencys   * Implicit dependencys   * Environment variables   task: -> %s: %s %s(   R   R   RR   R   (   R
   t   old_sigst   new_sigsRe   t   msgst   tmpR'   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR     s    		c         C   s  |  j  j } t   } x> |  j D]3 } | j |  j  } | j | j | | j  q WxM t	 |  d g   D]9 } | j |  j  } | j | | j } | j |  qi Wy | j
 } Wn t k
 r n Xx |  j |  j D] } y | | j } Wn t k
 rq n Xt |  r|   } n  x | D]| } t | t j  r| j | j  | j |  j  } y | j | | j } Wqt k
 rd } qXn  | j |  q%Wq W| j   S(   Nt	   dep_nodesRh   (   R   R   R   R   R   R   R   R   R   R_   t   deps_manR   R   R9   t   callableR   t   Nodet   rescant   parentR   (   R
   R   RM   R'   R   Re   t   additional_depsR   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR     s<    	c   
      C   s   t    } |  j j } |  j } | j | |  j j  } | j |  t } t	 |  d d   } | r | j | |  } | j |  n  x[ t	 |  j d d  D]D } | | } | r | j t |   t | t |  f  }	 q q W| j   S(   Nt   dep_varst   vars(    (   R   R   R   R   t   hash_env_varsRL   R
  R   R   R_   R   Rz   R   R   (
   R
   RM   R   R   t   act_sigR   R	  R'   RH   t   vars_sig(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR     s     		
c         C   s   |  j  j } |  j   } | j j | d  } | rl y" | d |  j   k rT | d SWql t k
 rh ql Xn  |  j   \ } } t j	 r t j
 r t d t |   t |  t |  f  n  | | j |  j   <| | j |  j   <|  j   } | S(   Ni   s#   deps: scanner for %s returned %s %s(    (   R   R   R   R   Rv   t   compute_sig_implicit_depsR9   R   R   R   t   zonesR   Rz   t	   node_depst   raw_deps(   R
   R   R   t	   prev_sigst   nodesR   R   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR     s     ,c         C   s   t    } | j } |  j j } | j } |  j } x | j j |  j   g   |  j	 D]w } | j
 j | j k r | j | j
  n  | j d @t j k r | | d | j  qS | | | j   | j  qS W| j   S(   Ni   i    (   R   R   R   R   R   R   R  Rv   R   R   R  R   t   cache_scanned_foldersR  R  t   FILER   R   (   R
   RM   t   updR   t   tstampR   RH   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR    s    				)N(   R!   R"   R
  R   R}   R{   R   R   R   Rc   R   R   R   R   R   R   R   R   R   R   R   R  (    (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR     s&   										$			
	 		c         B   s   |  d  Ue  S(   N(   R   (   t   c(    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   funex  s    s;   (?P<dollar>\$\$)|(?P<subst>\$\{(?P<var>\w+)(?P<code>.*?)\})c   	         s-  g      f d   } t  j | |  } g  } g  } | j } x   D] \ } } | d k r | rr | d |  q | d  qC | d k r | r | d |  q | d  qC | | k r | j |  n  | d |  qC W| r d	 d
 j |  } n d } d | | f } t d |  t |  | f S(   Nc            sL   |  j  } | d  r d S| d  rH   j | d  | d  f  d Sd  S(   Nt   dollart   $t   substt   vart   codes   %s(   R   R   R   (   t   matcht   g(   t   extr(    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   repl  s    	   t   SRCs   task.inputs%ss/   " ".join([a.srcpath(env) for a in task.inputs])t   TGTs   task.outputs%ss0   " ".join([a.bldpath(env) for a in task.outputs])s   p('%s')s   %% (%s) s   ,
		Rh   sl   
def f(task):
	env = task.env
	p = env.get_flat
	cmd = "%s" %s
	return task.generator.bld.exec_command(cmd)
s
   action: %s(   t   reg_actt   subR   R   R   R  (	   RO   t   lineR"  t   parmt   dvarst   appR  t   methR  (    (   R!  sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   compile_fun  s0    	    Rq   c   
   
   C   sC   t  |  |  \ } }	 | | _ t |  | | p0 |	 | | | | |  S(   N(   R,  R  t   task_type_from_func(
   RO   R'  R   R
  R@   RA   RK   RJ   Ry   R)  (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   simple_task_type  s    	c   
      C   s   i | d 6| d 6| d 6|  d 6t  j |  d 6t  j |  d 6t  j |  d 6t  j |  d 6} t j |  t f |  }	 |	 t j |  <|	 S(	   NR   R
  R   RO   R@   RA   RK   RJ   (   R5   t   to_listt   newt   classobjR   Rl   Rm   (
   RO   t   funcR
  R   R@   RA   RK   RJ   t   paramsRn   (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyR-    s    b('   R/   t
   hexversiont   setsR    R<   R   R   R   t   reR0  t   randomR   R5   R   Ru   t   RunnerR  R   R   R   R   R   t	   ConstantsR-   R,   t   objectR   R   R   Rf   Rl   R   R  t   compilet   MR%  R,  R.  R-  (    (    (    sl   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Task.pyt   <module>   s$    `H
#X		 