
    -PhW                       d dl mZ ddlmZmZmZ ddlmZ ddl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 d dlZd dlZd dlZd dlZej        rRd dlmZ ddlmZ  G d de          Z G d de          Z  G d de          Z! G d de          Z" G d de          Z# G d de          Z$ G d de          Z%dS )    )annotations   )ExternalDependencyDependencyExceptionDependencyTypeName)PkgConfigDependency   )
Popen_safe	join_argsversion_compareversion_compare_many)	OptionKey)ExternalProgram)mlog)EnumN)	TypedDict)Environmentc                  B    e Zd ZU ded<   ded<   ded<   ded<   ded	<   d
S )DubDescriptionT.List[str]platformarchitecturestr	buildTypezT.List[DubPackDesc]packageszT.List[DubTargetDesc]targetsN__name__
__module____qualname____annotations__     [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mesonbuild/dependencies/dub.pyr   r      sK         !!!!%%%%&&&&&&r#   r   c                  V    e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   ded	<   d
S )DubPackDescr   nameversionboolactiveconfigurationpath
targetTypetargetFileNameNr   r"   r#   r$   r&   r&      sW         						r#   r&   c                  8    e Zd ZU ded<   ded<   ded<   ded<   dS )	DubTargetDescr   rootPackager   linkDependenciesDubBuildSettingsbuildSettingscacheArtifactPathNr   r"   r#   r$   r0   r0   (   sB         %%%%''''r#   r0   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ed	<   ded
<   dS )r3   r   importPathsstringImportPathsversionsr   mainSourceFilesourceFilesdflagslibslflagsNr   r"   r#   r$   r3   r3   .   sr             &&&&    r#   r3   c                  $    e Zd ZU ded<   ded<   dS )FindTargetEntryr   searchartifactPathNr   r"   r#   r$   r@   r@   8   s'         r#   r@   c                      e Zd ZdZdZdS )DubDescriptionSourcelocalexternalN)r   r   r    LocalExternalr"   r#   r$   rD   rD   <   s        EHHHr#   rD   c                       e Zd ZU dZded<   dZdZdddd	Zd
ed<   d, fdZd-dZ	d.d Z
d/d"Zd0d$Zd1d2d)Zd1d2d*Zd3d+Z xZS )4DubDependencyN)T.Optional[T.Tuple[ExternalProgram, str]]class_dubbinF dmdgdcldc)rN   gccllvmzT.Mapping[str, str]_ID_MAPr'   r   environment'Environment'kwargsT.Dict[str, T.Any]c           	     P    t                                          t          d          ||d           | _        ddlm}m} t                                                      }t          ||          sJ | _	        d|v r|
                    d           _        t          j        6t          j        s*                                 t          _        dt          _        t          j         j        rt!          d          d S t          j        \   _        }t           j        t$                    sJ t'          |d	           _        t'          |d
           _        t'          |d
           _         j        s> j        s7 j        rt!          d| d          t/          j        d| d| d           d S t/          j        d                    | j                                                              j	        j        t;          |j        j                             tC          d                              dk    rdndk    rd "                              }|d S |\  }	 j#         j	        $                                         g  _%        g x _&         _'        dd d         D             dH fd}
i }d}d         D ]}|||d         <   |d          s|d         |k    r|d!         d"vr1t/          j(        t/          j)        |          d#|d!                     d S  j*        k|d$         }tW          | j*                  d%         sHt/          j(        t/          j)        | d&|           d'd(,                     j*                              d S d}|d$          _-        | _.        |st/          j(        d)| d*           |	t^          j0        u r>t/          j1        d+           t/          j1        t/          j)        d,|                      n |	t^          j2        u rtg          d-|           d S |vrh j.        d!         d.k    r)t/          j(        d/t/          j)        d.          d0           n,t/          j(        d1t/          j)         j                             d S d _4         |
 j.                  sd S |         d2         D ]}||         } |
