
    ea4                        d dl mZ ddlmZ d dlZeej        d<   d dlZd dlZd dl	Z	d dl
Z
ddlmZmZ ddlmZ d Z G d	 d
          Zd Zd Zd Zd Zd Zedk    r ej         e                       dS dS )    )annotations   )_pathlibNpathlib)MesonExceptionMesonBugException)mlogc                    dd l }t           t                    rst          j                    t          j                    }|'t          j        dt          j        |                     t          j	        
                    d          r dS t          j	        
                    d          r |                                 |dk    rdS t           t                    rt          j        d            j        S d}t           fd	d
D                       r"t          | j         j         j                   nt          |           t          j                    dS )Nr   z
A full log can be found atMESON_FORCE_BACKTRACEr   	runpython   zeUnhandled python OSError. This is probably not a Meson bug, but an issue with your build environment.zUnhandled python exceptionc              3  >   K   | ]}t          |d           d uV  d S N)getattr).0aes     9/usr/lib/python3.11/site-packages/mesonbuild/mesonmain.py	<genexpr>zerrorhandler.<locals>.<genexpr>=   s4      XXq71a&&d2XXXXXX    )filelinenocolno)	traceback
isinstancer   r	   	exceptionshutdownlogboldosenvironget	print_excOSErrorerrnoallr   r   r   r   )r   commandr   logfilemsgs   `    r   errorhandlerr*       s^   !^$$  q-//H3TYw5G5GHHH:>>122 	Gq :>>122 	Gk!!17## 
	N G H H H7N.CXXXX<WXXXXX +%c1618QWEE%c**N1qr   c                  <    e Zd Zd ZddZddZd Zd Zd	 Zd
 Z	dS )CommandLineParserc                    ddl m}m}m}m}m}m}m}mm	}m
}	m}
m} ddlm} ddlm} dd l}|                                j         _         fd _        i  _        g  _        t1          j        d j                   _         j                            d	d
d           _                             d|j        |j        d                                d|j        |j        d                                d|j        |j        d                                d|j        |j        d                                d|j        |j        d                                d|j        |j        d                                d|j        |j        d                                d|j        |j        d                                d|j        |j        d                                d  fd!j        d"                                d#|
j        |
j        d$                                d%|j        |j        d&                                d'|j        |j        d(                                d) j          j!        d*                                d+ j"         j#        t0          j$                                        d,|	j        |	j        t0          j$                   d S )-Nr   )mconfmdistminitminstallmintromsetupmtestrewritermsubprojectsmunstable_coredatamcompilemdevenv)	env2mfile)wraptoolr   c                f    t          j        | t          j        dz            j                  S )Nr   )max_help_positionwidth)argparseHelpFormatterint
term_width)progselfs    r   <lambda>z,CommandLineParser.__init__.<locals>.<lambda>O   s=    h&<TUXY]YhklYlUmUmuy  vE  'F  'F  'F r   mesonrC   formatter_classCommandsr'   z8If no command is specified it defaults to setup command.)titledestdescriptionsetupzConfigure the project)help_msg	configurezChange project optionsdistzGenerate release archiveinstallzInstall the project
introspectzIntrospect projectinitzCreate a new projecttestz	Run testswrapz
Wrap toolssubprojectszManage subprojectsrewritec                :                         | j                  S r   )add_arguments	formatter)parserr5   rD   s    r   rE   z,CommandLineParser.__init__.<locals>.<lambda>h   s    83I3I&RVR`3a3a r   zModify the project definitioncompilezBuild the projectdevenvz%Run commands in developer environmentr:   z5Convert current environment to a cross or native filehelpzPrint help of a subcommandr   zunstable-coredata)% r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   scriptsr:   rU   r;   shutilget_terminal_sizecolumnsrB   rZ   commandshidden_commandsr?   ArgumentParserr[   add_subparsers
subparsersadd_commandrY   runadd_help_argumentsrun_help_commandadd_runpython_argumentsrun_runpython_commandSUPPRESS)rD   r.   r/   r0   r1   r2   r3   r4   r6   r7   r8   r9   r:   r;   ra   r5   s   `              @r   __init__zCommandLineParser.__init__G   s=    	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J  	J&&&&&&"""""" 2244< F  F  F  F!-7DN[[[+44:IA{ 5 } }&"6
"9 	 	; 	; 	;e&959": 	 	= 	= 	=!4ei"< 	 	? 	? 	?H$:HL"7 	 	9 	9 	9v';VZ"6 	 	8 	8 	8!4ei"8 	 	: 	: 	:!4ei"- 	 	/ 	/ 	/!7". 	 	0 	0 	0(BLDT"6 	 	8 	8 	8$a$a$a$a$ackco"A 	 	C 	C 	CH$:HL"5 	 	7 	7 	77#8'+"I 	 	K 	K 	Ki&=y}"Y 	 	[ 	[ 	[ 	!8$:O"> 	 	@ 	@ 	@ 	d&BDD^"*"3 	 	5 	5 	5,.@.NPbPf"*"3 	 	5 	5 	5 	5 	5r   Nc                N   |pg }|t           j        k    r9t          j        d|z   | j                  }| j                            |           n#| j                            |||| j                  } ||           |                    |           |g|z   D ]}|| j	        |<   d S )Nzmeson rG   )r^   aliasesrH   )run_func)
r?   ro   rf   rZ   re   appendrh   
add_parserset_defaultsrd   )rD   nameadd_arguments_funcrs   rN   rr   pis           r   ri   zCommandLineParser.add_commandz   s    -R x((('X_dn]]]A ''----**4haeao*ppA1	)))'! 	! 	!A DM!	! 	!r   r[   argparse.ArgumentParserc                    |                     dddd           |                     ddt          j                               |                     d	           |                     d
t          j                   d S )Nz-c
store_trueeval_argF)actionrK   defaultz	--versionversion)r   r   script_filescript_args)nargs)add_argumentplatformpython_versionr?   	REMAINDERrD   r[   s     r   rm   z)CommandLineParser.add_runpython_arguments   sz    DJPUVVVK	8CZC\C\]]]M***M1CDDDDDr   c                .   |j         t          j        dd <   |j        rt	          |j                   nbdd l}t          j                            dt          j        
                    |j                             |                    |j        d           dS )Nr   r   __main__)run_name)r   sysargvr~   execr   runpypathinsertr    dirnamerun_path)rD   optionsr   s      r   rn   z'CommandLineParser.run_runpython_command   s    * 	E$%%%%LLLHOOArww/BCCDDDNN7.NDDDqr   c                ~    |                     ddt          | j                                                             d S )Nr'   ?)r   choices)r   listrd   keysr   s     r   rk   z$CommandLineParser.add_help_arguments   s9    IS$t}?Q?Q?S?S:T:TUUUUUr   c                    |j         r%| j        |j                                                   n| j                                         dS )Nr   )r'   rd   
print_helpr[   )rD   r   s     r   rl   z"CommandLineParser.run_help_command   sC    ? 	%M'/*557777K""$$$qr   c                   d}t          | j                                                  ddgz   }|r
|d         |vrd}dg|z   }|d         | j        v r |d         }| j        |         }|dd          }n	| j        }d }ddlm} |                    |          }|                    |          }||j	        }|d	v ot          j        d
k     }	 |                    |          |rt          j        dd           |rt          j        dd           t          j                     S # t"          $ r]}	t%          |	|          cY d }	~	|rt          j        dd           |rt          j        dd           t          j                     S d }	~	ww xY w# |rt          j        dd           |rt          j        dd           t          j                     w xY w)NFz-hz--helpr   TrM   r   mesonlib>   rT   rM   r\   rQ   )      znRunning the setup command as `meson [options]` instead of `meson setup [options]` is ambiguous and deprecated.)fatalzdYou are using Python 3.6 which is EOL. Starting with v0.62.0, Meson will require Python 3.7 or newer)r   rd   r   re   r[   r_   r   expand_arguments
parse_argsr'   r   version_infors   r	   warningnoticer   	Exceptionr*   )
rD   argsimplicit_setup_command_noticeknown_commandsr'   r[   r   r   !pending_python_deprecation_noticer   s
             r   rj   zCommandLineParser.run   s   (-% dm002233tX6FF 	$tAwn44,0)9t#D 7d***1gG]7+F8DD[FG((..##D))?oG >>\3CSV\C\ 	*	##G,, - b T[`b b b b0 S ELQS S S SMOOOO  	, 	, 	,7+++++++, b T[`b b b b0 S ELQS S S SMOOOO	, - b T[`b b b b0 S ELQS S S SMOOOOs1   D   
F*F9F:F
 FF
 
AGr   )r[   r{   )
__name__
__module____qualname__rp   ri   rm   rn   rk   rl   rj    r   r   r,   r,   F   s        15 15 15f! ! ! !E E E E  V V V  * * * * *r   r,   c                ~   ddddddd}|                     | |           }	 t          j        d|z             }n,# t          $ r}t	          j        |           Y d }~d	S d }~ww xY w	 |                    |          S # t          $ r7}t	          j        d
|  d           t	          j        |           Y d }~d	S d }~ww xY w)N	meson_exemeson_installdelwithsuffixgtkdochelperhotdochelperregen_checker)exerQ   	delsuffixgtkdochotdoc
regencheckzmesonbuild.scripts.r   z	Error in z helper script:)	r"   	importlibimport_moduleModuleNotFoundErrorr	   r   rj   r   error)script_namer   
script_mapmodule_namemoduler   s         r   run_script_commandr      s    $,.** /1 1J ..k::K()>)LMM   qqqqqqzz+&&&   
;{;;;<<<qqqqqqs-   9 
A"AA"&A; ;
B<,B77B<c                     t           j        j        rXt           j        j                                                            d          s$t           j                            d           d S d S d S )NzUTF-surrogateescape)errors)r   stdoutencodingupper
startswithreconfigurer   r   r   ensure_stdout_accepts_unicoder      si    
z 93:#6#<#<#>#>#I#I&#Q#Q 9
&7888889 9 9 9r   c                <    ddl m} |                    |            d S )Nr   r   )r_   r   set_meson_command)mainfiler   s     r   r   r      s.    x(((((r   c                P   t           j                            d          rPdd l}t          t
          t          t          fD ]}|                    d|d           |                    dd           t          j
        d	k    r]t           j                            d
          r>dd l}|                    dt          d           |                    ddt                     t                       t          j        dk    rLt           j                            dd          dvr*t          j        d           t          j        d           dS | d d          }t!          |          dk    r|d         dk    r|d         dk    r^t#          |           ddlm} 	 |                    dg|dd          z             S # t*          $ r}t-          |d          cY d }~S d }~ww xY wt/          |d         |dd                    S t#          |           t1                                          |          S )NMESON_SHOW_DEPRECATIONSr   r   
