
    -PhG                       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Zd dlZd dlmZ d dlmZ d dlmZ d dlmZmZ d dlmZmZmZmZmZmZmZ dd	lm Z  d d
l!m"Z# d dl$m%Z% d dl&m'Z'm(Z(m)Z) ddl*m+Z+ ej,        rddl-m.Z. ddl/m0Z0 g dZ1dddddZ2d@dZ"dAdZ3dZ4dBd!Z5dCd#Z6dCd$Z7e G d% d&ej8        '                      Z9 G d( d)e9          Z: G d* d+e9          Z;dDd3Z<dEd:Z=dFd;Z>dGd>Z?dHd?Z@dS )I    )annotationsN)	dataclass)glob)Path)Environmentdetect_ninja)GITMesonExceptionRealPathActionget_meson_command	quiet_gitwindows_proof_rmtreesetup_vsenv   )	OptionKey)add_arguments)wrap)mlogbuildcoredata)run_exe)ImmutableListProtocol)ExecutableSerialisation)bztargztarxztarzipz.tar.bz2z.tar.gzz.tar.xz.zipparserargparse.ArgumentParserreturnNonec                   |                      ddt          d           |                      ddd           |                      d	d
d           |                      ddd           |                      ddd           d S )N-Cwdz#directory to cd into before running)destactionhelpz--allow-dirty
store_truez8Allow even when repository contains uncommitted changes.)r'   r(   z	--formatsr   zaComma separated list of archive types to create. Supports xztar (default), bztar, gztar, and zip.)defaultr(   z--include-subprojectszEInclude source code of subprojects that have been used for the build.z
--no-testsz)Do not build and test generated packages.)add_argumentr   )r   s    P/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/mdist.pyr   r   .   s    
4B  D D D
W  Y Y Y
W A  B B B
/d  f f f
\H  J J J J J    fnamestrc           	        | dz   }t          j                    }|                    t          | d                                                     t          |dd          5 }|                    d                    |                                t          j	        
                    |                                d d d            d S # 1 swxY w Y   d S )Nz
.sha256sumrbwzutf-8)encodingz{} *{}
)hashlibsha256updateopenreadwriteformat	hexdigestospathbasename)r.   hashnamemfs       r,   create_hashrB   ;   s   |#HAHHT%##%%&&&	hg	.	.	. K! 	

!!!++--1A1A%1H1HIIJJJK K K K K K K K K K K K K K K K K Ks    ACC
C
zPRepository has uncommitted changes that will not be included in the dist tarballmsgallow_dirtyboolc                    |rt          j        |            d S t          j        | dz   dz              t          j        d           d S )N
z:Use --allow-dirty to ignore the warning and proceed anywayr   )r   warningerrorsysexit)rC   rD   s     r,   handle_dirty_optrL   G   sK     S
3: \\]]]r-   src_rootc                p   t          g d|           d         rdS t          j                            t          j                            | d                    r^d}t
          s|dz  }dt          j        v r|dz  }n(|d	z  }t          d
g|           \  }}d|v r|dz  }n|dz  }t          j        |           dS )z
    Checks if meson.build file at the root source directory is tracked by git.
    It could be a subproject part of the parent project git repository.
    )zls-filesz--error-unmatchzmeson.buildr   Tz.gitz-Source tree looks like it may be a git repo, zbut git is not installed!	GITLAB_CIz This is a gitlab bug.zbut git returned a failure. statuszdubious ownershipzPThis is a bug in git itself, please set `git config --global safe.directory "*"`z/meson.build may not have been committed to git?F)	r   r<   r=   existsjoinr	   environr   rH   )rM   rC   poes       r,   is_gitrV   N   s    
 ???JJ1M t	w~~bgll8V4455 = 	I..Cbj((//11Cxj(33EAr"b(( iiHHS5r-   c                |    t           j                            t           j                            | d                    S )Nz.hg)r<   r=   isdirrR   )rM   s    r,   is_hgrY   r   s&    7==h66777r-   c                  ~    e Zd ZU ded<   ded<   ded<   ded<   ded<   d	ed
<   ddZej        dd            ZddZdS )Distr/   	dist_namerM   bld_rootzT.List[ExecutableSerialisation]dist_scriptszT.Dict[str, str]subprojectsargparse.Namespaceoptionsr!   r"   c                    t           j                            | j        d          | _        t           j                            | j        | j                  | _        d S )Nz
meson-dist)r<   r=   rR   r]   dist_subr\   distdir)selfs    r,   __post_init__zDist.__post_init__   s:    T]LAAw||DM4>BBr-   archivesT.List[str]c                    d S N )re   rg   s     r,   create_distzDist.create_dist   s    r-   c                v   t           j                            | j                  sJ t	          j                    dgz   }| j        | j        | j        d                    d |D                       d}| j	        D ]?}|j
        r|j
        | j        vr| j                            |j
        d          }t           j                            | j        |          |d<   t           j                            | j        |          |d<   t           j                            | j        |          |d<   d                    |j                  }t          d	|           	 t          ||          }|d