|          s d S rMt/          j1        d3t/          j)        d4                     t/          j1        t/          j)                             |         d5         }|d6         D ]} j%        5                    |           |d7         D ]} j%        5                    d8|z               |d9         D ]O}d:| j	        j6                 vr n8| j	        j6                 d:         } j%        5                    | d;|            P|d<         D ]O}d$| j	        j6                 vr n8| j	        j6                 d$         } j%        5                    | d;|            P|d=         r  j%        5                    |d=                    |d>         D ]F}|7                    d?          s|7                    d@          r j&        5                    |           G|dA         D ]} j&        5                    |            j8        j9        j:        ;                                }|rg dB}|dC         D ]}tx          j        dDk    rt{          ||dddE          }|j>        r|?                                D ]} j%        5                    |           |@                                D ]} j&        5                    |           |@                    dF          D ]} j'        5                    |           |r"||v r j&        5                    |d?z               j&        5                    dG|z              d _>        d S )INdubd)languager	   )	DCompilerd_feature_argsrequiredTzDUB not found.z<=1.31.1z>=1.35.0zDUB version z^ is not compatible with Meson (can't locate artifacts in DUB's cache). Upgrade to Dub >= 1.35.zDUB dependency z not found because Dub z^ is not compatible with Meson. (Can't locate artifacts in DUB's cache). Upgrade to Dub >= 1.35z4Determining dependency {!r} with DUB executable {!r}	buildtypedebugoptimizedzrelease-debugminsizereleaseFc                     i | ]}|d          |S )r1   r"   ).0ts     r$   
<dictcomp>z*DubDependency.__init__.<locals>.<dictcomp>   s    GGG11]#QGGGr#   r   pkgr&   returnr)   c           
     :   | d          d| d          }| d                  }
                     | |	          \  }}| |s)t          j        t          j        |          d           nd|vr<t          j        t          j        |          dt          j        	                     nY	dk    rOd|vrKt          j        t          j        |          d	t          j        	 d

j        j                              nd|vr;t          j        t          j        |          dt          j                             nd|vrTt          j        t          j        |          dt          j        d                    d                                        nmd|vrBt          j        t          j        |          dt          j        | d                   d           n't          j        t          j        |          d           t          j        d           t          j        t          j                             dS d|vr<t          j        t          j        |          dt          j                             d
j	        
                    |           dS )Nr'   @r(   z	not foundcompilerzfound but not compiled with rO   compiler_versionzfound but not compiled with-archzfound but not compiled forr   .r+   zfound but not compiled for thezIYou may try the following command to install the necessary DUB libraries:F
build_typezfound but not compiled asT)_find_target_in_cacher   errorboldrk   r(   joinlogwarning	link_argsappend)rg   pack_idtgt_desctgt_filecompatibilities	build_cmddescriptiondub_archdub_buildtypedub_comp_idselfshow_buildtype_warningr   s        r$   find_package_targetz3DubDependency.__init__.<locals>.find_package_target   s    V77s9~77Gs6{+H*.*D*D[RUW_al*m*m'X& @Jty11;????66Jty113QSWS\]hSiSijjjj E)).@.W.WJty113P#yK)Q)Q$-:O)Q)QRRT T T T?22Jty113OQUQZ[cQdQdeeee66Jty113O#y+j2I)J)JKKM M M M$O;;Jty113S#y_)=>>Q Q Q Q Jty11;???deee9--...u?22TYw//1LdiXeNfNfggg)-&N!!(+++4r#   r   r'   r*   r-   )librarysourceLibrarystaticLibraryz+found but it isn't a static library, it is:r(   r   rj   z-does not satisfy all version requirements of: zCould not find z in DUB description.zLMake sure that the dependency is registered for your dub project by running:zdub add z2`dub describe` succeeded but it does not contains r   zDUB targets of typezare not supported.z%Could not find target description forr2   zKIf it is not suitable, try the following command and reconfigure Meson withz--clearcacher4   r<   r7   z-Ir8   
import_dir=r9   r:   r;   z.libz.ar>   )kernel32user32gdi32winspoolshell32ole32oleaut32uuidcomdlg32advapi32ws2_32r=   nt)r^   silent)rawz-l)rg   r&   rh   r)   )Asuper__init__r   r'   compilers.dr\   r]   get_compiler
isinstancerk   getr^   rJ   rL   class_dubbin_searched
_check_dubr   dubbinr   r   _search_in_cache_use_cache_describe_dub_has_build_deepr   rv   debugformatget_pathrn   r   coredataoptstoreget_value_forr   _get_dub_descriptionrS   get_idcompile_argsrw   raw_link_argsrr   rs   version_reqsr   rt   r(   rg   rD   rG   ru   rH   RuntimeErrorstaticrx   idendswithenvmachineshost
is_windowsosr   is_foundget_compile_argsget_link_args)!r   r'   rT   rV   r\   r]   
_temp_compdubverresultdescription_sourcer   r   found_itrg   verlink_depbsflagr,   filer   winlibslibpkgdepargr}   r~   r   r   r   r   r   	__class__s!   `                        @@@@@@@r$   r   zDubDependency.__init__M   sa	   +E22KRUVVV	;;;;;;;;WW))++
*i00000""JJz22DM%-m6Y-)-):):M&26M/%-} <)*:;;;F - :f$+77777 !0
 C C#26:#F#F #26:#F#F $ 		T-E 		} 8)X6 X X XY Y Y  7t 7 7F 7 7 7 8 8 8 F
  &t{';';'='=>>	@ 	@ 	@ =% K09GG	R]H^H^__`` ,,,+MMi''%M**8]CC>F5;2Y 2l4=#7#7#9#9:.00+!& HGI0FGGG&	 &	 &	 &	 &	 &	 &	 &	 &	 &	 &	 &	 &	` .0z* 	 	C$'HS[!x=  6{d""|$,YYYJty0]"<02 2 2FF$0i.C/T5FGGJ 
