§
    ƒnóc,  ã                  ó†  — 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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Ú	OptionKey)Úfind_external_programÚNonExistingExternalProgram)ÚPath)ÚEnvironment)ÚMachineChoice)ÚExternalProgram.c                  óÊ   — e Zd Z edd¦  «        Z edd¦  «        Zi Zd-d.d„Zd-d/d„Zd0d„Z	d1d2d„Z
d3d„Zd4d!„Zd4d"„Zd4d#„Zd4d$„Zd5d6d&„Zd7d'„Zd8d(„Zd8d)„Zd9d*„Zd9d+„Zd:d,„ZdS );ÚCMakeExecutorNFÚ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        t#          d| j        ¬	¦  «                 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_path)Úmachinez-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Úoptionsr   ÚvalueÚformatÚjoin)Úselfr   r   r   r   s        ú;/usr/lib/python3/dist-packages/mesonbuild/cmake/executor.pyÚ__init__zCMakeExecutor.__init__.   se  € Ø"ˆÔØ&ˆÔØ&ˆÔØ(,×(>Ò(>¸tÔ?OÐX^Ð(>Ñ(_Ô(_Ñ%ˆŒ�t”~Ø%)ˆÔ"Ø ˆÔØˆÔØ "ˆÔàŒ=Ð ØˆFå˜tœ~¨tÔ/?Ñ@Ô@ð 	ÝŒLØ&­¬	°$´-×2HÒ2HÑ2JÔ2JÑ(KÔ(KØ•d”i ¤Ñ/Ô/°ÅÄ	È$ÔJZÑ@[Ô@[Øñô ð ð !ˆDŒMØˆFà Ô,Ô5Ô=½iÐH[ÐeiÔeuÐ>vÑ>vÔ>vÔwÔ}ˆÔØÔð 	dØÐ!Ô!Ð&>×&EÒ&EÀcÇhÂhÈtÔO`ÑFaÔFaÑ&bÔ&bÐ%cÑcÐ!Ô!Ð!Ð!ð	dð 	dó    Úreturnú7T.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)Ú
isinstancer   Úclass_cmakebinr   r   r   Údebugr   Údefault_cmakeÚcheck_cmakeÚlogr)   r*   Úclass_cmakeversÚred)r0   r   r   Úpotential_cmakebinÚversion_if_oks        r1   r!   zCMakeExecutor.find_cmake_binaryG   sã  € õ •mÔ2°4Ô3CÔDÕF`ÑaÔað 	"ÝŒJÐT¨4Ô+;ÐTÐTÐTÑUÔUÐUØ�:ÝÔ)¨$Ô*:Ô;ÐGÝŒJÐH¨4Ô+;ÐHÐHÐHÑIÔIÐIÑIå Ô/°Ô0@ÔAÐIÐIÐIåŒJÐK¨4Ô+;ÐKÐKÐKÑLÔLÐLÝ&;Ø Ô!1°7¸GØÔ-Àuð'Nñ 'Nô 'Nð "ð "Ð"ð !%× 0Ò 0Ð1CÑ DÔ D�Ø$ð ØØð 3Ý”H˜^­T¬YÐ7I×7RÒ7RÑ7TÔ7TÑ-UÔ-UØ1 Ð1Ð1Ð1ñ3ô 3ð 3àAS•Ô,¨TÔ-=Ñ>ØBO•Ô-¨dÔ.>Ñ?Ø�àð =Ý”H˜^­T¬X°d©^¬^Ñ<Ô<Ð<õ B\ÑA]ÔA]•Ô,¨TÔ-=Ñ>ØBF•Ô-¨dÔ.>Ñ?Ø!�zåÔ+¨DÔ,<Ô=½}Ô?\Ð]aÔ]mÔ?nÐnÐnr3   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   rC   ÚnameÚget_commandr   Ú
returncoder(   r.   r/   ÚFileNotFoundErrorÚPermissionErrorr
   ÚreÚsearchÚgroup)r0   r"   ÚcmdÚpÚoutÚmsgÚcmverss          r1   rB   zCMakeExecutor.check_cmakej   sÃ  € Ø�~Š~ÑÔð 	ÝŒHÐ<¨8¬=Ð<Ð<Ñ=Ô=Ð=Ø�4ð	Ø×&Ò&Ñ(Ô(ˆCÝ  { mÑ 3Ñ4Ô4°Q°q°SÔ9‰FˆAˆsØŒ|˜qÒ Ð Ý”ð  ß &¢ s§x¢x°¡}¤}Ñ 5Ô 5ñ7ô 7ð 7à�tð !øõ !ð 	ð 	ð 	ÝŒLð ß"šF 3§8¢8¨C¡=¤=Ñ1Ô1ñ3ô 3ð 3à�4�4Ýð 	ð 	ð 	ØL×SÒSÐTW×T\ÒT\Ð]`ÑTaÔTaÑbÔbˆCÝ‘<”<ð kØÐjÑj�ÝŒL˜ÑÔÐØ�4�4ð	øøøõ ”ÐAÀ3Ñ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$   )r0   r%   r$   s      r1   Úset_exec_modezCMakeExecutor.set_exec_mode‡   s,   € ØÐ"Ø*ˆDÔØ Ð,Ø)>ˆDÔ&Ð&Ð&ð -Ð,r3   Ú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)r0   r_   ra   rb   ÚfenvÚtargss         r1   Ú
_cache_keyzCMakeExecutor._cache_key�   sX   € Ø),¨�y˜Ÿš™œÑ%Ô%Ð%½i¹k¼kˆÝ�d‘”ˆØ”×&Ò&Ñ(Ô(¨%°×1CÒ1CÑ1EÔ1EÀtÐLÐLr3   Ú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Úcwdrb   r4   r[   c                 óì   •— 	 ‰j                              ¦   «         } | sn<t          j        |                      d¬¦  «                             d¦  «        ¦  «         ŒX‰j                              ¦   «          d S )NTÚignore©Úerrorsú
)rp   Úreadliner   rC   ÚdecodeÚstripÚclose)ÚlineÚprocs    €r1   Úprint_stdoutz6CMakeExecutor._call_cmout_stderr.<locals>.print_stdout™   su   ø€ ðCØ”{×+Ò+Ñ-Ô-�Øð ØÝ”˜Ÿš¨H˜Ñ5Ô5×;Ò;¸DÑAÔAÑBÔBÐBð	Cð
 ŒK×ÒÑÔÐÐÐr3   )ÚtargetÚ z/^\s*(.*\.(cmake|txt))\(([0-9]+)\):\s*(\w+)\(.*$FTrt   ru   z )
rw   )r4   r[   )r"   rN   ÚSÚPopenÚPIPEr   r   ÚstartrR   Úcompilerq   rx   ry   ÚmatchÚendswithr   r(   rz   r{   r/   ÚwaitrO   )r0   r_   ra   rb   rU   r~   ÚtÚ	raw_traceÚtline_start_regÚinside_multiline_traceÚline_rawr|   r}   s               @r1   Ú_call_cmout_stderrz CMakeExecutor._call_cmout_stderr’   s¼  ø€ ØŒm×'Ò'Ñ)Ô)¨DÑ0ˆÝŒw�s¥1¤6µ!´&½cÀ)¹n¼nÐRUÐVÑVÔVˆð
	 ð 	 ð 	 ð 	 ð 	 ð 	 õ ˜,Ð'Ñ'Ô'ˆØ	�Š‰	Œ	ˆ	ð	àˆIÝ œjÐ)[Ñ\Ô\ˆOØ%*Ð"ð3Øœ;×/Ò/Ñ1Ô1�Øð ØØ—’¨h�Ñ7Ô7�Ø"×(Ò(¨Ñ.Ô.ð 3Ø Ñ%�IØ15·²¸vÑ1FÔ1FÐ-FÐ*Ð*Ø+ð 3Ø Ñ%�I�Iå”L §¢¨DÑ!1Ô!1Ñ2Ô2Ð2ð3ð ð ŒK×ÒÑÔÐØ�FŠF‰HŒHˆHØ�IŠI‰KŒKˆKˆKøð ŒK×ÒÑÔÐØ�FŠF‰HŒHˆHØ�IŠI‰KŒKˆKˆKøøøàŒ  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 )Nro   Trt   ru   rw   )r"   rN   r�   r‚   rƒ   ÚSTDOUTr   rp   rx   r   rC   ry   rz   r{   rˆ   rO   )r0   r_   ra   rb   rU   r}   r|   s          r1   Ú_call_cmoutzCMakeExecutor._call_cmout½   sÅ   € ØŒm×'Ò'Ñ)Ô)¨DÑ0ˆÝŒw�s¥1¤6µ!´(ÅÀIÁÄÐTWÐXÑXÔXˆð	?Ø”;×'Ò'Ñ)Ô)ˆDØð ØÝŒH�T—[’[¨�[Ñ1Ô1×7Ò7¸Ñ=Ô=Ñ>Ô>Ð>ð		?ð
 	Œ×ÒÑÔÐØ�	Š	‰ŒˆØŒ  dÐ*Ð*r3   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)rb   rr   Ú	close_fdsrp   rq   Úuniversal_newlinesrt   ru   )Úmkdirr"   rN   r�   Úrunr   rƒ   rO   rp   ry   rq   )	r0   r_   ra   rb   rU   ÚretÚrcrW   Úerrs	            r1   Ú_call_quietzCMakeExecutor._call_quietÉ   s¥   € Ø�Š ¨tˆÑ4Ô4Ð4ØŒm×'Ò'Ñ)Ô)¨DÑ0ˆÝŒe�C˜S¥c¨)¡n¤nÀÝœ6­!¬&ÀUðLñ Lô LˆàŒ^ˆØŒj×Ò xÐÑ0Ô0ˆØŒj×Ò xÐÑ0Ô0ˆØ�3˜ˆ|Ðr3   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   r@   r"   rN   r%   rœ   r$   rŽ   r‘   )r0   r_   ra   rb   Úis        r1   Ú
_call_implzCMakeExecutor._call_implÓ   s¼   € ÝŒ
ÐX T¤]×%>Ò%>Ñ%@Ô%@ÐXÐXÀyÐXÐXÐXÑYÔYÐYØð 	%ð 	%ˆAÝŒJ�|˜q�|�|�|Ñ$Ô$Ð$Ð$ØÔð 	>Ø×#Ò# D¨)°SÑ9Ô9Ð9àÔ)ð >Ø×.Ò.¨t°YÀÑDÔDÐDà×'Ò'¨¨i¸Ñ=Ô=Ð=r3   Údisable_cachec                ó  — |€t           j                             ¦   «         }|| j        z   }|r|                      |||¦  «        S t
          j        }|                      |||¦  «        }||vr|                      |||¦  «        ||<   ||         S r]   )ÚosÚenvironÚcopyr'   r    r   Úclass_cmake_cacherl   )r0   r_   ra   rb   r¡   ÚcacheÚkeys          r1   ÚcallzCMakeExecutor.callß   s�   € Øˆ;Ý”*—/’/Ñ#Ô#ˆCà�dÔ+Ñ+ˆØð 	9Ø—?’? 4¨°CÑ8Ô8Ð8õ Ô/ˆØ�oŠo˜d I¨sÑ3Ô3ˆØ�eÐÐØŸš¨¨y¸#Ñ>Ô>ˆE�#‰JØ�SŒzÐr3   c                ó   — | j         d uS r]   )r"   ©r0   s    r1   rL   zCMakeExecutor.foundî   s   € ØŒ} DÐ(Ð(r3   c                ó   — | j         S r]   )r#   r«   s    r1   r   zCMakeExecutor.versionñ   s
   € ØŒ~Ðr3   c                ó4   — | j                              ¦   «         S r]   )r"   r*   r«   s    r1   Úexecutable_pathzCMakeExecutor.executable_pathô   s   € ØŒ}×%Ò%Ñ'Ô'Ð'r3   c                ó4   — | j                              ¦   «         S r]   )r"   rN   r«   s    r1   rN   zCMakeExecutor.get_command÷   s   € ØŒ}×(Ò(Ñ*Ô*Ð*r3   c                ó   — | j         S r]   )r&   r«   s    r1   Úget_cmake_prefix_pathsz$CMakeExecutor.get_cmake_prefix_pathsú   s   € ØÔ Ð r3   c                ó   — | j         S r]   )r   r«   s    r1   Úmachine_choicezCMakeExecutor.machine_choiceý   s   € ØÔÐr3   )F)r   r   r   r   r   r   r   r   )r   r   r   r   r4   r5   )r"   rH   r4   rI   r7   )r%   rZ   r$   rZ   r4   r[   )r_   r`   ra   r   rb   rc   r4   rd   )r_   r`   ra   r   rb   rc   r4   rm   )NF)
r_   r`   ra   r   rb   rc   r¡   r   r4   rm   )r4   r   )r4   r   )r4   r`   )r4   r   )Ú__name__Ú
__module__Ú__qualname__r   r?   rD   r¦   r2   r!   rB   r^   rl   rŽ   r‘   rœ   r    r©   rL   r   r®   rN   r±   r³   © r3   r1   r   r   '   s¢  € € € € € ð  �Z  dÑ+Ô+€NØ �j  tÑ,Ô,€OØÐðdð dð dð dð dð2!oð !oð !oð !oð !oðFð ð ð ð:?ð ?ð ?ð ?ð ?ðMð Mð Mð Mð
)0ð )0ð )0ð )0ðV
+ð 
+ð 
+ð 
+ðð ð ð ð
>ð 
>ð 
>ð 
>ðð ð ð ð ð)ð )ð )ð )ðð ð ð ð(ð (ð (ð (ð+ð +ð +ð +ð!ð !ð !ð !ð ð  ð  ð  ð  ð  r3   r   )$Ú
__future__r   Ú
subprocessr�   Ú	threadingr   ÚtypingÚTrR   r£   r€   r   Úmesonlibr   r   r	   r
   r   Úprogramsr   r   ÚTYPE_CHECKINGÚpathlibr   r   r   r   r   ÚTupleÚintÚOptionalr   rm   Ú	FrozenSetrd   r   r·   r3   r1   ú<module>rÅ      sŠ  ðð" #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø 	€	€	€	Ø 	€	€	€	à Ð Ð Ð Ð Ð Ø UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UØ HÐ HÐ HÐ HÐ HÐ HÐ HÐ Hà„?ð ZØÐÐÐÐÐà)Ð)Ð)Ð)Ð)Ð)Ø(Ð(Ð(Ð(Ð(Ð(Ø*Ð*Ð*Ð*Ð*Ð*à”'˜#˜qœz¨#œ°´
¸3´Ð?Ô@€KØ”W˜S !¤'¨#¨s¨(Ô"3°S¸!¼+ÀaÄgÈcÐSVÈhÔFWÔ:XÐXÔY€NðW ð W ð W ð W ð W ñ W ô W ð W ð W ð W r3   