o
    Wod;                     @  s  U d dl mZ d dlmZ d dlZddlmZmZm	Z	 ddlm
Z
 ddlmZ dd	lmZ dd
lmZmZmZmZmZmZmZ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 ej rd dl!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* G dd de#Z+G dd de#Z,G dd de#Z-edee.e/g ddZ0de1d< edee.e/g ddZ2de1d < d!g d"iZ3G d#d$ d$eZ4d*d(d)Z5dS )+    )annotations)pathN   )ExtensionModuleModuleReturnValue
ModuleInfo   )build)mesonlib)mlog)CT_BUILD_BY_DEFAULTCT_INPUT_KWINSTALL_TAG_KW	OUTPUT_KWINSTALL_DIR_KW
INSTALL_KWNoneTypein_set_validator)
FeatureNew)ContainerTypeInfo	KwargInfo	noPosargstyped_kwargstyped_pos_args)read_linguas)Literal	TypedDict)ModuleState)Target)Interpreter)TYPE_var)ExternalProgramc                   @  s^   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S )	MergeFileT.List[T.Union[str, build.BuildTarget, build.CustomTarget, build.CustomTargetIndex, build.ExtractedObjects, build.GeneratedList, ExternalProgram, mesonlib.File]]inputstroutputboolbuild_by_defaultinstallT.Optional[str]install_dirinstall_tagT.List[str]args	data_dirspo_dirzLiteral['xml', 'desktop']typeN__name__
__module____qualname____annotations__ r7   r7   vhome/ych/rk3568/buildroot/output/rockchip_rk3568_recovery/host/lib/python3.10/site-packages/mesonbuild/modules/i18n.pyr"   %   s   
 r"   c                   @  s>   e Zd ZU ded< ded< ded< ded< ded< ded	< d
S )Gettextr-   r.   r/   r'   r)   r*   r+   	languagespresetNr2   r7   r7   r7   r8   r9   5   s   
 r9   c                   @  sN   e Zd ZU ded< ded< ded< ded< ded	< ded
< ded< ded< dS )ItsJoinFiler#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   	its_fileszOT.List[T.Union[build.BuildTarget, build.CustomTarget, build.CustomTargetIndex]]
mo_targetsNr2   r7   r7   r7   r8   r<   >   s   
 r<   r.   TdefaultZlistifyzKwargInfo[T.List[str]]_ARGSr/   
_DATA_DIRSZglib)z--from-code=UTF-8z--add-commentsz--keyword=_z--keyword=N_z--keyword=C_:1c,2z--keyword=NC_:1c,2z--keyword=g_dcgettext:2z--keyword=g_dngettext:2,3z--keyword=g_dpgettext2:2c,3z--flag=N_:1:pass-c-formatz--flag=C_:2:pass-c-formatz--flag=NC_:2:pass-c-formatz"--flag=g_dngettext:2:pass-c-formatz!--flag=g_strdup_printf:1:c-formatz!--flag=g_string_printf:2:c-formatz(--flag=g_string_append_printf:2:c-formatz--flag=g_error_new:3:c-formatz--flag=g_set_error:4:c-formatz)--flag=g_markup_printf_escaped:1:c-formatz--flag=g_log:3:c-formatz--flag=g_print:1:c-formatz--flag=g_printerr:1:c-formatz--flag=g_printf:1:c-formatz--flag=g_fprintf:2:c-formatz--flag=g_sprintf:2:c-formatz--flag=g_snprintf:3:c-formatc                      sh  e Zd ZedZd5 fddZed6ddZedde	e
deeedeefeeeejddejddededdedededdhdd7d d!Zed"ee
d"eejd#dejdd$ejd%ded&eeeg dd'ed(eefeeedd)d8d,d-Zed.d/e	e
d.eeedeefeeee ed0eeeed1eeej dd
d9d3d4Z!  Z"S ):
I18nModulei18ninterpreter'Interpreter'c                   s<   t  | | j| j| j| jd d d d d d d| _d S )N)
merge_filegettextitstool_join)itstoolmsgfmtmsginitmsgmergexgettext)super__init__methodsupdaterG   rH   rI   tools)selfrE   	__class__r7   r8   rP      s   zI18nModule.__init__state'ModuleState'dirsT.Iterable[str]returnr-   c                   s&   t | j | j  fdd|D S )z,Returns source directories of relative pathsc                   s   g | ]}t  |qS r7   )r   join).0dsrc_dirr7   r8   
<listcomp>   s    z-I18nModule._get_data_dirs.<locals>.<listcomp>)r   r\   environmentZget_source_dirsubdir)rW   rY   r7   r_   r8   _get_data_dirs   s   zI18nModule._get_data_dirszi18n.merge_filez0.37.0r+   z0.51.0)sincez0.41.0r0   T)requiredr1   xmlZdesktop)r@   	validatorr.   T.List['TYPE_var']kwargs'MergeFile'r   c                 C  sn  | j d d u s| j d  s|jdtjjd| j d< t|j|j	|d }| 
||d }|r6dd| nd }g }||j  |ddd	| j d   g |rX|| |d
d|d |g |d rs|d ||d  |d }|d u r|d }|d d ur|d gnd }	tjd|j	|j|j||d |d g||d |d d ur|d gnd |	d}
t|
|
gS )NrK   for_machiner0   r/   --datadirs=:
--internalZmsgfmthelperz	--msgfmt=@INPUT@@OUTPUT@r1   r.   --r(   r)   r,    r$   r&   r+   )r(   r)   r+   r,   )rS   foundfind_programr
   MachineChoiceBUILDr   r\   Zbuild_to_srcrc   rd   extendrb   get_build_commandget_pathappendr	   CustomTarget