k    rt!          j        d           
# t$          $ r* t          d|           t!          j        d           Y =w xY wd S )Nrewrite c              3  >   K   | ]}t          j        |          V  d S rj   )shlexquote).0xs     r,   	<genexpr>z(Dist.run_dist_scripts.<locals>.<genexpr>   s*      'M'M1A'M'M'M'M'M'Mr-   )MESON_DIST_ROOTMESON_SOURCE_ROOTMESON_BUILD_ROOTMESONREWRITE MESON_PROJECT_DIST_ROOTMESON_PROJECT_SOURCE_ROOTMESON_PROJECT_BUILD_ROOTzRunning custom dist script r   zDist script errored outzFailed to run dist script r   )r<   r=   isabsrd   r   get_build_commandrM   r]   rR   r^   
subprojectr_   getcmd_argsprintr   rJ   rK   OSError)re   mesonrewriteenvdsubdirnamercs          r,   run_dist_scriptszDist.run_dist_scripts   s   w}}T\*****"466)D"&,$(M#'="xx'M'M'M'M'MMM 
 " 	 	A| D4D D D%))!,;;F-/W\\$,-O-OC)*/1w||DM6/R/RC+,.0gll4=&.Q.QC*+88AJ''D888999Q__77H6777   ;4;;<<<	 	s   *F0F65F6N)r!   r"   rg   rh   r!   rh   )	__name__
__module____qualname____annotations__rf   abcabstractmethodrl   r   rk   r-   r,   r[   r[   v   s         NNNMMMMMM1111!!!!C C C C 	        r-   r[   )	metaclassc                  D    e Zd ZddZddZ	 	 dddZddZddZddZd	S ) GitDistdir_r/   r!   r   c                    t          ddg|d          d                                         }|st          |          S t          t          |          j                  }t          |          j        |dz
           S )Nz	rev-parsez--show-prefixT)checkr   )r   stripr   lenparents)re   r   prefixprefix_levels       r,   git_rootzGitDist.git_root   sq     K94tLLLQOUUWW 	::4<</00Dzz!,"233r-   rE   c                    t          j        dd| j        dddg           t          j        dd| j        dddg          }|d	k    S )
z2Check whether there are uncommitted changes in gitgitr$   zupdate-indexz-qz	--refreshz
diff-indexz--quietHEADr   )
subprocesscallrM   )re   rets     r,   have_dirty_indexzGitDist.have_dirty_index   sK     	dm^T;WXXXoudDM<TZ[\\axr-   r   NsrcT.Union[str, os.PathLike]rd   revisionr   T.Optional[str]r   r"   c                   dddd|g}||                     dd| d           ||                    d|g           t          j                    5 }t	          j        |||	           |                    d
           t          j        |          }|	                    |           d d d            d S # 1 swxY w Y   d S )Nr   archivez--formattar   z	--prefix=/z--)cwdstdoutr   )fileobj)r=   )
