§
    ‹ã÷c]$  ã                  óø   — 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mZmZ ddlmZmZmZmZmZmZ ddl
mZ d dlZej        rddlmZ d	d
hZd,d„Zd-d„Zd.d„Zd/d„Zd0d„Z d1d$„Z!d2d'„Z"d3d+„Z#dS )4é    )ÚannotationsN)ÚPathé   )ÚbuildÚminstallÚdependencies)ÚMesonExceptionÚ
is_windowsÚsetup_vsenvÚ	OptionKeyÚget_wine_shortpathÚMachineChoice)Úmlog)ÚInstallDatazpwsh.exezpowershell.exeÚparserúargparse.ArgumentParserÚreturnÚNonec                óø   — |                       ddt          dd¬¦  «         |                       ddt          d d¬	¦  «         |                       d
dd¬¦  «         |                       dt          j        dd¬¦  «         d S )Nz-CÚbuilddirú.zPath to build directory)ÚdestÚtypeÚdefaultÚhelpz	--workdirz-wzDDirectory to cd into before running (default: builddir, Since 1.0.0))r   r   r   z--dumpÚ
store_truez.Only print required environment (Since 0.62.0))Úactionr   ÚdevcmdÚcommandzDCommand to run in developer environment (default: interactive shell))ÚnargsÚmetavarr   )Úadd_argumentr   ÚargparseÚ	REMAINDER)r   s    ú4/usr/lib/python3/dist-packages/mesonbuild/mdevenv.pyÚadd_argumentsr&      s´   € Ø
×Ò˜ :µDÀ#Ø6ð ñ 8ô 8ð 8à
×Ò˜ Tµ¸dØcð ñ eô eð eà
×Ò˜¨ØMð ñ Oô Oð Oà
×Ò˜­Ô(:ÀIØcð ñ eô eð eð eð eó    úT.Optional[str]c            	     ó6  — t          t          ¦  «        j        } | dz  dz  }t          D ]o}	 |ddddt	          |¦  «        g}t          j        |¦  «        }|                     ¦   «                              ¦   «         c S # t
          j	        t          f$ r Y Œlw xY wd S )NÚscriptszcmd_or_ps.ps1z
-noprofilez-executionpolicyÚbypassz-file)r   Ú__file__ÚparentÚPOWERSHELL_EXESÚstrÚ
subprocessÚcheck_outputÚdecodeÚstripÚCalledProcessErrorÚOSError)Ú
mesonbuildÚscriptÚshellr   Úresults        r%   Úget_windows_shellr:      s­   € Ý•h‘”Ô&€JØ˜)Ñ# oÑ5€FÝ ð ð ˆð	Ø˜lÐ,>ÀÈ'ÕSVÐW]ÑS^ÔS^Ð_ˆGÝÔ,¨WÑ5Ô5ˆFØ—=’=‘?”?×(Ò(Ñ*Ô*Ð*Ð*Ð*øÝÔ-­wÐ7ð 	ð 	ð 	ØˆDð	øøøàˆ4s   ¬AA=Á=BÂBÚenvúT.Dict[str, str]c                ó  — |                       d¦  «        }|sd S t          j        d¦  «        pt          j        d¦  «        }|sd S t          |g|                     d¦  «        ¦  «        | d<   t          j        d¦  «         d S )NÚWINEPATHÚwine64Úwineú;z4Meson detected wine and has set WINEPATH accordingly)ÚgetÚshutilÚwhichr   Úsplitr   Úlog)r;   ÚwinepathÚwinecmds      r%   Úreduce_winepathrI   +   sƒ   € Ø�wŠw�zÑ"Ô"€HØð ØˆÝŒl˜8Ñ$Ô$Ð<­¬°VÑ(<Ô(<€GØð ØˆÝ(¨'¨°H·N²NÀ3Ñ4GÔ4GÑHÔH€Cˆ
�OÝ„HÐCÑDÔDÐDÐDÐDr'   Úbúbuild.BuildÚdumpÚboolú%T.Tuple[T.Dict[str, str], T.Set[str]]c                ó8  — t          j        ¦   «         }|                     ddg¦  «         |                     d| j        g¦  «         | j        j        t          j                                      ¦   «         }|r|                     d|g¦  «         |ri nt          j
                             ¦   «         }t          ¦   «         }t          j        | j        |h¦  «        D ]/}|                     ||¦  «        }||                     ¦   «         z  }Œ0t#          |¦  «         ||fS )NÚMESON_DEVENVÚ1ÚMESON_PROJECT_NAMEÚQEMU_LD_PREFIX)r   ÚEnvironmentVariablesÚsetÚproject_nameÚenvironmentÚ