mesonbuild)categoryr   ignorez.*importlib-resources.*)message)r   
   MESON_RUNNING_IN_PROJECT_TESTSz)UTF-8 Mode affects .*getpreferredencoding)r   r   cygwinMSYSTEMr_   )MSYSr_   zYThis python3 seems to be msys/python on MSYS2 Windows, but you are in a MinGW environmentzYPlease install and use mingw-w64-x86_64-python3 and/or mingw-w64-x86_64-meson with Pacmanr   z
--internalr   
regenerate)r3   z--reconfigurerM   )r    r!   r"   warningsDeprecationWarningSyntaxWarningFutureWarningPendingDeprecationWarningfilterwarningsr   r   EncodingWarningr   r   r	   r   lenr   r_   r3   rj   r   r*   r   r,   )original_argsr   r   typr   r3   r   s          r   rj   rj      s@   	z~~/00 M&}F_` 	P 	PC##Gc,#OOOO2KLLL
7""rz~~6V'W'W"/,WWW 	2]hwxxx
 "### |xBJNN9b$A$A$U$U
nooo
noooqD 4yyA~~$q'\117l""h'''      0zz?"3d122h">??? 0 0 0#Aw////////0 &d1gtABBx888h""4(((s    F3 3
G=GGGc                 0   dt           j        v r8t          j                            t           j                  sJ t           j        } n/t          j                            t           j        d                   } t          t           j        dd          |           S )Nz	meson.exer   r   )r   
executabler    r   isabsabspathr   rj   )launchers    r   mainr     sg    cn$$w}}S^,,,,,>7??38A;//sx|X&&&r   r   )
__future__r   r_   r   r   modulesos.pathr    r   r   r?   
utils.corer   r   r	   r*   r,   r   r   r   rj   r   r   exitr   r   r   <module>r      sU   # " " " " "       



!I         9 9 9 9 9 9 9 9      " " "LF F F F F F F FP  .9 9 9) ) )
/) /) /)b' ' ' zCHTTVV r   