
Y<                 @   s  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 Z d d l	 m
 Z
 m Z m Z d d l	 m Z d d l	 m Z m Z m Z m Z d  d l Z d d l	 m Z m Z d d l m Z d d l m Z m Z e j   Z d	 Z d
 d   Z e d  e d  e d  e d  e d  e d  e d  e d  e d  e d  e d  e d  e d  e d  e d  e d d d e d  e d d d e d   e d!  e d" d# d$ e d% d d& e d' d d& d( d)   Z e j d* d+ d d, d- e j d. d d/ d# d0 d+ g  d1 d2 d, d3 e j d4 d5 d d6 d6 e j e j d7 d+ e j  d8 e d9 e d, d: e j d; d< d= Gd> d?   d?  Z! d@ dA   Z" d dB dC  Z# d S)D    N   )environmentinterpretermesonlib)build)mconfmintromtestrewriter)mlogcoredata)MesonException)WrapModewraptool1c             K   s   | j  d |  j d d   } t j |  } | j  d d   d k rK d n d } t j |  } | s | j d	  d
 t j |  } n  | r | r | | d <n  t j d |  d t j |  d | | d  S)Ndest-_action
store_truestore_falseTF.z (default: %s).choicesz--defaulthelp)r   r   )	getreplacer   Zget_builtin_option_choicesZget_builtin_option_descriptionrstripZget_builtin_option_defaultparseradd_argument)namekwargskcbh r&   P/mnt/raid6/a/bak/reczko/tools/protein/utils/meson-0.42.1/mesonbuild/mesonmain.pyadd_builtin_argument   s    $#r(   prefixZlibdirZ
libexecdirZbindirZsbindirZ
includedirZdatadirZmandirZinfodirZ	localedirZ
sysconfdirZlocalstatedirZsharedstatedirbackendZ	buildtypestripr   r   ZunityZwerrorZlayoutzdefault-libraryZ	warnlevelr   Zwarning_levelZstdsplitr   Z	errorlogsc             C   sg   y t  t |   SWnO t k
 rb d j d d   t D  } d j |  |  } t j |   Yn Xd  S)Nz, c             S   s   g  |  ] } | j  j    q Sr&   )r    lower).0tr&   r&   r'   
<listcomp>F   s   	 z wrapmodetype.<locals>.<listcomp>z$invalid argument {!r}, use one of {})getattrr   AttributeErrorjoinformatargparseZArgumentTypeError)Zstringmsgr&   r&   r'   wrapmodetypeB   s    r6   z--cross-filer   r   z.File describing cross compilation environment.z-DappendZprojectoptionsZmetavarZoptionzNSet the value of an option, can be used several times to set multiple options.z-vz	--versionversionz--wrap-modetyper   zSpecial wrap mode to usedirectoriesZnargs*c               @   sd   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z d d   Z d d   Z	 d S)MesonAppc             C   s@   |  j  | | |  \ |  _ |  _ | |  _ | |  _ | |  _ d  S)N)validate_dirs
source_dir	build_dirmeson_script_launcheroptionsoriginal_cmd_line_args)selfdir1dir2Zscript_launcher	handshakerA   rB   r&   r&   r'   __init__X   s    !		zMesonApp.__init__c             C   s(   t  j j | t j  } t  j j |  S)N)ospathr2   r   build_filenameexists)rC   dirnameZfnamer&   r&   r'   has_build_file^   s    zMesonApp.has_build_filec             C   sn  t  j j t  j j |   } t  j j t  j j |   } t  j j |  s^ t  j |  n  t  j j |  s t  j |  n  t j t  j |  j  s t	 d |   n  t j t  j |  j  s t	 d |   n  t  j j
 | |  r t	 d   n  |  j |  r>|  j |  r4t	 d t j   n  | | f S|  j |  rW| | f St	 d t j   d  S)Nz%s is not a directoryzUSource and build directories must not be the same. Create a pristine build directory.z)Both directories contain a build file %s.z+Neither directory contains a build file %s.)rH   rI   abspathrealpathrK   makedirsstatS_ISDIRst_modeRuntimeErrorsamefilerM   r   rJ   )rC   rD   rE   Zndir1Zndir2r&   r&   r'   validate_core_dirsb   s&    

zMesonApp.validate_core_dirsc             C   s   |  j  | |  \ } } t j j | d  } t j j |  rb | sw t d  t j d  qw n | rw t d   n  | | f S)Nzmeson-private/coredata.data  Trying to run Meson on a build directory that has already been configured.
If you want to build it, just run your build command (e.g. ninja) inside the
build directory. Meson will autodetect any changes in your setup and regenerate
itself as required. Though it shouldn't be necessary, running ninja reconfigure
will force Meson to regenerate the build files.