insertextendtempfileTemporaryFiler   
check_callseektarfiler7   
extractall)	re   r   rd   r   r   r   cmdrA   ts	            r,   copy_gitzGitDist.copy_git   s   iUH=JJq/f///000JJf~&&&#%% 	'!#3q9999FF1IIIQ'''ALLgL&&&		' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   AB55B9<B9rM   c                   |                                  rt          t          | j        j                   t
          j                            |          rt          |           | 	                    |          }|
                    |          r+t          j        |           |                     ||           nt          |                              |          }|dz   }t
          j                            |          rt          |           t          j        |           |                     ||t          |                     t          ||                              |           t          |           |                     ||           d S )Nz-tmp)r   )r   rL   msg_uncommitted_changesra   rD   r<   r=   rQ   r   r   samefilemakedirsr   r   relative_tor/   renameprocess_submodules)re   rM   rd   	repo_rootr   tmp_distdirs         r,   process_git_projectzGitDist.process_git_project   s\     "" 	P4dl6NOOO7>>'"" 	* )))MM(++	h'' 	.K   MM(G,,,,(^^//	::F!F*Kw~~k** 2$[111K$$$MM)[VMEEEf%%,,W555 ---'22222r-   c                j   t           j                            |d          }t           j                            |          sd S g d}t	          j        ||d                                          }|D ]}|d d         }|dd                              dd          \  }}	|	                    dd          d         }
|dk    rt          j
        d	|
d
           h|dv rt          d	|
d| j        j                   |                     t           j                            ||
          |||
           d S )Nz.gitmodules)r   	submodulerP   z--cachedz--recursiveT)r   universal_newlinesr   ro   r   -z
Submodule z3 is not checked out and cannot be added to the dist>   U+zF has uncommitted changes that will not be included in the dist tarball)r   r   )r<   r=   rR   rQ   r   check_output
splitlinessplitrsplitr   rH   rL   ra   rD   r   )re   r   rd   module_filer   modlistr   rP   sha1restsubpaths              r,   r   zGitDist.process_submodules   s\   gll366w~~k** 	FGGG)#34PPP[[]]  	^ 	^Irr]F"122,,S!44JD$kk#q))!,G}}h'hhhiii:%% !g!!!  BF  BN  BZ  [  [  [MM"',,sG44gU\M]]]]	^ 	^r-   rg   rh   c                   |                      | j        | j                   | j                                        D ]}t
          j                            | j        |          }t
          j                            | j        |          }t
          j                            |          rlt          |          r|                      ||           t          j        ||           |                                  g }|D ]S}| j        t          |         z   }t          j        | j        || j        | j                   |                    |           Tt%          | j                   |S )N)root_dirbase_dir)r   rM   rd   r_   valuesr<   r=   rR   rQ   rV   shutilcopytreer   archive_extensionmake_archiverc   r\   appendr   )re   rg   r=   sub_src_rootsub_distdiroutput_namesacompressed_names           r,   rl   zGitDist.create_dist   sF     ===$++-- 	; 	;D7<<t<<L',,t|T::Kw~~k** l## ;(({CCCCk:::: 	1 	1A"l->q-AAOa$-RVR`aaaa0000T\***r-   )r   r/   r!   r   r!   rE   )r   NN)r   r   rd   r/   r   r/   r   r   r   r   r!   r"   )rM   r/   rd   r/   r!   r"   )r   r/   rd   r/   r!   r"   r   )	r   r   r   r   r   r   r   r   rl   rk   r-   r,   r   r      s        4 4 4 4    V\KO' ' ' ' '3 3 3 3(^ ^ ^ ^&     r-   r   c                      e Zd ZddZd	dZdS )
HgDistr!   rE   c                    t           j                                        }d|d<   |                    dd           t	          j        dd| j        dg|          }d	|vS )
z1Check whether there are uncommitted changes in hgCLC_ALLLANGUAGENhg-Rsummary)r   s   commit: (clean))r<   rS   copypopr   r   rM   )re   r   outs      r,   r   zHgDist.have_dirty_index   s^    jooH 	
D!!!%tT4=)&LRUVVV!,,r-   rg   rh   c                   |                                  rt          t          | j        j                   | j        rt          j        d           t          j	        | j
        d           t          j                            | j
        | j        dz             }|dz   }|dz   }|dz   }t          j                            | j
        | j        dz             }t          j        d	d
