
    -Ph)                       d dl m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
mZ ddlmZmZmZmZ ddlmZmZ ej        rtd dlmZ dd	lmZ dd
lmZ ddlmZ ej        eej        e         ej        e         f         Zej        eej        edf         eej         ej        eef                  f         Z! G d d          Z"dS )    )annotationsN)Thread   )mlog)
PerMachine
Popen_safeversion_compare
is_windows)find_external_programNonExistingExternalProgram)Path)Environment)MachineChoice)ExternalProgram.c                      e Zd ZU  edd          Zded<    edd          Zded<   i Zded<   d3d4dZd3d5dZ	d6dZ
d7d8dZd9d%Zd:d'Zd:d(Zd:d)Zd:d*Zd;d<d,Zd=d-Zd>d.Zd>d/Zd?d0Zd?d1Zd@d2ZdS )ACMakeExecutorNz'PerMachine[T.Optional[ExternalProgram]]class_cmakebinzPerMachine[T.Optional[str]]class_cmakeverszT.Dict[T.Any, TYPE_result]class_cmake_cacheFenvironment'Environment'versionstrfor_machiner   silentboolc           
        || _         || _        || _        |                     | j        |          \  | _        | _        d| _        d| _        g | _        g | _	        | j        d S t          | j        | j                   szt          j        dt          j        | j                                                  dt          j        | j                  dt          j        | j                   d           d | _        d S | j        j        j                            d          }t%          |t&                    sJ || _        | j        r>| xj	        d	                    d
                    | j                            gz  c_	        d S d S )N)r   TFzThe version of CMakeiszbut versionzis requiredcmake_prefix_pathz-DCMAKE_PREFIX_PATH={};)min_versionr   r   find_cmake_binarycmakebin	cmakeversalways_capture_stderrprint_cmoutprefix_pathsextra_cmake_argsr	   r   warningboldget_pathcoredataoptstoreget_value_for
isinstancelistformatjoin)selfr   r   r   r   prefpaths         Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/cmake/executor.py__init__zCMakeExecutor.__init__!   su   "&&(,(>(>t?OX^(>(_(_%t~%)" )+-/= Ft~t/?@@ 	L&	$-2H2H2J2J(K(Kdi//	$JZ@[@[   !DMF#,5CCDWXX(D)))))$ 	d!!&>&E&EchhtO`FaFa&b&b%cc!!!!	d 	d    return7T.Tuple[T.Optional['ExternalProgram'], T.Optional[str]]c                   t          t          j        | j                 t                    rt          j        d| j         d           dS t          j        | j                 t          j        d| j         d           n8t          j        | j                 J t          j        d| j         d           t          || j        dd|j        d	          D ]}| 	                    |          }|s|s>t          j
        d
t          j        |                                          d| d           |t          j        | j        <   |t          j        | j        <    n_|s't          j
        d
t          j        d                     t	                      t          j        | j        <   d t          j        | j        <   dS t          j        | j                 t          j        | j                 fS )NzCMake binary for z is cached as not foundNNz is cached.z is not cachedcmakeCMakeF)allow_default_for_crosszFound CMake:()NO)r/   r   r   r   r   r   debugr   default_cmakecheck_cmakelogr*   r+   r   red)r3   r   r   potential_cmakebinversion_if_oks        r5   r"   zCMakeExecutor.find_cmake_binary<   s    m243CDF`aa 	"JT4+;TTTUUU:)$*:;GJH4+;HHHIIII /0@AIIIJK4+;KKKLLL&;!17G-u'N 'N 'N " "" !% 0 01C D D$  3H^TY7I7R7R7T7T-U-U11113 3 3AS,T-=>BO-d.>? =H^TXd^^<<< B\A]A],T-=>BF-d.>?!z+D,<=}?\]a]m?nnnr7   r#   'ExternalProgram'T.Optional[str]c                4   |                                 st          j        d|j                   d S 	 |                                }t          |dgz             dd         \  }}|j        dk    r<t          j        d                    d	                    |                               d S n# t          $ r> t          j        d                    d	                    |                               Y d S t          $ rS d                    d	                    |                    }t                      s|d	z  }t          j        |           Y d S w xY wt          j        d
|          }||                    d          S t          j        d|d           d S )NzDid not find CMake z	--versionr   r   z$Found CMake {!r} but couldn't run it z?We thought we found CMake {!r} but now it's not there. How odd!z7Found CMake {!r} but didn't have permissions to run it.zO

