ó
gÊù]c           @   sß   d  d l  Z  d  d l Z y d  d l m Z Wn! e k
 rO d  d l m Z n Xd  d l m Z m Z m Z m	 Z	 d Z
 d e j j f d „  ƒ  YZ e ƒ  a d „  Z d „  Z d	 „  Z e j e ƒ d
 e f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   Queue(   t   Utilst   Taskt   Errorst   Logsi
   t   TaskConsumerc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s:   t  j j j |  ƒ t ƒ  |  _ |  j d ƒ |  j ƒ  d  S(   Ni   (   R   t	   threadingt   Threadt   __init__R    t   readyt	   setDaemont   start(   t   self(    (    sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyR      s    c         C   s&   y |  j  ƒ  Wn t k
 r! n Xd  S(   N(   t   loopt	   Exception(   R   (    (    sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyt   run   s    c         C   sC   x< |  j  j ƒ  } t | t j ƒ s1 | |  ƒ q | j ƒ  q Wd  S(   N(   R	   t   gett
   isinstanceR   t   TaskBaset   process(   R   t   tsk(    (    sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyR      s
    (   t   __name__t
   __module__R   R   R   (    (    (    sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyR      s   		c           C   s-   y t  j t ƒ SWn t k
 r( t ƒ  SXd  S(   N(   t   poolR   t   FalseR   R   (    (    (    sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyt   get_pool   s    c         C   s   t  j |  ƒ d  S(   N(   R   t   put(   t   x(    (    sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyt   put_pool$   s    c          C   sr   g  }  x# t  j ƒ  r+ |  j t  j ƒ  ƒ q	 Wx |  D] } | j j d  ƒ q3 Wx |  D] } | j ƒ  qT Wd  a  d  S(   N(   R   t   qsizet   appendR   R	   R   t   Nonet   join(   t   lstR   (    (    sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyt   _free_resources&   s    t   Parallelc           B   sn   e  Z d  d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d	 „  Z
 d
 „  Z d „  Z RS(   i   c         C   sm   | |  _  | |  _ g  |  _ g  |  _ t d ƒ |  _ d |  _ d |  _ t |  _	 g  |  _
 d  |  _ t |  _ d  S(   Ni    i   (   t   numjobst   bldt   outstandingt   frozenR    t   outt   countt	   processedR   t   stopt   errorR   t   bitert   dirty(   R   R%   t   j(    (    sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyR   2   s    									c         C   s   |  j  s d  S|  j  j d ƒ S(   Ni    (   R&   R   t   pop(   R   (    (    sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyt   get_next_task>   s    	c         C   s<   t  j d d ƒ r( |  j j d | ƒ n |  j j | ƒ d  S(   Ni    i   (   t   randomt   randintR'   t   insertR   (   R   R   (    (    sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyt   postponeB   s    c         C   s�  x$ |  j  |  j t k r& |  j ƒ  q Wxo|  j s˜|  j  rI |  j ƒ  ní |  j r6y |  j |  j k } Wn t k
 r{ n¬ X| r'd } x$ |  j D] } | j	 s’ d } Pq’ q’ Wg  } xJ |  j D]? } | j
 d t | ƒ g  | j	 D] } t | ƒ ^ qá f ƒ q¿ Wt j d | d j | ƒ f ƒ ‚ n  |  j |  _ n  |  j r]|  j |  j 7_ g  |  _ q* |  j  s* |  j j |  j j ƒ  ƒ |  j j ƒ  |  _ Pq* q* Wd  S(   Ns#   check the build order for the taskss!   check the methods runnable_statuss   %s	-> %rs   Deadlock detected: %s%st    (   R)   R$   t   GAPt   get_outR&   R'   t   deadlockR*   t   AttributeErrort	   run_afterR   t   reprt   idR   t   WafErrorR    t   extendR-   t   nextR%   t   total(   R   t   condt   msgR   R!   R   (    (    sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyt   refill_task_listG   s8    			=%		c         C   sC   t  | d d  ƒ r? |  j | j 7_ |  j t | j ƒ 7_ n  d  S(   Nt
   more_tasks(   t   getattrR   R&   RE   RA   t   len(   R   R   (    (    sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyt   add_more_taskse   s    c         C   sD   |  j  j ƒ  } |  j s( |  j | ƒ n  |  j d 8_ t |  _ | S(   Ni   (   R(   R   R+   RH   R)   t   TrueR.   (   R   R   (    (    sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyR8   i   s    		c         C   s,   |  j  j s t |  _ n  |  j j | ƒ d  S(   N(   R%   t   keepRI   R+   R,   R   (   R   R   (    (    sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyt   error_handlerp   s    c         C   s=   y |  j  Wn t k
 r( |  j ƒ  n X|  j j | ƒ d  S(   N(   R   R:   t   init_task_poolR	   R   (   R   R   (    (    sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyt   add_taskt   s
    c            so   g  t  ˆ  j ƒ D] } t ƒ  ^ q } ˆ  _ t d ƒ ˆ  _ ‡  f d †  } x | D] } | j j | ƒ qQ W| S(   Ni    c            s   ˆ  j  |  _  d  S(   N(   R	   (   t   consumer(   R   (    sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyt   setq}   s    (   t   rangeR$   R   R   R    R	   R   (   R   t   iR   RO   R   (    (   R   sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyRL   z   s    ,c            s”   ‡  f d †  } y ˆ  j  } Wn t k
 r/ na Xx | D] } ˆ  j j | ƒ q7 Wx | D] } ˆ  j ƒ  qX Wx | D] } t | ƒ qs Wg  ˆ  _  d  S(   Nc            s#   t  d ƒ |  _ ˆ  j j ˆ  ƒ d  S(   Ni    (   R    R	   R(   R   (   RN   (   R   (    sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyRO   ƒ   s    (   R   R:   R	   R   R8   R   (   R   RO   R   R   (    (   R   sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyt   free_task_pool‚   s    c         C   s{  |  j  j ƒ  |  _ x|  j s+|  j ƒ  |  j ƒ  } | sM |  j rI q qM Pn  | j rk |  j d 7_ q n  |  j rx Pn  y | j ƒ  } Wnß t	 k
 ri|  j d 7_ t
 j ƒ  | _ |  j rJ|  j  j rJt j | _ |  j  j d k r"t j d k s|  j r|  j j | ƒ n  t |  _ q t j d k r |  j j | ƒ q q n  t j | _ |  j | ƒ q n X| t j k r‰|  j | ƒ q | t j k rÃ|  j d 7_ t j | _ |  j | ƒ q |  j |  j f | _ |  j d 7_ |  | _ |  j d 7_ |  j d k r| j ƒ  q |  j | ƒ q Wx  |  j rN|  j rN|  j  ƒ  q/W|  j d k sm|  j smt! ‚ |  j" ƒ  d  S(   Ni   i    (#   R%   RA   R+   RD   R1   R)   t   hasrunR*   t   runnable_statusR   R   t   ex_stackt   err_msgRJ   R   t   SKIPPEDR   t   verboseR,   R   RI   t	   EXCEPTIONRK   t	   ASK_LATERR5   t   SKIP_MERH   t   positiont   masterR$   R   RM   R8   t   AssertionErrorRR   (   R   R   t   st(    (    sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyR   ’   s^    
				(   R   R   R   R1   R5   RD   RH   R8   RK   RM   RL   RR   R   (    (    (    sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyR#   1   s   									(   R2   t   atexitt   queueR    t   ImportErrort   waflibR   R   R   R   R7   R   R   R   R   R   R   R"   t   registert   objectR#   (    (    (    sO   /git_repos/avwlv2/.waf-1.7.11-715590adb2974ef17ddee0c7e2df2d1d/waflib/Runner.pyt   <module>   s   "				
