
    <hN                       % S SK Jr  S SKJr  S SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrSSKJrJr  SSKJr  SSKJrJrJrJrJrJrJrJr  SSKJr  SS	KJrJ r   SS
K!J"r"   S SK#J$r%  \RN                  (       a(  SSKJ(r(J)r)J*r*J+r+  SSKJ,r,J-r-J.r.   S SKJ/r/   " S S\/5      r2Sr3/ r4S\5S'   S%S jr6 " S S5      r7S&S jr8S'S(S jjr9S)S jr:   S*       S+S jjr;  S,   S-S jjr<S.S jr=S/S jr>S0S jr?S1S jr@S2S  jrA " S! S"5      rBS3S# jrCS4S$ jrDg! \& a    Sr% Nf = f! \0 a	    S SK1J/r/   Nf = f)5    )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                  ~    \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   S\S'   S\S'   S\S'   Srg)ArgumentType,   z7Typing information for the object returned by argparse.bool
no_rebuildonly_changedprofilequietstrwddestdirdry_runskip_subprojectstagsstrip N)__name__
__module____qualname____firstlineno____doc____annotations____static_attributes__r-       t/mnt/mint/home/seanl/mnt/public/Repos/ladybird/Build/vcpkg/downloads/tools/meson-1.9.0-d1fcc2/mesonbuild/minstall.pyr   r   ,   s:    E	r5   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_updatesc                   U R                  SS[        SS9  U R                  SSS[        R                  S9  U R                  S	S
SSS9  U R                  SS
SSS9  U R                  SSS
SSS9  U R                  SS SS9  U R                  SSSSS9  U R                  SSSSSS9  U R                  SS S S9  U R                  S!SS"S9  g )#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))r@   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constr@   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)parsers    r6   add_argumentsrJ   D   s*   
4B  D
(I%..  0
l@  B
(%X  Z
i|J  L
TT  V
k,X  Z
,CsBZ  \
$`  b
	,n  pr5   c                  @    \ rS rSrSS jrS	S
S jjrSS jrSS jrSrg)DirMakerZ   c                H    Xl         / U l        [        5       U l        X l        g N)lfdirssetall_dirsmakedirs_impl)selfrP   makedirss      r6   __init__DirMaker.__init__[   s    !#	$'E%r5   c                <   [         R                  R                  U5      nU R                  R	                  U5        / nU[         R                  R                  U5      :w  a  X0R                  ;   a  Oy[         R                  R                  U5      (       d  UR                  U5        [         R                  R                  U5      nU[         R                  R                  U5      :w  a  M  U R                  XS9  UR                  5         U =R                  U-  sl        g )Nexist_ok)ospathnormpathrS   adddirnamerQ   existsappendrT   reverse)rU   r]   r[   r`   rQ   s        r6   rV   DirMaker.makedirsa   s    ''""4('"11))# 77>>'**G$ggoog.G 11 	43 			T	r5   c                    U $ rO   r-   )rU   s    r6   	__enter__DirMaker.__enter__w   s    r5   c                    U R                   R                  5         U R                    H  n[        U R                  U5        M     g rO   )rQ   rc   append_to_logrP   )rU   exception_typevalue	tracebackds        r6   __exit__DirMaker.__exit__z   s.    		A$''1% r5   )rS   rQ   rP   rT   N)rP   T.TextIOrV   zT.Callable[..., None]F)r]   r&   r[   r!   returnNone)rr   z
'DirMaker')rj   zT.Type[Exception]rk   T.Anyrl   rt   rr   rs   )	r.   r/   r0   r1   rW   rV   rf   rn   r4   r-   r5   r6   rL   rL   Z   s    &,&r5   rL   c                $    [        U S[        5      $ )Nr   )r   r   )fnames    r6   load_install_datarw      s    um[99r5   c                V    [        [        R                  " XS9R                  S-  5      $ )zCChecks whether any of the "x" bits are set in the source file mode.follow_symlinksI   )r!   r\   statst_mode)r]   rz   s     r6   is_executabler~      s!    >FFNOOr5   c                    U R                  U5        UR                  S5      (       d  U R                  S5        U R                  5         g )N
)writeendswithflush)rP   lines     r6   ri   ri      s0    HHTN==
HHJr5   c                >  ^ Uc
  Uc   S5       e[         R                  S:  a  [        R                  " XX#US9  g [        R                  mUUS.         SU4S jjjn U[        l        [        R                  " XU5        T[        l        g ! T[        l        f = f)Nz$ensure that calls to chown are valid)      dir_fdrz   c                  > T" XX#US9  g)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   Nr-   )r]   uidgidr   rz   real_os_chowns        r6   chownset_chown.<locals>.chown   s     $SYr5   )r]   zBT.Union[int, str, 'os.PathLike[str]', bytes, 'os.PathLike[bytes]']r   intr   r   r   T.Optional[int]rz   r!   rr   rs   )sysversion_infoshutilr   r\   )r]   usergroupr   rz   r   r   s         @r6   	set_chownr      s    * u0X2XX0
7" 	TW DJ*9	Z	Z!$	Z1@	Z#'	Z>B	Z 	Z	%BHLLU+$BH}BHs   !"B Bc                     [         R                  " XX#S9  g ! [        [        [        4 a>    [         R
                  R                  U 5      (       d  [         R                  " XUS9   g  g f = f)Nr   )r   )r\   chmodNotImplementedErrorOSErrorSystemErrorr]   islink)r]   moder   rz   s       r6   	set_chmodr      sQ    0
FL+6 0ww~~d##HHT/ $0s    AA+*A+c           	         US:X  a  g [        U[        5      (       d   S5       e[        U SS9(       a  SOSnX!) -  n [        XSS9  g ! [         a*  n[        U < SU< SUR                   S	35         S nAg S nAff = f)
Npreservez.umask should only be "preserver" or an integerFry   i  i  : Unable to set permissions : , ignoring...)
isinstancer   r~   r   PermissionErrorprintstrerror)r]   umask	new_permses       r6   sanitize_permissionsr      s     
eS!!S#SS!&tUCII_$59 _4YMAJJ<}]^^_s   
A 
A< A77A<c                   Ub8  [        S UR                  UR                  UR                  4 5       5      (       a  [	        X5        g [        5       (       d:  UR                  c  UR                  b    [        XR                  UR                  SS9  UR                  b   [        XR                  SS9  g [	        X5        g ! [         aB  n[        U < SUR                  < SUR                  < SUR                   S35         S nANvS nAf[         a.    [        U < SUR                  < S	UR                  < S
35         N[         aU  nUR                  [        R                  :X  a1  [        U < SUR                  < S	UR                  < S
35         S nAGNe S nAff = f! [         a4  n[        U < SUR                  < SUR                   S35         S nAg S nAff = f)Nc              3  (   #    U  H  oS L v   M
     g 7frO   r-   ).0ms     r6   	<genexpr>set_mode.<locals>.<genexpr>   s     U.T9.Ts   Fry   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)r]   r   default_umaskr   s       r6   set_moder      s   |sUt||TZZ.TUUUT1<<TZZ3tzz7M
	dJJ

EJ ||	fdJJ> 	T1%  	wTH24::.DJJ>Y[\]\f\f[ggtuvv 	fTH0jVcde 	ww%,,& <TZZN*UYU_U_Tbbopqq		  	fTH88H1::,Vcdee	fsI   2C  F"  
F
8D8F	F
A	FFF"
G ,*GG c            	     |    [         R                  " S/5        [        R                  " S5      (       d  g[        (       d  g[        / SQSR                  S [         5       5      S-   5      u  pnU R                  S:w  a  [        SS	US
USS9  gg! [        [        [        [
        [         R                  4 a     gf = f)zp
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  $   #    U  H  ov   M     g 7frO   r-   )r   fs     r6   r   +restore_selinux_contexts.<locals>.<genexpr>  s     MiYhTUaYhs   r   z7Failed to restore SELinux context of installed files...zStandard output:zStandard error:r   )sep)
subprocess
check_callFileNotFoundErrorNotADirectoryErrorr   r   CalledProcessErrorr   whichr8   r
   join
returncoder   )procouterrs      r6   restore_selinux_contextsr      s    /01 <<%%? ADIIMiYhMiDilpDprNDs!G #$	0  17OZMjMjk  	s   B )B;:B;c                    [         R                  R                  U5      (       a  [        X5      nU$ [         R                  R	                  X5      nU$ rO   )r\   r]   isabsr   r   )r(   
fullprefixr]   outputs       r6   get_destdir_pathr     s?    	ww}}Tg, M j/Mr5   c                "   U R                  S5      (       d  U R                  S5      (       a  [        R                  " U 5      R                  S:X  av  [        R                  R                  U 5      u  p[        US-   U-   5      n[        U5      S:  a!  [        S5        [        R                  " S5        [        U5      S:X  a  US   $ U $ U R                  S5      (       d  U R                  S5      (       a  [        R                  " U 5      R                  S:X  av  [        R                  R                  U 5      u  p[        US-   S	-   5      n[        U5      S:  a!  [        S
5        [        R                  " S5        [        U5      S:X  a  US   $ U $ )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\   r|   st_sizer]   splitextr   lenr   r   exit)rv   basesuffixfiless       r6   check_for_stampfiler     s0   
 ~~ev 6 6775>!!Q&WW--e4NTv-.E5zA~PQ5zQQx L 
		!7!7775>!!Q&WW--e4NTw./E5zA~OP5zQQxLr5   c                     \ rS rS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%S 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&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.S jjrS/S jr S(         S0S jjrS1S jrS2S jrS3S jrS3S jrS3S jrS3S jrS3S jr S3S  jr!S4S! jr"S3S" jr#S#r$g)5	Installeri/  c                   SU l         SU l        Xl        X l        SU l        UR
                  U l        UR                  R                  S5       Vs/ s H  o3R                  5       PM     snU l        UR                  (       a?  UR                  R                  S5       Vs/ s H  o3R                  5       PM     snU l	        g S U l	        g s  snf s  snf )NFr   ,)
did_install_somethingprinted_symlink_erroroptionsrP   preserved_file_countr)   r*   splitr,   r+   )rU   r   rP   is       r6   rW   Installer.__init__1  s    %*"%*"$%! 5<4L4L4R4RSV4W X4Wq4W XDKLL(:(:3(?@(?1WWY(?@	VZ	 !Y@s   C	Cc                T    U R                   (       d  [        R                  " U0 UD6  g g rO   )r)   r\   removerU   argskwargss      r6   r   Installer.remove>  s    ||IIt&v& r5   c                T    U R                   (       d  [        R                  " U0 UD6  g g rO   )r)   r\   symlinkr   s      r6   r   Installer.symlinkB  s    ||JJ'' r5   c                T    U R                   (       d  [        R                  " U0 UD6  g g rO   )r)   r\   rV   r   s      r6   rV   Installer.makedirsF  s    ||KK(( r5   c                T    U R                   (       d  [        R                  " U0 UD6  g g rO   )r)   r   copyr   s      r6   r   Installer.copyJ  s    ||KK(( r5   c                T    U R                   (       d  [        R                  " U0 UD6  g g rO   )r)   r   copy2r   s      r6   r   Installer.copy2N  s    ||LL$)&) r5   c                T    U R                   (       d  [        R                  " U0 UD6  g g rO   )r)   r   copyfiler   s      r6   r   Installer.copyfileR      ||OOT,V, r5   c                T    U R                   (       d  [        R                  " U0 UD6  g g rO   )r)   r   copystatr   s      r6   r  Installer.copystatV  r   r5   c                T    U R                   (       d  [        R                  " U0 UD6  g g rO   )r)   r   	fix_rpathr   s      r6   r  Installer.fix_rpathZ  s!    ||// r5   c                >    U R                   (       d  [        U0 UD6  g g rO   )r)   r   r   s      r6   r   Installer.set_chown^      ||t&v& r5   c                >    U R                   (       d  [        U0 UD6  g g rO   )r)   r   r   s      r6   r   Installer.set_chmodb  r  r5   c                >    U R                   (       d  [        U0 UD6  g g rO   )r)   r   r   s      r6   r   Installer.sanitize_permissionsf  s    || $1&1 r5   c                >    U R                   (       d  [        U0 UD6  g g rO   )r)   r   r   s      r6   r   Installer.set_modej  s    ||d%f% r5   c                L    U R                   (       d  U(       d  [        5         g g g rO   )r)   r   )rU   r(   s     r6   r   "Installer.restore_selinux_contextsn  s    ||G$& %,|r5   c                ^    U R                   (       d  [        U0 UD6u  p4nUR                  XE4$ g)N)r   rC   rC   )r)   r
   r   )rU   r   r   por   s         r6   r
   Installer.Popen_safer  s.    || $1&1GA!<<%%r5   Nc                ^    U R                   (       a  UR                   (       a  [        X5      $ g)Nr   )r)   r   )rU   exe	extra_envs      r6   r   Installer.run_exex  s    3**r5   c                    UR                   (       a+  UR                   U R                  ;   d  SU R                  ;   a  gU R                  (       a  UR                  U R                  ;  a  gg)NrB   FT)
subprojectr*   r+   tag)rU   rm   s     r6   should_installInstaller.should_install}  sH     <<Q\\T-B-BBcTMbMbFb99dii/r5   c                R    U R                   R                  (       d  [        U5        g g rO   )r   r%   r   )rU   msgs     r6   logInstaller.log  s    ||!!#J "r5   c                T   U R                   R                  (       d  g[        R                  R	                  U5      (       a%  [        R                  R                  U5      (       d  g[        R                  " U5      R                  n[        R                  " U5      R                  nX4:*  $ )NF)r   r#   r\   r]   r   isfiler|   st_mtime)rU   	from_fileto_file	from_timeto_times        r6   should_preserve_existing_file'Installer.should_preserve_existing_file  sk    ||((77>>)$$RWW^^I-F-FGGI&//	'''"++##r5   c                \   [         R                  R                  U5      S   n[         R                  R                  U5      (       d3  [         R                  R	                  U5      (       d  [        SU< 35      e[         R                  R                  U5      (       a  [         R                  R                  U5      (       d  [        SU< S35      eU R                  X5      (       a0  [        U R                  SU S35        U =R                  S-  sl
        gU R                  S	U S
U 35        U R                  U5        O2U R                  S	U S
U 35        U(       a  Uu  peUR                  USS9  [         R                  R	                  U5      (       aZ  [         R                  R                  U5      (       d  U R                  XSS9  O6Uc  Sn[        [         5        U R#                  XUS9  OU R#                  X5        [$        R'                  U5        [        U R                  U5        g)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 TrZ   ry   )r\   r]   r   r#  r   r	   ra   r)  ri   rP   r   r   r   rV   r   r   symlink_warningr   r8   rb   )rU   r%  r&  rV   rz   outdirdirmakers          r6   do_copyfileInstaller.do_copyfile  s    w'*ww~~i((	1J1J #RS\R_!`aa 77>>'""77>>'**$|G;>_%`aa11)EEdgg)?y'KL))Q.)HH{9+T&:;KK HH{9+T&:;#+ !!&4!877>>)$$77>>),,		)U	C"*&*O/*

9
OJJy*w'dggw'r5   c                
   Un[         R                  R                  U5      (       d   [         R                  R                  XA5      nO/[         R                  R	                  U5      (       d  [        X55      n[         R                  R                  U5      (       aE  [         R                  R                  U5      (       d  [        SU< S35      eU R                  U5        U R                  (       d  U R                  SU SU 35         U R                  X[         R                  R                  U5      S9  [#        U R$                  U5        g! [        [        4 a&    U R                  (       d  [!        S5        SU l
         gf = f)	Nr,  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\   r]   r   r   ra   r   lexistsr   r	   r   r   r   r   isdirr   r   r   ri   rP   )rU   targetlinkr(   full_dst_dir
abs_targets         r6   
do_symlinkInstaller.do_symlink  s   
ww}}V$$l;J
++%g:J77??4  77>>$''$|D8;_%`aaKK))HH6vhd4&IJ	LL277==;TLU 	dggt$ $W- 	-- 1 2-1*	s   -E 3FFc                   [         R                  R                  U5      (       d  [        SU 35      e[         R                  R                  U5      (       d  [        SU 35      eUbc  Uu  pU V
s1 s H"  n
[         R                  R	                  U
5      iM$     nn
U	 V
s1 s H"  n
[         R                  R	                  U
5      iM$     n	n
O[        5       =p[         R                  " U5       GH  u  pn[         R                  R                  U5      (       d   eUSS  GH^  n[         R                  R                  X5      n[         R                  R                  XS9n[         R                  R                  UU5      n[         R                  R                  U5      (       a  UR                  U5        M  UU	;   a  UR                  U5        M  [         R                  R                  U5      (       a  M  [         R                  R                  U5      (       a%  [        SU S35        [        R                   " S5        UR#                  U5        U R%                  UU5        U R'                  UUR(                  5        GMa     U GHb  n[         R                  R                  UU5      n[         R                  R                  XS9nUU;   a  MI  [         R                  R                  UU5      n[         R                  R                  U5      (       a%  [        SU S	35        [        R                   " S5        [         R                  R+                  U5      n[         R                  R                  U5      (       d@  UR#                  U5        U R%                  [         R                  R+                  U5      U5        U R-                  UUUS
9  U R/                  UXQR(                  5        GMe     GM     gs  sn
f s  sn
f )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 N)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.ry   )r\   r]   r   
ValueErrorr^   rR   walkr   relpathr   rb   r   r6  ra   r   r   r   rV   r  r   install_umaskr`   r1  r   )rU   datasrc_dirdst_direxcludeinstall_modedmrz   exclude_filesexclude_dirsxrootrQ   r   rm   abs_srcfilepartabs_dstr   
parent_dirs                       r6   
do_copydirInstaller.do_copydir  s   2 ww}}W%%=gYGHHww}}W%%=gYGHH*1'M:GH-QRWW--a0-MH9EFABGG,,Q/LFL+.50M!#!1D77==&&&&!W'',,t/77??7?B'',,w977>>'**LLO|+KKN77==))77>>'**4WI=efgHHQKG$gw/))'43E3EF% & '',,tQ/77??7?B},'',,w977==))/y8efgHHQKWW__W5
ww}}Z00KK
+MM"''//'":JG  '? Sg|5G5GH + "2	 IFs   0)O0)O5c           	     >
   [        U5      nU R                  R                  nUc  [        R                  R                  S5      nU(       aN  [        R                  R                  U5      (       d*  [        R                  R                  UR                  U5      nUb  U[        R                  S'   U=(       d    Sn[        X2R                  5      nUR                  S:w  aA  [        UR                  [        5      (       d   e[        R                  " UR                  5        SU l         [#        U R$                  U R&                  5       nU R)                  X%X45        U R+                  X%X45        U R-                  X%X45        U R/                  X%X45        U R1                  X%X45        U R3                  X%X45        U R5                  X%X45        U R7                  U5        U R9                  X#U5        U R                   (       d  U R;                  S5        U R                  R<                  (       dl  U R>                  S:  a\  U R;                  SRA                  U R>                  [        R                  RC                  U R$                  RD                  5      5      5        S S S 5        g ! , (       d  f       g = f! [F         Gad    [I        5       (       dt  US:w  dn  [        RJ                  " [L        RN                  RQ                  5       5      (       a7  [        RJ                  " [L        RR                  RQ                  5       5      (       d  e [        R                  R                  S5      =(       dP    [T        RV                  " S	5      =(       d3    [T        RV                  " S
5      =(       d    [T        RV                  " S5      n[T        RV                  " S5      nUc  Ub  S[        R                  ;  a  UnUGb2  [Y        S5        [Z        R\                  " 5       nUR_                  [L        R`                  [Z        Rb                  5        S n	[e        S5       Hj  n
[Y        SU S3SSS9  URg                  S5      (       a.  [L        R`                  Ri                  5       Rk                  S5      n	O[Y        5           OU	S;   d  Mj    O   U	b  [m        S5      eU	S:X  aU  [        Rn                  " Xf[L        Rp                  [r        /[L        Rt                  SS  QSP[        Rv                  " 5       PSP76   e f = f)NDESTDIRrC   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]r`  r   r:   r?   )<rw   r   r(   r\   environgetr]   r   r   	build_dirr   prefixrC  r   r   r   r   rL   rP   rV   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)rU   datafilenamerm   r(   r   rI  rootcmdrZ  sansattempts              r6   
do_installInstaller.do_install  s   l+,,&&?jjnnY/G277==11ggll1;;8G $+BJJy!-R!'884
??j(aoos3333HHQ__%%*"3	$''4==1R$$QG@$$QG@$$QG@  <%%aWA!!!=%%aWA--g6''J?11HH23||))d.G.G!.KHHU$fT%>%>@P@PQUQXQXQ]Q]@^_a 211  #	||w"}BIIcjj>O>O>Q4R4RZ\ZcZcdgdndndududwZxZx

/0 (<<'(<<'( <<'	  \\(+F6#5,bjj:X "LM--/

399i&:&:;$QxGOG94XY_aimnxx||!ii00299$?j(  ( ,-FGG#:IIg	 ACHHUVUWL A"A$&IIKA1?AG#	s3   ( J- EJJ- 
J*&J- *J- -G<T-A/Tc                >   U R                  SU< S35        [        5       (       a  U R                  USSU/-   5      u  pEnOU R                  X/-   5      u  pEnUS:w  a@  [        S5        [        SU S35        [        S	U S35        [        R
                  " S
5        g g )NzStripping target .z-Sz-xr   zCould not strip file.
zStdout:
r   zStderr:
r   )r   r   r
   r   r   r   )rU   	strip_binrv   outnamer   stdostdes          r6   do_stripInstaller.do_stripe  s    $UIQ/088 &*__Y$gAV5V%W"Jd%)__Y5J%K"Jd?+,IdV2&'IdV2&'HHQK	 r5   c                l   UR                    H  nU R                  U5      (       d  M  SU l        [        X4UR                  5      nU R                  SUR                   SU 35        UR                  USS9  U R                  XR                  XeR                  UR                  UUR                  S9  M     g )NTzInstalling subdir r-  rZ   ry   )re  r  r   r   install_pathr   r]   rV   rR  rG  rH  rz   )rU   rm   rI  r(   r   r   r9  s          r6   re  Installer.install_subdirst  s    ""A&&q)))-D&+GPLHH)!&&l^DEKKtK4OOAvv|YYPR,-,=,=  ? #r5   c                x   UR                    H  nU R                  U5      (       d  M  UR                  n[        X4UR                  5      n[
        R                  R                  U5      nU R                  XgX(4UR                  S9(       a  SU l	        U R                  XuR                  UR                  5        M     g N)rV   rz   T)rD  r  r]   r   r  r\   r`   r1  rz   r   r   rH  rC  )	rU   rm   rI  r(   r   r   fullfilenameoutfilenamer/  s	            r6   rj  Installer.install_data  s    A&&q))66L*7OKWW__[1FRLbcbsbst-1*MM+~~qG r5   c                (   UR                    H  nU R                  U5      (       d  M  [        X4UR                  5      n[        X4UR                  5      nUR                  USS9  U R                  UR                  XsU5      (       d  M{  SU l        M     g )NTrZ   )	symlinksr  r   r  rn  rV   r;  r7  r   )rU   rm   rI  r(   r   r  r9  full_link_names           r6   rk  Installer.install_symlinks  ss    A&&q))+GPL-g166JNKKtK4qxx,OO-1* r5   c                b   UR                    H  nU R                  U5      (       d  M  UR                  n[        X4UR                  5      n[
        R                  R                  U5      nU R                  XgX(4S9(       a  SU l        U R                  XuR                  UR                  5        M     g )NrV   T)manr  r]   r   r  r\   r`   r1  r   r   rH  rC  )	rU   rm   rI  r(   r   r   full_source_filenamer  r/  s	            r6   rh  Installer.install_man  s    A&&q))#$66 *7OKWW__[1F 4RLY-1*MM+~~qG r5   c                   UR                    H  nU R                  U5      (       d  M  SU l        [        X4UR                  5      nU R                  SU 35        [        R                  R                  U5      (       a%  [        SU S35        [        R                  " S5        UR                  USS9  U R                  XeR                  UR                  5        M     g )NTzInstalling new directory zTried to create directory r?  r   rZ   )emptydirr  r   r   r]   r   r\   r#  r   r   r   rV   r   rH  rC  )rU   rm   rI  r(   r   r   r9  s          r6   ri  Installer.install_emptydir  s    A&&q)))-D&+GHLHH0?@ww~~l++2<.@hijKKtK4MM,H r5   c                   UR                    H  nU R                  U5      (       d  M  UR                  n[        R                  R	                  U5      n[        X4UR                  5      n[        R                  R                  X5      n	U R                  XiX(4UR                  S9(       a  SU l
        U R                  XR                  UR                  5        M     g r  )headersr  r]   r\   basenamer   r  r   r1  rz   r   r   rH  rC  )
rU   rm   rI  r(   r   tr  rv   r/  r  s
             r6   rg  Installer.install_headers  s    A&&q))66LGG$$\2E%g1>>JF'',,v5KRL010A0A   C-1*MM+~~qG r5   c                F   UR                   UR                  SR                  UR                   Vs/ s H  n[        R
                  " U5      PM     sn5      S.nU R                  R                  (       a  SUS'   U R                  (       a  SUS'   UR                   GH  nU R                  U5      (       d  M  UR                  b  UR                  nOSUR                  0nUR                  5       nUR                  UR                  5        V	V
s0 s HA  u  pSU	R!                  5       -   ["        R$                  R                  UR                  U
5      _MC     sn
n	5        UR                  UR                  5        V	V
s0 s H#  u  pSU	R!                  5       -   ['        X#U
5      _M%     sn
n	5        SR                  UR(                  5      nUR*                  (       a  U(       a  U R-                  S	U< 35        GM]  S
U l        U R-                  SU< 35         U R1                  Xh5      nWS:w  d  GM  [5        SU SU S35        [6        R8                  " U5        GM     g s  snf s  sn
n	f s  sn
n	f ! [2         a(    [5        SU S35        [6        R8                  " S5         Nyf = f)N )MESON_SOURCE_ROOTMESON_BUILD_ROOTMESONINTROSPECT1MESON_INSTALL_QUIETMESON_INSTALL_DRY_RUNrd  MESON_INSTALL_MESON_INSTALL_DESTDIR_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_dirrc  r   mesonintrospectshlexquoter   r%   r)   install_scriptsr  installdir_maprd  r   updateitemsupperr\   r]   r   cmd_argsskip_if_destdirr   r   r   r   r   r   r   )rU   rm   r(   r   rL  envr   mapplocalenvkvrn  rcs                r6   rl  Installer.run_install_script  sK   $%LL#$;;"%((ADUDU+VDUqEKKNDU+V"W <<),C%&<<+.C'(""A&&q))+'' !((+xxzHOO_c_i_i_kl_kW[WX-aggi7ahhPQ9RR_klmOOvz  wA  wA  wC  D  wCnrno5aggi?AQRYghAii  wC  D  E88AJJ'D  WQRVQYZ[)-D&HH5dX>?\\!.
 Qw1$7PQSPTTUVW5 # ,W  m D  1$7KLMs$    IAI";*I(I../J J c           
     b
   UR                    GH  n[        5       (       au  [        R                  R	                  UR
                  5      (       dG  SUR
                  ;   a7  [        R                  " SSUR
                  R                  SS5      5      Ul        U R                  U5      (       d  M  [        R                  R	                  UR
                  5      (       dN  UR                  (       a#  U R                  SUR
                  < S35        GM  [        SUR
                  < S35      eSn[        UR
                  5      n[        X4UR                  5      n[        R                  R!                  U[        R                  R#                  U5      5      n	[        R                  R!                  UR$                  UR                  [        R                  R#                  U5      5      n
UR&                  =(       d)    UR(                  =(       a    U R*                  R&                  nUR,                  nUR.                  nUR0                  n[        R                  R	                  U5      (       d  [        SU< S35      e[        R                  R3                  U5      (       Ga.  U R5                  XyX(4S9nU(       a  UR6                  br  UR9                  S	5      (       a@  U R                  S
R;                  [        R                  R#                  U5      5      5        GM  U R=                  UR6                  Xy5        UR9                  S5      (       a  [        R                  R?                  U5      S   S-   n[        R                  R	                  U5      (       a7  [        R                  R?                  U	5      S   S-   nU R5                  UU5      nO[        R                  RA                  U5      (       a  [        R                  R!                  URB                  URE                  S5      5      n[        R                  R!                  U[        R                  R#                  U5      5      n	URG                  USS9  U RI                  XU	S X5        O[K        SU< 35      eU(       d  GM  SU l&         U RO                  XRP                  XUSS9  U R[                  XUR\                  5        GM     g ! [R         a:  n[U        URV                  [X        5      (       a  URV                  S:X  a   S nAN`e S nAff = f)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/TrZ   zUnknown file type for )verbose)/targetsr   r\   r]   ra   rv   resubreplacer  optionalr   r	   r   r   r/  r   r  rd  r,   	can_stripr   install_rpathinstall_name_mappingsrH  r#  r1  r  r   rm  r  r   r6  rc  r{  rV   rR  RuntimeErrorr   r  rpath_dirs_to_remove
SystemExitr   coder   r   rC  )rU   rm   rI  r(   r   r  file_copiedrv   r/  r  
final_pathshould_stripr  r  rH  wasm_sourcewasm_outputr   s                     r6   rf  Installer.install_targets  s   A
 xxww~~agg..5AGG3C ff%KTSTSZSZSbSbchjnSopAG&&q))77>>!''**::HHuQWWK/CDE(5;N)OPPK'0E%g188DFggll6277+;+;E+BCGahh"'':J:J5:QRJ77Jq{{'It||7I7ILOOM$%$;$;!>>L77>>%(($uUI5H%IJJ&&"..u.UAKK$;~~f--!?!F!FrwwGWGWX]G^!_` MM!++u>>>%(( #%''"2"25"9!"<w"FKww~~k22&(gg&6&6w&?&BW&L&*&6&6{K&Pu%%Q[[%,,s2CD'',,vrww/?/?/FGFT2'4J"%;E9#EFF{-1*NN7,B,BM#8% # I gQ__Ey l " !!&&#..166Q;	s   ,S**
T.4/T)(T))T.)r   r)   rP   r   r   r   r*   r+   )r   'ArgumentType'rP   rp   )r   rt   r   rt   rr   rs   )r(   r&   rr   rs   )r   rt   r   rt   rr   zT.Tuple[int, str, str]rO   )r  r   r  zT.Optional[T.Dict[str, str]]rr   r   )rm   ziT.Union[TargetInstallData, InstallEmptyDir, InstallDataBase, InstallSymlinkData, ExecutableSerialisation]rr   r!   )r  r&   rr   rs   )r%  r&   r&  r&   rr   r!   NN)
r%  r&   r&  r&   rV   zT.Optional[T.Tuple[T.Any, str]]rz   T.Optional[bool]rr   r!   )
r7  r&   r8  r&   r(   r&   r9  r&   rr   r!   )rD  r   rE  r&   rF  r&   rG  z+T.Optional[T.Tuple[T.Set[str], T.Set[str]]]rH  z
'FileMode'rI  rL   rz   r  rr   rs   )r  r&   rr   rs   )r  r7   rv   r&   r  r&   rr   rs   )
rm   r   rI  rL   r(   r&   r   r&   rr   rs   )rm   r   r(   r&   r   r&   rr   rs   )%r.   r/   r0   r1   rW   r   r   rV   r   r   r   r  r  r   r   r   r   r   r
   r   r  r   r)  r1  r;  rR  r  r  re  rj  rk  rh  ri  rg  rl  rf  r4   r-   r5   r6   r   r   /  s   ['())*--0''2&'
EI$ AE8<&=&%5&AE&P2 `dGIGGI!+GI19GIL\GIhlGIRGR	?	H2	HIH$L=Fr5   r   c                  ^  US:X  a  gUS:w  a  [        S5        g[        R                  " 5       nU(       d  [        S5        gSU 4S jjnU" 5       u  pE[        R                  " UST /-   XES	9R
                  nUS
:w  a  [        ST  35        gg)NnoneTninjazKOnly ninja backend is supported to rebuild the project before installation.z%Can't find ninja, can't rebuild test.Fc                 p  >^^^ [        5       (       Gd  [        R                  " 5       S:X  Gah  SS Kn [        R                  R                  5       n[        R                  R                  S5      b[  UR                  S5      mUR                  SS5      mUR                  SS5      m U R                  [        T5      5      R                  nOi[        R                  R                  S5      bH  UR                  S5      m U R                  T5      nUR                  mUR                  mUR                  nOg[        R                  " [        R                   R#                  TS5      5      R$                  [        T5      :w  a  gTUS'   X!S	'   SUUU4S
 jjnX4$ g! [         a     gf = f! [         a     gf = f)Nr   	SUDO_USERSUDO_UIDSUDO_GIDr  	DOAS_USERzbuild.ninjaUSERHOMEc                    > [        ST< S35        T b  [        R                  " [        T 5      5        Tb   [        R                  " [        T5      5        g g )NzDropping privileges to z before running ninja...)r   r\   setgidr   setuid)orig_gidorig_uid	orig_users   r6   wrapped5rebuild_all.<locals>.drop_privileges.<locals>.wrappedM  sG    /	}<TUV'IIc(m,'IIc(m, (r5   rr   rs   )r   r\   geteuidpwdra  r   rb  popgetpwuidr   pw_dirKeyErrorgetpwnampw_uidpw_gidr|   r]   r   st_uid)	r  r  homedirpwdatar  r  r  r  r'   s	        @@@r6   drop_privileges$rebuild_all.<locals>.drop_privileges+  sZ   ||

 1**//#Czz~~k*6GGK0	77:q177:q1&!ll3x=9@@G ,8GGK0	& \\)4F "==!== --!wwrww||B67>>#h-O!#CK!K- - <A   &%&   &%&s$   '$F >F( 
F%$F%(
F54F5r:   )r  
preexec_fnr   zCould not rebuild )rr   zDT.Tuple[T.Optional[EnvironOrDict], T.Optional[T.Callable[[], None]]])r   r   detect_ninjar   runr   )r'   backendr  r  r  r  rets   `      r6   rebuild_allr    s    &'[\$$&E56+Z &'OC
..$+
L
W
WC
ax"2$'(r5   c                6   Sn[         R                  R                  U5      n[         R                  R                  US5      n[         R                  R	                  [         R                  R                  U R
                  U5      5      (       d  [        R                  " S5        U R                  (       d  [        R                  " U R
                  5      n[        R                  " SUR                  R                  R                  R!                  [#        S5      5      5      n[%        U5        [        R                  " SUR                  R                  R                  R!                  [#        S5      5      5      n['        U R
                  U5      (       d  [        R                  " S5        [         R(                  " U R
                  5        [+        [         R                  R                  US	5      S
SS9 n[-        X5      n[/        US5        [/        US5        U R0                  (       aG  SS Kn	[         R                  R                  US5      n
U	R5                  S[7        5       [9        5       U
S9  OUR;                  U5        S S S 5        g! , (       d  f       g= f)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\   r]   r`   r   ra   r'   r   r   r"   r   loadTcastr   coredataoptstoreget_value_forr   r   r  chdiropenr   ri   r$   cProfilerunctxglobalslocalsr  )optsr  private_dirlog_dirb
need_vsenvr  rP   	installerr$   rv   s              r6   r  r  a  s   .L''//,/Kggll;8G77>>"'',,tww=>>TU??JJtwwVVFAMM$:$:$C$C$Q$QR[\cRd$ef
J&& 6 6 ? ? M MiXaNb cd477G,,HHRLHHTWW	bggll7$56g	NRTd'	b>?bQR<<&GGLL.EFENN?FH_dNe  . 
O  
O	N s   4BJ


J)rI   zargparse.ArgumentParserrr   rs   )rv   r&   rr   r   rq   )r]   r&   rz   r!   rr   r!   )rP   rp   r   r&   rr   rs   )NNNT)r]   r&   r   T.Union[str, int, None]r   r  r   r   rz   r!   rr   rs   )NT)
r]   r&   r   r   r   r   rz   r!   rr   rs   )r]   r&   r   T.Union[str, int]rr   rs   )r]   r&   r   zT.Optional['FileMode']r   r  rr   rs   r  )r(   r&   r   r&   r]   r&   rr   r&   )rv   r&   rr   r&   )r'   r&   r  r&   rr   r!   )r  r  rr   r   )E
__future__r   r   rG   r   r\   rs  r  r   r   r   typingr  r  rC   r   r   backend.backendsr   mesonlibr	   r
   r   r   r   r   r   r   r   r   scriptsr   r   scripts.meson_exer   __main__r   r~  ImportErrorTYPE_CHECKINGr   r   r   r   r   r   r   r   AttributeErrortyping_extensionsr   r.  r8   r3   rJ   rL   rw   r~   ri   r   r   r   r   r   r   r   r   r  r  r-   r5   r6   <module>r*     sh   #    	     
  	   )A A A  + &. ??  KJ/#x   " !p,#& #&L:P
 :>/3FJ,%,,%%,%?C,%OS,%^ ?C&*0#0/30_2<064mF mF^@FM   I  /./s$   -D  D.  D+*D+.D=<D=