On Unix-like systems this is often caused by scripts that are not executable.z#(cmake|cmake3)\s*version\s*([\d.]+)zWe thought we found CMake z?, but it was missing the expected version string in its output.)foundr   rE   nameget_commandr   
returncoder)   r1   r2   FileNotFoundErrorPermissionErrorr
   researchgroup)r3   r#   cmdpoutmsgcmverss          r5   rD   zCMakeExecutor.check_cmake_   s   ~~ 	H<8=<<===4	&&((C{m 344QqS9FAs|q     &sxx}} 5 57 7 7t ! ! 	 	 	L "F388C==113 3 344 	 	 	LSSTWT\T\]`TaTabbC<< kjjL44	 A3GG<<??" 5# 5 5 5 	6 	6 	6ts   A7B. .AE5AEEr&   T.Optional[bool]r%   Nonec                .    ||| _         |	|| _        d S d S N)r&   r%   )r3   r&   r%   s      r5   set_exec_modezCMakeExecutor.set_exec_mode|   s,    "*D ,)>D&&& -,r7   argsT.List[str]	build_dirr   envT.Optional[T.Dict[str, str]]TYPE_cache_keyc                    |!t          |                                          nt                      }t          |          }| j                                        ||                                |fS r^   )	frozensetitemstupler#   r+   as_posix)r3   r`   rb   rc   fenvtargss         r5   
_cache_keyzCMakeExecutor._cache_key   sX    ),y%%%ikkd&&((%1C1C1E1EtLLr7   TYPE_resultc                   | j                                         |z   }t          j        |t          j        t          j        t          |          |          dfd}t          |          }|                                 	 d}t          j	        d          }d}		 j
                                        }
|
snw|
                    d
          }|                    |          r||z  }|                    d           }	n/|	r||z  }n't          j        |                    d                     	 j
                                         |                                                                  nF# j
                                         |                                                                  w xY wj        d |fS )Nstdoutstderrcwdrc   r8   r\   c                     	 j                                         } | sn<t          j        |                     d                              d                     Xj                                          d S )NTignoreerrors
)rq   readliner   rE   decodestripclose)lineprocs    r5   print_stdoutz6CMakeExecutor._call_cmout_stderr.<locals>.print_stdout   su    C{++-- H55;;DAABBB	C
 Kr7   )target z/^\s*(.*\.(cmake|txt))\(([0-9]+)\):\s*(\w+)\(.*$FTru   rv   z )
