
    eޙ                      U d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z
ddlmZmZmZmZmZmZmZmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZmZmZmZ ddlmZ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*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0 ddl,m1Z1m2Z2m3Z3 ddl4m5Z5 ddlm6Z6m7Z7m8Z8m9Z9m:Z:m;Z; ddl<m=Z= ddl>m?Z? e
j                  rddlAmBZBmCZC ddlmDZD ddlmEZE ddlFmGZG ddlmHZH ddl,mIZImJZJ ddlmKZK ddl<mLZL  G d deC      ZM G d d eC      ZN G d! d"eC      ZO G d# d$eC      ZP G d% d&eC      ZQ G d' d(eC      ZR G d) d*eC      ZS G d+ d,eC      ZT G d- d.eC      ZU G d/ d0eC      ZV G d1 d2eV      ZW G d3 d4eV      ZXe
j                  eeLe=f   ZZ e2d5e[d67      Z\d8e]d9<    e2d: e3e^e_      g d6;      Z`d<e]d=<    e(j                  d>?      e' e2d@e_e)f       e2dAe_e)f      gZbdBe]dC<   dIdDZcdEZd G dF dGe      ZedJdHZfy)KzThis module provides helper functions for Gnome/GLib related
functionality such as gobject-introspection, gresources and gtk-doc    )annotationsN   )ExtensionModule	GirTargetGResourceHeaderTargetGResourceTarget
ModuleInfoModuleReturnValueTypelibTarget
VapiTarget   )build)interpreter)mesonlib)mlog)CustomTargetCustomTargetIndex
ExecutableGeneratedListInvalidArguments)
DependencyInternalDependency)PkgConfigDependencyPkgConfigInterface)
DEPENDS_KWDEPEND_FILES_KWENV_KWINSTALL_DIR_KW
INSTALL_KWNoneTypeDEPENDENCY_SOURCES_KWin_set_validator)	noPosargsnoKwargs
FeatureNewFeatureDeprecated)typed_kwargs	KwargInfoContainerTypeInfo)typed_pos_args)MachineChoiceMesonException
OrderedSet
Popen_safe	join_args	quote_arg)OverrideProgram)read_linguas)Literal	TypedDict)ModuleState)BuildTarget)Compiler)Interpreter)TYPE_varTYPE_kwargs)FileOrString)ExternalProgramc                  @    e Zd ZU ded<   ded<   ded<   ded<   ded<   y)	PostInstallboolglib_compile_schemasT.List[str]gio_querymodulesgtk_update_icon_cacheupdate_desktop_databaseupdate_mime_databaseN__name__
__module____qualname____annotations__     :/usr/lib/python3/dist-packages/mesonbuild/modules/gnome.pyr>   r>   ;   s     ""%%##!%%""rL   r>   c                  "    e Zd ZU ded<   ded<   y)CompileSchemasr?   build_by_defaultT.List[FileOrString]depend_filesNrF   rK   rL   rM   rO   rO   B   s    **rL   rO   c                  6    e Zd ZU ded<   ded<   ded<   ded<   y)YelprA   	languagesmediasourcesr?   symlink_mediaNrF   rK   rL   rM   rT   rT   G   s    rL   rT   c                  r    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ed<   ded<   y)CompileResourcesr?   rP   T.Optional[str]c_namez?T.List[T.Union[mesonlib.File, CustomTarget, CustomTargetIndex]]dependenciesexportrA   
extra_argsgresource_bundleinstallinstall_dirinstall_header
source_dirNrF   rK   rL   rM   rZ   rZ   N   s<    UU$$rL   rZ   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ed<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   y)GenerateGirr?   rP   zT.List[Dependency]r]   rA   export_packagesr_   fatal_warningsheaderidentifier_prefixz'T.List[T.Union[build.IncludeDirs, str]]include_directoriesT.List[T.Union[str, GirTarget]]includesra   r[   install_dir_girinstall_dir_typelibz9T.List[T.Union[build.SharedLibrary, build.StaticLibrary]]	link_withstr	namespace	nsversion3T.List[T.Union[FileOrString, build.GeneratedTypes]]rW   symbol_prefixNrF   rK   rL   rM   rf   rf   [   se    (($$&&DD11((,,LLDD""rL   rf   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
ed<   d
ed<   d
ed<   ded<   d
ed<   d
ed<   ded<   ded<   ded<   ded<   ded<   d
ed<   ded<   ded<   y) GtkDoc'T.List[T.Union[str, build.IncludeDirs]]src_dirrq   	main_sgmlmain_xmlmodule_versionrr   z&Literal['xml', 'smgl', 'auto', 'none']moderA   	html_args	scan_argsscanobjs_argsfixxref_args	mkdb_argsz3T.List[T.Union[build.GeneratedTypes, FileOrString]]content_filesignore_headersrb   r?   checkra   rQ   gobject_typesfilehtml_assetsexpand_content_filesc_argsrk   ET.List[T.Union[Dependency, build.SharedLibrary, build.StaticLibrary]]r]   NrF   rK   rL   rM   rw   rw   o   s    8844""!!JJ##  //))22DD[[rL   rw   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ed<   ded<   ded<   y)GdbusCodegenrQ   rW   rA   r_   r[   interface_prefixrr   r?   object_managerrP   zT.List[T.List[str]]r   rc   rb   docbookz,Literal['all', 'none', 'objects', 'default']autocleanupNrF   rK   rL   rM   r   r      sD    %%))""(($$  AArL   r   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ed<   ded<   ded<   ded<   ded<   ded<   y)
GenMarshalr[   build_alwayszT.Optional[bool]build_always_stalerP   zT.List[mesonlib.File]rR   rA   r_   rb   r?   rc   internalnostdincprefixskip_sourcerQ   rW   stdincvalist_marshallersNrF   rK   rL   rM   r   r      sS    %%,,**++$$%%  rL   r   c                  T    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<   y)GenerateVapirl   rW   r[   rb   r?   ra   rA   	vapi_dirsmetadata_dirsgir_dirsz(T.List[T.Union[str, InternalDependency]]packagesNrF   rK   rL   rM   r   r      s+    00$$""::rL   r   c                  6    e Zd ZU ded<   ded<   ded<   ded<   y)_MkEnumsCommonr?   rc   r[   rb   rj   ru   NrF   rK   rL   rM   r   r      s    $$**&&rL   r   c                  @    e Zd ZU ded<   ded<   ded<   ded<   ded<   y)	MkEnumsSimplerQ   rW   rq   header_prefix	decoratorfunction_prefixbody_prefixNrF   rK   rL   rM   r   r      s    %%rL   r   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ed<   ded<   ded<   ded<   y)MkEnumsrt   rW   zT.Optional[FileOrString]
c_template
h_templater[   commentseprodfheadfprodftailvheadvprodvtailz=T.List[T.Union[BuildTarget, CustomTarget, CustomTargetIndex]]dependsNrF   rK   rL   rM   r   r      sJ    DD,,,,!!NNrL   r   rP   TdefaultzKwargInfo[bool]_BUILD_BY_DEFAULTr_   r   listifyzKwargInfo[T.List[str]]_EXTRA_ARGS_KWrc   namerj   ru   zT.List[KwargInfo]_MK_ENUMS_COMMON_KWSc                V   d}| syt        d | D              rt        |       dk(  ry|S t        d | D              s/t        |       D ]   \  }}t        |t              rd|dz    dc S  yt        |       D ]2  \  }}t        |      dk7  st        d	 |D              r'd|dz    d
| c S  y)z+Validate gdbus-codegen annotations argumentz8must be made up of 3 strings for ELEMENT, KEY, and VALUENc              3  <   K   | ]  }t        |t                y wN
isinstancerq   .0annots     rM   	<genexpr>z(annotations_validator.<locals>.<genexpr>   s     =Zs#=      c              3  <   K   | ]  }t        |t                y wr   )r   listr   s     rM   r   z(annotations_validator.<locals>.<genexpr>   s     BUE4(Br   zelement r   z must be a listc              3  <   K   | ]  }t        |t                y wr   r   )r   is     rM   r   z(annotations_validator.<locals>.<genexpr>   s     )L*Q*<)Lr    )alllen	enumerater   r   )r   badlistcr   s       rM   annotations_validatorr      s     IG	==	={q NBkBB!+. 	7HAueT*!!A#o66	7  "+. 	2HAu5zQc)Le)L&L!!A#ay11	2 rL   z	>= 2.51.1c            !          e Zd Z ed      Zd fdZddZej                  dd       Z	e
dd       Ze
dd       Z ed eded	
       ed eee      g d       eded	
       eded	d       eded	d            e edd      dd                     Z edeeej.                  eeef       edeee ej<                  dd      e edee f       ed eeej.                  eef      g d       eded	d       eded	d       ed eee      g d            	 	 	 	 dd              Z!e
	 	 	 	 	 	 	 	 	 	 dd        Z"	 	 d	 	 	 	 	 	 	 	 	 dd!Z#	 	 	 	 	 	 	 	 	 	 	 	 dd"Z$	 	 d	 	 	 	 	 	 	 	 	 	 	 dd#Z%	 	 dd$Z&dd%Z'dd&Z(dd'Z) e*jV                  d()      dd*       Z,e
	 	 dd,       Z-e
dd-       Z.e
dd.       Z/e
dd/       Z0e
	 	 dd0       Z1e
dd1       Z2e
	 	 dd2       Z3e
	 	 	 	 	 	 	 	 dd4       Z4e
	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd5       Z5e
	 	 	 	 	 	 	 	 dd6       Z6e
	 	 	 	 	 	 	 	 dd7       Z7e
dd8       Z8e
dd9       Z9e
dd:       Z: ed;e;e<jz                  e<j|                  fd<=       ed;eej=                  d>?      e e?j<                  d@?       ed eee@      g d       edA eee      g d       edBed	dC       edD eee      g d       edE eee      g d       edF eeee<j                  f      g d       ed+ eeeeBf      g d       edGee fdH?       edIeee fd	dJidK L       edMee fdH?       edNeee fd	dOidP L       edQ eee<jz                  e<j|                  f      g d       edRedS       ed3edS       edT eeeej.                  eeef      g d       edU eee      g d            	 	 	 	 ddV              ZCe edWej=                  d>?      eD      ddX              ZE edYeeZ       edY ed[ eee      dg d\d]^       ed_ eee      dg `       edT eee      dg `       edaed
            ddb              ZF edce       edc edd eee      deg df       edged	dh       edi eeeej.                  eeef      g d       ed eee@e<jz                  e<j|                  f      dg `       edj eeeej.                  f      g d       edk eee      g d       edl eeeej.                  f      g d       edm eee      g d       edn eeeej.                  f      g d       edo eee      g d       edF eeee<j                  f      dg `       edped
       edq eee      g d       edree f       edsee f       edt eee      g d       eduedvd eGh dw      x       edyedzde       edRedzd       ed{ eee      g d       ed| eee      g d       ed} eeee<j                  f      dd~            dd              ZH	 	 	 	 	 	 	 	 ddZIeJ ede      dd              ZK edeeej.                  eeefg       edej=                  d>?       eLj<                  d?       ed eee      dg df       edee f       edRee f       eded	
       ed eeeef      g eMd        eded	d       edee f       ededd eGh d      x       ej<                  d?            	 	 	 	 dd              ZN ede       edgeOeP edT eeeej.                  eeef      dd~       edeej.                  e f       edeej.                  e f       edee f       edee f       edee f       edee f       edee f       edee f       edee f       edee f       dd              ZQ edd       ede       edgeO edT eeeej.                  f      dd~       ededz
       ededz
       ededz
       ededz
       dd                     ZRd	d(d(d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZS ede       ed eDj<                  dH?       ePj<                  dH?       ej<                  d      e ed eee      dg `       eded	
       eded	
       edee f       eded	
       edT eeeej.                  fd	      dd~       eded	
       eded	
            dd              ZT	 	 ddZUddZVddZW ede       edee edT eeeeBfd	      dd~       ed eee      dg `       ed eee      dg `       ed eee      dg `       ed eeeeXf      dg `            dd              ZY xZZS )GnomeModulegnomec                   t         |   |       d | _        d | _        d | _        d| _        g | _        d| _        d| _        d| _	        d | _
        d | _        | j                  j                  | j                  | j                  | j                   | j"                  | j$                  | j&                  | j(                  | j*                  | j,                  | j.                  | j0                  | j2                  d       y )NF)post_installcompile_resourcesgenerate_gircompile_schemasyelpgtkdocgtkdoc_html_dirgdbus_codegenmkenumsmkenums_simple