subprojectr   )rT   rW   r.   rj   ZpodirZddirsdatadirscommandr(   r,   ctr7   r7   r8   rG      sH   

zI18nModule.merge_filezi18n.gettextz0.36.0)r@   z0.50.0r:   r?   r;   )rh   re   T.Tuple[str]	'Gettext'c                 C  s  dD ]>\}}| j | d u r|j|dtjjd| j |< | j |  s@|r3tjdd|jd t	d g   S tj|ddd|jd q|d	 }d
| }|d }|rWdd
| nd }	d
| ||d }
|
rkd|
 nd }|d }g }g }|d }|rt| }tt|| }|rdd
| nd }t
|j|j}|jrtj|j|jdnd }|j ddd|g }|d|  |r|d|  |r|| |r|| | j d  r|d| j d    tj|d |g |j|j|jdd}|| |d }|d p|jjtd }t|tsJ d!|s(t t
|jj!|j}|D ]J}tj"#|jj!|j|d" }tj$| d#| d$t
|j|d%|j|j| j d& d'd(d)g|g| d$g|t
||d%gd*gd+
}|| || q*t%|d, ||j|j|j}|| |j ddd-|g }|d|  |r|d|  |	r||	 |r|| |r|| d.D ]}| j |  r|d/| d0| j |    qtj|d1 |g |j|j|jdd}|| t	|||g|S )2N))rK   T)rL   F)rM   F)rN   FF)rf   rm   z@Gettext not found, all translation (po) targets will be ignored.T)oncelocationz, not found, maintainer targets will not work)r   fatalr   r   z
--pkgname=r:   z--langs=z@@ro   r/   rn   r.   r;   z--extra-args=)startrp   rH   Zpotz--source-root=z	--subdir=rN   z--xgettext=z-pot)Zdefault_envr)   r+   	localedirzfor mypyz.po-z.moLC_MESSAGESrK   rq   -orr   rD   )r)   r+   r,   z-gmoZ	update_po)rL   rM   rs   =z
-update-po)&rS   rv   r
   rw   rx   ru   r   warningZcurrent_noder   r\   rd   PRESET_ARGSlist
OrderedSetr   source_rootZroot_subdirrc   relpathrb   rz   r|   r{   r	   Z	RunTargetr~   ZcoredataZ
get_optionZ	OptionKey
isinstancer%   r   
source_dirZFileZfrom_source_filer}   ZAliasTarget)rT   rW   r.   rj   toolstrictZpackagenameZpkg_argr:   Zlang_argZ	_datadirsr   
extra_argstargetsZ
gmotargetsr;   Zpreset_argsZ	extra_argr   rc   ZpotargsZ	pottargetr)   r+   lZpo_fileZ	gmotargetZallgmotargetZupdatepoargsZupdatepotargetr7   r7   r8   rH      s   










 
zI18nModule.gettextzi18n.itstool_joinz0.62.0r=   r>   'ItsJoinFile'c                 C  sp  | j d d u r|jdtjjd| j d< |d }|dg }g }|D ]}|t|	 |
 d  q!g }||j  |ddddd	d
dd| j d   g |rn|D ]}	t|	sft|jj|j|	}	|d|	g qU|| |d }
|
d u r|d }
|d d ur|d gnd }tjd|j|j|j||d |d g|
||d |d d ur|d gnd |d}t||gS )NrJ   rl   r>   r=   r   rp   r\   z-irq   r   rr   z
--itstool=z--itsr(   r)   r,   rt   r$   r&   r+   )r(   Zextra_dependsr)   r+   r,   )rS   rv   r
   rw   rx   getr|   r   r\   Z
get_subdirget_outputsry   rb   rz   r{   isabsr   rc   r	   r}   r~   r   )rT   rW   r.   rj   r>   r=   Z	mo_fnamestargetr   fnamer(   r,   r   r7   r7   r8   rI   E  sR    

zI18nModule.itstool_join)rE   rF   )rW   rX   rY   rZ   r[   r-   )rW   rX   r.   ri   rj   rk   r[   r   )rW   rX   r.   r   rj   r   r[   r   )rW   rX   r.   ri   rj   r   r[   r   )#r3   r4   r5   r   INFOrP   staticmethodrd   r   r   r   r   r   r   r%   r   r   r   r   rA   ZevolverB   r   rG   r   r   r   r   setr   rH   r	   r}   rI   __classcell__r7   r7   rU   r8   rC   ~   sh    

,



drC   interprF   r[   c                 C  s   t | S )N)rC   )r   r7   r7   r8   
initialize  s   r   )r   rF   r[   rC   )6
__future__r   osr   typingTrt   r   r   r   r	   r
   r   Zinterpreter.type_checkingr   r   r   r   r   r   r   r   Zinterpreterbaser   Zinterpreterbase.decoratorsr   r   r   r   r   Zscripts.gettextr   TYPE_CHECKINGtyping_extensionsr   r   r   r   rE   r   r    Zprogramsr!   r"   r9   r<   r   r%   rA   r6   rB   r   rC   r   r7   r7   r7   r8   <module>   sN   (	#  	