
    -Ph                        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
 ddlmZ ddlmZ ddlmZmZmZ ddlmZ d dlZ ej        d	          Zd#dZd$dZd%dZd&dZd'd Zd(d"ZdS ))    )annotationsNPath   )mlog)lang_suffixes)	quiet_git	join_argsdetermine_worker_count)complete_allInfocmdlistT.List[str]returnintc                  K   t          |           }d}	 t          j        | t          j        j        t          j        j        t          j        j        d d{V }|                                 d{V \  }}n# t          $ rl}t          t          j        d          |t          j                   t          t          j        d          |j        t          j                   Y d}~dS d}~wt          j        $ r? |r9|                                 |                                 d{V  |j        pdcY S Y dS w xY w|rHt          t          j        d          |d	           t          j        j                            |           |j        S )
zRun the command in cmdlist, buffering the output so that it is
       not mixed for multiple child processes.  Kill the child on
       cancellation.N)stdinstdoutstderrz>>>)filez
not found:   r   T)flush)r
   asynciocreate_subprocess_exec
subprocessDEVNULLPIPESTDOUTcommunicateFileNotFoundErrorprintr   bluesysr   redfilenameCancelledErrorkillwait
returncoder   bufferwrite)r   quoted_cmdlinepstdo_es         [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/scripts/run_tool.pyrun_with_buffered_outputr2      s      w''N04A0'7>7I7Q8?8J8O8?8J8QS S S S S S S S S ''''''aa   diSZ@@@@dh|$$ajszBBBBqqqqq!    	FFHHH&&((NNNNNNN<$1$$$11  &did;;;;
%%%<s    A#A9 9
D;A!C**AD;:D;infosT.Iterable[Info]fn<T.Callable[[Info], T.Iterable[T.Coroutine[None, None, int]]]c                D  K   g t          j        t                                dfddfd}t          j        dk    rSt          j                    }|                    t          j        |           |                    t          j	        |           | D ],}
                    fd	 ||          D                        -sd
S 	 t                     d {V  n(# t          $ r D ]}|                                  w xY wt          d D                       S )Nworker_coroT.Coroutine[None, None, int]r   r   c                   K   	 4 d {V  |  d {V cd d d           d {V  S # 1 d {V swxY w Y   d S # t           j        $ r'}|                     |           |  d {V cY d }~S d }~ww xY wN)r   r&   throw)r8   r0   	semaphores     r1   run_onez_run_workers.<locals>.run_one8   sB     	%  ) ) ) ) ) ) ) )((((((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )% 	% 	% 	%a   $$$$$$$$$$$$$	%s3   ; (; 
2; 2; A1
A,&A1,A1Nonec                 :    D ]} |                                   d S r;   )cancel)ffuturess    r1   sigterm_handlerz%_run_workers.<locals>.sigterm_handler@   s+     	 	AHHJJJJ	 	    win32c              3  R   K   | ]!}t          j         |                    V  "d S r;   )r   ensure_future).0xr>   s     r1   	<genexpr>z_run_workers.<locals>.<genexpr>J   s6      IIa-ggajj99IIIIIIrE   r   c              3     K   | ]@}|                                 |                                *|                                V  Ad S r;   )done	cancelledresult)rI   rB   s     r1   rK   z_run_workers.<locals>.<genexpr>U   sD      MMaaffhhMq{{}}MqxxzzMMMMMMrE   )r8   r9   r   r   )r   r?   )r   	Semaphorer   r#   platformget_running_loopadd_signal_handlersignalSIGINTSIGTERMextendr   BaseExceptionrA   max)	r3   r5   rD   loopirB   rC   r>   r=   s	         @@@r1   _run_workersr\   3   s     +-G!"8":":;;I% % % % % %      |w'))???@@@ K KIIII22a55IIIJJJJ q7##########    	 	AHHJJJJ
 MM7MMMMMMs   C! !%Dfnamer   c                   g }	 |                      d          5 }|D ]B}|                                }|r*|                    d          s|                    |           C	 d d d            n# 1 swxY w Y   n# t          $ r Y nw xY w|S )Nutf-8encoding#)openstrip
startswithappendr    )r]   patternsrB   linepatterns        r1   parse_pattern_filerj   W   s    HZZZ)) 	-Q - -**,, -7#5#5c#:#: -OOG,,,-	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-
    Os5   A9 AA-!A9 -A11A9 4A15A9 9
BBnamestrsrcdirbuilddirT.Iterable[Path]c              #  4  
K   t          d|  dz            }|rfd|D             }nNt          dg          \  }}|r"fd|                                D             g}n                    d          g}t          d|  dz            }t	          |dz            g}|                    fd	|D                        t          t          d
                                       t          t          d                             }|	                    d           d |D             }t          j                            |          D ]N}	t	          |	          
|	                                s$|	j        |vst          
fd|D                       rJ|	V  Od S )N.z-includec                :    g | ]}                     |          S  )globrI   r-   rm   s     r1   
<listcomp>z#all_clike_files.<locals>.<listcomp>g   s#    222AQ222rE   zls-filesc                0    g | ]}t          |          S rs   r   )rI   rB   rm   s     r1   rv   z#all_clike_files.<locals>.<listcomp>k   s!    >>>!d61oo>>>rE   z**/*z-ignore*c                4    g | ]}t          |z            S rs   )rl   ru   s     r1   rv   z#all_clike_files.<locals>.<listcomp>p   s#    555q3vz??555rE   ccpphc                    h | ]}d | S )rq   rs   )rI   ss     r1   	<setcomp>z"all_clike_files.<locals>.<setcomp>s   s    ***AA***rE   c              3  B   K   | ]}t          j         |          V  d S r;   )fnmatch)rI   r[   strfs     r1   rK   z"all_clike_files.<locals>.<genexpr>w   s/      ==GOD!,,======rE   )rj   r	   
splitlinesrt   rl   rW   setr   unionadd	itertoolschainfrom_iterableis_dirsuffixany)rk   rm   rn   rg   globsroignoresuffixesrB   r   s    `        @r1   all_clike_filesr   c   s     !&+=t+=+=+="=>>H *2222222*v..1 	*>>>>q||~~>>>?EE[[(()E!&+<t+<+<+<"<==H(S.!!"F
MM5555H555666=%&&,,Su1E-F-FGGHLL*****H_**511  1vv88:: 	11====f===== 2 rE   -T.Callable[..., T.Coroutine[None, None, int]]argsT.Anyc           	         t           j        dk    r%t          j        t          j                               dfd}t          j        t          t          | ||          |                    S )NrF   pathr   r   (T.Iterable[T.Coroutine[None, None, int]]c              3  "   K    | gR  V  d S r;   rs   )r   r   r5   s    r1   wrapperzrun_clang_tool.<locals>.wrapper   s'      boooorE   )r   r   r   r   )r#   rQ   r   set_event_loop_policyWindowsProactorEventLoopPolicyrunr\   r   )rk   rm   rn   r5   r   r   s      `` r1   run_clang_toolr   {   st    
|w%g&L&N&NOOO      ;|OD&($K$KWUUVVVrE   JT.Callable[[T.Dict[str, T.Any]], T.Iterable[T.Coroutine[None, None, int]]]c                *   t           j        dk    r%t          j        t          j                               t          dd          5 }t          j        |          }d d d            n# 1 swxY w Y   t          j        t          ||                     S )NrF   zmeson-info/intro-targets.jsonr_   r`   )
r#   rQ   r   r   r   rc   jsonloadr   r\   )r5   fptargetss      r1   run_tool_on_targetsr      s    
|w%g&L&N&NOOO	-	@	@	@  B)B--                             ;|GR00111s   A((A,/A,)r   r   r   r   )r3   r4   r5   r6   r   r   )r]   r   r   r   )rk   rl   rm   r   rn   r   r   ro   )rk   rl   rm   r   rn   r   r5   r   r   r   r   r   )r5   r   r   r   )
__future__r   asyncio.subprocessr   r   r   r   rT   r#   pathlibr    r   	compilersr   mesonlibr	   r
   r   mtestr   typingTTypeVarr   r2   r\   rj   r   r   r   rs   rE   r1   <module>r      sc   # " " " " "            



             % % % % % % C C C C C C C C C C                qy   :"N "N "N "NH
 
 
 
   0W W W W2 2 2 2 2 2rE   