genmarshalgenerate_vapi)super__init__gir_dep	giscanner
gicompilerinstall_glib_compile_schemasinstall_gio_querymodulesinstall_gtk_update_icon_cacheinstall_update_desktop_databaseinstall_update_mime_databasedevenvnative_glib_versionmethodsupdater   r   r   r   r   r   r   r   r   r   r   r   )selfr   	__class__s     rM   r   zGnomeModule.__init__  s    %/3\`]a,1)57%-2*/4,,1)AE48  --!%!7!7 --#33IIkk#33!//||"11//!//
 	rL   c                    | j                   gt        d|j                  ddd      }|j                         r!|j	                         | _         | j                   S t        j                  d       d| _         | j                   S )Nglib-2.0TF)nativerequiredz]Could not detect glib version, assuming 2.54. You may get build errors if your glib is older.z2.54)r   r   environmentfoundget_versionr   warning)r   stateglib_deps      rM   _get_native_glib_versionz$GnomeModule._get_native_glib_version!  s}    ##+*:u7H7H6:+NPH~~+3+?+?+A(
 '''  O P+1('''rL   c                    t        j                  | j                  |      t              s-t	        j
                  dt	        j                  d      dd       y y )NztGLib compiled dependencies do not work reliably with 
the current version of GLib. See the following upstream issue:z1https://bugzilla.gnome.org/show_bug.cgi?id=774368TFoncefatal)r   version_comparer   gresource_dep_needed_versionr   r   boldr   r   s     rM   __print_gresources_warningz&GnomeModule.__print_gresources_warning-  sK    ''(E(Ee(L(DFLL Z#VW"%1FrL   c                 \    t        j                  dt        j                  d      dd       y )NzCode generated with gdbus_codegen() requires the root directory be added to
  include_directories of targets with GLib < 2.51.3:z/https://github.com/mesonbuild/meson/issues/1387TFr  )r   r   r  rK   rL   rM   _print_gdbus_warningz GnomeModule._print_gdbus_warning6  s&     LYYPQe	-rL   c           	     l    ddddddddd}||   }|j                  dd      }| j                  |||      S )Nzgio-2.0r   gobject-introspection-1.0)gio-querymodulesglib-compile-schemasglib-compile-resourcesgdbus-codegenglib-genmarshalglib-mkenumsg-ir-scannerg-ir-compiler-_)replace	find_tool)r   tooltool_mapdepnamevarnames        rM   
_find_toolzGnomeModule._find_tool=  sQ     !*$-&/&)&78	
 4.,,sC(tWg66rL   zgnome.post_installr@   Fr   rB   Tr   rC   rD   z0.59.0)r   sincerE   z0.64.0z0.57.0c                   g }t         j                  j                  |j                  j	                         |j                  j                               }|d   r{| j                  sod| _        | j                  |d      }t         j                  j                  |dd      }|j                  j                  ||g      }d|_
        |j                  |       |d   D ]  }	|	| j                  vs| j                  j                  |	       | j                  |d      }t         j                  j                  |j                  j	                         |	      }
|j                  j                  ||
g      }d|_
        |j                  |        |d   r| j                  sd| _        |j                  d	d
      }t        |t               xs |j#                         }|s|j                  d      }t         j                  j                  |dd      }|j                  j                  |ddd|g      }d|_
        |j                  |       |d   rz| j$                  snd| _        |j                  d      }t         j                  j                  |d      }|j                  j                  |d|g      }d|_
        |j                  |       |d   ry| j&                  smd| _        |j                  d      }t         j                  j                  |d      }|j                  j                  ||g      }d|_
        |j                  |       t)        d |      S )Nr@   Tr  r   schemasrB   r  rC   zgtk4-update-icon-cacheFr   zgtk-update-icon-cacheiconshicolor-qz-tz-frD   zupdate-desktop-databaseapplicationsrE   zupdate-mime-databasemime)ospathjoinr   
get_prefixget_datadirr   r  backendget_executable_serialisationskip_if_destdirappendr   r   find_programr   r   r   r   r   r
   )r   r   argskwargsrvdatadir_absprog
schemasdirscriptd	moduledirr   icondirappdirs                 rM   r   zGnomeModule.post_installM  s    :<ggll5#4#4#?#?#A5CTCTC`C`Cbc()$2S2S04D-??5*@ADk:yIJ]]??z@RSF%)F"IIf*+ 	"A555--44Q7u.@AGGLL):):)E)E)GK	CCT9DUV)-&		&!	" )*43U3U15D.%%&>%ODtZ0@DJJLE))*ABggll;CG]]??tTSWY`@abF%)F"IIf+,T5Y5Y37D0%%&?@DWW\\+~>F]]??tV@TUF%)F"IIf()$2S2S04D-%%&<=DWW\\+v6F]]??vOF%)F"IIf r**rL   zgnome.compile_resourcesrc   z0.37.0)r   r  r\   r]   r^   r`   rd   c                	   | j                  |       | j                  |      }| j                  |d      }|dg}|d   }|d   }|\  }	}
g }g }|D ]  }t        |t        j
                        r|j                  |j                         9|j                  |       |j                  |j                                t	        j                  |t              rd}t        |       t	        j                  |t              st        |
t        j
                        r|
j                  rNt        j                  j                  |j                   j#                         |
j                  |
j$                        }nt        j                  j                  |
j                  |
j$                        }nPt        |
t&        t(        t*        f      rt        d      t        j                  j                  |j                  |
      }| j-                  ||||      \  }}}|D cg c]7  }t        j                  j                  |j.                  |j                  |      9 }}||z  }|j                  t        j                  j                  |j.                  |j                               t1        |      D ]	  }|d|gz  } |d   r
|d	|d   gz  }|d
   s|dgz  }|g dz  }||d   z  }|d   }|r|	 d}|	 d}nyd|j                   j2                  j4                  j6                  v r|	 d}|	 d}nBd|j                   j2                  j4                  j6                  v r|	 d}|	 d}nt        d      |d   r|st        d      |d   }|r|rt        d      |r|d
   st        d      d }t	        j                  |t              s|}n!| d}g }t9        j8                  |      ddgz   }t;        ||j                  |j<                  |j                   ||