rx   )r8   r\   )r#   rO   SPopenPIPEr   r   startrS   compilerr   ry   rz   matchendswithr   r)   r{   r|   r2   waitrP   )r3   r`   rb   rc   rV   r   t	raw_tracetline_start_reginside_multiline_traceline_rawr}   r~   s               @r5   _call_cmout_stderrz CMakeExecutor._call_cmout_stderr   s   m''))D0ws16!&c)nnRUVVV
	  	  	  	  	  	  ,'''					I j)[\\O%*"3;//11 h77"((.. 3%I15v1F1F-F**+ 3%IILD!1!12223  KFFHHHIIKKKK KFFHHHIIKKKKi//s   B,E2 2AF5c                   | j                                         |z   }t          j        |t          j        t          j        t          |          |          }	 |j                                        }|sn<t          j
        |                    d                              d                     X|j                                         |                                 |j        d d fS )Nrp   Tru   rv   rx   )r#   rO   r   r   r   STDOUTr   rq   ry   r   rE   rz   r{   r|   r   rP   )r3   r`   rb   rc   rV   r~   r}   s          r5   _call_cmoutzCMakeExecutor._call_cmout   s    m''))D0ws16!(ITWXXX	?;''))D HT[[[1177==>>>		?
 			d**r7   c           	     d   |                     dd           | j                                        |z   }t          j        ||t          |          dt          j        t          j        d          }|j        }|j        	                    d          }|j
        	                    d          }|||fS )NT)parentsexist_okF)rc   rs   	close_fdsrq   rr   universal_newlinesru   rv   )mkdirr#   rO   r   runr   r   rP   rq   rz   rr   )	r3   r`   rb   rc   rV   retrcrX   errs	            r5   _call_quietzCMakeExecutor._call_quiet   s    t444m''))D0eCSc)nn6!&UL L L^jx00jx003|r7   c                F   t          j        d| j                                         d| d           |D ]}t          j        d| d           | j        s|                     |||          S | j        r|                     |||          S |                     |||          S )NzCalling CMake (z) in z with:z  - "")	r   rB   r#   rO   r&   r   r%   r   r   )r3   r`   rb   rc   is        r5   
_call_implzCMakeExecutor._call_impl   s    
XT]%>%>%@%@XXyXXXYYY 	% 	%AJ|q|||$$$$ 	>##D)S999) >..tYDDD''i===r7   disable_cachec                   |t           j                                        }|| j        z   }|r|                     |||          S t
          j        }|                     |||          }||vr|                     |||          ||<   ||         S r^   )osenvironcopyr(   r   r   r   rm   )r3   r`   rb   rc   r   cachekeys          r5   callzCMakeExecutor.call   s    ;*//##Cd++ 	9??4C888 /oodIs33ey#>>E#JSzr7   c                    | j         d uS r^   )r#   r3   s    r5   rM   zCMakeExecutor.found   s    }D((r7   c                    | j         S r^   )r$   r   s    r5   r   zCMakeExecutor.version   s
    ~r7   c                4    | j                                         S r^   )r#   r+   r   s    r5   executable_pathzCMakeExecutor.executable_path   s    }%%'''r7   c                4    | j                                         S r^   )r#   rO   r   s    r5   rO   zCMakeExecutor.get_command   s    }((***r7   c                    | j         S r^   )r'   r   s    r5   get_cmake_prefix_pathsz$CMakeExecutor.get_cmake_prefix_paths   s      r7   c                    | j         S r^   )r   r   s    r5   machine_choicezCMakeExecutor.machine_choice   s    r7   )F)r   r   r   r   r   r   r   r   )r   r   r   r   r8   r9   )r#   rI   r8   rJ   r;   )r&   r[   r%   r[   r8   r\   )r`   ra   rb   r   rc   rd   r8   re   )r`   ra   rb   r   rc   rd   r8   rn   )NF)
r`   ra   rb   r   rc   rd   r   r   r8   rn   )r8   r   )r8   r   )r8   ra   )r8   r   )__name__
__module____qualname__r   r   __annotations__r   r   r6   r"   rD   r_   rm   r   r   r   r   r   rM   r   r   rO   r   r    r7   r5   r   r      s         ?Ijt>T>TNTTTT3=:dD3I3IOIIII466666d d d d d6!o !o !o !o !oF   :? ? ? ? ?M M M M
)0 )0 )0 )0V
+ 
+ 
+ 
+   
> 
> 
> 
>    ) ) ) )   ( ( ( (+ + + +! ! ! !           r7   r   )#
__future__r   
subprocessr   	threadingr   typingTrS   r   r   r   mesonlibr   r   r	   r
   programsr   r   TYPE_CHECKINGpathlibr   r   r   r   r   TupleintOptionalr   rn   	FrozenSetre   r   r   r7   r5   <module>r      s   # " " " " "               				 				       J J J J J J J J J J J J H H H H H H H H? Z))))))((((((******'#qz#
3?@KWS!'#s("3S!+agcSVhFW:XXYNY  Y  Y  Y  Y  Y  Y  Y  Y  Y r7   