
    e*&                       U d dl mZ d dlZd dlZd dlZd dlZddlmZm	Z	m
Z
mZ ddlmZmZmZ ddlmZ ej$                  rqddlmZ dd	lmZmZmZ ej2                  eeeej:                  ed
f   f   Zej:                  ej:                  eef   d
f   Zej2                  ej@                  e   eef   Z! G d dejD                        Z# e#       Z$ e%       Z&de'd<   ddZ(ddddddddddddZ)dd dZ*	 	 	 	 d!dZ+y)"    )annotationsN   )ExternalDependencyDependencyExceptionDependencyMethodsNotFoundDependency   )listifyMachineChoice
PerMachine)mlog)Environment)DependencyFactoryWrappedFactoryFuncDependencyGenerator.c                  6    e Zd ZU ded<   i Zded<   ddZd	dZy)
DependencyPackageszT.Dict[str, PackageTypes]datazT.Dict[str, str]defaultsc                    || j                   v r6| j                   |   }t        j                  d|        | j                  |   S t	        |      )Nzmesonbuild.dependencies.)r   	importlibimport_moduler   KeyError)selfkeymodns      @/usr/lib/python3/dist-packages/mesonbuild/dependencies/detect.py__missing__zDependencyPackages.__missing__$   sJ    $--==%D##&>tf$EF99S>!sm    c                >    || j                   v xs || j                  v S N)r   r   )r   r   s     r   __contains__zDependencyPackages.__contains__,   s    dmm#7sdii'77r   N)r   strreturnPackageTypes)r   objectr$   bool)__name__
__module____qualname____annotations__r   r   r"    r   r   r   r       s    
##!#H#8r   r   z
T.Set[str]_packages_accept_languagec                Z   d| ff}ddl m} t        |      dk(  sJ d       |j                         D ]w  \  }}|dv rt	        |t
              r7|D ]  }t	        |t              rJ  t        t        t        |                  }nt	        |t        t        t        f      sJ g |||f}y |S )Nnamer	   )permitted_dependency_kwargs   z_Extra kwargs have been added to dependency(), please review if it makes sense to handle it here>   nativeversionfallbackrequiredinclude_typeallow_fallbackdefault_optionsnot_found_message)interpreterr0   lenitems
isinstancelistr#   tuple	frozensetr
   r'   int)r/   kwargs
identifierr0   r   valueis          r   get_dep_identifierrF   3   s    %tn/J9*+r1 mlm1lln 2
U  8 8eT" *!!S)))*)GEN34Eec4%56661z1C<1
)2* r   BoostCUDADUBGMockGTestHDF5LLVMMPINetCDFOpenMP	WxWidgets)boostcudadubgmockgtesthdf5llvmmpinetcdfopenmp	wxwidgetsc           	     b   | sJ |j                  dd      }t        |t              st        d      t        |j                  dd      t              st        d      | j                         }|t        vrd|v rt        |  d      t        |j                  d	d      t        t        f      st        d
      t        j                  ||      }|j                  dd      rt        j                  nt        j                  }t        dd      |   dz   }|t        | |||      }g }	g }