g|g|d    |||d   |d!   r|d!   gng d"g#      }|rt?        ||g      S |d!   xs8 |j                   j2                  jA                  t	        jB                  d$            }t        |tD              sJ d%       tG        |	 d&|j                  |j<                  |j                   ||
g|	 d'g|d    |||gd(g)      }||g}t?        ||      S c c}w )*Nr  @INPUT@rd   r]   zThe "dependencies" argument of gnome.compile_resources() cannot
be used with the current version of glib-compile-resources due to
<https://bugzilla.gnome.org/show_bug.cgi?id=774368>a4  Resource xml files generated at build-time cannot be used with gnome.compile_resources() in the current version of glib-compile-resources because we need to scan the xml for dependencies due to <https://bugzilla.gnome.org/show_bug.cgi?id=774368>
Use configure_file() instead to generate it at configure-time.--sourcedirr\   z--c-namer^   
--internal)z
--generatez--target@OUTPUT@r_   r`   z
.gresource
_gresourcer   .c_ccppz.cpp_cppzFCompiling GResources into code is only supported in C and C++ projectsra   zGThe install kwarg only applies to gresource bundles, see install_headerrc   z<The install_header kwarg does not apply to gresource bundlesz7GResource header is installed yet export is not enabledz.dz--dependency-filez	@DEPFILE@rP   rb   runtime)rP   depfilerR   extra_dependsra   rb   install_tag
includedirfor mypy_h.hdevel)rP   rH  ra   rb   rI  )$&_GnomeModule__print_gresources_warningr   r  r   r   Filer/  subdir
get_subdirr  r  r,   is_builtr'  r(  r)  r   get_build_dirfnamer   r   r   _get_gresource_dependenciesbuild_to_srcr-   coredata	compilershostcopyr   
subprojectr
   
get_option	OptionKeyrq   r   )r   r   r1  r2  glib_versionglib_compile_resourcescmdsource_dirsr]   target_name
input_filesubdirsr   depmifilerR   r8  rd   	gresourceoutputr   rc   rG  
target_cmdtarget_crb   target_hr3  s                                rM   r   zGnomeModule.compile_resources  s     	''.44U;!%8P!Q1G0S\*n-"&Z  "DF 
	,C#x}}-szz*s#s~~/0//>Z[NA )++
	, ''6RS
 *hmm4 &&GGLL):):)H)H)JJL]L]_i_o_opEGGLL):):J<L<LMEJ7H-(XY$ &b c c U\\:>-1-M-Muk<.9*L'7 S^^Qrww||E$6$6aH^^w277<<(:(:ELLIJ$[1 	/JM:..C	/ (Jx 011ChL>!C55vl##-.	#}J/F!]*-De''00::???'=+%b)%++44>>CCC'=-%d+$%mnn)Y !jkk 01i !_``&"2 !Z[[#'''6RSJmGL3+>*LLJ"LLLH#$67%!9%39-3H./b"
" $Xz::]+vu/@/@/I/I/T/TU]UgUghtUu/v+s+7Z7+(m2LLL}B #$67!"$ 	
 ! R((m _s   <Sc           	        d|dg}|d| j                   gz  }|D ]1  }|dt        j                  j                  | j                   |      gz  }3 	 t	        || j
                  j                               \  }}}|j                  dk7  r@d|d    d	| }	t        j                  |	       t        j                  |j                  |      |j                  d
      d d }
g }g }g }|
j!                         D ]  }t        j                  j#                  |      }|D ]  }t%        |t&        j(                        rO|j*                  |k7  r.|
j-                  |       |j/                  |       |j/                  |j                           t%        |t0        t2        f      sd }|j5                         D ch c]#  }|t        j                  j#                  |      f% }}|D ]  \  }}||k(  s|} n ||
j-                  |       |j/                  |       |j/                  |j7                                 A 	 t&        j(                  j9                  | j
                  j                         d|      }|
j-                  |       |j/                  |        |j;                  |
       |||fS # t        t        f$ r t        d      w xY wc c}w # t        $ r t        d| d| d      w xY w)Nr  z--generate-dependenciesr>  )cwdz)Could not execute glib-compile-resources.r   z6glib-compile-resources failed to get dependencies for r   z:

.z
Resource "z" listed in "z" was not found. If this is a generated file, pass the target that generates it to gnome.compile_resources() using the "dependencies" keyword argument.)rQ  r'  r(  r)  r.   r   get_source_dirFileNotFoundErrorPermissionErrorr,   
returncoder   r   
subprocessCalledProcessErrorsplitr[  basenamer   r   rP  rU  remover/  r   r   get_outputsrR  from_source_fileextend)r   rd  rb  r]   ra  rd   pcstdoutstderrrg  raw_dep_filesr   re  	dep_filesresfileresbasenamerf  rU  ooutputsbaseofs                         rM   rV  z'GnomeModule._get_gresource_dependencies   s    ((*
 	u||,,% 	KJM277<<j#IJJC	K	N!+CU5F5F5U5U5W!XB ==AHQPSTZS[\ALLO//sCC%+\\$%7%<DF!35	$))+ )	$G''**73K# '$c8==1yyK/ !((1$$S)NN3::.l4E%FG EADARSA277#3#3A#67SGS$+ "5 K/$%E!" (%,,W5s+s~~'78''$:- 66u7H7H7W7W7Y7:GEA $$W-  #S)	$T 	''7**o "?3 	N !LMM	N0 T, & -($WI]:, G, ,- --s   )J' -(K39K
'K
K&c                   g }t        |      }t        |t        j                        rt        j
                  j                  |j                  j                         |j                  j                  |            }|j                  d|z          |r|j                  d|z          |j                  |       |j                  j                  |      D ]e  }	t        j
                  j                  |j                  j                         |	      }	|j                  d|	z          |sR|j                  d|	z          g |r3| j                  d      r"|j                  d|j                  z          ||fS |j                  d|j                  z          ||fS )N-Lz-Wl,-rpath,--extra-library--extra-library=-l)r   r   r   SharedLibraryr'  r(  r)  r   rT  r,  get_target_dirr/  determine_rpath_dirs_gir_has_optionr   )
r   r   libr   include_rpathuse_gir_argslink_commandnew_dependslibdirr8  s
             rM   _get_link_argszGnomeModule._get_link_argsj  sQ    %'7mc5../WW\\%"3"3"A"A"CU]]EaEabeEfgFv.##MF$:;s#
 ]]77< ;GGLL!2!2!@!@!BAF##D1H-  ''(9:	;
 D001BC 2SXX => [(( sxx0[((rL   c           	     	   t               }t               }t               }t               }	t        j                  |      }t        |      }|D ]L  }
t	        |
t
              r?|
j                  ddd      }|r)t	        |t              sJ d       |	j                  |g       t	        |
t              r|j                  |
j                                |j                  |j                  |
j                               |
j                  D ]  }t	        |t        j                        s| j!                  ||||      \  }}|j                  |       | j#                  |j%                         ||||      }|j                  |d          |j                  |d          |j                  |d          |	j                  |d          |d	   } | j#                  |
j&                  ||||      }|j                  |d          |j                  |d          |j                  |d          |	j                  |d          |d	   }|
j(                  D ]i  }t	        |t*              s|	j                  t,        j.                  j1                  |j2                  j5                         |j7                               g       k gt	        |
t
              rQ|j                  |
j                                t9        |
j;                  d
            }|D ]  }t,        j.                  j=                  |      rt?        |
dd      rt,        j.                  jA                  |      }|j                  d| g       |r|j                  d| g       t,        j.                  jC                  |      }|jE                  d      r|dd  }|jG                  d      d   }d| }|jE                  d      r|dk(  r|j                  |tI        |      fg       |j                  |g        t	        |
t        jJ                  t        j                  f      rA|j                  |j                  |
jM                                      |jO                  |
       4tQ        jR                  d|
d       O |r%| jU                  d      rdd} ||      } ||      }||||	|fS )Ngirdir 	pkgconfigr   default_valuerK  r   r   r   r      T)raw
is_libtoolFr  z-Wl,-rpath r  z.sor  z-Wz
-frameworkzdependency z not handled to build gir filesr  c                    t               }| D ]G  }t        |t              r$|j                  d      r|j	                  ddd      }|j                  |       I |S )Nr  r  r   )r-   r   rq   
startswithr  add)ldflagsfixed_ldflagsldflags      rM   fix_ldflagsz<GnomeModule._get_dependencies_flags_raw.<locals>.fix_ldflags  sX    MW\% .F!&#.63D3DT3J!'6H!!L!%%f-. %$rL   )r  z+T.Iterable[T.Union[str, T.Tuple[str, str]]]returnz+OrderedSet[T.Union[str, T.Tuple[str, str]]])+r-   r   r   r   r   r   get_variablerq   r   r   get_compile_argsget_include_argsrk   	librariesr   r  r  _get_dependencies_flags_rawget_external_depsext_depsrW   r   r'  r(  r)  r   rT  rR  iterget_link_argsisabsgetattrdirnamerz  r  ry  nextStaticLibraryget_include_dirsr/  r   logr  )r   depsr   r   r  r  cflagsinternal_ldflagsexternal_ldflagsgi_includesrf  r  r  _ldlibdepflagsextdepflagssourcer  flaglib_dirlibnamer  s                         rM   r  z'GnomeModule._get_dependencies_flags_raw  sK    #-, ISHR'1|%w- >	C#z*))Hx_a)b%fc2>J>2&&x0#12c2245e44S5L5LMN== 
1C!#u':':;'+':':5#wP]'^W(//4&*&F&FsG\G\G^`egnp}GS'Uk!n5(//A?(//A?#**;q>:"-a.
1 #>>s||UT[]j?KMk!n- ''A7 ''A7"";q>2%a.!kk CF!&)4#**BGGLL9J9J9X9X9Z,2,=,=,?-A ,B CC
 C,c2245s00T0:;# 8Dd+#Cu="$''//$"7(//2gY0@A(,33{7)5L4MN"$''"2"24"8"--e4&-abkG")--"6q"9!#G9~t,  |+(//$W1F0GH(//7+8, C%"5"5u7J7J!KLe44S5I5I5KLMs#;sg-LMN}>	@ D001BC%  ++;<*+;<')9;OOrL   c                6   | j                  |||||      \  }}}}	}g }
g }|D ]5  }t        |t              r|
j                  |       %|
j	                  |       7 |D ]5  }t        |t              r|j                  |       %|j	                  |       7 ||
||	|fS r   )r  r   rq   r/  r~  )r   r  r   r   r  r  r  internal_ldflags_rawexternal_ldflags_rawr  r  r  r  s                rM   _get_dependencies_flagsz#GnomeModule._get_dependencies_flags  s     TXSsSstxz  BI  KX  Zf  TgP$&:K(*(* + 	0F&#& ''/ ''/		0
 + 	0F&#& ''/ ''/		0 ')9;OOrL   c                l   t        |t        t        j                  t        j                  f      s$t        d| dt        |      j                         d}t        |t        j                        rDt        j                  | j                  |      d   j                         |      st        d|z         |S )Nz4Gir target must be an executable or library but is "z
" of type z>=1.58.1r   zEStatic libraries can only be introspected with GObject-Introspection )r   r   r   r  r  r,   typerG   r   r  _get_gir_depr   )r   	girtargetr   STATIC_BUILD_REQUIRED_VERSIONs       rM   _unwrap_gir_targetzGnomeModule._unwrap_gir_target   s    )j%2E2E&+&9&9&; < #WXaWbblmqr{m|  nF  nF  mG  "H  I  I(2%i%"5"57''  '*668,. !!h  lI  "I  J  JrL   c                    | j                   t        j                         | _         | j                   j                  ||g       y r   )r   r   EnvironmentVariablesprepend)r   r  values      rM   _devenv_prependzGnomeModule._devenv_prepend  s2    ;;"779DKGeW-rL   c                h    | j                   &|j                   j                  | j                          y y r   )r   r/  )r   bs     rM   postconf_hookzGnomeModule.postconf_hook  s%    ;;"HHOODKK( #rL   c                    | j                   sD|j                  d      | _         | j                  |d      | _        | j                  |d      | _        | j                   | j                  | j                  fS )Nr  r  r  )r   
dependencyr  r   r   r  s     rM   r  zGnomeModule._get_gir_dep  sY    || ++,GHDL!__UNCDN"ooe_EDO||T^^T__<<rL   N)maxsizec                    | j                   }t        |t              r|dv sJ yt        |j	                         dgz   t
        j                        \  }}}|j                  dk(  xr ||v S )N>   r  --sources-top-dirsTz--help)r  r   )r   r   r1   r.   get_commandrw  STDOUTrv  )r   optionexepr  r  s         rM   r  zGnomeModule._gir_has_option   se    nnc?+FFFFS__.(;JDUDUV1a||q 0Vq[0rL   rm   c           	        g }g }g }|D ]  }t        |t              r
|d| gz  }t        |t              s.|j                  t        j
                  j                  | j                  j                         |j                                      |j                  dt        j
                  j                  |j                         |j                                       |j                  |        |||fS )Nz
--include=z--include-uninstalled=)r   rq   r   r/  r'  r(  r)  r   rT  rR  get_basename)r   rm   retgir_inc_dirsr   incs         rM   _scan_includezGnomeModule._scan_include+  s     $&%' 	$C#s#*SE*++C+$$RWW\\%2C2C2Q2Q2SUXUcUcUe%fg

3BGGLLAQSVScScSe4f3ghis#	$ L'))rL   c                    g }|D ]`  }| j                   j                  j                  t        j                  |      }|D ]%  }|j                  d      s|j                  |       ' b |S )Nr  )r   rX  get_external_link_argsr+   HOSTr  r/  )r   langsr  lang	link_argslink_args         rM   _scan_langszGnomeModule._scan_langs<  sk     	)D))22II-J\J\^bcI% )&&t,JJx()	) 
rL   c                   g }|D ]f  }t        |t              r|d|gz  }t        j                  j	                  |j                         |j                               }| j                  j                         }t        |t        j                        rD|dj                  |t        j                  j                  |            gz  }|j                         }n$t        j                  j	                  | d|       }|d|gz  }| j                  j                  |      D ]N  }t        j                  j	                  | j                  j                         |      }|j!                  d|z          P i |S )Nz	--programz-L{}/{}/z	--libraryr  )r   r   r'  r(  r)  rR  get_filenamer   rT  r   r  formatr  r  r,  r  r/  )r   
girtargetsr  r  libpath
build_rootr  r8  s           rM   _scan_gir_targetszGnomeModule._scan_gir_targetsH  s:   02# 	)I)Z0Y// '',,y';';'=y?U?U?WX #..<<>
i)<)<= I,,Z9QRSSC'446G ggllj\7)+DEGW--
 ;;IF )AU%6%6%D%D%FJAJJtax()1	)8 