If you want to change option values, use meson configure instead.r   z1Something went terribly wrong. Please file a bug.)	rV   rH   rI   r2   rK   printsysexitrT   )rC   rD   rE   rF   Zsrc_dirr?   Zpriv_dirr&   r&   r'   r=   w   s    zMesonApp.validate_dirsc             C   sW   t  j j d d  } | | j j k rS t j d | j j | f  | | j _ n  d  S)NZPKG_CONFIG_PATH zBPKG_CONFIG_PATH has changed between invocations from "%s" to "%s".)rH   environr   r   Zpkgconf_envvarr   Zwarning)rC   envZcurvarr&   r&   r'   check_pkgconfig_envvar   s
    	zMesonApp.check_pkgconfig_envvarc          
   C   s`   t  j |  j |  j |  j |  j |  j  } t j | j	    z |  j
 |  Wd  t j   Xd  S)N)r   ZEnvironmentr>   r?   r@   rA   rB   r   Z
initializeZget_log_dir	_generateZshutdown)rC   r\   r&   r&   r'   generate   s
    *zMesonApp.generatec             C   s;  t  j d t j j   j    t  j d t j  t  j d t j    t  j	 t  j
 d   |  j |  t  j	 d t j  t  j	 d t  j
 |  j   t  j	 d t  j
 |  j   | j   r t  j	 d t  j
 d	   n t  j	 d t  j
 d
   t j |  } |  j j d k r:d d l m } | j |  } n6|  j j d k rd d l m } | j |  } t  j	 d t  j
 | j   n |  j j d k rd d l m } | j |  } n |  j j d k rd d l m } | j |  } n~ |  j j d k r&d d l m } | j |  } nJ |  j j d k rZd d l m } | j  |  } n t! d |  j j   t" j# | |  }	 | j   rAt  j	 d t  j
 |	 j$ d j% g  i     t  j	 d t  j
 |	 j$ d j& g  i     t  j	 d t  j
 |	 j$ d j% g  i     t  j	 d t  j
 |	 j$ d j& g  i     n  t  j	 d t  j
 |	 j$ d  j% g  i     t  j	 d! t  j
 |	 j$ d  j& g  i     |	 j'   t( j(   }
 | j) |	  t* j+ j, | j-   d"  } t. | d#   } t/ j0 | |  Wd  QX| j1 |
  } y | j2   Wn t* j3 |    Yn Xd  S)$NzBuild started atzPython binary:zPython system:zThe Meson build systemzVersion:zSource dir:z
Build dir:zBuild type:zcross buildznative buildZninjar   )ninjabackendZvs)vs2010backendz$Auto detected Visual Studio backend:Zvs2010Zvs2015)vs2015backendZvs2017)vs2017backendZxcode)xcodebackendzUnknown backend "%s".zHost machine cpu family:Zhost_machinezHost machine cpu:zTarget machine cpu family:Ztarget_machinezTarget machine cpu:zBuild machine cpu family:Zbuild_machinezBuild machine cpu:z	build.datwb)4r   debugdatetimeZnowZ	isoformatrX   
executableplatformsystemlogZboldr]   r   r8   r>   r?   Zis_cross_buildr   ZBuildrA   r*   r`   ZNinjaBackendra   Zautodetect_vs_versionr    ZVs2010Backendrb   ZVs2015Backendrc   ZVs2017Backendrd   ZXCodeBackendrT   r   ZInterpreterZbuiltinZcpu_family_methodZ
cpu_methodruntimer_   rH   rI   r2   Zget_scratch_diropenpickledumpZdump_coredataZrun_postconf_scriptsunlink)rC   r\   r$   r`   gra   rb   rc   rd   ZintrZcoredata_mtimeZdumpfilefZcdfr&   r&   r'   r^      sh    ,,,/,,

zMesonApp._generateN)
__name__
__module____qualname__rG   rM   rV   r=   r]   r_   r^   r&   r&   r&   r'   r<   V   s   r<   c             C   s-  |  d } |  d d   } | d k rD d d  l  j j } | j } n| d k rn d d  l j j } | j } n| d k r d d  l j j } | j } n| d k r d d  l j j	 } | j } na| d k r d d  l
 j j } | j } n7| d k rd d  l j j } | j } n| d	 k r@d d  l j j } | j } n| d
 k rjd d  l j j } | j } n| d k rd d  l j j } | j } n| d k rd d  l j j } | j } ne| d k rd d  l j j } | j } n;| d k rd d  l j j } | j } n| d k r<d d  l j j } | j } n | d k rfd d  l j j } | j } n | d k rd d  l j j } | j } n | d k rd d  l  j j! } | j } ni | d k rd d  l" j j# } | j } n? | d k rd d  l$ j j% } | j } n t& d j' |    | |  S)Nr   r   Zexe
cleantreesZinstallcommandrunnerZ	delsuffixdepfixer
dirchangerZgtkdocmsgfmthelperZ
regenchecksymbolextractor	scanbuild	vcstaggergettext
yelphelper	uninstalldistcoveragezUnknown internal command {}.)(Zmesonbuild.scripts.meson_exescriptsZ	meson_exerl   Zmesonbuild.scripts.cleantreesrw   Z mesonbuild.scripts.meson_installZmeson_installZ mesonbuild.scripts.commandrunnerrx   Z mesonbuild.scripts.delwithsuffixZdelwithsuffixZmesonbuild.scripts.depfixerry   Zmesonbuild.scripts.dirchangerrz   Zmesonbuild.scripts.gtkdochelperZgtkdochelperZmesonbuild.scripts.msgfmthelperr{   Z mesonbuild.scripts.regen_checkerZregen_checkerZ"mesonbuild.scripts.symbolextractorr|   Zmesonbuild.scripts.scanbuildr}   Zmesonbuild.scripts.vcstaggerr~   Zmesonbuild.scripts.gettextr   Zmesonbuild.scripts.yelphelperr   Zmesonbuild.scripts.uninstallr   Zmesonbuild.scripts.distr   Zmesonbuild.scripts.coverager   r   r3   )argsZcmdnameZcmdargsabcZcmdfuncr&   r&   r'   run_script_command   st    
r   c          .   C   sh  t  j d# k  r8 t d  t d t  j  t d  d St |   d k r|  d } |  d d   } | d k r} t j |  S| d	 k r | }  q| d
 k r t j |  S| d k r t j |  S| d k r t j |  S| d k r t	 j |  S| d k rt
 j |  Sn  t |   d k r|  d d k r|  d d k r|  d } y! t  j t |  d d     Wqt k
 r} z> t j t j d j |    t j |  t  j d  WYd  d  } ~ XqXn  |  d d   }  d } n d } t j |   }  t j |   } | j }  |  s2t |   d k r|  rmt j j d  rmt j j d  rmd } d }	 qt d j t  j d   t d  t d j t  j d   d Sn/ |  d } t |   d k r|  d }	 n d }	 y> | d  k r t  j d  n  t | |	 | | | t  j  }
 Wn= t k
 r^} z t d  t |  d SWYd  d  } ~ Xn Xy |
 j   Wn t k
 rc} z t | t  r+t | d  rt | d  rt | d  rt j t j d  | j  | j! | j" f   n t j t j d!   t j |  t j# j$ d"  rM  qMn" t j# j$ d"  rC  n  t% j&   d SWYd  d  } ~ Xn Xd S)$N      z,Meson works correctly only with python 3.4+.zYou have python %s.zPlease update your environmentr   r   ZtestZsetupZ
introspectZrewriteZ	configurewrap   z
--internalZ
regeneratez
Error in {} helper script:TFzmeson.buildz../meson.buildz..r   z'{} <source directory> <build directory>zCIf you omit either directory, the current directory is substituted.z#Run {} --help for more information.zI iz broken. Sorry.zError during basic setup:
filelinenocolnoz;
Meson encountered an error in file %s, line %d, column %d:z
Meson encountered an error:ZMESON_FORCE_BACKTRACE)r   r   )'rX   version_inforW   r8   lenr	   rl   r   r
   r   r   rY   r   r   r   rk   Zredr3   r   Zexpand_argumentsr   Z
parse_argsr:   rH   rI   rK   argvr<   	Exceptionr_   
isinstancehasattrr   r   r   r[   r   	tracebackZ	print_exc)r   ZmainfileZcmd_nameZremaining_argsZscripterF   rA   rD   rE   Zappr&   r&   r'   rl     s    


	"
!#		,	

"

-/	
rl   )$rX   rQ   r   ro   r4   rm   rg   Zos.pathrH   rZ   r   r   r   r   r   r   r	   r
   ri   r   r   r   r   r   r   ZArgumentParserr   Zdefault_warningr(   r6   r   r8   r   r<   r   rl   r&   r&   r&   r'   <module>   sb   <"

















$
=