d}|D ]*  }	  |       }|j                          |
j                  |       |	j                  d        |j!                         }|rd|z   dz   }d|v r|d|j"                  z   dz   z  }|j%                         sg }|j&                  r.|j                  t)        j*                  |j&                               |j-                         }|r|j                  d|z   dz          t)        j.                  |t)        j0                  |      |dz   t)        j2                  d      g|  |c S  |
D cg c]#  }|j;                         s|j;                         % }}|rt)        j@                  |      }nd}t)        j.                  |t)        j0                  |      |dz   t)        jB                  d      |rd| dnd       |r+|	r
|	d   r|	d   t        d|  d|rd | z         dz         tE        | |      S # t        $ r}}t        |t4        j6                        sJ d       d|  d|j8                  j;                         d| }t)        j<                  |       |f|_        |	j                  |       Y d }~zd }~ww xY wc c}w )!Nr5   Tz%Keyword "required" must be a boolean.method z"Keyword "method" must be a string.languagez7 dependency does not accept "language" keyword argumentr3   z)Keyword "Version" must be string or list.r2   Fz
Build-timezRun-timez dependency(z) zfor  )zfound:YESzfor mypyzDependency lookup for z with method z	 failed: NOz(tried r   zDependency "z" not foundz, tried )#getr=   r'   r   r#   lowerr-   r>   display_name_mapr   BUILDHOSTr   _build_external_dependency_list_check_versionappendlog_detailsr`   foundr3   r   normal_cyanlog_infologboldgreen	functoolspartialfunc	log_trieddebugargsformat_listredr   )r/   envrB   
candidatesr5   lnamedisplay_namefor_machine	type_textpkg_excpkgdepdetailscdinforq   e	bettermsgtried_methodstrieds                       r   find_external_dependencyr   ]   s   K4zz*d+Hh%!"IJJfjj2.4!"FGGJJLE--*2F!TF*a"bccfjjB/#t=!"MNN $''u5L)/He)D-%%-J\J\K<4[AMQI 4T3VT
+-G*,FG !	AMM! NN4 mmoG-$.V#6AJJ.44 wwy-/99KK 0 0 ;<::<KKh 45DIIl$;Wx=OQUQ[Q[\aQbjeijC!H -3DqakkmQ[[]DMD  /HHY		,/81CTXXd^#(wugQb2  wqz!* "Lk"B9>XeW#5#H I 	IDF#H I 	I dC((g # 	a!2!23?Z?30mAFFDTDTDVCYYbcdbefIJJy!\AFNN1	< Es%   /(L#N,2N,#	N),A2N$$N)c                   d|v r@|d   t         D cg c]  }|j                   c}vrt        dj                  |d               | j	                         }|t
        v rt        t
        |   t              rIt        j                  dt
        |         }t        |t              rt        j                  |||      }|g}S t        j                  dt
        |         }	 |	|||      }|S g }
|j                  dd      dk(  rg d}n|d   g}d|v r-dd	lm} |
j#                  t        j                  || ||             d
|v r-ddlm} |
j#                  t        j                  || ||             d|v rJ|j(                  |   j+                         r-ddlm} |
j#                  t        j                  || ||             d|v r-ddlm} |
j#                  t        j                  || ||             |
S c c}w )Nr^   zmethod {!r} is invalidzT.Type[ExternalDependency]z.T.Union[DependencyFactory, WrappedFactoryFunc]auto)
pkg-configextraframeworkcmakerT   r   )DubDependencyr   )PkgConfigDependencyr   )ExtraFrameworkDependencyr   )CMakeDependency)r   rD   r   formatrg   packagesr=   typeTcast
issubclassr   ru   rv   rf   rT   r   rm   	pkgconfigr   machines	is_darwin	frameworkr   r   r   )r/   r}   r   rB   r   r   entry1rw   depentry2r~   methodsr   r   r   r   s                   r   rk   rk      s    6fX.HY6Z1qww6ZZ!":"A"A&BR"STT JJLE huot,VV8(5/JF&"45=F=N=NvWZ\b=cf 
 VVLhW\o^Fk62C
02Jzz(F#v-; (#$ &)++M4fMN w2)++,?sFST 7"<<$..0;i//0H$PSU[\]
 '*)++OT3OPg 7[s   G+)r/   r#   rB   T.Dict[str, T.Any]r$   z
'TV_DepID'r!   )
r/   r#   r}   'Environment'rB   zT.Dict[str, object]r~   z)T.Optional[T.List['DependencyGenerator']]r$   z1T.Union['ExternalDependency', NotFoundDependency])
r/   r#   r}   r   r   r   rB   r   r$   zT.List['DependencyGenerator']),
__future__r   collectionsru   r   typingr   baser   r   r   r   mesonlibr
   r   r   r_   r   TYPE_CHECKINGenvironmentr   factoryr   r   r   Unionr#   r'   rA   TupleTV_DepIDEntryTV_DepIDTyper%   UserDictr   r   setr-   r+   rF   rh   r   rk   r,   r   r   <module>r      s   # ( (  ` ` 9 9 ??)SSGGCsAGGCH,==>MwwqwwsM12C78H77166"457HJ\\]L8-- 8  (+ : -:  U)p6,>6C`6r   