rL   c                    g }| D ]=  }|j                   j                         D ]  \  }}|dv s|j                  ||f        = ? |S )N>   r   r8  rD  objcobjcpp)rY  itemsr/  )r  r  r  r  compilers        rM   _get_girtargets_langs_compilersz+GnomeModule._get_girtargets_langs_compilersj  s\    02# 	I"+"5"5";";"= h>>JJh/0		 
rL   c                d    g }| D ](  }||j                         z  }||j                         z  }* |S r   )get_all_link_depsr  r  r  r  s      rM   _get_gir_targets_depsz!GnomeModule._get_gir_targets_depsv  sG     `b# 	1I9..00C9..00C	1 
rL   c                f    t               }| D ]!  }|j                  |j                                # |S r   )r-   r   r  r  s      rM   _get_gir_targets_inc_dirsz%GnomeModule._get_gir_targets_inc_dirs  s2    $,# 	5IJJy1134	5
rL   c                2   g }g }g }|D ]  \  }}| j                   j                  |      r|| j                   |   z  }| j                  j                  |      r|| j                  |   z  }t        j                  d      |j
                  v s| j                  j                  j                  t        j                  d         j                  }||j                  |      z  }|j                  d      }d|v r|dgz  }d|v r|dgz  }d|v s|dgz  }
 |||fS )	N
b_sanitize,addressz-lasanthreadz-ltsan	undefinedz-lubsan)global_argsgetproject_argsr   r^  base_optionsr   rX  optionsr  sanitizer_compile_argsry  )r   langs_compilersr  r  r  r  r  sanitizes           rM   _get_langs_compilers_flagsz&GnomeModule._get_langs_compilers_flags  s4    !(*(*- 	4ND(  $$T*%++D11!!%%d+%,,T22!!,/83H3HH ,,55==h>P>PQ]>^_ee(99(CC#>>#.($
2$x'$
2$(*$3$	4( ')999rL   rs   c                   | j                   j                  |d         }t        j                  j	                  |      st        j
                  |       t        j                  j                  || d| d      }t        |dd      5 }|D ]f  }	t        |	t        t        f      rz|	j                         D ]f  }
|j                  t        j                  j                  | j                  j                         | j                   j                  |	      |
      dz          h t        |	t         j"                        r.|j                  |	j%                  | j&                        dz          t        |	t(              rI|	j                         D ]4  }|j                  t        j                  j                  ||      dz          6 5|j                  t        j                  j                  ||	      dz          i 	 d d d        |S # 1 sw Y   |S xY w)Nr   r  _gir_filelistwutf-8encodingrp  )r,  get_target_private_dir_absr'  r(  isdirmkdirr)  openr   r   r   r|  writer   rT  r  r   rP  rel_to_builddirrW  r   )r   srcdirnsrs   r  
libsourcesgir_filelist_dirgir_filelist_filenamegir_filelistscustom_outputgen_srcs               rM   _make_gir_filelistzGnomeModule._make_gir_filelist  s    !==CCJqMRww}}-.HH%& "-="QykQ^?_ `'w? 	G< Ga,0A!BC)* O$**277<<8I8I8W8W8Y8=8T8TUV8W8E,GIM,N OO  8==1 &&q'8'89K9K'Lt'ST=1#$==? Q$**277<<+H4+OPQ !&&rww||FA'>'EFG	G %$	G %$s   E-G??H	c                z   |d   }||d   }|d   }|9t         j                  j                  | j                  j	                         d      }n|du rd}t        j                  | j                  t        j                  d      }| j                  j                  j                  j                  d   j                         }	|j                  d	|	D 
cg c]  }
t        |
       c}
d
       |j                  |d          t!        || j"                  | j$                  | j                  |||g|d   |||gdg|      S c c}
w )Ninstall_girra   rn   zgir-1.0FT)uninstalledr   CCr   envrP   rN  )rP   rH  ra   rb   rI  r.  )r'  r(  r)  r   r+  r   get_envr+   r  rX  rY  rZ  get_exelistsetr0   merger   rQ  r\  )r   girfilescan_commandgenerated_filesr   r2  ra   rb   run_env
cc_exelistxs              rM   _make_gir_targetzGnomeModule._make_gir_target  s0    '?Y'G./'',,u'8'8'D'D'F	RKE!G %,,U->->@R@R`de&&//99>>sCOOQ
D<A9Q<<cBfUm$LLI#$67!$ 	
 	
 =s   D8
c                "   |d   }||d   }|d   }|9t         j                  j                  | j                  j	                         d      }n|du rd}t        || j                  | j                  | j                  |||g||gdg|d   |d   	      S )
Ninstall_typelibra   ro   zgirepository-1.0FtypelibrP   r.  )ra   rb   rI  rP   r.  )r'  r(  r)  r   
get_libdirr   rQ  r\  )r   typelib_outputtypelib_cmdr5  r2  ra   rb   s          rM   _make_typelib_targetz GnomeModule._make_typelib_target  s    
 *+?Y'G23'',,u'8'8'C'C'EGYZKE!GLL$"#$67u
 	
rL   c                `   g }t        |      }|D ]  }t        |t              r|j                  D ]  }t        |t              s||vs|j                  |       t        j                  j                  | j                  j                         |j                               }||vsu|j                  |        nt        |t        j                        r~|j                  D ]o  }t        |t              st        j                  j                  | j                  j                         |j                               }||vs_|j                  |       q t        |t              sS|j!                  ddd      }	t        |	t"              sJ d       |	s|	|vs|j                  |	        ||fS )Nr  r  r  rK  )r   r   r   rW   r   r/  r'  r(  r)  r   rT  rR  r   r  	generatedr   r  rq   )
r   r  r   typelib_includesr  rf  r  rQ  g_sourcer  s
             rM   +_gather_typelib_includes_and_update_dependsz7GnomeModule._gather_typelib_includes_and_update_depends  s}    )+7m 	4C #12!kk <F!&)4w9N#**62!#e.?.?.M.M.O.4.?.?.A"C!)99,33F;< C!4!45 # <H!(I6!#e.?.?.M.M.O.6.A.A.C"E!)99,33F;< #z*))Hx_a)b!&#.:
:.f,<<$++F37	48  ,,rL   c                    g }|D ]L  }|t        j                  | j                  j                  j	                  t
        j                  |            z  }N |S r   )r   r   r   rX  get_external_argsr+   r  )r   r  r  r  s       rM   _get_external_args_for_langsz(GnomeModule._get_external_args_for_langs4  sS     	lD8##E$5$5$>$>$P$PQ^QcQcei$jkkC	l
rL   c              #  j   K   | D ]*  }|j                  d      s|j                  d      r'| , yw)z?g-ir-scanner only accepts -I/-D/-U; must ignore all other flags)z-Dz-U-Iz-D_FORTIFY_SOURCENr  )r  r  s     rM   _get_scanner_cflagszGnomeModule._get_scanner_cflags;  s7       	A ||./EX8Y		s   333c              #  F   K   | D ]  }|j                  d      s|  yw)zFg-ir-scanner only accepts -L/-l; must ignore -F and other linker flags)r  r  r  NrK  )r  r  s     rM   _get_scanner_ldflagsz GnomeModule._get_scanner_ldflagsD  s)       	A||;<	s   !!zgnome.generate_girr   )varargsmin_varargsz0.40.0)r  z1.2.0rg   rh   0.55.0ri   rj   rk   r+  0.61.0rn   )rR  z'Use install_gir to disable installationc                    | du rdS d S NTzas boolean can only be falserK   r8  s    rM   <lambda>zGnomeModule.<lambda>\      T	&D W[ rL   )deprecated_values	validatorr;  ro   )rR  z+Use install_typelib to disable installationc                    | du rdS d S rT  rK   rU  s    rM   rV  zGnomeModule.<lambda>`  rW  rL   rp   rr   r!  rW   ru   c                   |j                  dt        j                         |d   D cg c]  }| j                  ||       }}t	        |      dkD  rt        d |D              rt        d      | j                  |      \  }}}|d   }	|d   }
|d   }|	 d	|
 d
}t        j                  j                  |j                  j                         |j                        }t        j                  j                  |j                  j                         |j                        }g }|j                  |j                          |j                  |       | j#                  |      }| j%                  ||      \  }}}| j'                  |      }||d   z  }||gz  }| j)                  |||      \  }}| j+                  |||d      \  }}}}}g }|t-        | j/                  |            z  }|t-        | j/                  |            z  }|t-        | j/                  | j1                  ||D cg c]  }|d   	 c}                  z  }g }|t-        | j3                  |            z  }|t-        | j3                  |            z  }g }|t-        | j3                  |            z  }|t-        | j3                  |            z  }| j5                  |      }|d   }g } |g}!|!dgz  }!|!dgz  }!|!d|	z   d|
z   gz  }!|!dgz  }!|!ddgz  }!|!|d   D "cg c]  }"d|" 	 c}"z  }!|!|d   z  }!|!d|z   d|z   gz  }!|!|j7                  |      z  }!|!d| j9                  |||	|
||      z   gz  }!|d   D ]+  }#| j;                  ||#|d      \  }$}|!j                  |$       - | j=                  ||d         \  }%}&}'|!j                  |%       | j                  |&       |j                  |'       |!|d   D (cg c]  }(d|( 	 c}(z  }!|!|d   D (cg c]  }(d |( 	 c}(z  }!|!|d!   D (cg c]  }(d"|( 	 c}(z  }!|!d#gz  }!|!|z  }!|!d$gz  }!|!|j7                  |      z  }!|!|j7                  t?        j@                  || |      d%&      z  }!|!t-        |      z  }!|!| jC                  ||      z  }!|!| jE                  ||D cg c]  }|d   	 c}      z  }!|!t-        |      z  }!| jG                  d'      r|!d't        j                  j                  |j                  j                         |jH                        gz  }!|!d't        j                  j                  |j                  j                         |jH                        gz  }!d(|!v r-tK        jL                  d)d*|jN                  d+|jP                         |d,   r|!jS                  d(       |D )cg c]   })tU        |)tV        tX        tZ        f      s|)" }*})| j]                  |||!|*|t_        j`                  d-|            }+|	 d	|
 d.},||+ddg}-|-|j7                  | d/&      z  }-|D ]  }.|-d/|.z   gz  }- | jc                  ||,|-|*t_        j`                  d-|            }/| je                  d0t        j                  j                  |j                  j                         |j                               |+|/g}0tg        |0|0      S c c}w c c}w c c}"w c c}(w c c}(w c c}(w c c}w c c})w )1Nr   r   r   c              3  <   K   | ]  }t        |t                y wr   )r   r   )r   els     rM   r   z+GnomeModule.generate_gir.<locals>.<genexpr>m  s     &Wbz"j'A&Wr   zVgenerate_gir only accepts a single argument when one of the arguments is an executablerr   rs   rW   r  z.girr]   T)r  rk   --quietz--no-libtool--namespace=z--nsversion=z
--warn-all--outputr@  ri   z--c-include=r_   rJ  z--filelist=rp   rm   ru   z--symbol-prefix=rj   z--identifier-prefix=rg   z--pkg-export=z--cflags-beginz--cflags-endz--add-include-path=)r   r  z--warn-errorz(gnome.generate_gir argument --warn-errorrQ  z%Use "fatal_warnings" keyword argumentrh   T.Dict[str, T.Any]z.typelibz--includedir=GI_TYPELIB_PATH)4add_languager+   r  r  r   anyr,   r  r'  r(  r)  r   rs  rQ  rT  r~  rW   r  r  r  rE  r  r   rL  rH  rN  r  r  r)  r  r  	itertoolschainr  r  r  root_subdirr&   
single_user\  current_noder/  r   r   r   r   r9  Tcastr@  r  r
   )1r   r   r1  r2  argr  r   r   r   r!  rs   r"  r3  r   builddirr   r  r  r  r  r  rC  
dep_cflagsdep_internal_ldflagsdep_external_ldflagsr  scan_cflagslcscan_internal_ldflagsscan_external_ldflagsgirtargets_inc_dirsinc_dirsr  r4  hl_cflags_cmd_ginc_depsr  r  r5  scan_targetr>  r?  incdirtypelib_targetr3  s1                                                    rM   r   zGnomeModule.generate_girK  s   > 	3 2 23EI!WMcd--c59M
Mz?Q3&WJ&W#W !yzz)-):):5)A&JK ;'	I&
D)D)e//>>@%,,O77<< 1 1 ? ? A5<<Pwyw'z">>zJ595T5TUZ\k5l2 "2))*5~&&	$($T$TUZ\`bi$j!'
 ((ugD(Q 	U
(*>WtD44V<==tD44Z@AAtD44T5V5VW\o~^ik_abc_d^  6A  B  C  	C "d&?&?@P&Q!RRd&?&?@T&U!VV "d&?&?@P&Q!RRd&?&?@T&U!VV"<<ZH/0$&`i_j#((",ny.HII&Z00VH5EF<s+FF|,,x88../BCC)@)@PRT]_iku)vvww$ 	)A#225!WSW2XGW(	) "//vj7IJeUD!E"u9PQA+A3/QQVDW=XY/s3YYf=N6OP=,PP)**#((..x88..y{LZb/c  mB.  C  	C233..ujAA((0Q2A0QRR233 451277<<@Q@Q@`@`@bdidudu3vwwL1277<<@Q@Q@_@_@achctct3uvvL\)(()SU]).)9)9;bdidvdvx"#/&0tJq=R^`qBr4s1tt++7L/7FF'02
 4q84!;
