ó
–<4Ic           @   sÖ  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 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 m Z d „  Z d „  Z d e j f d „  ƒ  YZ d „  Z d	 e j f d
 „  ƒ  YZ d „  Z d „  Z d e j f d „  ƒ  YZ d „  Z 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 e f d „  ƒ  YZ! d e j f d „  ƒ  YZ" d e j f d „  ƒ  YZ# d  „  Z$ d! „  Z% d" „  Z& d# „  Z' e j( d$ d% g  d& e ƒe# e j j) d' <e e ƒ e d( ƒ e ƒ e e ƒ e d$ ƒ e ƒ e e ƒ e d) ƒ e ƒ e e$ ƒ e d' ƒ e$ ƒ e e% ƒ e d' ƒ e% ƒ e d* ƒ e% ƒ d S(+   iÿÿÿÿN(   t   featuret   taskgent   after(   t   debugc         C   s‡   |  j  } |  j d j | ƒ } |  j d j | ƒ } y t j | | ƒ Wn t k
 r_ } d SX|  j r t j | |  j ƒ n  d Sd  S(   Ni    i   (	   t   envt   inputst   abspatht   outputst   shutilt   copy2t   OSErrort   chmodt   os(   t   tskR   t   infilet   outfilet   IOError(    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyt	   copy_func   s    		 c         C   s(   |  j  s t j d ƒ ‚ n  |  j  |  ƒ S(   Ns?   task must have a function attached to it for copy_func to work!(   t   funt   Utilst   WafError(   R   (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyt   action_process_file_func   s    	 t   cmd_taskgenc           B   s   e  Z d  „  Z RS(   c         O   s   t  j j |  | | Ž d  S(   N(   t   TaskGent   task_gent   __init__(   t   selft   kt   kw(    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyR      s    (   t   __name__t
   __module__R   (    (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyR      s   c         C   s_   |  j  s t j d ƒ ‚ n  t j ƒ  } |  j  | _  |  j | _ |  j j | ƒ |  j | _ d  S(   Ns   cmdobj needs a function!(	   R   R   R   t   Taskt   TaskBaseR   t   taskst   appendt   install_path(   R   R   (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyt	   apply_cmd   s    	 t   copy_taskgenc           B   s   e  Z d  „  Z RS(   c         O   s   t  j j |  | | Ž d  S(   N(   R   R   R   (   R   R   R   (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyR   !   s    (   R   R   R   (    (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyR%       s   c         C   s  t  j |  d t ƒd |  _ |  j |  j ƒ } xâ | D]Ú } |  j j | ƒ } | si t  j d | ƒ ‚ n  |  j	 } | s‹ t
 | ƒ d k r— | j } n  |  j j | ƒ } |  j d ƒ } | j | ƒ | j | ƒ |  j | _ |  j | _ | j s5 | j ƒ  t  j d ƒ ‚ q5 q5 Wd  S(   NR   i    s(   cannot find input file %s for processingi   t   copys   task without an environment(   R   t	   def_attrsR   t   default_install_patht   to_listt   sourcet   patht   find_resourceR   t   targett   lent   namet   find_or_declaret   create_taskt
   set_inputst   set_outputsR   R   R   R   (   R   t   lstt   filenamet   nodeR-   t   newnodeR   (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyt
   apply_copy#   s&    	 	 	
c         C   sv  t  j d t  j ƒ } |  j } |  j d j | ƒ } |  j d j | ƒ } t | d ƒ } | j ƒ  } | j	 ƒ  | j
 d d ƒ } | j d | ƒ } |  j } | s)| j | ƒ }	 xu |	 D]j }
 | |
 s× |
 j ƒ  }
 n  | |
 rt | |
 ƒ t j k rd j | |
 ƒ | |
 <q¸ | |
 | |
 <q¸ Wn  t | d ƒ } | j | | ƒ | j	 ƒ  |  j rrt j | |  j ƒ n  d S(	   Ns   @(\w+)@i    t   rt   %s   %%s   %(\1)st    t   w(   t   ret   compilet   MR   R   R   R   t   opent   readt   closet   replacet   subt   dictt   findallt   uppert   typet   typest   ListTypet   joint   writeR   R   (   R   t   m4_reR   R   R   t   filet   codet   sRE   t   namest   i(    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyt
   subst_func5   s0    	
	
 #
	 t   subst_taskgenc           B   s   e  Z d  „  Z RS(   c         O   s   t  j j |  | | Ž d  S(   N(   R   R   R   (   R   R   R   (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyR   M   s    (   R   R   R   (    (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyRT   L   s   c         C   sg  t  j |  d t ƒd |  _ |  j |  j ƒ } t |  d i  ƒ |  _ x| D]} |  j j	 | ƒ } | s~ t  j
 d | ƒ ‚ n  | j d ƒ } |  j rÕ |  j d rÕ |  j j ƒ  |  _ t t |  j ƒ ƒ |  j d <n  |  j d ƒ } | j | ƒ | j | ƒ |  j | _ |  j | _ d g | _ |  j | _ |  j | _ | j sJ | j ƒ  t  j
 d ƒ ‚ qJ qJ Wd  S(	   NR   i    RE   s(   cannot find input file %s for processingt    t	   DICT_HASHR&   s   task without an environment(   R   R'   RS   R(   R)   R*   t   getattrRE   R+   R,   R   t
   change_extR   R&   t   hasht   strR1   R2   R3   R   t   dep_varsR#   R   R   (   R   R4   R5   R6   R7   R   (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyt   apply_substO   s.    	 	
t   cmd_argc           B   s   e  Z d  d „ Z RS(   s   %sc         C   s   | |  _  | |  _ d  |  _ d  S(   N(   R/   t   templatet   NoneR6   (   R   R/   R^   (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyR   g   s    		(   R   R   R   (    (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyR]   f   s   t
   input_filec           B   s   e  Z d  „  Z d „  Z RS(   c         C   s_   t  | t j ƒ s t ‚ | j |  j ƒ |  _ |  j d  k r[ t j d |  j | f ƒ ‚ n  d  S(   Ns   Input file %s not found in (	   t
   isinstancet   Nodet   AssertionErrorR,   R/   R6   R_   R   R   (   R   t	   base_path(    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyt	   find_nodel   s    c         C   s8   | r |  j  |  j j | ƒ S|  j  |  j j | ƒ Sd  S(   N(   R^   R6   R   t   srcpath(   R   R   t   absolute(    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyt   get_pathq   s    (   R   R   Re   Rh   (    (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyR`   k   s   	t   output_filec           B   s   e  Z d  „  Z d „  Z RS(   c         C   s_   t  | t j ƒ s t ‚ | j |  j ƒ |  _ |  j d  k r[ t j d |  j | f ƒ ‚ n  d  S(   Ns   Output file %s not found in (	   Ra   Rb   Rc   R0   R/   R6   R_   R   R   (   R   Rd   (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyRe   w   s    c         C   s8   | r |  j  |  j j | ƒ S|  j  |  j j | ƒ Sd  S(   N(   R^   R6   R   t   bldpath(   R   R   Rg   (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyRh   |   s    (   R   R   Re   Rh   (    (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyRi   v   s   	t   cmd_dir_argc           B   s   e  Z d d  „ Z d „  Z RS(   c         C   sD   t  j |  ƒ | |  _ d  |  _ | d  k r7 d |  _ n	 | |  _ d  S(   Ns   %s(   R]   R   R/   R_   R6   R^   (   R   R/   R^   (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyR   ‚   s    		c         C   s_   t  | t j ƒ s t ‚ | j |  j ƒ |  _ |  j d  k r[ t j d |  j | f ƒ ‚ n  d  S(   Ns   Directory %s not found in (	   Ra   Rb   Rc   t   find_dirR/   R6   R_   R   R   (   R   Rd   (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyRe   Š   s    N(   R   R   R_   R   Re   (    (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyRk      s   t	   input_dirc           B   s   e  Z d  „  Z RS(   c         C   s   |  j  |  j j ƒ  S(   N(   R^   R6   R   (   R   t	   dummy_envt   dummy_absolute(    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyRh      s    (   R   R   Rh   (    (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyRm      s   t
   output_dirc           B   s   e  Z d  „  Z RS(   c         C   s   |  j  |  j j | ƒ S(   N(   R^   R6   R   (   R   R   Ro   (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyRh   “   s    (   R   R   Rh   (    (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyRp   ’   s   t   command_outputc           B   s    e  Z d  Z d „  Z d „  Z RS(   t   BLUEc
   
      C   sž   t  j  j |  | d d ƒt | t t j f ƒ s7 t ‚ | |  _ | |  _ | |  _ | |  _	 | |  _
 | |  _ |	 |  _ | d  k	 r‘ | g |  _ n  g  |  _ d  S(   Nt   normali   (   R   R   Ra   RZ   Rb   Rc   t   commandt   command_argst   stdint   stdoutt   cwdt   os_envt   stderrR_   t	   dep_nodesR[   (
   R   R   Rt   t   command_nodeRu   Rv   Rw   Rx   Ry   Rz   (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyR   —   s    							 c            s÷  |  ‰  ‡  f d †  } ‡  f d †  } t  ˆ  j t j ƒ rQ | ˆ  j d ƒ g } n ˆ  j g } xj ˆ  j D]_ } t  | t ƒ rŒ | j | ƒ qg t  | t ƒ s¡ t ‚ | j | j ˆ  j	 ˆ  j
 d  k	 ƒ ƒ qg Wˆ  j rî t | ˆ  j d ƒ ƒ } n d  } ˆ  j rt | ˆ  j d ƒ d ƒ } n d  } ˆ  j rHt | ˆ  j d ƒ d ƒ } n d  } ˆ  j
 d  k rpd t j ƒ  } n t ˆ  j
 ƒ } t d | | | | f ƒ ˆ  j d  k r´t j }	 n	 ˆ  j }	 t j | d | d | d	 | d
 ˆ  j
 d |	 ƒ}
 |
 j ƒ  S(   Nc            s5   ˆ  j  d  k r# | |  j ˆ  j ƒ S| |  j ƒ  Sd  S(   N(   Rx   R_   Rj   R   R   (   R6   R^   (   t   task(    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyt
   input_path¥   s    c            s5   |  j  } ˆ  j d  k r$ |  j } n  | | ˆ  j ƒ S(   N(   R   Rx   R_   Rj   R   (   R6   R^   R   (   R}   (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyt   output_pathª   s    	 s   %sR<   s   None (actually %r)s4   command-output: cwd=%s, stdin=%r, stdout=%r, argv=%rRv   Rw   Rz   Rx   R   (   Ra   Rt   Rb   Ru   RZ   R"   R]   Rc   Rh   R   Rx   R_   Rv   RN   Rw   Rz   R   t   getcwdt   reprR   Ry   t   environt   pproct   Popent   wait(   R   R~   R   t   argvt   argRv   Rw   Rz   Rx   Ry   Rt   (    (   R}   sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyt   run£   s:    )				0(   R   R   t   colorR   Rˆ   (    (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyRq   •   s   	t   cmd_output_taskgenc           B   s   e  Z d  „  Z RS(   c         O   s   t  j j |  | | Ž d  S(   N(   R   R   R   (   R   R   R   (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyR   Ð   s    (   R   R   R   (    (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyRŠ   Ï   s   c         C   sY   t  j |  d d  d d  d d  d d  d t d g  d g  d g  d	 g  d
 g  d d  d d  ƒd  S(   NRv   Rw   Rz   Rt   t   command_is_externalR†   t   dependenciesR[   t   hidden_inputst   hidden_outputsRx   Ry   (   R   R'   R_   t   False(   R   (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyt   init_cmd_outputÒ   s    c         C   sç  |  j  d  k r! t j d ƒ ‚ n  |  j r< |  j  } d  } n= |  j j |  j  ƒ } | d  k	 ss t d |  j  f ƒ ‚ | } |  j d  k r‘ d  } n( t	 | t
 ƒ s¦ t ‚ |  j j |  j ƒ g  } g  } g  } xw |  j D]l } t	 | t ƒ rÕ | j |  j ƒ t	 | t ƒ r| j | j ƒ n  t	 | t ƒ rA| j | j ƒ qAqÕ qÕ W|  j d  k r]d  } nb t	 |  j t ƒ sut ‚ |  j j |  j ƒ } | d  k r²t j d |  j f ƒ ‚ n  | j | ƒ |  j d  k r×d  }	 n` t	 |  j t ƒ sït ‚ |  j j |  j ƒ }	 |	 d  k r*t j d |  j f ƒ n  | j |	 ƒ |  j d  k rOd  }
 nb t	 |  j t ƒ sgt ‚ |  j j |  j ƒ }
 |
 d  k r¤t j d |  j f ƒ ‚ n  | j |
 ƒ xd |  j |  j ƒ D]P } |  j j | ƒ } | d  k rt j d | |  j f ƒ ‚ n  | j | ƒ qÄWxd |  j |  j ƒ D]P } |  j j | ƒ } | d  k rnt j d | |  j f ƒ ‚ n  | j | ƒ q+W| p”t |  d d  ƒ s©t j d ƒ ‚ n  | p¾t |  d d  ƒ sÓt j d ƒ ‚ n  t |  j | | |  j |
 | | |  j |	 ƒ	 } t j  |  | d	 d
 t! ƒ|  j" j | ƒ | | _# | | _$ |  j |  j% ƒ | _% xN |  j& D]C } | |  k	 srt ‚ | j' ƒ  x | j" D] } | j( | ƒ q†WqZW| j# sãt) j* t+ | | j, ƒ | _+ t) j* t- | | j, ƒ | _- n  d  S(   Ns   command-output missing commandsn   Could not find command '%s' in source tree.
Hint: if this is an external command,
use command_is_external=Trues   File %s not founds   File %s not found in dir %st	   no_inputssO   command-output objects must have at least one input file or give self.no_inputst
   no_outputssQ   command-output objects must have at least one output file or give self.no_outputss   before after ext_in ext_outt   only_if_set(.   Rt   R_   R   R   R‹   R+   R,   Rc   Rx   Ra   t	   CmdDirArgRe   R†   R]   R`   R"   R6   Ri   Rw   t
   basestringR0   Rz   t   Paramst   fatalRv   R)   R   RŽ   RW   Rq   R   Ry   t
   copy_attrst   TrueR!   R   R   R[   RŒ   t   postt   set_run_aftert   newt   instancemethodt   runnable_statust	   __class__t   post_run(   R   t   cmdt   cmd_nodeRx   t   argsR   R   R‡   Rw   Rz   Rv   t   hidden_inputR6   t   hidden_outputR}   t   dept   dep_task(    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyt   apply_cmd_outputÔ   s    							-		
	c         C   sV   xO |  j  D]D } t j | j |  j ƒ ƒ } | |  j j j |  j j ƒ  | j	 <q
 Wd  S(   N(
   R   R   t   h_fileR   R   t	   generatort   bldt	   node_sigst   variantt   id(   R   t   xt   h(    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyR    #  s    c         C   s   t  j S(   N(   t	   Constantst   RUN_ME(   R   (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyRž   '  s    R&   t   varst   funcs   command-outputR¡   t   substR   (*   R   R=   R   RI   Rœ   R   Rb   R   R   t   BuildRƒ   R±   R    R   R   t   LogsR   R   R   R   R   R$   R%   R8   RS   RT   R\   t   objectR]   R`   Ri   Rk   Rm   Rp   Rq   RŠ   R   R¨   R    Rž   t   task_type_from_funct   classes(    (    (    sr   /home/javi/src/hotssh/hotssh/hotssh-0.2.6+dfsg1/.waf-1.5.1-3009bf2a0164643771f76f0e24c46d7e/wafadmin/Tools/misc.pyt   <module>   sJ   <T						:		O		