propertiesr   ÚHOSTÚget_sys_rootÚosÚenvironÚcopyÚ	itertoolsÚchainÚdevenvÚget_envÚ	get_namesrI   )rJ   rL   Ú	extra_envÚsysrootr;   ÚvarnamesÚis          r%   ra   ra   5   sþ   € ÝÔ*Ñ,Ô,€IØ‡M‚M�. 3 %Ñ(Ô(Ð(Ø‡M‚MÐ&¨¬Ð(8Ñ9Ô9Ð9àŒmÔ&¥}Ô'9Ô:×GÒGÑIÔI€GØð 3Ø�ŠÐ&¨¨	Ñ2Ô2Ð2àÐ
+ˆ"ˆ"�"œ*Ÿ/š/Ñ+Ô+€CÝ‰uŒu€HÝŒ_˜QœX¨	 {Ñ3Ô3ð "ð "ˆØ�iŠi˜˜TÑ"Ô"ˆØ�A—K’K‘M”MÑ!ˆˆå�CÑÔÐà�ˆ=Ðr'   Úinstall_dataú'InstallData'úT.List[str]c                óê  — g }t          j        d| j        ddddœ¦  «        }|                     ¦   «         �r<| j        j                             t          d¦  «        ¦  «        }t          |t          ¦  «        s
J d¦   «         ‚| j        j                             t          d¦  «        ¦  «        }t          |t          ¦  «        s
J d¦   «         ‚t          j
                             ||¦  «        }|                     d	d|g¬
¦  «        }t          |t          ¦  «        s
J d¦   «         ‚t          |¦  «        }|j        D ]7}	|t          |	j        ¦  «        j        v r|                     |	j
        ¦  «         Œ8|S )Nzbash-completionFTz>=2.10)ÚrequiredÚsilentÚversionÚprefixzfor mypyÚdatadirÚcompletionsdir)Ú	pkgconfigÚpkgconfig_define)r   ÚPkgConfigDependencyrW   ÚfoundÚcoredataÚ
get_optionr   Ú
isinstancer/   r[   ÚpathÚjoinÚget_variabler   ÚdataÚinstall_pathÚparentsÚappend)
rJ   rg   r9   Údeprn   ro   Údatadir_absrp   Úcompletionsdir_pathÚfs
             r%   Úbash_completion_filesrƒ   H   sa  € Ø€FÝ
Ô
*Ð+<¸a¼mØ8=ÈÐZbÐ+cÐ+cñeô e€Cà
‡y‚y�{„{ñ &Ø”Ô'×2Ò2µ9¸XÑ3FÔ3FÑGÔGˆÝ˜&¥#Ñ&Ô&Ð2Ð2¨
Ñ2Ô2Ð2Ø”-Ô(×3Ò3µI¸iÑ4HÔ4HÑIÔIˆÝ˜'¥3Ñ'Ô'Ð3Ð3¨Ñ3Ô3Ð3Ý”g—l’l 6¨7Ñ3Ô3ˆØ×)Ò)Ð4DÐXaÐcnÐWoÐ)ÑpÔpˆÝ˜.­#Ñ.Ô.Ð:Ð:°
Ñ:Ô:Ð:Ý" >Ñ2Ô2ÐØÔ"ð 	&ð 	&ˆAØ"¥d¨1¬>Ñ&:Ô&:Ô&BÐBÐBØ—’˜aœfÑ%Ô%Ð%øØ€Mr'   Úautoload_pathr   Ú
gdb_helperr/   Úfnamec           	     ó¬  — | |j         z  }|                     dd¬¦  «         	 t          ¦   «         rDt          j        |t          |t          j                             |¦  «        z  ¦  «        ¦  «         d S t          j	        |t          |t          j                             |¦  «        z  ¦  «        ¦  «         d S # t          t          j        f$ r Y d S w xY w)NT)r}   Úexist_ok)r-   Úmkdirr
   rC   r]   r/   r[   rx   ÚbasenameÚsymlinkÚFileExistsErrorÚSameFileError)r„   r…   r†   Údestdirs       r%   Úadd_gdb_auto_loadr�   Z   sÊ   € à˜eœlÑ*€GØ‡M‚M˜$¨€MÑ.Ô.Ð.ðÝ‰<Œ<ð 	PÝŒK˜
¥C¨µ"´'×2BÒ2BÀ:Ñ2NÔ2NÑ(NÑ$OÔ$OÑPÔPÐPÐPÐPåŒJ�z¥3 wµ´×1AÒ1AÀ*Ñ1MÔ1MÑ'MÑ#NÔ#NÑOÔOÐOÐOÐOøÝ�VÔ1Ð2ð ð ð Øˆˆðøøøs   £AB9 Á5AB9 Â9CÃCÚ
privatedirÚworkdirc           	     ó   — t          j        d¦  «        sd S | j        }| dz  }t          |g|j        dd …         ¢R Ž }d}|j        D ]Ä}|j                             d¦  «        s4|j                             d¦  «        s|j                             d¦  «        rtt          |j        ¦  «        j         	                    dd¦  «        d	         }|j
        D ]9}	t          |	j        ¦  «        }