JGu--l?-SS& 	6FOf455K	6 225.+Wfhihnhn  pD  FL  iM  N.U=N=N=\=\=^`e`l`l0mn>* R((U N@ _@$ G RYP 1R us5   [  [>[
[5[[#[0 [#[#zgnome.compile_schemasc                B   t         j                  j                  |j                  |j                        }|j                  }| j                  |d      d||g}|j                  dk(  rd}nd|j                  j                  dd      z   }t        ||j                  |j                  |j                  |g dg|d	   |d
   d
      }| j                  dt         j                  j                  |j                  j                         |j                               t        ||g      S )Nr  z--targetdirr  zgsettings-compilezgsettings-compile-r  r  zgschemas.compiledrP   rR   zCompiling gschemas {})rP   rR   descriptionGSETTINGS_SCHEMA_DIR)r'  r(  r)  rW  rQ  r  r  r   r\  r   r  rT  r
   )	r   r   r1  r2  r   outdirra  
targetnametarget_gs	            rM   r   zGnomeModule.compile_schemas  s    e00%,,?15H^1_anpvx~0<<2,J-0D0DS#0NNJLL !#$67//
 	3RWW\\%BSBSBaBaBcejeqeq5rs H:66rL   z
gnome.yelp)rO  rU   z0.43.0z2Use a LINGUAS file in the source directory instead)r   r   
deprecateddeprecated_messagerV   )r   r   rX   c                   |d   }|d   }|d   r-t        j                  dd|j                  d|j                         |s|d   }|s%t	        d      |d   rt        j                  d       |D cg c]_  }t        j                  j                  |j                  j                  t        j                  j                  |j                  d	      |      a }}|d
   }|sGt!        t        j                  j                  |j                  j                  |j                              }|d   }	|d   }
g }g }|j#                  d      }|j#                  d      }|j#                  d      }t        j                  j                  |j                  j%                         d      }t        j                  j                  |d	|      }t'        j(                  |||t        j*                         |j                  d      }|j-                  |       g }|	D ]  }t        j                  j                  |j                  j                  t        j                  j                  |j                  d	      |      }|j-                  |       t        j                  j                  |t        j                  j/                  |            }t'        j(                  |g||t        j*                         |j                  d      }|j-                  |        t        j                  j                  d|j                  d	|dz         }|D cg c].  }t        j                  j                  d|j                  d	|      0 }}|d|g}|j1                  |       t'        j2                  d| d|g t        j                  j                  |j                  d	      |j                  |j                        }|j-                  |       |D ]  }t        j                  j                  |j                  |      }t        j                  j                  |||      }t5        |	      D ]G  \  }}t        j                  j/                  |      } t        j                  j                  ||       }|
rt        j                  j                  t        j                  j7                  ||      |      }!t'        j8                  |!t        j                  j;                  |      ||j                  d      }"nn	 t        j                  j                  |j                  j                  ||      }#t'        j(                  |#g||t        j*                         |j                  d      }"|j-                  |"       J |dz   }$|ddt        j                  j                  d||$      t        j                  j                  d||$      |g}%t'        j2                  d| d| d|%|g||j                  |j                        }&|j-                  |&       |j-                  |&       |dz   |z   dz   }'t=        d| d| d||j                  |j                  |ddd g|$g|'gdgd!"	      }(|j-                  |(       t=        d| d| ||j                  |j                  |d#t        j                  j                  ||'      d$|dd%dg|||(gd&|gdgd!'      })|j-                  |)        t'        j>                  d| d||j                  |j                  |j                        }*|j-                  |*       tA        d |      S c c}w c c}w # t        $ r	 ||   }#Y "w xY w)(Nr   rW   r   z,gnome.yelp more than one positional argumentz0.60.0z+use the "sources" keyword argument instead.zYelp requires a list of sourcesz\"gnome.yelp" ignores positional sources arguments when the "sources" keyword argument is setCrU   rV   rX   itstoolmsgmergemsgfmthelpdoc)rI  z@SOURCE_ROOT@z.potz-ozhelp-z-pot)startz.por$  r  z
-update-poz.gmoz-gmor=  r@  zGenerating yelp doc {})rI  r  z-mz--lang@OUTDIR@T)rH  ra   rb   rI  r  )!r&   rh  r\  ri  r,   r   r   r   rP  r}  r   rd   r'  r(  r)  rQ  r2   r0  r+  r   DataFileModer/  r  r~  	RunTargetr   relpathSymlinkDatarz  r   AliasTargetr
   )+r   r   r1  r2  
project_idrW   r&  sources_filesr  rV   symlinkstargets	potargetsr  r  r  rb   c_install_dirc_datamedia_filesrg  r  m_install_dirm_datapot_filepot_sourcespot_args	pottargetrx  l_subdirl_install_dirr   m_dirlink_targetl_datam_filepo_filepo_argspotargetgmo_file	gmotargetmergetargetallpotargets+                                              rM   r   zGnomeModule.yelp  s|    !W
#7(()WYa).)9)9;hjoj|j|~1gG$%FGG!WLLwx ELM?@ "778I8I8T8T8:U\\SV8W89; M M {# e.?.?.J.JELL!YZEw/*RT-/	$$Y/%%j1##H-ggll5#4#4#@#@#BFK[#zBM=-$--/1A1AuVv-/ 	#A..u/@/@/K/K/1ww||ELL#/NPQSAq!GGLL8JKMZZ]M ( 1 1 3U5E5ESXZFNN6"	# 77<<sJQWDWXT[\qrww||OU\\3J\\X_aegoWp$OOeJ<t$<h$&GGLLs$CUEUEU$)$5$57	 	y! <	(Aww||ELL!4HGGLLaDM!%( '1* "]E B"$'',,rww}Ta/bde"fK"..{BGG<L<LQ<O/<e>N>N\acF0!)!?!?@Q@Q@\@\^fhi!j #ZZ-(0(9(9(;U=M=M[`bFv&'" %iG$_h@_h@([LG zl!A3j'I'.XuGWGW','8'8:H NN8$X&!C'!+f4H$
|1QCt,  !!D*5	
"G4
I NN9%&
|1QC(  !!$Xx @(AtU_ajk(k*O"G4K NN;'y<	(| ''%
|:(F	(-e6F6FHYHY[{# w//YMD ]. * 0!,Q0s   /A$]53]5]])(])zgnome.gtkdocr   z0.48.0)r  r   r   r   z0.52.0r   r   r   r   r~   r   r   ra   rb   rz   r{   r   r}   auto>   xmlr  nonesgml)r   r  rY  r|   r  r   r   ry   )r   r   c                v   |d   }|d   }|d   }||t        d      |}|d   }||rd|z   ndz   dz   }j                  j                         }	|d	   }
j                  d
t        j
                         dGfd}|d   }g }|D ]  }t        |t        j                        rR|j                  |j                  j                  j                         j                  j                                      o|j                  |        dddj                  j                         z   dj                  j                         z   dj                  z   ddj                  |      z   d|z   d|z   d|z   d|d   z   g
}dD ]H  }d|z   }j!                  |      }|j#                         }|J d       |j                  d| d|        J |
r|j                  d|
z          j                  j%                         }|r1|j                  dd j                  |j'                               z          |j                  d!dj                  |d"                 |j                  d#dj                  |d$                 |j                  d%dj                  |d&                 |j                  d'dj                   ||d(                       |j                  d)dj                  |d*                 |j                  d+dj                  |d,                 |j                  d-dj                   ||d.                       g }g }|d/   D ]  }t        |t(        t*        f      r|j                  |       |j-                         D ]c  }|j                  t.        j0                  j                  j                  j                         j2                  j5                  |      |             e t        |t6        j8                        rS|j                  |j;                  j                  j                         j                  j                                      t        |t<              rz|j                  |       |j-                         D ]T  }|j                  t.        j0                  j                  j                  j                         j                  |             V |j                  t.        j0                  j                  j                  j                         j                  |              |d0dj                  |      z   gz  }|j                  d1dj                   ||d2                       |j                  d3dj                  |d4                 |j                  d5dj                  |d6                 | j?                  |d7   |d8   |d9   |      \  }}|j                  |       |j                  |       t)        |j                  j@                  j                  |	|z   g | d:gd;|d<=
      }t        jB                  ||gj                  j@                  j                        }|d>   rzj!                  d?      }d@|z   dA|z   g}|dBz   |f} t.        j0                  j                  j                  j                         j                        }!jE                  | ||!|gC       ||g}"|dD   r/|"j                  j2                  jG                  |	|z   dEF             tI        ||"      S )HNr   rz   r{   z<gnome.gtkdoc: main_xml and main_sgml are exclusive argumentsr|   r  r  z-docrr   r   c              3  d  K   | D ]  }t        |t        j                        rE|j                  j                  j                         j                  j                                bt        j                  j                  j                  j                         j                  |        y wr   )r   r   rP  absolute_pathr   rs  rT  r'  r(  r)  rQ  )filesr  r   s     rM   abs_filenamesz)GnomeModule.gtkdoc.<locals>.abs_filenames  s      \a///%*;*;*J*J*LeN_N_NmNmNopp'',,u'8'8'G'G'I5<<YZ[[	\s   B-B0ry   r?  r   z--sourcedir=z--builddir=z	--subdir=z--headerdirs=z@@z--mainfile=z--modulename=z--moduleversion=z--mode=r}   )scanscangobjmkdbmkhtmlfixxrefzgtkdoc-z8This shouldn't be possible since program should be found--=r_  z--run=r   z--htmlargs=r~   z--scanargs=r   z--scanobjsargs=r   z--gobjects-types-file=r   z--fixxrefargs=r   z--mkdbargs=r   z--html-assets=r   r   z--content-files=z--expand-content-files=r   z--ignore-headers=r   z--installdir=rb   r   rk   r]   z	-decl.txtTzGenerating gtkdoc {})r   rH  r  r   zgtkdoc-checkzDOC_MODULE=zDOC_MAIN_SGML_FILE=z-check)r.  workdirr   ra   r  )tag)r  zT.Iterable['FileOrString']r  zT.Iterator[str])%r   r   get_build_commandrc  r+   r  r   r   IncludeDirsr~  to_string_listrs  rT  r/  rQ  r)  r0  get_pathget_exe_wrapperr  r   r   r|  r'  r(  r,  r  r   rP  r  r   _get_build_argsr\  r  testr-  r
   )#r   r   r1  r2  
