
    <h)                       S SK Jr  S SKrS SKJr  S SKrS SKrS SK	r	SSK
Jr  SSKJrJrJrJr  SSKJrJr  \R(                  (       a  S SKJr  SS	KJr  SS
KJr  SSKJr  \R6                  \\R:                  \   \R:                  \   4   r\R6                  \\R6                  \S4   \\R@                  \R6                  \\4      4   r! " S S5      r"g)    )annotationsN)Thread   )mlog)
PerMachine
Popen_safeversion_compare
is_windows)find_external_programNonExistingExternalProgram)Path)Environment)MachineChoice)ExternalProgram.c                     \ rS rSr% \" SS5      rS\S'   \" SS5      rS\S'   0 rS\S'   SSS	 jjr	SSS
 jjr
SS jrSSS jjrS S jrS!S jrS!S jrS!S jrS!S jrS"S#S jjrS$S jrS%S jrS%S jrS&S jrS&S jrS'S jrSrg)(CMakeExecutor   Nz'PerMachine[T.Optional[ExternalProgram]]class_cmakebinzPerMachine[T.Optional[str]]class_cmakeverszT.Dict[T.Any, TYPE_result]class_cmake_cachec           
     d   X l         Xl        X0l        U R                  U R                  US9u  U l        U l        SU l        SU l        / U l        / U l	        U R                  c  g [        U R
                  U R                   5      (       d  [        R                  " S[        R                  " U R                  R                  5       5      S[        R                  " U R
                  5      S[        R                  " U R                   5      S5        S U l        g U R                  R                  R                   R#                  S5      n[%        U[&        5      (       d   eXPl        U R                  (       a?  U =R                  S	R)                  S
R+                  U R                  5      5      /-  sl	        g g )N)silentTFzThe version of CMakeiszbut versionzis requiredcmake_prefix_pathz-DCMAKE_PREFIX_PATH={};)min_versionenvironmentfor_machine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   versionr   r   prefpaths         z/mnt/mint/home/seanl/mnt/public/Repos/ladybird/Build/vcpkg/downloads/tools/meson-1.9.0-d1fcc2/mesonbuild/cmake/executor.py__init__CMakeExecutor.__init__!   sQ   "&&(,(>(>t?O?OX^(>(_%t~%)" )+-/== t~~t/?/?@@LL&		$--2H2H2J(Kdii/		$JZJZ@[ !DM##,,55CCDWX(D))))$!!&>&E&EchhtO`O`Fa&b%cc!     c           	        [        [        R                  U R                     [        5      (       a%  [
        R                  " SU R                   S35        g[        R                  U R                     b&  [
        R                  " SU R                   S35        GOz[        R                  U R                     b   e[
        R                  " SU R                   S35        [        XR                  SSUR                  SS	9 H  nU R                  U5      nU(       d  M  U(       d>  [
        R                  " S
[
        R                  " UR                  5       5      SU S35        U[        R                  U R                  '   U[        R                  U R                  '     Ow   U(       d+  [
        R                  " S
[
        R                  " S5      5        [	        5       [        R                  U R                  '   S [        R                  U R                  '   g[        R                  U R                     [        R                  U R                     4$ )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)r0   r   r   potential_cmakebinversion_if_oks        r3   r   CMakeExecutor.find_cmake_binary<   s    m2243C3CDF`aaJJ*4+;+;*<<STU))$*:*:;GJJ*4+;+;*<KHI //0@0@AIIIJJ*4+;+;*<NKL&;!1!17G--u'N" !% 0 01C D$HH^TYY7I7R7R7T-U q13AS,,T-=-=>BO--d.>.>?'N HH^TXXd^< B\A],,T-=-=>BF--d.>.>?!++D,<,<=}?\?\]a]m]m?nnnr6   c                   UR                  5       (       d%  [        R                  " SUR                  < 35        g  UR	                  5       n[        US/-   5      SS u  p4UR                  S:w  a5  [        R                  " SR                  SR                  U5      5      5        g  [        R                  " S
U5      nUb  UR                  S5      $ [        R                  " SU< S35        g ! [         a7    [        R                  " SR                  SR                  W5      5      5         g [         aM    SR                  SR                  W5      5      n[        5       (       d  US	-  n[        R                  " U5         g f = f)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   rB   nameget_commandr   
returncoder&   r.   r/   FileNotFoundErrorPermissionErrorr
   researchgroup)r0   r    cmdpoutmsgcmverss          r3   rA   CMakeExecutor.check_cmake_   sS   ~~HH*8==*;<=	&&(C{m 34Qq9FA||q    &sxx} 57 ! A3G<<?"1# 95 5 	6! ! 	LL "F388C=13 	LSSTWT\T\]`TabC<<jjLL	s   A(C- ->F-AFFc                *    Ub  Xl         Ub  X l        g g N)r#   r"   )r0   r#   r"   s      r3   set_exec_modeCMakeExecutor.set_exec_mode|   s    "* ,)>& -r6   c                    Ub  [        UR                  5       5      O	[        5       n[        U5      nU R                  R	                  5       XRR                  5       U4$ rY   )	frozensetitemstupler    r(   as_posix)r0   args	build_direnvfenvtargss         r3   
_cache_keyCMakeExecutor._cache_key   sF    ),y%ikd&&(%1C1C1EtLLr6   c                l  ^ U R                   R                  5       U-   n[        R                  " U[        R                  [        R                  [        U5      US9mSU4S jjn[        US9nUR                  5          Sn[        R                  " S5      nSn	 TR                  R                  5       n
U
(       d  OsU
R                  SS9nUR                  U5      (       a  X{-  nUR                  S	5      (       + n	O1U	(       a  X{-  nO%[        R                   " UR#                  S
5      5        M  TR                  R%                  5         UR'                  5         TR)                  5         TR*                  S U4$ ! TR                  R%                  5         UR'                  5         TR)                  5         f = f)Nstdoutstderrcwdrc   c                    >  TR                   R                  5       n U (       d  O4[        R                  " U R	                  SS9R                  S5      5        MV  TR                   R                  5         g )Nignoreerrors
)rj   readliner   rB   decodestripclose)lineprocs    r3   print_stdout6CMakeExecutor._call_cmout_stderr.<locals>.print_stdout   sW    {{++-H5;;DAB	 
 KKr6   )target z/^\s*(.*\.(cmake|txt))\(([0-9]+)\):\s*(\w+)\(.*$Frn   ro   z )
rq   )returnNone)r    rK   SPopenPIPEstrr   startrO   compilerk   rr   rs   matchendswithr   r&   rt   ru   r/   waitrL   )r0   ra   rb   rc   rR   rx   t	raw_tracetline_start_reginside_multiline_traceline_rawrv   rw   s               @r3   _call_cmout_stderr CMakeExecutor._call_cmout_stderr   sL   mm'')D0wws166!&&c)nRUV
	  ,'			I jj)[\O%*";;//1h7"((..%I15v1F-F*+%ILLD!12  KKFFHIIKi//	 KKFFHIIKs   >B0E7 7<F3c                   U R                   R                  5       U-   n[        R                  " U[        R                  [        R
                  [        U5      US9n UR                  R                  5       nU(       d  O4[        R                  " UR                  SS9R                  S5      5        MV  UR                  R                  5         UR                  5         UR                  S S 4$ )Nri   rn   ro   rq   )r    rK   r~   r   r   STDOUTr   rj   rr   r   rB   rs   rt   ru   r   rL   )r0   ra   rb   rc   rR   rw   rv   s          r3   _call_cmoutCMakeExecutor._call_cmout   s    mm'')D0wws166!((ITWX;;'')DHHT[[[177=>	 
 			d**r6   c           
     \   UR                  SSS9  U R                  R                  5       U-   n[        R                  " XC[        U5      S[        R                  [        R                  SS9nUR                  nUR                  R                  SS9nUR                  R                  SS9nXgU4$ )NT)parentsexist_okF)rc   rl   	close_fdsrj   rk   universal_newlinesrn   ro   )mkdirr    rK   r~   runr   r   rL   rj   rs   rk   )	r0   ra   rb   rc   rR   retrcrT   errs	            r3   _call_quietCMakeExecutor._call_quiet   s    t4mm'')D0eeCc)n66!&&UL^^jjx0jjx0|r6   c                b   [         R                  " SU R                  R                  5        SU S35        U H  n[         R                  " SU S35        M     U R                  (       d  U R                  XU5      $ U R                  (       a  U R                  XU5      $ U R                  XU5      $ )NzCalling CMake (z) in z with:z  - "")	r   r?   r    rK   r#   r   r"   r   r   )r0   ra   rb   rc   is        r3   
_call_implCMakeExecutor._call_impl   s    

_T]]%>%>%@$AykQWXYAJJqc|$ ##DS99))..tDD''==r6   c                   Uc  [         R                  R                  5       nXR                  -   nU(       a  U R	                  XU5      $ [
        R                  nU R                  XU5      nXe;  a  U R	                  XU5      XV'   XV   $ rY   )osenvironcopyr%   r   r   r   rf   )r0   ra   rb   rc   disable_cachecachekeys          r3   callCMakeExecutor.call   sv    ;**//#C+++??4C88 //oods3#>EJzr6   c                    U R                   S L$ rY   )r    r0   s    r3   rI   CMakeExecutor.found   s    }}D((r6   c                    U R                   $ rY   )r!   r   s    r3   r1   CMakeExecutor.version   s    ~~r6   c                6    U R                   R                  5       $ rY   )r    r(   r   s    r3   executable_pathCMakeExecutor.executable_path   s    }}%%''r6   c                6    U R                   R                  5       $ rY   )r    rK   r   s    r3   rK   CMakeExecutor.get_command   s    }}((**r6   c                    U R                   $ rY   )r$   r   s    r3   get_cmake_prefix_paths$CMakeExecutor.get_cmake_prefix_paths   s       r6   c                    U R                   $ rY   )r   r   s    r3   machine_choiceCMakeExecutor.machine_choice   s    r6   )	r"   r    r!   r   r%   r   r   r$   r#   )F)r   'Environment'r1   r   r   r   r   bool)r   r   r   r   r|   z7T.Tuple[T.Optional['ExternalProgram'], T.Optional[str]])r    z'ExternalProgram'r|   zT.Optional[str]r8   )r#   T.Optional[bool]r"   r   r|   r}   )ra   T.List[str]rb   r   rc   T.Optional[T.Dict[str, str]]r|   TYPE_cache_key)ra   r   rb   r   rc   r   r|   TYPE_result)NF)
ra   r   rb   r   rc   r   r   r   r|   r   )r|   r   )r|   r   )r|   r   )r|   r   )__name__
__module____qualname____firstlineno__r   r   __annotations__r   r   r4   r   rA   rZ   rf   r   r   r   r   r   rI   r1   r   rK   r   r   __static_attributes__ r6   r3   r   r      s     ?It>TN;T3=dD3IO0I4616d6!oF:?M
)0V
+
>)(+! r6   r   )#
__future__r   
subprocessr~   	threadingr   typingTrO   r   r{   r   mesonlibr   r   r	   r
   programsr   r   TYPE_CHECKINGpathlibr   r   r   r   r   TupleintOptionalr   r   	FrozenSetr   r   r   r6   r3   <module>r      s    #    	 	  J J H??)(*''#qzz#

3?@KWWS!''#s("3S!++aggcSVhFW:XXYNY  Y r6   