|
j        |k    rt          ||j        |
¦  «         d
}Œ:ŒÅ|�r¼d|› d�}|dz  }d}	 |                     dd¬¦  «        5 }||                     ¦   «         vr|                     |¦  «         d
}d d d ¦  «         n# 1 swxY w Y   n)# t           $ r |                     |d¬¦  «         d
}Y nw xY w|�r'|                     ¦   «         }|                     ¦   «         }|                     |¦  «        }t)          j        dt)          j        t/          |¦  «        ¦  «        ¦  «         t)          j        d¦  «         t)          j        dt)          j        d|j        › �¦  «        dt)          j        d¦  «        ¦  «         |j        |k    rVt)          j        dt)          j        t/          |j        ¦  «        ¦  «        dt)          j        d|› �¦  «        ¦  «         d S d S d S d S )NÚgdbzgdb-auto-loadr   Fz-gdb.pyz-gdb.gdbz-gdb.scmú-r   Tz add-auto-load-scripts-directory ú
z.gdbinitzr+zutf-8)Úencodingz.Meson detected GDB helpers and added config inz+To load it automatically you might need to:z - Addzadd-auto-load-safe-path Úinz
~/.gdbinitz - Change current workdir tozor usez--init-command )rC   rD   r-   r   Úpartsr{   rx   ÚendswithÚnameÚrsplitÚtargetsr†   r�   ÚopenÚ	readlinesÚwriteÚFileNotFoundErrorÚ
write_textÚresolveÚrelative_tor   rF   Úboldr/   )r�   rg   r‘   ÚbdirÚautoload_basedirr„   Úhave_gdb_helpersÚdÚlibnameÚtrx   Úgdbinit_lineÚgdbinit_pathÚ
first_timer‚   Úworkdir_pathÚrel_paths                    r%   Úwrite_gdb_scriptr°   f   sL  € ÝŒ<˜ÑÔð ØˆØÔ€DØ! OÑ3ÐÝÐ)Ð;¨D¬J°q°r°r¬NÐ;Ð;Ð;€MØÐØÔð 	,ð 	,ˆØŒ6�?Š?˜9Ñ%Ô%ð 	,¨¬¯ª¸Ñ)DÔ)Dð 	,ÈÌÏÊÐXbÑHcÔHcð 	,õ ˜1œ6‘l”lÔ'×.Ò.¨s°AÑ6Ô6°qÔ9ˆGØ!Ô)ð ,ð ,�Ý˜AœG‘}”}�Ø”9 Ò'Ð'Ý% m°Q´V¸TÑBÔBÐBØ'+Ð$øøØñ LØNÐ:JÐNÐNÐNˆØ˜jÑ(ˆØˆ
ð	Ø×"Ò" 4°'Ð"Ñ:Ô:ð &¸aØ q§{¢{¡}¤}Ð4Ð4Ø—G’G˜LÑ)Ô)Ð)Ø!%�Jð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &øøõ !ð 	ð 	ð 	Ø×#Ò# L¸7Ð#ÑCÔCÐCØˆJˆJˆJð	øøøð ñ 
	LØ'×/Ò/Ñ1Ô1ˆLØ"Ÿ?š?Ñ,Ô,ˆLØ#×/Ò/°Ñ=Ô=ˆHÝŒHÐEÅtÄyÕQTÐU]ÑQ^ÔQ^ÑG_ÔG_Ñ`Ô`Ð`ÝŒHÐBÑCÔCÐCÝŒH�X�tœyÐ)YÀLÔDWÐ)YÐ)YÑZÔZØ�4œ9 \Ñ2Ô2ñ4ô 4ð 4àÔ" lÒ2Ð2Ý”Ð7½¼Å3ÀxÄÑCWÔCWÑ9XÔ9XØ!¥4¤9Ð-I¸xÐ-IÐ-IÑ#JÔ#JñLô Lð Lð Lð Lð+Lð Lð
	Lð 
	Lð 3Ð2s6   ÄE9 Ä3.E-Å!E9 Å-E1Å1E9 Å4E1Å5E9 Å9#FÆFÚoptionsúargparse.NamespaceÚintc                óF  — t          | j        ¦  «        dz  }|dz  }|                     ¦   «         st          d| j        ›d�¦  «        ‚t	          j        | j        ¦  «        }| j        p| j        }t          |j        ¦  «         t          || j
        ¦  «        \  }}| j
        rJ| j        rt          d¦  «        ‚|D ]/}t          |› d||         › d�¦  «         t          d|› �¦  «         Œ0d	S |j                             ¦   «         r`d
}|j                             ¦   «         }	|	r/d                     |	                     ¦   «         ¦  «        }
|d|
› �z  }t%          j        |¦  «         t)          j        t-          |dz  ¦  «        ¦  «        }t/          |||¦  «         | j        }|�säd|j        › d�}t2          j                             d¦  «        }|r#t2          j                             |¦  «        r|g}n¹t=          ¦   «         rmt?          ¦   «         }|st%          j         d¦  «         |tB          v r|ddg}d|› d�}|d|gz  }nkt2          j                             dd¦  «        g}|dd|› d�gz  }n>t2          j                             dt2          j         "                    d¦  «        ¦  «        g}d|d	         v rÑtG          j$        d¬¦  «        }| %                    d ¦  «         t2          j                             d!¦  «        s| %                    d"|› d#�¦  «         tM          ||¦  «        D ]}| %                    d$|› d%�¦  «         Œ| '                    ¦   «          | (                    d&¦  «         | (                    |j)        ¦  «         n=tU          j+        |d	         |                     d'd ¦  «        ¬(¦  «        }|p|d	         |d	<   	 tY          j-        |d)||¬*¦  «        S # tX          j.        $ r}|j/        cY d }~S d }~wt`          $ r t          d+|d	         › �¦  «        ‚w xY w),Nzmeson-privatez	build.datz
Directory z- does not seem to be a Meson build directory.z3--dump option does not allow running other command.z="ú"zexport r   z'An executable wrapper could be requiredú z: zinstall.datú[ú]ÚSHELLz6Failed to determine Windows shell, fallback to cmd.exez-NoLogoz-NoExitzfunction global:prompt {  "z PS " + $PWD + "> "}z-CommandÚCOMSPECzC:\WINDOWS\system32\cmd.exez/kzprompt z $P$Gz/bin/shÚbashÚw)Úmodez [ -e ~/.bashrc ] && . ~/.bashrc
ÚMESON_DISABLE_PS1_OVERRIDEzexport PS1="z $PS1"
z. "z"
z--rcfileÚPATH)rx   F)Ú	close_fdsr;   ÚcwdzCommand not found: )1r   r   Úis_filer	   r   Úloadr‘   r   Ú
need_vsenvra   rL   r   ÚprintrW   Úneed_exe_wrapperÚget_exe_wrapperry   Úget_commandr   rF   r   Úload_install_datar/   r°   rV   r[   r\   rB   rx   Úexistsr
   r:   Úwarningr.   ÚrealpathÚtempfileÚNamedTemporaryFilerŸ   rƒ   Úflushr~   rš   rC   rD   r0   Úcallr4   Ú
returncoder    )r±   r�   Ú	buildfilerJ   r‘   r`   re   rš   ÚmÚexe_wrapperÚcmdrg   ÚargsÚprompt_prefixÚ	shell_envr8   ÚpromptÚtmprcr‚   Úabs_pathÚes                        r%   ÚrunrÝ   �   sp  € Ý�gÔ&Ñ'Ô'¨/Ñ9€JØ˜[Ñ(€IØ×ÒÑÔð mÝÐk¨'Ô*:ÐkÐkÐkÑlÔlÐlÝŒ
�7Ô#Ñ$Ô$€AØŒoÐ1 Ô!1€Gå�”ÑÔÐÝ˜q '¤,Ñ/Ô/Ñ€FˆHØ„|ð ØŒ>ð 	XÝ Ð!VÑWÔWÐWØð 	$ð 	$ˆDÝ�TÐ,Ð,˜V Dœ\Ð,Ð,Ð,Ñ-Ô-Ð-ÝÐ"˜DÐ"Ð"Ñ#Ô#Ð#Ð#Øˆqà„}×%Ò%Ñ'Ô'ð Ø5ˆØ”m×3Ò3Ñ5Ô5ˆØð 	Ø—(’(˜;×2Ò2Ñ4Ô4Ñ5Ô5ˆCØ��c��‰OˆAÝŒ�‰ŒˆåÔ-­c°*¸}Ñ2LÑ.MÔ.MÑNÔN€LÝ�Z ¨wÑ7Ô7Ð7àŒ>€DØñ !&Ø-˜AœNÐ-Ð-Ð-ˆÝ”J—N’N 7Ñ+Ô+ˆ	àð 	J�œŸš¨	Ñ2Ô2ð 	JØ�;ˆDˆDÝ‰\Œ\ð 	JÝ%Ñ'Ô'ˆEØð WÝ”ÐUÑVÔVÐVØ�Ð'Ð'Ø˜y¨)Ð4�Ø\¸Ð\Ð\Ð\�Ø˜ VÐ,Ñ,��åœ
Ÿš yÐ2PÑQÔQÐR�Ø˜Ð=¨Ð=Ð=Ð=Ð>Ñ>��å”J—N’N 7­B¬G×,<Ò,<¸YÑ,GÔ,GÑHÔHÐIˆDØ�T˜!”WÐÐåÔ/°SÐ9Ñ9Ô9ˆEØ�KŠKÐ;Ñ<Ô<Ð<Ý”:—>’>Ð">Ñ?Ô?ð DØ—’ÐB¨=ÐBÐBÐBÑCÔCÐCÝ*¨1¨lÑ;Ô;ð *ð *�Ø—’˜L !˜L˜L˜LÑ)Ô)Ð)Ð)Ø�KŠK‰MŒMˆMØ�KŠK˜
Ñ#Ô#Ð#Ø�KŠK˜œ
Ñ#Ô#Ð#øõ ”<  Q¤¨f¯jªj¸ÀÑ.FÔ.FÐGÑGÔGˆØÐ%˜d 1œgˆˆQ‰ð>ÝŒ˜t¨uØ#)Ø#*ð,ñ ,ô ,ð 	,øõ Ô(ð ð ð ØŒ|ÐÐÐÐÐÐøøøøÝð >ð >ð >ÝÐ<°4¸´7Ð<Ð<Ñ=Ô=Ð=ð>øøøs   ÏO ÏP Ï.O:Ï4P Ï:&P )r   r   r   r   )r   r(   )r;   r<   r   r   )rJ   rK   rL   rM   r   rN   )rJ   rK   rg   rh   r   ri   )r„   r   r…   r/   r†   r   r   r   )r�   r   rg   rh   r‘   r   r   r   )r±   r²   r   r³   )$Ú
__future__r   r[   r0   r#   rÍ   rC   r^   Úpathlibr   Ú r   r   r   Úmesonlibr	   r
   r   r   r   r   r   ÚtypingÚTÚTYPE_CHECKINGÚbackendsr   r.   r&   r:   rI   ra   rƒ   r�   r°   rÝ   © r'   r%   ú<module>rç      sØ  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +ð:ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :à Ð Ð Ð Ð Ð à Ð Ð Ð Ø„?ð &Ø%Ð%Ð%Ð%Ð%Ð%àÐ/Ð0€ðeð eð eð eð
ð 
ð 
ð 
ðEð Eð Eð Eðð ð ð ð&ð ð ð ð$
ð 
ð 
ð 
ð'Lð 'Lð 'Lð 'LðRH>ð H>ð H>ð H>ð H>ð H>r'   