modulename	main_filer{   moduleversionr  commandrr   r  src_dirsheader_dirsry   t_argsr  program_nameprogramr(  exe_wrapperr   r   r&  r  r(  
build_argsr  custom_targetalias_target	check_cmd	check_env
check_argscheck_workdirress#    `                                 rM   r   zGnomeModule.gtkdocy  s   F !W
;'	*%$&'eff I/0-3#6RPSYY
##557;'	 	3 2 23	\ )$#% 	,G'5#4#45""7#9#9%:K:K:Z:Z:\:?:K:K:Y:Y:[$] ^ ""7+	, (U..==??E--;;==%,,&dii44I%j(.v&	( F 	6D$t+L((6G##%D#_%__#MMB|nAdV45	6 MM.945''779MM(SXXk.E.E.G%HHIDIIf[.A$B#CDEDIIf[.A$B#CDE		&2I(J'KLM.tyyvNaGb9c/d.efgtyy1G'H&IJKDIIf[.A$B#CDEtyyvm?T1U'V&WXY24( 	6A!l,=>?q! :A!((e6G6G6U6U6W6;mm6R6RST6U67*9 :: Ax}}-$$Q__U5F5F5U5U5W5:5F5F5T5T5V&X YA}-q! }} @G!((e6G6G6V6V6X6;ll6=*? @@
 $$RWW\\%2C2C2R2R2T27,,23&5 6#	6( 	%		-(@@AA/		-OeHf:g0h/ijk)$))F;K4L*M)NOPdii}0E&F%GHI"&"6"6vh7GPeIf7=n7MuV]#_
Kj!7#$LLf|9%&#%.
 ((m_ellTYTdTdfkfwfwx'?**>:I&3.:<I$x/;JGGLL):):)H)H)JELLYMJJzy-R_Q`JaP]_kOl)JJu}}AA'FBRX]A^_ 44rL   c                   g }|j                         }| j                  |||d      \  }}	}
}}|j                  |       |j                  |j                  |             g }|j                  |	       |j                  |
       |j                  |j                  j
                  j                  t        j                  d             |j                  |j                  j
                  j                  t        j                  d             |j                  j
                  j                  t        j                     d   }| j                  |d|fg      }|j                  |d          |j                  |d          |j                  |d          |r@|dt        |j                               z  gz  }|dt        |j                               z  gz  }|r|d	t        |      z  gz  }|r|d
t        |      z  gz  }||fS )NT)r  r   r   r   r   z--cc=%sz--ld=%sz--cflags=%sz--ldflags=%s)r[  r  r~  r  r   rX  rG  r+   r  r  rY  r  r/   r0  get_linker_exelist)r   r   rv  r  r   r   r1  r  deps_cflagsr  r  _gi_includesr  r  r  compiler_flagss                   rM   r  zGnomeModule._get_build_args  s   
 ((ugT(R 	S%'7{ 	k"e,,X67!'('(e''00BB=CUCUWZ[\u((11HHI[I[]`ab$$--778J8JKCP88#x@QRnQ'(~a()~a()Y8+?+?+A!BBCCDY8+F+F+H!IIJJD]Yv%6677D^i&8899D[  rL   zgnome.gtkdoc_html_dirc                H    t         j                  j                  d|d         S )Nzshare/gtk-doc/htmlr   )r'  r(  r)  )r   r   r1  r2  s       rM   r   zGnomeModule.gtkdoc_html_dir3  s     ww||0$q'::rL   zgnome.gdbus_codegen)optargsz0.46.0r_   z0.47.0r   r   r   c                6    | rt        | d   t              r| gS | S )Nr   r   rU  s    rM   rV  zGnomeModule.<lambda>E  s    qZ!c-B  rL   )r   rY  	convertorr   r   r   >   r   r  objectsc                $   |d   }|d   r|d   gng }| j                  |d      g}|j                  |d          | j                  |      }t        j                  |d      s"|d   dk7  r9t        j                  d| d	       n|d   }|dk(  rd
}|j                  d|g       |d   |j                  d|d   g       |d   |j                  d|d   g       |d   r|j                  dg       |j                  |d          |d   }	|d   D ]$  }
|j                  d       |j                  |
       & g }|d   }|d   xs8 |j                  j                  j                  t        j                  d            }t        |t              sJ d       |dz   }t        j                  |d      r|g dz   }nO|d   |d   }|d|gz  }t        j                  |d      r|d d!d"|d#gz  }n| j                          |d"d$|z   d#gz  }|}t        ||j                   |j"                  |j                  |||g|	d%&	      }|j                  |       |d'z   }t        j                  |d      r
|g d(z   }g }n|}|g}t        ||j                   |j"                  |j                  |||g|	|||gd)gd*+      }|j                  |       |d   |d   }|d,z   }g }|D ]I  }|j                  d-j%                  |t&        j(                  j+                  t        |                         K t        j                  |d      r|d d!d|d#gz   }g }n|}|g}t        ||j                   |j"                  |j                  ||||	|d./
      }|j                  |       t-        ||      S )0Nr   r   r  r_   z	>= 2.49.1r   r   zGlib version (zE) is too old to support the 'autocleanup' kwarg, need 2.49.1 or newerr   z--c-generate-autocleanupr   z--interface-prefixrr   z--c-namespacer   z--c-generate-object-managerrW   rP   r   z
--annotaterc   rb   rJ  rK  rB  z	>= 2.56.2)--bodyr`  r@  r=  r   z--generate-docbookz	>= 2.51.3z--output-directoryr  z--generate-c-coder=  z	@OUTDIR@/zGenerating gdbus source {})rP   r  rM  )--headerr`  r@  r=  rN  zGenerating gdbus header {})rP   rH  ra   rb   rI  r  z-docbookz{}-{}zGenerating gdbus docbook {})rP   rH  r  )r  r~  r   r   r  r   r   r/  r   rX  r]  r^  r   rq   r
  r   rQ  r\  r  r'  r(  rz  r
   )r   r   r1  r2  namebase	xml_filesra  r_  acrP   r   r  rc   rb   rj  c_cmdr   cfile_custom_target	hfile_cmdr   hfile_custom_targetr  r  docbook_cmddocbook_custom_targets                            rM   r   zGnomeModule.gdbus_codegen8  s$   0 7X\]^X_DQRG9eg	151X0Y

6,'( 44U;''kBm$	1~l^ <; ; < &BYJJ2B78$%1JJ,f5G.HIJ+*JJ)<=>"#JJ567	*+!"45 M* 	EJJ|$JJu	  01]+vu/@/@/I/I/T/TU]UgUghtUu/v+s+7Z7+D ##L+>GGEi , +,g66 ''kB,j:MxYbcc))++[8-CYOOE*LLH-4

 	*+D##L+>MMIGI*+G*LLH-!"$ 	4
 	*+)(Y'G
*FG Rw~~grww7G7GA7OPQR ''kB!%9:G[]dfo$pp!./$0  !!!1%9%! NN01 '22rL   zgnome.mkenumsr   r   r   r   r   r   r   r   r   r   c           	        |d   }|d   }t        |t        j                        r:|j                  |j                  j
                  |j                  j                        }|d   }t        |t        j                        r:|j                  |j                  j
                  |j                  j                        }g }g d}|D ]%  }	||	   s	|d|	j                  dd      z   ||	   gz  }' g }
d }|t        j                  j                  t        j                  j                  |      d         }|dd	gz   }|g}|j                  |d
          | j                  |||||d   |d         }|
j                  |       |t        j                  j                  t        j                  j                  |      d         }|dd	gz   }|g}|j                  |d
          |d   j                         }||j                  |       | j                  |||||      }|
j!                  d|       |5|3|d	gz   }| j                  ||d
   |||d   |d         }t#        ||g      S t#        |
|
      S )Nr   r   r   )
r   r   r   r   r   rj   ru   r   r   r   r  r  r  z
--templater=  rW   rc   rb   ra   rb   r   )r   )r   r   rP  r  r   rd   	build_dirr  r'  r(  rz  splitextr~  _make_mkenum_implr/  r[  insertr
   )r   r   r1  r2  rz  r   r   ra  known_kwargsrl  r  h_targeth_outputh_cmd	h_sourcesc_outputr  	c_sourcesr   c_targetgeneric_cmdtargets                         rM   r   zGnomeModule.mkenums  s   0 7L)