d| j        dddd| j        dz   |g
           g }d|v rdd l}|                    |d          5 }	t%          |d          5 }
t'          j        |
|	           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                    |           d|v rdd l}|                    |d          5 }t%          |d          5 }
t'          j        |
|           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                    |           d|v rt/          j        |d          5 }t%          |d          5 }
t'          j        |
|           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                    |           t          j        |           d|v r6t          j        d	d
d| j        ddd|g           |                    |           |S )Nz4dist scripts are not supported in Mercurial projectsT)exist_okz.tarz.xzz.bz2z.gzr   r   r   r   z-Sz-tr   z-Xz
/.hg[a-z]*r   r   wbr1   r   r   r   )r   rL   r   ra   rD   r^   r   rH   r<   r   rc   r=   rR   r\   r   r   rM   lzmar7   r   copyfileobjr   bz2gzipunlink)re   rg   tarnamexznamebz2namegznamezipnamer   r   xftfr   bfzfs                 r,   rl   zHgDist.create_dist  sS     "" 	P4dl6NOOO 	QLOPPP
DMD1111',,t}dnv.EFF5F"5',,t}dnv.EFF 	tYdmT4QV#T]\%A7L 	M 	M 	MhKKK64(( +BWd0C0C +r"2r***+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +'''hJJJ'4(( +BWd0C0C +r"2r***+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +(((h64(( +BWd0C0C +r"2r***+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +'''
	'H!4D$-tUZ\c"deee(((s   E(/EE(E	E(E	E((E,/E,&G07GG0G	G0 G	!G00G47G4)I3:II3I 	 I3#I 	$I33I7:I7Nr   r   )r   r   r   r   rl   rk   r-   r,   r   r      s<        - - - -) ) ) ) ) )r-   r   meson_commandrh   unpacked_src_dirbuilddir
