
    -Ph%                    L   U d dl mZ 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	Z	d dl
Z
d dlZd dlZddlmZmZ ddlmZ ddlmZmZmZmZmZmZmZmZ ddlmZ dd	lmZm Z  dd
l!m"Z" 	 d dl#m$Z% n# e&$ r dZ%Y nw xY wej'        r=ddlm(Z(m)Z)m*Z*m+Z+ ddlm,Z,m-Z-m.Z. 	 d dlm/Z/ n# e0$ r	 d dl1m/Z/ Y nw xY w G d de/          Z2dZ3g Z4de5d<   dEdZ6 G d d          Z7dFdZ8dGdHd#Z9dId'Z:	 	 	 dJdKd.Z;	 	 dLdMd1Z<dNd4Z=dOd7Z>dPd8Z?dQd;Z@dRd<ZA G d= d>          ZBdSdAZCdTdDZDdS )U    )annotations)globN   )buildenvironment)InstallData)MesonException
Popen_safeRealPathAction
is_windowsis_aixsetup_vsenvpickle_loadis_osx)	OptionKey)depfixerdestdir_join)run_exe)__file__)InstallDataBaseInstallEmptyDirInstallSymlinkDataTargetInstallData)FileModeEnvironOrDictExecutableSerialisation)Protocolc                  x    e Zd ZU dZded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   dS )ArgumentTypez7Typing information for the object returned by argparse.bool
no_rebuildonly_changedprofilequietstrwddestdirdry_runskip_subprojectstagsstripN)__name__
__module____qualname____doc____annotations__     S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/minstall.pyr   r   ,   sy         EE			r2   r   a  Warning: trying to copy a symlink that points to a file. This currently copies
the file by default, but will be changed in a future version of Meson to copy
the link instead.  Set follow_symlinks to true to preserve current behavior, or
false to copy the link.T.List[str]selinux_updatesparserargparse.ArgumentParserreturnNonec                   |                      ddt          d           |                      dddt          j                   |                      d	d
dd           |                      dd
dd           |                      ddd
dd           |                      dd d           |                      dddd           |                      ddddd           |                      dd d            |                      d!dd"           d S )#N-Cr&   z#directory to cd into before running)destactionhelpz--profile-self
store_truer#   )r=   r<   r>   --no-rebuildFz!Do not rebuild before installing.)defaultr=   r>   z--only-changedz9Only overwrite files that are older than the copied file.z-qz--quietz+Do not print every file that was installed.z	--destdirz5Sets or overrides DESTDIR environment. (Since 0.57.0))rA   r>   z-nz	--dry-runz8Doesn't actually install, but print logs. (Since 0.57.0))r=   r>   z--skip-subprojects?* z;Do not install files from given subprojects. (Since 0.58.0))nargsconstrA   r>   z--tagszAInstall only targets having one of the given tags. (Since 0.60.0)z--stripzOStrip targets even if strip option was not set during configure. (Since 0.62.0))add_argumentr   argparseSUPPRESS)r6   s    r3   add_argumentsrJ   D   s   
4B  D D D
(I%.  0 0 0
l@  B B B
(%X  Z Z Z
i|J  L L L
TT  V V V
k,X  Z Z Z
,CsBZ  \ \ \
$`  b b b
	,n  p p p p pr2   c                  0    e Zd ZddZdddZddZddZdS )DirMakerlfT.TextIOmakedirsT.Callable[..., None]c                V    || _         g | _        t                      | _        || _        d S N)rM   dirssetall_dirsmakedirs_impl)selfrM   rO   s      r3   __init__zDirMaker.__init__[   s)    !#	$'EE%r2   Fpathr%   exist_okr    r8   r9   c                8   t           j                            |          }| j                            |           g }|t           j                            |          k    r|| j        v rnvt           j                            |          s|                    |           t           j                            |          }|t           j                            |          k    | 	                    ||           |
                                 | xj        |z  c_        d S )NrZ   )osrY   normpathrU   adddirnamerS   existsappendrV   reverse)rW   rY   rZ   r`   rS   s        r3   rO   zDirMaker.makedirsa   s    '""4(('"""1111$)## 7>>'** %G$$$goog..G 1111 	4(333 			T				r2   
'DirMaker'c                    | S rR   r1   )rW   s    r3   	__enter__zDirMaker.__enter__w   s    r2   exception_typeT.Type[Exception]valueT.Any	tracebackc                v    | j                                          | j         D ]}t          | j        |           d S rR   )rS   rc   append_to_logrM   )rW   rg   ri   rk   ds        r3   __exit__zDirMaker.__exit__z   sF    	 	& 	&A$'1%%%%	& 	&r2   N)rM   rN   rO   rP   F)rY   r%   rZ   r    r8   r9   )r8   rd   )rg   rh   ri   rj   rk   rj   r8   r9   )r,   r-   r.   rX   rO   rf   ro   r1   r2   r3   rL   rL   Z   si        & & & &    ,   & & & & & &r2   rL   fnamer%   r   c                .    t          | dt                    S )Nr   )r   r   )rq   s    r3   load_install_datars      s    um[999r2   FrY   follow_symlinksr    c                X    t          t          j        | |          j        dz            S )zCChecks whether any of the "x" bits are set in the source file mode.rt   I   )r    r]   statst_mode)rY   rt   s     r3   is_executablerz      s'    o>>>FNOOOr2   rM   rN   linec                    |                      |           |                    d          s|                      d           |                                  d S )N
)writeendswithflush)rM   r{   s     r3   rm   rm      sE    HHTNNN== 
HHJJJJJr2   TuserT.Union[str, int, None]groupdir_fdT.Optional[int]c                &   ||
J d            t           j        dk    rt          j        | ||||           d S t          j        ||ddfd}	 |t          _        t          j        | ||           t          _        d S # t          _        w xY w)Nz$ensure that calls to chown are valid)      r   rt   rY   BT.Union[int, str, 'os.PathLike[str]', bytes, 'os.PathLike[bytes]']uidintgidr   r   rt   r    r8   r9   c               (     | ||||           dS )zOverride the default behavior of os.chown

            Use a real function rather than a lambda to help mypy out. Also real
            functions are faster.
            r   Nr1   )rY   r   r   r   rt   real_os_chowns        r3   chownzset_chown.<locals>.chown   s&     M$SYYYYYYr2   )rY   r   r   r   r   r   r   r   rt   r    r8   r9   )sysversion_infoshutilr   r]   )rY   r   r   r   rt   r   r   s         @r3   	set_chownr      s    * u002X000
7"" 	T4vWWWWWW DJ*9	Z 	Z 	Z 	Z 	Z 	Z 	Z 	Z	%BHLtU+++$BHHH}BH$$$$s   "B Bmoder   c                    	 t          j        | |||           d S # t          t          t          f$ r= t           j                            |           st          j        | ||           Y d S Y d S w xY w)Nr   )r   )r]   chmodNotImplementedErrorOSErrorSystemErrorrY   islink)rY   r   r   rt   s       r3   	set_chmodr      s    0
tFOLLLLLL+6 0 0 0w~~d## 	0HT4///////	0 	0 	00s    AA0/A0umaskT.Union[str, int]c           	        |dk    rd S t          |t                    s
J d            t          | d          rdnd}|| z  }	 t          | |d           d S # t          $ r(}t          | d|d|j         d	           Y d }~d S d }~ww xY w)
Npreservez.umask should only be "preserver" or an integerFrv   i  i  : Unable to set permissions : , ignoring...)
isinstancer   rz   r   PermissionErrorprintstrerror)rY   r   	new_permses       r3   sanitize_permissionsr      s     
eS!!SS#SSSS&tUCCCNI%I_$	5999999 _ _ _]]Y]]AJ]]]^^^^^^^^^_s   A 
B
"BB
T.Optional['FileMode']default_umaskc                B   |+t          d |j        |j        |j        fD                       rt	          | |           d S t                      s|j        |j        	 t          | |j        |j        d           n# t          $ r4}t          | d|j        d|j        d|j	         d           Y d }~nd }~wt          $ r% t          | d|j        d	|j        d
           Y nOt          $ rC}|j        t          j        k    r#t          | d|j        d	|j        d
           n Y d }~nd }~ww xY w|j        T	 t          | |j        d           d S # t          $ r-}t          | d|j        d|j	         d           Y d }~d S d }~ww xY wt	          | |           d S )Nc              3     K   | ]}|d u V  	d S rR   r1   ).0ms     r3   	<genexpr>zset_mode.<locals>.<genexpr>   s&      UU19UUUUUUr2   Frv   z: Unable to set owner z and group r   r   z: Nonexistent owner z
 or group z: ignoring...z: Nonexistent numeric owner r   )allperms_sownerr   r   r   r   r   r   r   LookupErrorr   errnoEINVALr   perms)rY   r   r   r   s       r3   set_moder      s>   |sUUt|TZ.TUUUUU|T=111<< TZ3tz7M
	dDJ
EJJJJJ 	w 	w 	wTuu4:uuDJuu\]\fuuuvvvvvvvv 	f 	f 	fTdddddddeeeee 	 	 	w%,&&ppTZppUYU_pppqqqq rqqqq	 |	fdDJ>>>>>> 	f 	f 	fTdddd1:dddeeeeeeeee	f 	T=11111sB   A; ;
D1*B44/D1%	D1.9D,,D1<E 
F"FFc                    	 t          j        dg           n/# t          t          t          t
          t           j        f$ r Y dS w xY wt          j        d          sdS t          sdS t          g dd                    d t          D                       dz             \  } }}| j        dk    rt          dd	|d
|d           dS dS )z|
    Restores the SELinux context for files in @selinux_updates

    If $DESTDIR is set, do not warn if the call fails.
    selinuxenabledN
restorecon)r   z-Fz-f-z-0 c              3     K   | ]}|V  d S rR   r1   )r   fs     r3   r   z+restore_selinux_contexts.<locals>.<genexpr>  s#      MiMiTUaMiMiMiMiMiMir2   r   z7Failed to restore SELinux context of installed files...zStandard output:zStandard error:r}   )sep)
subprocess
check_callFileNotFoundErrorNotADirectoryErrorr   r   CalledProcessErrorr   whichr5   r
   join
returncoder   )procouterrs      r3   restore_selinux_contextsr      s    /0111117OZMjk    	
 <%%   A A ADIIMiMiYhMiMiMiDiDilpDprrND#s!G #$	0 	0 	0 	0 	0 	0 s    (AAr'   
fullprefixc                    t           j                            |          rt          | |          }n t           j                            ||          }|S rR   )r]   rY   isabsr   r   )r'   r   rY   outputs       r3   get_destdir_pathr     sC    	w}}T 0gt,,j$//Mr2   c                D   |                      d          s|                      d          rt          j        |           j        dk    rt          j                            |           \  }}t          |dz   |z             }t          |          dk    r#t          d           t          j
        d           t          |          dk    r|d         S n|                      d          s|                      d          rt          j        |           j        dk    rt          j                            |           \  }}t          |dz   d	z             }t          |          dk    r#t          d
           t          j
        d           t          |          dk    r|d         S | S )zSome languages e.g. Rust have output files
    whose names are not known at configure time.
    Check if this is the case and return the real
    file instead..soz.dllr   z-*r   z8Stale dynamic library files in build dir. Can't install..az.libz.rlibz7Stale static library files in build dir. Can't install.)r   r]   rx   st_sizerY   splitextr   lenr   r   exit)rq   basesuffixfiless       r3   check_for_stampfiler     sh   
 ~~e  v 6 6  75>>!Q&&W--e44NT6v-..E5zzA~~PQQQ5zzQQx			  !7!7  75>>!Q&&W--e44NT6w.//E5zzA~~OPPP5zzQQxLr2   c                     e Zd ZdQdZdRdZdRdZdRdZdRdZdRdZdRdZ	dRdZ
dRdZdRdZdRdZdRdZdRdZdSdZdTdZdUdVd"ZdWd&ZdXd(ZdYd+Z	 	 dZd[d0Zd\d5Z	 dUd]d@Zd^dBZd_dGZd`dIZd`dJZd`dKZd`dLZd`dMZd`dNZ dadOZ!d`dPZ"dS )b	Installeroptions'ArgumentType'rM   rN   c                   d| _         d| _        || _        || _        d| _        |j        | _        d |j                            d          D             | _        |j        r$d |j                            d          D             nd | _        d S )NFr   c                6    g | ]}|                                 S r1   r+   r   is     r3   
<listcomp>z&Installer.__init__.<locals>.<listcomp>;  s      X X Xq X X Xr2   ,c                6    g | ]}|                                 S r1   r   r   s     r3   r   z&Installer.__init__.<locals>.<listcomp><  s     @@@1QWWYY@@@r2   )	did_install_somethingprinted_symlink_errorr   rM   preserved_file_countr(   r)   splitr*   )rW   r   rM   s      r3   rX   zInstaller.__init__1  s    %*"%*"$%! !Y XG4L4R4RSV4W4W X X XDKLZ@@(:(:3(?(?@@@@VZ			r2   argsrj   kwargsr8   r9   c                :    | j         st          j        |i | d S d S rR   )r(   r]   removerW   r   r   s      r3   r   zInstaller.remove>  s1    | 	'It&v&&&&&	' 	'r2   c                :    | j         st          j        |i | d S d S rR   )r(   r]   symlinkr   s      r3   r   zInstaller.symlinkB  s1    | 	(J''''''	( 	(r2   c                :    | j         st          j        |i | d S d S rR   )r(   r]   rO   r   s      r3   rO   zInstaller.makedirsF  s1    | 	)K((((((	) 	)r2   c                :    | j         st          j        |i | d S d S rR   )r(   r   copyr   s      r3   r   zInstaller.copyJ  s1    | 	)K((((((	) 	)r2   c                :    | j         st          j        |i | d S d S rR   )r(   r   copy2r   s      r3   r   zInstaller.copy2N  s1    | 	*L$)&)))))	* 	*r2   c                :    | j         st          j        |i | d S d S rR   )r(   r   copyfiler   s      r3   r   zInstaller.copyfileR  1    | 	-OT,V,,,,,	- 	-r2   c                :    | j         st          j        |i | d S d S rR   )r(   r   copystatr   s      r3   r   zInstaller.copystatV  r   r2   c                :    | j         st          j        |i | d S d S rR   )r(   r   	fix_rpathr   s      r3   r   zInstaller.fix_rpathZ  s2    | 	0//////	0 	0r2   c                0    | j         st          |i | d S d S rR   )r(   r   r   s      r3   r   zInstaller.set_chown^  /    | 	't&v&&&&&	' 	'r2   c                0    | j         st          |i | d S d S rR   )r(   r   r   s      r3   r   zInstaller.set_chmodb  r  r2   c                0    | j         st          |i | d S d S rR   )r(   r   r   s      r3   r   zInstaller.sanitize_permissionsf  s/    | 	2 $1&11111	2 	2r2   c                0    | j         st          |i | d S d S rR   )r(   r   r   s      r3   r   zInstaller.set_modej  s/    | 	&d%f%%%%%	& 	&r2   r'   r%   c                <    | j         s|st                       d S d S d S rR   )r(   r   )rW   r'   s     r3   r   z"Installer.restore_selinux_contextsn  s9    | 	'G 	'$&&&&&	' 	' 	' 	'r2   T.Tuple[int, str, str]c                H    | j         st          |i |\  }}}|j        ||fS dS )N)r   rD   rD   )r(   r
   r   )rW   r   r   por   s         r3   r
   zInstaller.Popen_safer  s8    | 	& $1&11GAq!<A%%yr2   Nexer   	extra_envT.Optional[T.Dict[str, str]]r   c                B    | j         r|j         rt          ||          S dS )Nr   )r(   r   )rW   r
  r  s      r3   r   zInstaller.run_exex  s*     	+ 	+3	***qr2   rn   iT.Union[TargetInstallData, InstallEmptyDir, InstallDataBase, InstallSymlinkData, ExecutableSerialisation]r    c                t    |j         r|j         | j        v s	d| j        v rdS | j        r|j        | j        vrdS dS )NrC   FT)
subprojectr)   r*   tag)rW   rn   s     r3   should_installzInstaller.should_install}  sQ     < 	Q\T-BBBcTMbFbFb59 	di//5tr2   msgc                @    | j         j        st          |           d S d S rR   )r   r$   r   )rW   r  s     r3   logzInstaller.log  s(    |! 	#JJJJJ	 	r2   	from_fileto_filec                   | j         j        sdS t          j                            |          r!t          j                            |          sdS t          j        |          j        }t          j        |          j        }||k    S )NF)r   r"   r]   rY   r   isfilerx   st_mtime)rW   r  r  	from_timeto_times        r3   should_preserve_existing_filez'Installer.should_preserve_existing_file  ss    |( 	57>>)$$ 	RW^^I-F-F 	5GI&&/	''""+G##r2   rO   T.Optional[T.Tuple[T.Any, str]]rt   T.Optional[bool]c                   t           j                            |          d         }t           j                            |          s1t           j                            |          st          d|          t           j                            |          rt           j                            |          st          d|d          |                     ||          r+t          | j	        d| d           | xj
        dz  c_
        dS |                     d	| d
|            |                     |           n9|                     d	| d
|            |r|\  }}|                    |d           t           j                            |          rit           j                            |          s|                     ||d           nG|d}t          t                      |                     |||           n|                     ||           t$                              |           t          | j	        |           dS )Nr   z.Tried to install something that isn't a file: Destination z! already exists and is not a filez# Preserving old file r}   r   FzInstalling  to Tr\   rv   )r]   rY   r   r  r   r	   ra   r  rm   rM   r   r  r   rO   r   r   symlink_warningr   r5   rb   )rW   r  r  rO   rt   outdirdirmakers          r3   do_copyfilezInstaller.do_copyfile  s:    w''*w~~i(( 	b	1J1J 	b !`S\!`!`aaa 7>>'"" 	97>>'** b$%`G%`%`%`aaa11)WEE dg'K'K'K'KLLL))Q.))uHH:9::&::;;;KK    HH:9::&::;;; 9#+ &!!&4!8887>>)$$ 
	+7>>),, P		)VU	CCCC"*&*O/***

9g
OOOOJJy'***w'''dgw'''tr2   targetlinkfull_dst_dirallow_missingc                d   |}t           j                            |          s!t           j                            ||          }n1t           j                            |          s|st          ||          }t           j                            |          s|st          d|           t           j                            |          rGt           j                            |          st          d|d          |                     |           | j	        s| 
                    d| d|            	 |                     ||t           j                            |                     n5# t          t          f$ r! | j	        st          d           d| _	        Y d	S w xY wt!          | j        |           dS )
Nz)Tried to install symlink to missing file r!  z$ already exists and is not a symlinkzInstalling symlink pointing to r"  )target_is_directoryzISymlink creation does not work on this platform. Skipping all symlinking.TF)r]   rY   r   r   ra   r   r	   r   r   r   r  r   isdirr   r   r   rm   rM   )rW   r'  r(  r'   r)  r*  
abs_targets          r3   
do_symlinkzInstaller.do_symlink  s   
w}}V$$ 	;lF;;JJ
++ 	;M 	;%gz::Jw~~j)) 	[- 	[ !YZ!Y!YZZZ7>>$ 	7>>$'' b$%`D%`%`%`aaaKK) 	KHHIvII4IIJJJ	LL27==;T;TLUUUU#W- 	 	 	- 2 1 2 2 2-1*55	 	dgt$$$ts   05E& &.FFdatar   src_dirdst_direxclude+T.Optional[T.Tuple[T.Set[str], T.Set[str]]]install_mode
'FileMode'dmrL   c                V   t           j                            |          st          d|           t           j                            |          st          d|           ||\  }}	d |D             }d |	D             }	nt	                      x}}	t          j        |          D ] \  }
}}t           j                            |
          sJ |dd         D ]_}t           j                            |
|          }t           j                            ||          }t           j                            ||          }t           j                            |          r|	                    |           ||	v r|
                    |           t           j                            |          rt           j                            |          r't          d| d           t          j        d	           |                    |           |                     ||           |                     ||j                   a|D ]i}t           j                            |
|          }t           j                            ||          }||v rIt           j                            ||          }t           j                            |          r't          d
| d           t          j        d	           t           j                            |          }t           j                            |          sH|                    |           |                     t           j                            |          |           |                     |||           |                     |||j                   kdS )a  
        Copies the contents of directory @src_dir into @dst_dir.

        For directory
            /foo/
              bar/
                excluded
                foobar
              file
        do_copydir(..., '/foo', '/dst/dir', {'bar/excluded'}) creates
            /dst/
              dir/
                bar/
                  foobar
                file

        Args:
            src_dir: str, absolute path to the source directory
            dst_dir: str, absolute path to the destination directory
            exclude: (set(str), set(str)), tuple of (exclude_files, exclude_dirs),
                     each element of the set is a path relative to src_dir.
        zsrc_dir must be absolute, got zdst_dir must be absolute, got Nc                L    h | ]!}t           j                            |          "S r1   r]   rY   r^   r   xs     r3   	<setcomp>z'Installer.do_copydir.<locals>.<setcomp>  s(    HHHQRW--a00HHHr2   c                L    h | ]!}t           j                            |          "S r1   r:  r;  s     r3   r=  z'Installer.do_copydir.<locals>.<setcomp>  s(    FFFABG,,Q//FFFr2   )startzTried to copy directory ( but a file of that name already exists.r   zTried to copy file z- but a directory of that name already exists.rv   )r]   rY   r   
ValueErrorrT   walkr   relpathr   rb   r   r-  ra   r   r   r   rO   r   r   install_umaskr`   r&  r   )rW   r0  r1  r2  r3  r5  r7  rt   exclude_filesexclude_dirsrootrS   r   rn   abs_srcfilepartabs_dstr   
parent_dirs                      r3   
do_copydirzInstaller.do_copydir  s]   2 w}}W%% 	IGgGGHHHw}}W%% 	IGgGGHHH*1'M<HH-HHHMFFFFFLL+.550ML!#!1!1 $	I $	ID$7==&&&&&!!!W G G',,tQ//7??7'?BB',,w997>>'** LLOOO|++KKNNN7==)) 7>>'**  fWfffgggHQKKKG$$$gw///))'43EFFFF I I',,tQ//7??7'?BB},,',,w997==))  ffffgggHQKKKW__W55
w}}Z00 HKK
+++MM"'//'":":JGGG  '? SSSg|T5GHHHHI+$	I $	Ir2   datafilenamec           	     	   t          |          }| j        j        }|t          j                            d          }|rDt          j                            |          s%t          j                            |j	        |          }||t          j        d<   |pd}t          ||j                  }|j        dk    r5t          |j        t                    sJ t          j        |j                   d| _        	 t#          | j        | j                  5 }|                     ||||           |                     ||||           |                     ||||           |                     ||||           |                     ||||           |                     ||||           |                     ||||           |                     |           |                     |||           | j        s|                     d           | j        j        s`| j        dk    rU|                     d                     | j        t          j        !                    | j        j"                                       d d d            d S # 1 swxY w Y   d S # tF          $ r4 tI                      sf|dk    s`t          j%        tL          j'        (                                          r0t          j%        tL          j)        (                                          s t          j                            d          p;tU          j+        d	          p'tU          j+        d
          ptU          j+        d          }tU          j+        d          }||dt          j        vr|}|7tY          d           t[          j.                    }|/                    tL          j0        tZ          j1                   d }	te          d          D ]u}
tY          d| ddd           |3                    d          r2tL          j0        4                                5                    d          }	ntY                        n|	dv r nv|	tm          d          |	dk    rMt          j7        ||tL          j8        tr          gtL          j:        dd          dt          j;                    dR    w xY w)NDESTDIRrD   r   FzNothing to install.r   z6Preserved {} unchanged files, see {} for the full listMESON_ROOT_CMDsudodoasrun0pkexec
PKEXEC_UIDz4Installation failed due to insufficient permissions.   zAttempt to use z$ to gain elevated privileges? [y/n] T)endr      r}   >   nyzAnswer not one of [y/n]rZ  r   r;   r@   )<rs   r   r'   r]   environgetrY   r   r   	build_dirr   prefixrD  r   r   r   r   rL   rM   rO   install_subdirsinstall_targetsinstall_headersinstall_maninstall_emptydirinstall_datainstall_symlinksr   run_install_scriptr  r$   r   formatr^   namer   r   isattyr   stdoutfilenostderrr   r   r   	selectorsDefaultSelectorregisterstdin
EVENT_READrangeselectreadlinerstripr	   execlp
executable	main_fileargvgetcwd)rW   rM  rn   r'   r   r7  rootcmdrT  sansattempts              r3   
do_installzInstaller.do_install  s   l++,&?jnnY//G 	927==11 	9gll1;88G $+BJy!-R!'1844
?j((aos33333HQ_%%%%*"3	$'4=11 aR$$QGZ@@@$$QGZ@@@$$QGZ@@@  B<<<%%aWjAAA!!!R*===%%aWjAAA--g666''7J???1 4HH2333|) ad.G!.K.KHHU$fT%>@P@PQUQXQ]@^@^__a a aa a a a a a a a a a a a a a a a a a  #	 #	 #	|| w"}}BIcj>O>O>Q>Q4R4R}Z\ZcdgdndududwdwZxZx}
/00 (<''(<''( <''	  \(++F6#5,bj:X:X "LMMM-//

39i&:;;;$Qxx H HGYGYYY_aimnnnnxx|| !i002299$??j(( ) ,-FGGG#::Igw	 ACHUVUWUWL A"A$&IKKA1?A A A AG#	s2   5J EI9,J 9I==J  I=J H?S	strip_binr4   rq   outnamec                p   |                      d|d           t                      r |                     |dd|gz             \  }}}n|                     ||gz             \  }}}|dk    rKt          d           t          d| d           t          d	| d           t	          j        d
           d S d S )NzStripping target .z-Sz-xr   zCould not strip file.
zStdout:
r}   zStderr:
r   )r  r   r
   r   r   r   )rW   r  rq   r  r   stdostdes          r3   do_stripzInstaller.do_stripg  s    /U///00088 	L &*__Y$gAV5V%W%W"Jdd%)__Y'5J%K%K"Jd??+,,,&d&&&'''&d&&&'''HQKKKKK	 ?r2   r   c           
     N   |j         D ]}|                     |          sd| _        t          |||j                  }|                     d|j         d|            |                    |d           |                     ||j        ||j	        |j
        ||j                   d S )NTzInstalling subdir r"  r\   rv   )r_  r  r   r   install_pathr  rY   rO   rL  r3  r5  rt   )rW   rn   r7  r'   r   r   r)  s          r3   r_  zInstaller.install_subdirsv  s    " 	? 	?A&&q)) )-D&+GZPPLHHD!&DDlDDEEEKKtK444OOAqv|QYPR,-,=  ? ? ? ?	? 	?r2   c                N   |j         D ]}|                     |          s|j        }t          |||j                  }t
          j                            |          }|                     ||||f|j                  rd| _	        | 
                    ||j        |j                   d S N)rO   rt   T)r0  r  rY   r   r  r]   r`   r&  rt   r   r   r5  rD  )	rW   rn   r7  r'   r   r   fullfilenameoutfilenamer$  s	            r3   rd  zInstaller.install_data  s     	H 	HA&&q)) 6L*7JOOKW__[11FkRLbcbstt 2-1*MM+q~qGGGG	H 	Hr2   c                    |j         D ]}|                     |          st          |||j                  }t          |||j                  }|                    |d           |                     |j        ||||j                  rd| _	        d S )NTr\   )
symlinksr  r   r  rh  rO   r/  r'  r*  r   )rW   rn   r7  r'   r   r|  r)  full_link_names           r3   re  zInstaller.install_symlinks  s     	2 	2A&&q)) +GZPPL-gz16JJNKKtK444qx,PQP_`` 2-1*	2 	2r2   c                B   |j         D ]}|                     |          s|j        }t          |||j                  }t
          j                            |          }|                     ||||f          rd| _        | 	                    ||j
        |j                   d S )NrO   T)manr  rY   r   r  r]   r`   r&  r   r   r5  rD  )	rW   rn   r7  r'   r   r   full_source_filenamer  r$  s	            r3   rb  zInstaller.install_man  s     	H 	HA&&q)) #$6 *7JOOKW__[11F 4kRQWLYY 2-1*MM+q~qGGGG	H 	Hr2   c                   |j         D ]}|                     |          sd| _        t          |||j                  }|                     d|            t          j                            |          r't          d| d           t          j
        d           |                    |d           |                     ||j        |j                   d S )NTzInstalling new directory zTried to create directory r@  r   r\   )emptydirr  r   r   rY   r  r]   r  r   r   r   rO   r   r5  rD  )rW   rn   r7  r'   r   r   r)  s          r3   rc  zInstaller.install_emptydir  s     
	I 
	IA&&q)) )-D&+GZHHLHH???@@@w~~l++ i<iiijjjKKtK444MM,HHHH
	I 
	Ir2   c                   |j         D ]}|                     |          s|j        }t          j                            |          }t          |||j                  }t          j                            ||          }	|                     ||	||f|j	                  rd| _
        |                     |	|j        |j                   d S r  )headersr  rY   r]   basenamer   r  r   r&  rt   r   r   r5  rD  )
rW   rn   r7  r'   r   tr  rq   r$  r  s
             r3   ra  zInstaller.install_headers  s     
	H 
	HA&&q)) 6LG$$\22E%gz1>JJF',,vu55KkRL010A   C C 2-1*MM+q~qGGGG
	H 
	Hr2   c                   j         j        d                    d j        D                       d}| j        j        rd|d<   | j        rd|d<   j        D ]}|                     |          s|j	        |j	        }n	dj
        i}|                                }|                    fd|                                D                        |                    fd	|                                D                        d                    |j                  }|j        rr|                     d
|           d| _        |                     d|           	 |                     ||          }	n7# t&          $ r* t)          d| d           t+          j        d           Y nw xY w|	dk    r*t)          d| d|	 d           t+          j        |	           d S )N c                6    g | ]}t          j        |          S r1   )shlexquoter;  s     r3   r   z0Installer.run_install_script.<locals>.<listcomp>  s     +V+V+VqEKNN+V+V+Vr2   )MESON_SOURCE_ROOTMESON_BUILD_ROOTMESONINTROSPECT1MESON_INSTALL_QUIETMESON_INSTALL_DRY_RUNr^  c                    i | ]@\  }}d |                                 z   t          j                            j        |          AS )MESON_INSTALL_)upperr]   rY   r   r^  )r   kvrn   s      r3   
<dictcomp>z0Installer.run_install_script.<locals>.<dictcomp>  sC    lllW[WXZ[-aggii7ahPQ9R9Rlllr2   c                d    i | ],\  }}d |                                 z   t          |          -S )MESON_INSTALL_DESTDIR_)r  r   )r   r  r  r'   r   s      r3   r  z0Installer.run_install_script.<locals>.<dictcomp>  sR      D  D  Dnrnoqr5aggii?AQRY[eghAiAi  D  D  Dr2   z6Skipping custom install script because DESTDIR is set TzRunning custom install script zFAILED: install script 'z' could not be run.   r   z' failed with exit code r  )
source_dirr]  r   mesonintrospectr   r$   r(   install_scriptsr  installdir_mapr^  r   updateitemscmd_argsskip_if_destdirr  r   r   r   r   r   r   )
rW   rn   r'   r   envr   mapplocalenvrh  rcs
    ```      r3   rf  zInstaller.run_install_script  sk   $%L#$;"%((+V+VADU+V+V+V"W"W  < 	-),C%&< 	/+.C'(" 	 	A&&q)) +' !(+xxzzHOOllll_c_i_i_k_klllmmmOO  D  D  D  D  Dvz  wA  wA  wC  wC  D  D  D  E  E  E88AJ''D  W ZRVZZ[[[)-D&HH>d>>???\\!X..   L$LLLMMM QwwV$VVQSVVVWWW5	 	s   "E991F-,F-c           	     v	   |j         D ]}t                      rat          j                            |j                  s=d|j        v r4t          j        dd|j                            dd                    |_        | 	                    |          st          j                            |j                  s>|j
        r|                     d|j        d           t          d|j        d          d}t          |j                  }t          |||j                  }t          j                            |t          j                            |                    }	t          j                            |j        |j        t          j                            |                    }
|j        p|j        o| j        j        }|j        }|j        }|j        }t          j                            |          st          d|d          t          j                            |          r6|                     ||	||f          }|r|j        x|                    d	          rG|                     d
                    t          j                            |                               |                     |j        ||	           |                    d          rt          j                            |          d         dz   }t          j                            |          r>t          j                            |	          d         dz   }|                     ||          }nt          j                             |          rt          j                            |j!        |"                    d                    }t          j                            |t          j                            |                    }	|#                    |d           | $                    |||	d ||           ntK          d|          |rd| _&        	 | '                    |	|j(        ||
|d           n># tR          $ r1}tU          |j+        tX                    r|j+        dk    rn Y d }~nd }~ww xY w| -                    |	||j.                   d S )Nr   z$[.][a]([.]?([0-9]+))*([.]?([a-z]+))*r   zFile z not found, skippingz could not be foundFr  z.jarzNot stripping jar target: {}z.jsr   z.wasm/Tr\   zUnknown file type for )verbose)/targetsr   r]   rY   ra   rq   resubreplacer  optionalr  r	   r   r   r$  r   r  r^  r+   	can_stripr   install_rpathinstall_name_mappingsr5  r  r&  r  r   rg  r  r   r-  r]  ru  rO   rL  RuntimeErrorr   r   rpath_dirs_to_remove
SystemExitr   coder   r   rD  )rW   rn   r7  r'   r   r  file_copiedrq   r$  r  
final_pathshould_stripr  r  r5  wasm_sourcewasm_outputr   s                     r3   r`  zInstaller.install_targets  s]    <	F <	FA
 xx qw~~ag.. q5AG3C3C f%KTSTSZSbSbchjnSoSoppAG&&q)) 7>>!'** Q: QHHDQWDDDEEE()O)O)O)OPPPK'00E%gz18DDFgll627+;+;E+B+BCCGah"':J:J5:Q:QRRJ7Jq{'It|7ILOM$%$;!>L7>>%(( G$%IU%I%I%IJJJ&& G"..ugV.UU ?AK$;~~f-- !!?!F!FrwGWGWX]G^G^!_!_``` MM!+ug>>>>>%(( Q #%'"2"25"9"9!"<w"FKw~~k22 Q&(g&6&6w&?&?&BW&L&*&6&6{K&P&Pu%% GQ[%,,s2C2CDD',,vrw/?/?/F/FGGFT2225'4rJJJJ"#EE#E#EFFF F-1*NN7A,BMS]#8% # I I I I!   !!&#.. 16Q;;  g|Q_EEEy<	F <	Fs   < Q
R''RR)r   r   rM   rN   )r   rj   r   rj   r8   r9   )r'   r%   r8   r9   )r   rj   r   rj   r8   r  rR   )r
  r   r  r  r8   r   )rn   r  r8   r    )r  r%   r8   r9   )r  r%   r  r%   r8   r    NN)
r  r%   r  r%   rO   r  rt   r  r8   r    )r'  r%   r(  r%   r'   r%   r)  r%   r*  r    r8   r    )r0  r   r1  r%   r2  r%   r3  r4  r5  r6  r7  rL   rt   r  r8   r9   )rM  r%   r8   r9   )r  r4   rq   r%   r  r%   r8   r9   )
rn   r   r7  rL   r'   r%   r   r%   r8   r9   )rn   r   r'   r%   r   r%   r8   r9   )#r,   r-   r.   rX   r   r   rO   r   r   r   r   r   r   r   r   r   r   r
   r   r  r  r  r&  r/  rL  r  r  r_  rd  re  rb  rc  ra  rf  r`  r1   r2   r3   r   r   /  s       [ [ [ [' ' ' '( ( ( () ) ) )) ) ) )* * * *- - - -- - - -0 0 0 0' ' ' '' ' ' '2 2 2 2& & & &' ' ' '       
      $ $ $ $ AE8<& & & & &P   6 `dGI GI GI GI GIRG G G GR   	? 	? 	? 	?	H 	H 	H 	H2 2 2 2	H 	H 	H 	HI I I IH H H H$ $ $ $L=F =F =F =F =F =Fr2   r   r&   backendc                .    |dk    rdS |dk    rt          d           dS t          j                    }|st          d           dS d fd	} |            \  }}t          j        |d
 gz   ||          j        }|dk    rt          d             dS dS )NnoneTninjazKOnly ninja backend is supported to rebuild the project before installation.z%Can't find ninja, can't rebuild test.Fr8   DT.Tuple[T.Optional[EnvironOrDict], T.Optional[T.Callable[[], None]]]c                 |   t                      st          j                    dk    rdd l} t          j                                        }t          j                            d          {|                    d          |                    dd          |                    dd          	 |                     t                              j
        }n# t          $ r Y dS w xY wt          j                            d          S|                    d          	 |                               }n# t          $ r Y dS w xY w|j        |j        |j
        }ndS t          j        t          j                            d                    j        t                    k    rdS |d<   ||d	<   dfd}||fS dS )Nr   	SUDO_USERSUDO_UIDSUDO_GIDr  	DOAS_USERzbuild.ninjaUSERHOMEr8   r9   c                     t          dd            !t          j        t                                #t          j        t                               d S d S )NzDropping privileges to z before running ninja...)r   r]   setgidr   setuid)orig_gidorig_uid	orig_users   r3   wrappedz5rebuild_all.<locals>.drop_privileges.<locals>.wrappedO  sc    U	UUUVVV'Ic(mm,,,'Ic(mm,,,,, ('r2   r8   r9   )r   r]   geteuidpwdr[  r   r\  popgetpwuidr   pw_dirKeyErrorgetpwnampw_uidpw_gidrx   rY   r   st_uid)	r  r  homedirpwdatar  r  r  r  r&   s	        @@@r3   drop_privilegesz$rebuild_all.<locals>.drop_privileges-  s   || *	
 1 1JJJ*//##Cz~~k**6GGK00	77:q1177:q11&!ll3x==99@GG & & &%::& ,,8GGK00	& \\)44FF & & &%::& "=!= -!zwrw||B6677>#h--OO!z#CK!CK- - - - - - - - <:s$   /'C 
C%$C%D3 3
E Er;   )r  
preexec_fnr   zCould not rebuild )r8   r  )r   r   detect_ninjar   runr   )r&   r  r  r  r  r  rets   `      r3   rebuild_allr     s    &t'[\\\t$&&E 5666u+ + + + + +Z &o''OC
.$+
L
L
L
WC
axx'2''(((u4r2   optsr   c                   d}t           j                            |          }t           j                            |d          }t           j                            t           j                            | j        |                    st          j        d           | j        st          j
        | j                  }t          j        d|j        j        j                            t#          d                              }t%          |           t          j        d|j        j        j                            t#          d                              }t'          | j        |          st          j        d           t          j        | j                   t+          t           j                            |d	          d
d          5 }t-          | |          }t/          |d           t/          |d           | j        rVdd l}	t           j                            |d          }
|	                    dt7                      t9                      |
           n|                    |           d d d            n# 1 swxY w Y   dS )Nzmeson-private/install.datz../meson-logszAInstall data not found. Run this command in build directory root.r    vsenvr%   r  zinstall-log.txtwzutf-8)encodingz"# List of files installed by Mesonz5# Does not contain files installed by custom scripts.r   zprofile-installer.logz"installer.do_install(datafilename))filename)r]   rY   r`   r   ra   r&   r   r   r!   r   loadTcastr   coredataoptstoreget_value_forr   r   r  chdiropenr   rm   r#   cProfilerunctxglobalslocalsr  )r  rM  private_dirlog_dirb
need_vsenvr  rM   	installerr#   rq   s              r3   r  r  c  s>   .L'//,//Kgll;88G7>>"',,tw==>> VTUUU? JtwVFAM$:$C$Q$QR[\cRdRd$e$eff
J& 6 ? M MiXaNbNb c cdd47G,, 	HRLLLHTW	bgll7$566g	N	N	N 	/RTdB''	b>???bQRRR< 	/&&&&GLL.EFFENN?FHH_dNeeee  ...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 1s   B#I00I47I4)r6   r7   r8   r9   )rq   r%   r8   r   rp   )rY   r%   rt   r    r8   r    )rM   rN   r{   r%   r8   r9   )NNNT)rY   r%   r   r   r   r   r   r   rt   r    r8   r9   )NT)
rY   r%   r   r   r   r   rt   r    r8   r9   )rY   r%   r   r   r8   r9   )rY   r%   r   r   r   r   r8   r9   r  )r'   r%   r   r%   rY   r%   r8   r%   )rq   r%   r8   r%   )r&   r%   r  r%   r8   r    )r  r   r8   r   )E
__future__r   r   rH   r   r]   rm  r  r   r   r   typingr  r  rD   r   r   backend.backendsr   mesonlibr	   r
   r   r   r   r   r   r   r   r   scriptsr   r   scripts.meson_exer   __main__r   rx  ImportErrorTYPE_CHECKINGr   r   r   r   r   r   r   r   AttributeErrortyping_extensionsr   r#  r5   r0   rJ   rL   rs   rz   rm   r   r   r   r   r   r   r   r   r  r  r1   r2   r3   <module>r     sO   # " " " " " "         				           



     				                 ) ) ) ) ) )A A A A A A A A A A A A A A A A A A A A       + + + + + + + + & & & & & &.......    III
 ?             KJJJJJJJJJ/####### / / /......../    x     " ! ! ! !p p p p,#& #& #& #& #& #& #& #&L: : : :P P P P P
    :>/3FJ,% ,% ,% ,% ,%^ ?C&*0 0 0 0 0_ _ _ _2 2 2 2<0 0 0 06      4oF oF oF oF oF oF oF oFb@ @ @ @F     s$   -A4 4A>=A>B& &B43B4