j(--0#11%2C2C2N2NPUPaPaPkPklJL)
j(--0#11%2C2C2N2NPUPaPaPkPklJ3   	CCc{s{{344fSkBB	C
 )+-1!ww''(8(8(DQ(GHH <33EPZ|IVI./--y(E6BR;S"=1 . 3H NN8$!ww''(8(8(DQ(GHH <33EPZ|IVI./Y',,.G#x(--y(E7 . DHNN1h'*"4+K++vi((K/0"=1 , 3F %VfX66$Wg66rL   zgnome.mkenums_simplez0.42.0r   r   r   r   c                H   |d    d}|d    d}|d   }|d   }|d   }|d   }	g }
|d   r|
j                  d	|d   g       |d
   r|
j                  d|d
   g       |
j                         }d}|	dk7  r|d|	z  z  }|d|z  z  }| j                  j                  |d         D ]C  }t        j
                  j                  |j                         |j                        }|d| dz  }E |t        j                  d      z  }|j                  d|g       |j                  d       |j                  t        j                  d             |j                  d       |j                  t        j                  d| d             |j                  ddg       |j                  d       |j                  t        j                  d             |j                  d       | j                  ||d   ||      }|
j                         }|j                  d       |j                  t        j                  d| d             |j                  d       |j                  t        j                  d             |j                  d       |j                  t        j                  d | d!| d"| d#             |j                  d$       |j                  t        j                  d%             |j                  d       | j                  ||d   |||d&   |d'   (      }t        ||g||g      S ))Nr   rM  rB  r   r   r   r   rj   z--identifier-prefixru   z--symbol-prefixr  z%s
z#include "%s"
rW   z
#include "z"
za
            #define C_ENUM(v) ((gint) v)
            #define C_FLAGS(v) ((guint) v)
            z--fheadz--fprodz>
            /* enumerations from "@basename@" */
            z--vheadz
            GType
            z@enum_name@_get_type (void)
            {
            static gsize gtype_id = 0;
            static const G@Type@Value values[] = {z--vprodz<    { C_@TYPE@(@VALUENAME@), "@VALUENAME@", "@valuenick@" },z--vtaila:      { 0, NULL, NULL }
            };
            if (g_once_init_enter (&gtype_id)) {
                GType new_type = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
                g_once_init_leave (&gtype_id, new_type);
            }
            return (GType) gtype_id;
            }r=  z?#pragma once

            #include <glib-object.h>
            z(

            G_BEGIN_DECLS
            z
            z
            GType zP@enum_name@_get_type (void);
            #define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (z@enum_name@_get_type())z--ftailz
            G_END_DECLSrc   rb   r  )r~  r[  r   source_strings_to_filesr'  r(  r  relative_namerQ  textwrapdedentr/  r  r
   )r   r   r1  r2  hdr_filenamebody_filenamer   decl_decoratorfunc_prefixr   ra  r  r   hdrhdr_pathc_filer  h_files                     rM   r   zGnomeModule.mkenums_simple   s\   " q'"~7)2/,./]+%&JJ-v6I/JKL/"JJ)6/+BCD
 "Vk))E"\11##;;F9<MN 	0Cwws'8'8':ELLIHz(3//E	0 	 	
 	i'(YX__ 	
 	YX__M 478 	9 	i!_`aYX__ 	 	Y''vi/@-QVW 
YX__ O  	 	YX__ 	
 	YX__ -  44?=@W[\ 	] 	YX__ 	 	Y''6)$lE+,}- ( /
 !&&!1FF3CDDrL   )ra   rb   r   c               d   | j                  |d      g}|j                  |       |xs8 |j                  j                  j	                  t        j                  d            }	t        |	t              sJ d       t        ||j                  |j                  |j                  |||gd||	gdg|dd      S )Nr  rJ  rK  TrN  zGenerating GObject enum file {})capturera   rb   rI  rH  absolute_pathsr  )r  r~  r   rX  r]  r   r^  r   rq   r   rQ  r\  )
r   r   rW   rj  ra  ra   rb   r   real_cmd_install_dirs
             rM   r  zGnomeModule._make_mkenum_impl  s     7;ooe^6\5]"me&7&7&@&@&K&KHL^L^_kLl&m,,8j8,LLH% 	!9
 	
rL   zgnome.genmarshalr   r   r   r   r   )allow_emptyr   r   c                   |d   }|d   }t        j                  | j                  |      d      }| j                  |d      g}|d   r|j	                  d|d   g       |d   rC|r|j	                  |d          n,t        j                  dt        j                  d	      d
d       dD ],  }||   s	|j                  d|j                  dd              . |d   }	d}
t        j                  | j                  |      d      r|ddgz  }nd
}
|dz   }|ddgz   }|r|dgz  }t        |dz   |j                  |j                  |j                  |||g|	|d   r|d   gng dg|
|d   d      }|ddgz   }g }t        j                  | j                  |      d       r|d!|gz  }|j                  |       t        |d"z   |j                  |j                  |j                  ||| d#g|
|d   |d$%      }||g}t        ||      S )&Nr   rW   z	>= 2.53.3r  r   z--prefixr_   zvThe current version of GLib does not support extra arguments 
for glib-genmarshal. You need at least GLib 2.53.3. See z-https://github.com/mesonbuild/meson/pull/2049TFr  )r   r   r   r   r   r  r  r  rc   z	>= 2.51.0r`  r@  rM  r  r=  z--pragma-oncerL  rb   rN  rR   z$Generating glib marshaller header {})ra   rb   rI  r  rR   r  r  z	>= 2.53.4z--include-headerrC  rB  z$Generating glib marshaller source {})r  rR   rH  r  )r   r  r   r  r~  r   r   r  r/  r  r   rQ  r\  r   r
   )r   r   r1  r2  rj  rW   new_genmarshalra  krc   r  header_filer  ri   r  
extra_depsbodyr3  s                     rM   r   zGnomeModule.genmarshal  s]   " a#!11$2O2OPU2VXcd15HY1Z0[(JJ
F8$456,

6,/0 X!YY'VW"&e5 Y 	7Aay

R		#s 3456	7
   01 ##D$A$A%$H+VJ
++CGtmz9--o&&ETMLLM"39-3H./b 	/>
  x+++-
##D$A$A%$H+V(+66Ef%TMLLxr]O/$>
 F^ R((rL   r   c                   |sg g g g g fS g }g }g }g }g }|D ]  }t        |t              rF|j                  D 	cg c]  }	t        |	t              s|	 }
}	|
D ]  }t        j
                  j                  |j                  j                         |j                               }t        j
                  j                  |j                  j                         |j                               }|j                         d   dd }|j                  d|z          |j                  d|z          |j                  d|z          |j                  |       |j                  |       |j                  |        [t        |t              sJ d       |j                  d|        |j                  |       |j                  |        |||||fS c c}	w )z
        Packages are special because we need to:
        - Get a list of packages for the .deps file
        - Get a list of depends for any VapiTargets
        - Get package name from VapiTargets
        - Add include dirs for any VapiTargets
        r   N
--vapidir=	--girdir=z--pkg=rK  )r   r   rW   r   r'  r(  r)  r   rs  rR  rT  r|  r/  rq   )r   r   r   vapi_dependsvapi_packagesvapi_includes	vapi_argsremaining_argsrl  tr  r  r   r  outfiles                  rM   _extract_vapi_packagesz"GnomeModule._extract_vapi_packages  s    r2r2%%+-%'%'!#	 	+C#12&)kkOZ:5N1OO% 1FWW\\%*;*;*J*J*L*0*;*;*=?FWW\\%*;*;*I*I*K*0*;*;*=?F$00215cr:G$$\F%:;$$[6%9:$$X%78 ''/!((1!((01 "#s+7Z7+  6#0$$S)%%c*'	+, ,}nTT) Ps   GGc                   |j                   j                  }t        j                  j	                  ||dz         }t        |dd      5 }|D ]  }|j                  |dz           	 d d d        t        j                  t        j                  d||      g||t        j                         |j                        S # 1 sw Y   TxY w)Nz.depsr  r  r  rp  T)r   scratch_dirr'  r(  r)  r  r  r   r  r   rP  r  r\  )	r   r   libraryr   rb   r  rU  ofilepackages	            rM   _generate_depszGnomeModule._generate_deps:  s    ""..VWw%67%w/ 	,5# ,GdN+,	, zz8==vu=>[ZbZkZkZmotoo  A  	A	, 	,s   B88Cc                    g }|j                         D ]S  }t        |t        j                        r|j	                  |       /t        |t
              s@|| j                  |      z  }U |S r   )get_target_dependenciesr   r   r  r/  r   _get_vapi_link_with)r   r  rp   rf  s       rM   r0  zGnomeModule._get_vapi_link_withB  sd    ,.	113 	;C#u223  %C+T55c::			;
 rL   zgnome.generate_vapir   r   r   c                   g }|d   }t         j                  j                  |j                  j	                         |j
                        }t         j                  j                  |j                  j                         |j
                        }| j                  ||d         \  }}	}
}}|j                  d      dd| d| g}|j                  |d   D cg c]  }d| 	 c}       |j                  |d	   D cg c]  }d
| 	 c}       |j                  |d   D cg c]  }d| 	 c}       ||z  }|d
|z   gz  }|d   }g }|D ]  }t        |t              r0|j                  t         j                  j                  ||             Ct        |t              sT|| j                  |      z  }t         j                  j                  |j                  j	                         |j                               }t         j                  j                  ||j!                         d         }|j                  |        |dz   }|j                  j"                  j%                  t'        j(                  d            }t        |t              sJ d       |d   xs! t         j                  j                  |dd      }|d   r%| j+                  |||
|      }|j                  |       t-        ||j
                  |j.                  |j                  |||g|	|d   |gdg      }t1        j2                  |j
                  dg|z   d      g}|g|	z   }t5        d |g g |g |g g i g g g       }|j                  |       t7        ||      S c c}w c c}w c c}w )Nr   r   vapigenr^  z
--library=z--directory=r   r  r   z--metadatadir=r   r  rW   z.vapidatadirrK  rb   valavapira   rN  )r  rW   r  rH  ra   rb   rI  rr  F)r'  r(  r)  r   rT  rQ  rs  r'  r0  r~  r   rq   r/  r   r0  rR  r|  rX  r]  r   r^  r-  r   r\  r   r  r   r
   )r   r   r1  r2  created_valuesr*  r  rd   pkg_cmdr   r!  r"  r   ra  r8  inputsrp   r   rQ  gir_filevapi_outputr3  rb   deps_targetvapi_targetincsrW   r3  s                               rM   r   zGnomeModule.generate_vapiK  sG   " CEq'GGLL!2!2!@!@!BELLQ	WW\\%"3"3"B"B"DellS
HLHcHcdikqr|k}H~E}mX!!),i:gY9OS_`i_jQkl

f[.ABj$BC

&2IJQnQC(JK

VJ-?@isO@Aw :-..	",.	 	%A!S!

277<<
A67Ay)T55a88	e&7&7&E&E&G&'lln677<<0BC

8$	% '##,,778J8J98UV'3'33']+Trww||GVV/T)--eWm[YK!!+. LL M&9%$ 	
$ !!%,,0EuMN-,.dBIr7BPRTVXZ\^`bcb! ^44e CJ@s   M:9M?N)r   'Interpreter'r  None)r   'ModuleState'r  rq   )r   r@  r  r?  )r  r?  )r   r@  r  rq   r  z
'ToolType')r   r@  r1  T.List['TYPE_var']r2  z'PostInstall'r  r
   )r   r@  r1  zT.Tuple[str, 'FileOrString']r2  z'CompileResources'r  z'ModuleReturnValue')