49__s__#=#=#R#&88D,=#>#>@ @ @ "9~ 	JCCCCDDD!%9%???ghhh#4d#4#4556666#';'DDD"#^X\#^#^___Fwx%88 
0$)O2L2LNbcccc
BDIdiDXDXYYYF  #"48,, 	F  &89 	 	H8$C&&s++  " 	+Hbdhdmn|d}d}~~~HTYy))*** T]?+xL 	+ 	+D$$T****}% 	2 	2D$$TD[1111*+ 	7 	7D>$-2B#CCC!$-"23LAD$$%5%5t%5%56666j> 	6 	6Ct}/? @@@!$-"23I>D$$__s__5555 	;$$R(8%9::: }% 	, 	,D}}V$$ ,d(;(; ,%%d+++xL 	( 	(DN!!$''''X&+6688
 	MM M MG f: 	, 	,Cw$,S+D\`?a?abb? %6688 6 6)005555%3355 3 3--c2222%333== 7 7*11#6666 cWnn%%cFl333 N!!$s(++++r#   r   r   rh   >T.Optional[T.Tuple[DubDescription, str, DubDescriptionSource]]c                    d fd}ddz   dz   d j                                         d         z   g}t           |                      }t          j        }                     |          \  }}}	|d	k    rt          j        |          ||fS  j        }
 j	        zt           j	                  d
k    r7t          j        d           t          j        d           t          d          t           j	                  d
k    r|
d j	        d	         z   z  }
d|
dz   dz   d j                                         d         z   g}t           |            |
gz             }t          j        }                     |          \  }}}	|d	k    rt          j        |          ||fS t          j        d|	z              d|	v rMt          j        t          j        |
          d           t          j        t          j        |                     d S )Nrh   r   c                     j         rg d} ng d} | dz   dj                                        d         z   dz   gz   S )N)rY   buildz--deep)rY   runz--yeszdub-build-deepz----arch=--compiler=--build=)r   rk   get_exelist)cmdr   r   r   s    r$   get_build_commandz=DubDependency._get_dub_description.<locals>.get_build_commandI  sd    ' F000EEEH$ 9 9 ; ;B ??]*  r#   describer   r   r   r   r   r   zIMultiple version requirements are not supported for raw dub dependencies.z1Please specify only an exact version like '1.2.3'zDMultiple version requirements are not solvable for raw dub depenciesrj   zDUB describe failed: locallyz:is not present locally. You may try the following command:)rh   r   )rk   r   r   rD   rG   _call_dubbinjsonloadsr'   r   lenr   rr   r   rH   r   rs   ru   )r   r   r   r   describe_cmdhelper_buildsourceretreserr	pack_specs   ```        r$   r   z"DubDependency._get_dub_descriptionH  s3   
	 
	 
	 
	 
	 
	 
	 
	 	H,&8Q8Q8S8STV8W(W
 !!2!2!4!455%+)),77S#!88JsOO\6::I	(4$%%))