installdir
ninja_argsintc                   t          j        | d||gz             dk    rt          d           dS t          j        ||          dk    rt          d           dS t          j        |dgz   |          dk    rt          d           dS t          j                                        }||d	<   t          j        |d
gz   ||          dk    rt          d           dS dS )Nz--backend=ninjar   z,Running Meson on distribution package failedr   )r   z)Compiling the distribution package failedtestz5Running unit tests on the distribution package failedDESTDIRinstall)r   r   z*Installing the distribution package failed)r   r   r   r<   rS   r   )r  r  r  r  r  myenvs         r,   run_dist_stepsr  3  s    }(9;KX'VVWW[\\\<===qzx000A559:::qzVH,(;;;q@@EFFFqJOOE!E)zYK/X5IIIQNN:;;;q1r-   packagename_meson_commandImmutableListProtocol[str]extra_meson_argsr]   privdirc                   t          d|             t          j                            |d          }t          j                            |d          }t          j                            |d          }|||fD ]D}t          j                            |          rt          |           t          j        |           Et                      }	t          j	        | |           t          t          j                            |d                    }
t          |
          dk    sJ |
d         }|                                }|dgz  }|t          |          z  }||z  }t          |||||	          }|dk    rt          d	|            n@t          |           t          |           t          |           t          d
|  d           |S )NzTesting distribution package zdist-unpackz
dist-buildzdist-install*r   r   setupzDist check build directory was zDistribution package z tested)r   r<   r=   rR   rQ   r   mkdirr   r   unpack_archiver   r   r   create_cmdline_argsr  )r  r  r  r]   r  	unpackdirr  r  rT   r  unpacked_filesr  r  r   s                 r,   
check_distr  D  s   	
7+
7
7888Wm44Iw||G\22Hg~66J:.  7>>! 	$ ###
J
+y111"',,y#6677N~!####%a("''))MgYM(222M%%M
(8(JPZ
[
[C
Qww:::;;;;Y'''X&&&Z(((:k:::;;;Jr-   c                   t          j                    }t          |           t          j        d|                    g                     }t          j        |           t          j        | |           |j	        
                    t          d          d           t          j        t          j        |                    S )Nzcoredata.SharedCMDOptionsbackendrz   )argparseArgumentParsermsetup_argparseTcast
parse_argsr   parse_cmd_line_optionsread_cmd_line_filecmd_line_optionsr   r   rq   r   format_cmd_line_options)r]   r   argss      r,   r  r  a  s    $&&FF6-v/@/@/D/DEED#D)))$///i	22B777;x7==>>>r-   ra   r`   c                   g }| j                             d          D ]@}|t          vr t          j        d| dt           d           |                    |           At          |          dk    rt          j        d           |S )N,zValue "z" not one of permitted values .r   zNo archive types specified.)formatsr   archive_choicesrJ   rK   r   r   )ra   resultis      r,   determine_archives_to_generater0  j  s    F_""3''  O##HRqRRRRRSSSa
1vv{{.///Mr-   c                   t          | j                  dz  dz  }|                                st          d| j        d          t	          j        | j                  }t          j        d|j        j	        j
                            t          d                              }t          |           |j        j        }|j        j        }t           j                            |d          }|j        dz   |j        z   }t+          |           }i }	g }
| j        rt           j                            ||j                  }|j        D ]?}t3          j        ||          }t           j                            |j        |          |	|<   @|
                    d           t9          |          rt:          }n;t=          |          r|	rt?          d	           d
S t@          }nt?          d           d
S  |||||j!        |	|           }|"                    |          }|d
S d}| j#        s%tI          |d         tK                      |
||          }|dk    r$|D ]!}tM          |           t?          d|           "|S )Nzmeson-privatez	build.datz
Directory z- does not seem to be a Meson build directory.rE   vsenvr   z-Dwrap_mode=nodownloadzC--include-subprojects option currently not supported with Mercurialr   z5Dist currently only works with Git or Mercurial reposr   Created)'r   r%   is_filer
   r   loadr!  r"  environmentr   optstoreget_value_forr   r   
source_dir	build_dirr<   r=   rR   project_nameproject_versionr0  include_subprojectssubproject_dirr_   r   get_directoryr   rV   r   rY   r   r   r^   rl   no_testsr  r   rB   )ra   	buildfileb
need_vsenvrM   r]   priv_dirr\   rg   r_   r  r>  sub	directoryclsprojectnamesr   r   s                      r,   runrJ  t  st   WZ  ?2[@I ge'*eeefff
7:A 6 ? M MiX_N`N` a abbJ
}'H}&Hw||Ho66H$q'88I-g66HK" :h0@AA= 	I 	IC*>3??I!w||A,<iHHK 8999 h 		x  	WXXX1EFFFqc)XxgVVG))E}q	
B ]a"3"5"57GS[\\	Qww 	# 	#D)T""""Ir-   )r   r    r!   r"   )r.   r/   r!   r"   )rC   r/   rD   rE   r!   r"   )rM   r/   r!   rE   )r  rh   r  r/   r  r/   r  r/   r  rh   r!   r  )r  r/   r  r  r  rh   r]   r/   r  r/   r!   r  )r]   r/   r!   rh   )ra   r`   r!   rh   )ra   r`   r!   r  )A
__future__r   r   r  r   r<   rJ   rq   r   r   r   r   r4   typingr!  dataclassesr   r   pathlibr   mesonbuild.environmentr   r   mesonbuild.mesonlibr	   r
   r   r   r   r   r   ra   r   mesonbuild.msetupr   r   mesonbuild.wrapr   
mesonbuildr   r   r   scripts.meson_exer   TYPE_CHECKING_typingr   mesonlibr   r-  r   rB   r   rL   rV   rY   ABCMetar[   r   r   r  r  r  r0  rJ  rk   r-   r,   <module>rY     s  
 # " " " " " 


   				 



              ! ! ! ! ! !             < < < < < < < <D D D D D D D D D D D D D D D D D D       > > > > > >             , , , , , , , , , , & & & & & &? 2......111111444(''"$ $ 
J 
J 
J 
JK K K K m    ! ! ! !H8 8 8 8 ' ' ' ' 'S[ ' ' ' 'TX X X X Xd X X Xv4 4 4 4 4T 4 4 4n   "   :? ? ? ?   1 1 1 1 1 1r-   