r   r@  rd  rq   rb  rA   r]   zCT.Sequence[T.Union[mesonlib.File, CustomTarget, CustomTargetIndex]]r  zeT.Tuple[T.List[mesonlib.FileOrString], T.List[T.Union[CustomTarget, CustomTargetIndex]], T.List[str]])FF)r   r@  r  z1T.Union[build.SharedLibrary, build.StaticLibrary]r   gT.Sequence[T.Union[build.BuildTarget, 'build.GeneratedTypes', 'FileOrString', build.StructuredSources]]r  r?   r  r?   r  yT.Tuple[T.List[str], T.List[T.Union[build.BuildTarget, 'build.GeneratedTypes', 'FileOrString', build.StructuredSources]]])r  UT.Sequence[T.Union['Dependency', build.BuildTarget, CustomTarget, CustomTargetIndex]]r   r@  r   rB  r  r?   r  r?   r  zT.Tuple[OrderedSet[str], OrderedSet[T.Union[str, T.Tuple[str, str]]], OrderedSet[T.Union[str, T.Tuple[str, str]]], OrderedSet[str], T.List[T.Union[build.BuildTarget, 'build.GeneratedTypes', 'FileOrString', build.StructuredSources]]])r  rD  r   r@  r   rB  r  r?   r  r?   r  zT.Tuple[OrderedSet[str], T.List[str], T.List[str], OrderedSet[str], T.List[T.Union[build.BuildTarget, 'build.GeneratedTypes', 'FileOrString', build.StructuredSources]]])r  =T.Union[Executable, build.StaticLibrary, build.SharedLibrary]r   r@  r  rE  )r  rq   r  rq   r  r?  )r  zbuild.Buildr  r?  )r   r@  r  zT.Tuple[Dependency, T.Union[Executable, 'ExternalProgram', 'OverrideProgram'], T.Union[Executable, 'ExternalProgram', 'OverrideProgram']])r  rq   r  r?   )r   r@  rm   rl   r  z4T.Tuple[T.List[str], T.List[str], T.List[GirTarget]])r   r@  r  T.Iterable[str]r  rA   )r   r@  r  T.Sequence[build.BuildTarget]r  z T.List[T.Union[str, Executable]])r  rG  r   T.List[T.Tuple[str, 'Compiler']])r  rG  r  zOT.List[T.Union[build.BuildTarget, CustomTarget, CustomTargetIndex, Dependency]])r  rG  r  zOrderedSet[build.IncludeDirs])r   r@  r  rH  r  z.T.Tuple[T.List[str], T.List[str], T.List[str]])r   r@  r   rq   r!  rq   rs   rq   r  rG  r"  zWT.Sequence[T.Union[str, mesonlib.File, GeneratedList, CustomTarget, CustomTargetIndex]]r  rq   )r   r@  r3  rq   r4  zQT.Sequence[T.Union['FileOrString', Executable, ExternalProgram, OverrideProgram]]r5  WT.Sequence[T.Union[str, mesonlib.File, CustomTarget, CustomTargetIndex, GeneratedList]]r   zgT.Sequence[T.Union['FileOrString', build.BuildTarget, 'build.GeneratedTypes', build.StructuredSources]]r2  ra  r  r   )r   r@  r>  rq   r?  zCT.Sequence[T.Union[str, Executable, ExternalProgram, CustomTarget]]r5  rI  r2  ra  r  r   )r   r@  r  zST.Sequence[T.Union[Dependency, build.BuildTarget, CustomTarget, CustomTargetIndex]]r   rB  r  rC  )r   r@  r  rA   r  rA   )r  rF  r  rF  )r  rF  r  rF  )r   r@  r1  zNT.Tuple[T.List[T.Union[Executable, build.SharedLibrary, build.StaticLibrary]]]r2  z'GenerateGir'r  r
   )r   r@  r1  rA  r2  z'CompileSchemas'r  r
   )r   r@  r1  zT.Tuple[str, T.List[str]]r2  z'Yelp'r  r
   )r   r@  r1  T.Tuple[str]r2  z'GtkDoc'r  r
   )r   rA   rv  rx   r  r   r   r@  r   z>T.Sequence[T.Union[build.BuildTarget, 'build.GeneratedTypes']]r  rC  )r   r@  r1  rJ  r2  z'TYPE_kwargs'r  rq   )r   r@  r1  zGT.Tuple[str, T.Optional[T.Union['FileOrString', build.GeneratedTypes]]]r2  z'GdbusCodegen'r  r
   )r   r@  r1  rJ  r2  z	'MkEnums'r  r
   )r   r@  r1  rJ  r2  z'MkEnumsSimple'r  r
   )r   r@  rW   rI  rj  rq   ra  rA   ra   r?   rb   z*T.Optional[T.Sequence[T.Union[str, bool]]]r   zMT.Optional[T.Sequence[T.Union[CustomTarget, CustomTargetIndex, BuildTarget]]]r  zbuild.CustomTarget)r   r@  r1  rJ  r2  z'GenMarshal'r  r
   )r   r@  r   z(T.List[T.Union[InternalDependency, str]]r  zOT.Tuple[T.List[str], T.List[VapiTarget], T.List[str], T.List[str], T.List[str]])
r   r@  r*  rq   r   rA   rb   rq   r  z
build.Data)r  r   r  zT.List[build.LibTypes])r   r@  r1  rJ  r2  z'GenerateVapi'r  r
   )[rG   rH   rI   r	   INFOr   r   r   run_oncerO  staticmethodr
  r  r'   r(   r?   r)   r   rq   r#   r%   r   r*   rP  r   r   r   r   r   r   evolver   r    r   rV  r  r  r  r  r  r  r  	functools	lru_cacher  r  r  r  r  r  r  r  r)  r9  r@  rE  rH  rL  rN  r   r   r  r  r   r   r  r   r   r   r   r   r"   r   r  r$   r   r!   r   r   r   r   r   r   r  r   r'  r-  r0  r   r   __classcell__)r   s   @rM   r   r     s   gD6
( 1 1 - - 7 7 ($>$&7c&BBX\])4?+T5Q($XN $h/*+ 0 *+X -sS(--Whjw4xy!
/x@(S(O,."3D8==,Xi:j"kuw  BF  	G(D%x@$dEJ, 1$ <bRVWM)"4M)9LM) zM)^ G+ G+.1G+@KG+]G+ wG+ G+X .3,1	)M) !H) '+) &*	)
 V)<[Pm[P [P }[P  	[P
 [P~[PB #(!&PmP P }P  	P
 P~P6 ].
)= Y&1 '1 *O* *  	 	  B 	 	 #r    :(V: :8 %&)%7T%(A%
 !$% %8 *
 *
*
 l*
 u	*

 }*
 '*
 ,5*
 *
X 
*m
 /F
 &8
 =J
 
: &- &-e&- }&- K	&- &-P       (:u?R?RTYTgTg2hvwx  x 0G$."3D*"Er[_`#%6tS%A2W[\"D%xH(-dC8"dS%'8s'CRY]^'):4#uGXGXAY)Zdfptu*/sI6FGQS]ab-$!1B#c4%:%*,a$b[	] 	#dH%5XF'#tX)>%*,e$f[	] 	+08K8KUM`M`7ablnx|}+sT2+sT2).tc8==-Yegx5yz  EG  QU  	V/#4T3#?UYZ36o)*o)/@o)7 y8o)b )+<+C+C(+C+SUde7 f 70 L#s3*45"S		
 	',T37rR).tS94QST/46x0 4x0t NC((-dC8RT^bc'4h?/#4TCP]_km~;  $A  KM  W[  	\dZ1D1DeFYFY$Z["	& 	(*;D3BV*Wacmqr."3D#">TXY%'8X]]?S'T^`jno+0s;RQUV-!24#x}}9M!NXZdhi"$5dC$@"VZ[!dS%*;*;$<="	& 	)T40-!24!=rSWX+X/*sHo.+0s;RQUVCx&'FG	I 	"C8D+sBh?+0s;RQUV/#4T3#?UYZ).tc5;L;L5MNX\gkl? Bt5C  )Dt5l !c !, ! "` !eR !D +S1; 2 ; )3#x}}l\mo|9}8~  x 0$$$84, 1$ <HVXbfg$sHo6+X/"D%8,TD#;?+I		
 	"D%xH)c8_-3	&'AB	D 	H-'*~3,~31B~3+ @,~3@ OS)	 	 	dS(--GX%2%4 5	
	 	,hmmX >? 	,hmmX >? 	*sHo. 	'C?+ 	'C?+  	'C?+!" 	'C?+#$ 	'C?+%& 	'C?+'( 	'C?+),97- *.97v &1*C0	 	dS(--$89		
 	/33 	#S"5 	-b1 	+sB/dE 1 2 dEZ "FJei 
  
 m 
 	 

  
  
 D 
 c 
 $ 
D &,X.
)
/0, 1$ <dTVW*dE2*dE2(S(O,-u5).tc8==5IW\]gkvz{(D%0&e<H) - H)T&U$s&UPA )3/dS)$4%H		
 	+0s;TSUV/#4T3#?WYZ*/c:DRTU*/s<N6OPZ^hjk:5 0 :5rL   r   c                   t        |       }|j                  j                  t        t        j                         |j                  j                  t
        t        j                         |j                  j                  t        t        j                         |j                  j                  t        t        j                         |j                  j                  t        t        j                         |S r   )	r   r   append_holder_mapr   CustomTargetHolderr   r   r   r   )interpmods     rM   
initializerW    s    
f
COO%%o{7U7UVOO%%&;[=[=[\OO%%i1O1OPOO%%m[5S5STOO%%j+2P2PQJrL   )r   z!T.List[T.Union[str, T.List[str]]]r  r[   )rU  r>  r  r   )g__doc__
__future__r   r[  re  rO  r'  rw  r  typingrj  r  r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r]   r   r   dependencies.pkgconfigr   r   interpreter.type_checkingr   r   r   r   r   r    r!   r"   interpreterbaser#   r$   r%   r&   r'   r(   r)   interpreterbase.decoratorsr*   r+   r,   r-   r.   r/   r0   programsr1   scripts.gettextr2   TYPE_CHECKINGtyping_extensionsr3   r4   r5   r6   rY  r7   r8   r9   r:   r;   r<   r>   rO   rT   rZ   rf   rw   r   r   r   r   r   r   UnionToolTyper?   r   rJ   r   rq   r   rN  r   r   r  r   rW  rK   rL   rM   <module>re     s  G "    	          ` ` 9 L [  [  [ P P H H 7  ' *??4#$)7'*#i #+ +
y  9  #i #(\ \2By B!Y !";y ;' ' O. O wwz?OCDH &/d& ?  *3dC 	*&  J+,!C?3oX/	+ ' 6  + S5/ S5j<rL   