fggg
NOOO)*pqqqT&''1,,S4#4Q#777	 	9x#7&8Q8Q8S8STV8W(W
 !!2!2!4!4	{!BCC%.)),77S#!88JsOO\6::
*S0111Jty++-ijjjHTY|,,---tr#   descr   pkg_descr&   rz   r0   r   $T.Tuple[T.Optional[str], T.Set[str]]c                   t          j        d|d                    | j        r=|d         }t          j                            |          r|h dfS d t                      fS | j        sJ |                     |          }h d}t                      }| 	                    |          D ]}	|	d         }
t          j                            |
          st          j        d|
z              Bt                      }|	d         t          j        d	z              t          j        d
|           |d         v r|
                    d           |d         v r|
                    d           t          fd|d         D                       r|
                    d           t          fd|d         D                       r|
                    d           |v r|
                    d           |rt          fd|D                       r|
                    d           |                    |          rt          j        d|
           |
|fc S t                              ||          }d |fS )Nz%Searching in DUB cache for compatibler.   r5   >   rn   rk   r   rp   r+   rl   >   rn   rk   r   r+   rl   rB   z&WARNING: Could not find a Dub target: rA   zsearching compatibility in compiler_versionsr+   r   rp   c              3      K   | ]}|v V  	d S Nr"   )rd   r   rA   s     r$   	<genexpr>z6DubDependency._find_target_in_cache.<locals>.<genexpr>  s(      GG(8v%GGGGGGr#   r   c              3      K   | ]}|v V  	d S r   r"   )rd   rn   rA   s     r$   r   z6DubDependency._find_target_in_cache.<locals>.<genexpr>  s'      CCd46>CCCCCCr#   r   rn   rk   c              3      K   | ]}|v V  	d S r   r"   )rd   cvrA   s     r$   r   z6DubDependency._find_target_in_cache.<locals>.<genexpr>  s'      'M'Mf'M'M'M'M'M'Mr#   rl   Found)r   r   r   r   r,   existssetr   _get_comp_versions_to_find_cache_entriesaddallanyissubsetunion)r   r   r   rz   r   r{   comp_versions
check_listr|   entrytargetcompsrA   s               @r$   rq   z#DubDependency._find_target_in_cache}  s    	
:HEU<VWWW # 	% 34Hw~~h'' % "u"u"uvvcee}$$$$$ 77DD
 [ZZ
&)ee((22 (	D (	DE>*F7>>&))  
CfLMMM
 !$E8_FJ4v=>>>J*M:::(F22		/***K F**		,'''GGGGd:6FGGGGG &		*%%%CCCCd>.BCCCCC "		&!!!f$$		*%%%  .C'M'M'M'M}'M'M'M$M$M .		,---""5)) D
7F+++&&&"%))OU"C"Co&&r#   T.List[FindTargetEntry]c                ,   t           j                            d         dd          t           j                                      st	          j        d           g S t	          j        d           fdt          j                  D             S )Nr,   z.dubr   zNo such cache folder:zChecking in DUB cache folderc           	     d    g | ],}|t           j                            |d                    d-S )r.   )rA   rB   )r   r,   rt   )rd   	dir_entrydub_build_pathr   s     r$   
<listcomp>z0DubDependency._cache_entries.<locals>.<listcomp>  sP     
 
 

  $ "^YQaHb c c 
 
 
r#   )r   r,   rt   r   r   rv   r   listdir)r   r   r  s    `@r$   r   zDubDependency._cache_entries  s    hv&6HHw~~n-- 	L0.AAAI
1>BBB
 
 
 
 

  Z77
 
 
 	
r#   r   c           	     8   |dk    rg S | j         j        g}|                     dg          dd         \  }}|dk    rWt          j        dt          j        d                    | j                                        dgz                                  g S t          j
        d|          }|o|                                }|                    dd	          d                             d
d                              dd          }|                    ||g           |S )NrO   	--versionr   r	   zFailed to runr   zv[0-9].[0-9][0-9][0-9].[0-9]ro   r   vrM   )rk   r(   _call_compbinr   rr   rs   rt   r   get_commandrerA   grouprsplitreplaceextend)r   r   r   r   r   	d_ver_regfrontend_versionfrontend_ids           r$   r   z(DubDependency._get_comp_versions_to_find  s    %I./%%{m44QqS9S!88J	#((4;;R;R;T;TXcWd;d2e2e(f(fgggII<cBB	 (00*11#q99!<DDR  b))   "2K!@AAAr#   argsr   T.Optional[T.Dict[str, str]]T.Tuple[int, str, str]c                $   t          | j        t                    sJ t          | j                                        |z   || j                                                  \  }}}|j        |                                |                                fS )N)r   cwd)	r   r   r   r
   r	  r   get_source_dir
returncodestripr   r  r   poutr   s         r$   r   zDubDependency._call_dubbin  sv    $+77777 !8!8!:!:T!AsPTPXPgPgPiPijjj3|SYY[[#))++55r#   c                    t          | j                                        |z   |          \  }}}|j        |                                |                                fS )N)r   )r
   rk   r   r  r  r  s         r$   r  zDubDependency._call_compbin  sL     !:!:!<!<t!CMMM3|SYY[[#))++55r#   c                    dd} |            }|(t          j        dt          j        d                     nB|\  }}t          j        dt          j        |                                          d|z             |S )Nrh   rK   c                    t          dd          } |                                 sd S 	 t          |                                 dgz             dd         \  }}|j        dk    rNt          j        d                    d                    |                                                                d S n# t          t          f$ r Y d S w xY wt          j        d	|                                          }|r|                    d
          }nSt          j        dd                    |                                            d|                                            d S | |fS )NrY   T)r   r  r   r	   z"Found dub {!r} but couldn't run itr   zDUB version (\d+\.\d+\.\d+.*), r   z
Found dub z but couldn't parse version in )r   foundr
   r	  r  r   rv   r   rt   FileNotFoundErrorPermissionErrorr
  rA   r  r  )r   r  r  vermatchr   s        r$   findz&DubDependency._check_dub.<locals>.find  si   $U4888F<<>> t#F$6$6$8$8K=$HII!A#N3<1$$L "$$*F388F4F4F4H4H+I+I$J$JL L L4 %
 &7   tt y!CSYY[[QQH !**v#((63E3E3G3G*H*HvvilirirititvvwwwtF##s   BB3 3CCz
Found DUB:NOz(version %s)rh   rK   )r   ru   redrs   r   )r   r$  r   r   r   s        r$   r   zDubDependency._check_dub  s    	$ 	$ 	$ 	$2 =H\48D>>2222$VVH\49V__->->#?#?#f,. . . r#   )r'   r   rT   rU   rV   rW   )r   r   r   r   rh   r   )
r   r   r   r&   rz   r0   r   r   rh   r   )r   r&   rh   r   )r   r   rh   r   r   )r  r   r   r  rh   r  r&  )r   r   r    rL   r!   r   class_cache_dirrS   r   r   rq   r   r   r   r  r   __classcell__)r   s   @r$   rJ   rJ   @   s)        >BLBBBB!O $ $G    v v v v v vv/ / / /jK' K' K' K'Z
 
 
 
$   .6 6 6 6 6
6 6 6 6 6$ $ $ $ $ $ $ $r#   rJ   )&
__future__r   baser   r   r   	pkgconfigr   mesonlibr
   r   r   r   optionsr   programsr   rM   r   enumr   r
  r   r   typingTTYPE_CHECKINGtyping_extensionsr   rT   r   r   r&   r0   r3   r@   rD   rJ   r"   r#   r$   <module>r5     sE   # " " " " " M M M M M M M M M M * * * * * * U U U U U U U U U U U U       & & & & & &             				 				     ? (++++++))))))' ' ' ' ' ' ' '    i       	       9       )       4   ` ` ` ` `& ` ` ` ` `r#   