grthtrhthjhtyjytjytkergtrhtrjytjerhrfh3 �u„j,aã @sddlZddlZddlmZmZddddddd d d d d g Zdddddddddœdddddddddœdddddddddœddd d d!d"d#d$œd%d%d&d'd(d)d#d$œd*d*d+d+d,d)d#d$œd-œZdnZejj ƒdZ d5ej dd6…Z d7ej dd6…Z ejjejƒZejjejƒZejjejƒZejjejƒZdadZd8d9„Zej�rLejjeejƒƒZn eejƒƒZejd:k�rˆej ƒj!doƒ�rˆeejj"eeeƒƒZd=ej#k�r¢eej#d=ƒZd>d?„Z$e%ed@dƒZ&e&�rìejd:k�rìe&j ƒj!dpƒ�rìejjejje&ƒƒZ&dqdBdC„Z'e'dDƒZ(e(�r,x&drD]Z)dGee)d2<dHee)dI<�q WdJdK„Z*dLdM„Z+dNdO„Z,dPdQ„Z-dRdS„Z.dsdTdU„Z/dVd„Z0dWdX„Z1dYdZ„Z2d[d\„Z3d]d^„Z4dtd_d „Z5d`d„Z6dad „Z7dbd„Z8e-ƒddDfdcd „Z9e-ƒddDfddd„Z:ded„Z;dfd„Zdidj„Z?dkdl„Z@eAdmk�r e@ƒdS)uéN)ÚpardirÚrealpathÚget_config_h_filenameÚget_config_varÚget_config_varsÚget_makefile_filenameÚget_pathÚget_path_namesÚ get_pathsÚ get_platformÚget_python_versionÚget_scheme_namesÚparse_config_hz/{installed_base}/lib64/python{py_version_short}z){platbase}/lib64/python{py_version_short}z1{base}/lib/python{py_version_short}/site-packagesz7{platbase}/lib64/python{py_version_short}/site-packagesz;{installed_base}/include/python{py_version_short}{abiflags}z?{installed_platbase}/include/python{py_version_short}{abiflags}z {base}/binz{base})ÚstdlibÚ platstdlibÚpurelibÚplatlibÚincludeÚ platincludeÚscriptsÚdataz{installed_base}/lib/pythonz{base}/lib/pythonz{installed_base}/include/pythonz{installed_base}/Libz {base}/Libz{base}/Lib/site-packagesz{installed_base}/Includez{base}/Scriptsz#{userbase}/Python{py_version_nodot}z1{userbase}/Python{py_version_nodot}/site-packagesz+{userbase}/Python{py_version_nodot}/Includez+{userbase}/Python{py_version_nodot}/Scriptsz {userbase})rrrrrrrz){userbase}/lib64/python{py_version_short}z5{userbase}/lib/python{py_version_short}/site-packagesz7{userbase}/lib64/python{py_version_short}/site-packagesz+{userbase}/include/python{py_version_short}z{userbase}/binz{userbase}/lib/pythonz#{userbase}/lib/python/site-packagesz{userbase}/include)Ú posix_prefixÚ posix_homeÚntÚnt_userÚ posix_userÚosx_framework_userrrrrrrrz%d.%déz%d%dc Cs"yt|ƒStk r|SXdS)N)rÚOSError)Úpath©r ú!/usr/lib64/python3.6/sysconfig.pyÚ_safe_realpathcsr"rú\pcbuild\win32ú\pcbuild\amd64Z_PYTHON_PROJECT_BASEcCs.x(dD] }tjjtjj|d|ƒƒrdSqWdS)Nú Setup.distú Setup.localÚModulesTF)r%r&)ÚosrÚisfileÚjoin)ÚdÚfnr r r!Ú_is_python_source_dirxs r-Ú_homeFcCs|rtrttƒSttƒS)N)Ú _sys_homer-Ú _PROJECT_BASE)Ú check_homer r r!Úis_python_build‚sr2Trrz{srcdir}/Includez{projectbase}/.rcCsdy |jf|ŽStk r^y|jftjŽStk rX}ztd|ƒ‚WYdd}~XnXYnXdS)Nz{%s})ÚformatÚKeyErrorr(ÚenvironÚAttributeError)ÚsÚ local_varsÚvarr r r!Ú _subst_vars�s r:cCs4|jƒ}x&|jƒD]\}}||kr$q|||<qWdS)N)ÚkeysÚitems)Ú target_dictÚ other_dictÚ target_keysÚkeyÚvaluer r r!Ú _extend_dict˜s rBcCsfi}|dkri}t|tƒƒxDt|jƒD]4\}}tjdkrHtjj|ƒ}tjjt ||ƒƒ||<q*W|S)NÚposixr)rCr) rBrÚ_INSTALL_SCHEMESr<r(ÚnamerÚ expanduserÚnormpathr:)ÚschemeÚvarsÚresr@rAr r r!Ú _expand_vars s   rKcCstjdkrdStjS)NrCr)r(rEr r r r!Ú_get_default_scheme­s rLcCs’tjjddƒ}dd„}tjdkrBtjjdƒp.d}|r8|S||dƒStjdkr|td ƒ}|r||r`|S|dd |d tjdd …ƒS|r„|S|dd ƒSdS)NÚPYTHONUSERBASEcWstjjtjj|ŽƒS)N)r(rrFr*)Úargsr r r!Újoinuser·sz_getuserbase..joinuserrÚAPPDATAú~ÚPythonÚdarwinÚPYTHONFRAMEWORKÚLibraryz%d.%drz.local)r(r5ÚgetrEÚsysÚplatformrÚ version_info)Úenv_baserOÚbaseÚ frameworkr r r!Ú _getuserbase´s"    r]cCsZddl}|jdƒ}|jdƒ}|jdƒ}|dkr2i}i}i}t|dd��}|jƒ} WdQRXx¢| D]š} | jdƒs`| jƒdkr|q`|j| ƒ} | r`| jd d ƒ\} } | jƒ} | jd dƒ}d |krÀ| || <q`y t | ƒ} Wn$t k rð| jd d ƒ|| <Yq`X| || <q`Wt |j ƒƒ}d}�x t |ƒdk�r�xòt|ƒD�]ä}||}|j|ƒ}|j|ƒ}|�rv|�rv|jƒ|jƒk�rp|n|} n|�r€|n|} | dk �rþ| jd ƒ} d}| |k�r´t|| ƒ}nˆ| |k�rÄd}nx| tjk�rÜtj| }n`| |k�r0|jdƒ�r |dd…|k�r d}n$d| |k�rd}nt|d| ƒ}n d|| <}|�r|| jƒd…}|d| jƒ…||}d |k�r~|||<n~y t |ƒ}Wn"t k �r¬|jƒ||<Yn X|||<|j|ƒ|jdƒ�r|dd…|k�r|dd…}||k�r|||<n|||<|j|ƒ�q,W�qWx.|jƒD]"\}} t| tƒ�r&| jƒ||<�q&W|j|ƒ|S)Nrz"([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)z\$\(([A-Za-z][A-Za-z0-9_]*)\)z\${([A-Za-z][A-Za-z0-9_]*)}Úsurrogateescape)Úerrorsú#Úérz$$ú$ÚCFLAGSÚLDFLAGSÚCPPFLAGSTFÚPY_é)rdrerf)ÚreÚcompileÚopenÚ readlinesÚ startswithÚstripÚmatchÚgroupÚreplaceÚintÚ ValueErrorÚlistr;ÚlenÚtupleÚsearchÚstartÚstrr(r5ÚendÚremover<Ú isinstanceÚupdate)ÚfilenamerIriÚ _variable_rxÚ _findvar1_rxÚ _findvar2_rxÚdoneÚnotdoneÚfÚlinesÚlineÚmÚnÚvÚtmpvÚ variablesÚrenamed_variablesrErAÚm1Úm2ÚfoundÚitemÚafterÚkr r r!Ú_parse_makefileÐs–                                 r“cCsdtrtjjtptdƒSttdƒr0dttj f}nd}ttj dƒrP|dtj j 7}tjjt dƒ|dƒS)NÚMakefileÚabiflagsz config-%s%sÚconfigÚ _multiarchz-%sr) Ú _PYTHON_BUILDr(rr*r/r0ÚhasattrrWÚ_PY_VERSION_SHORTr•Úimplementationr—r)Úconfig_dir_namer r r!rLs  c Cs(tjjddjtjtjttjddƒd�ƒS)NÚ_PYTHON_SYSCONFIGDATA_NAMEz+_sysconfigdata_{abi}_{platform}_{multiarch}r—ra)ÚabirXÚ multiarch) r(r5rVr3rWr•rXÚgetattrr›r r r r!Ú_get_sysconfigdata_nameYs r¡c ,CsÊddl}i}tƒ}yt||ƒWnJtk rj}z.d|}t|dƒrR|d|j}t|ƒ‚WYdd}~XnXtƒ}y"t|ƒ�}t||ƒWdQRXWnJtk rÞ}z.d|}t|dƒrÆ|d|j}t|ƒ‚WYdd}~XnXt rð|d|d<t ƒ}dt j k�r$ddl }|j|ƒ} || _| t j|<dtƒtf} tt d ƒ�rF| d 7} tj| d d �tjj| |d ƒ} t| ddd��(}|jdƒ|jdƒ|j||d�WdQRXtdddd��}|j| ƒWdQRXdS)Nrz.invalid Python installation: unable to open %sÚstrerrorz (%s)ÚLDSHAREDÚ BLDSHAREDrSzbuild/lib.%s-%sÚgettotalrefcountz-pydebugT)Úexist_okz.pyÚwÚutf8)ÚencodingzB# system configuration generated and used by the sysconfig module zbuild_time_vars = )Ústreamzpybuilddir.txtÚascii)Úpprintrr“rr™r¢rrkrr˜r¡rWrXÚtypesÚ ModuleTypeÚbuild_time_varsÚmodulesr ršr(Úmakedirsrr*Úwrite) r¬rIÚmakefileÚeÚmsgÚconfig_hr„rEr­ÚmoduleÚ pybuilddirÚdestfiler r r!Ú_generate_posix_varsbsL          rºcCs0tƒ}t|tƒtƒdgdƒ}|j}|j|ƒdS)Nr¯r)r¡Ú __import__ÚglobalsÚlocalsr¯r})rIrEÚ_tempr¯r r r!Ú _init_posix¡sr¿cCsVtdƒ|d<tdƒ|d<tdƒ|d<d|d<d |d <t|d <tjjttjƒƒ|d <dS) NrÚLIBDESTrÚ BINLIBDESTrÚ INCLUDEPYz.pydÚ EXT_SUFFIXz.exeÚEXEÚVERSIONÚBINDIR)rÚ_PY_VERSION_SHORT_NO_DOTr(rÚdirnamer"rWÚ executable)rIr r r!Ú_init_non_posix©s   rÊc Cs¦|dkr i}ddl}|jdƒ}|jdƒ}xx|jƒ}|s8P|j|ƒ}|r‚|jddƒ\}}y t|ƒ}Wntk rvYnX|||<q*|j|ƒ}|r*d||jdƒ<q*W|S)Nrz"#define ([A-Z][A-Za-z0-9_]+) (.*) z&/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/ rbr)rirjÚreadlinerorprrrs) ÚfprIriÚ define_rxÚundef_rxr†r‡rˆr‰r r r!r¹s*      cCsBtr,tjdkr"tjjtptdƒ}q4tp(t}ntdƒ}tjj|dƒS)NrÚPCrz pyconfig-64.h)r˜r(rErr*r/r0r)Úinc_dirr r r!rÙs   cCs tttƒƒS)N)rvÚsortedrDr r r r!r åscCstS)N)Ú _SCHEME_KEYSr r r r!r êscCs|rt||ƒSt|SdS)N)rKrD)rHrIÚexpandr r r!r ïs cCst|||ƒ|S)N)r )rErHrIrÓr r r!rûsc Gs|tdk�rFiattd<ttd<ttd<ttd<ttd<ttd<ttd<ttd<ttd <ttd <yt j td <Wnt k rˆd td <YnXt j d krœttƒt j dkr®ttƒtjdƒ}|dk rÈ|td<tƒtd<tjdtƒ}t j dk�rt�rt jjtƒƒ}t jj||ƒ}nt jjtƒƒ}t|ƒtd<t jdk�rFddl}|jtƒ|�rtg}x|D]}|jtj|ƒƒ�qVW|StSdS)NÚprefixÚ exec_prefixÚ py_versionÚpy_version_shortÚpy_version_nodotÚinstalled_baser[Úinstalled_platbaseÚplatbaseÚ projectbaser•rarrCrÃÚSOÚuserbaseÚsrcdirrSr)Ú _CONFIG_VARSÚ_PREFIXÚ _EXEC_PREFIXÚ _PY_VERSIONršrÇÚ _BASE_PREFIXÚ_BASE_EXEC_PREFIXr0rWr•r6r(rErÊr¿rVr]r˜rrÈrr*r"rXÚ _osx_supportÚcustomize_config_varsÚappend)rNrÝrßr[ræÚvalsrEr r r!rsP           cCs*|dkrddl}|jdtdƒtƒj|ƒS)NrÝrz SO is deprecated, use EXT_SUFFIXr)ÚwarningsÚwarnÚDeprecationWarningrrV)rErêr r r!rPscCstjdkrnd}tjj|ƒ}|d(kr(tjStjjd|ƒ}tj|t|ƒ|…jƒ}|dkr\dS|dkrhdStjStjd ks„ttd ƒ rŠtjSd tj kržtj d Stj ƒ\}}}}}|jƒj d d ƒ}|j ddƒ}|j d dƒ}|dd…dkrôd||fS|dd…dk�rV|ddk�rd}dt |dƒd|dd…f}dddœ} |d| tj 7}n²|dd…d k�rtd||fS|dd…d!k�r”d"|||fS|dd#…d$k�rÖd$}ddl} | jd%ƒ} | j|ƒ} | �r| jƒ}n2|dd#…d&k�rddl} | jtƒ|||ƒ\}}}d'|||fS))Nrz bit (rbú)Úamd64z win-amd64Úitaniumzwin-ia64rCÚunameÚ_PYTHON_HOST_PLATFORMú/raú Ú_ú-éÚlinuxz%s-%sÚsunosrÚ5Úsolarisz%d.%srhrÚ32bitÚ64bit)iÿÿÿlÿÿÿÿz.%séÚirixÚaixz%s-%s.%séÚcygwinz[\d.]+rSz%s-%s-%séÿÿÿÿ)r(rErWÚversionÚfindrXruÚlowerr™r5rðrqrrÚmaxsizerirjrorpræÚget_platform_osxr)rÔÚiÚjÚlookÚosnameÚhostÚreleaserÚmachineÚbitnessriÚrel_rer‡rær r r!r \sZ             cCstS)N)ršr r r r!r ·scCsJxDtt|jƒƒƒD]0\}\}}|dkr2td|ƒtd||fƒqWdS)Nrz%s: z %s = "%s")Ú enumeraterÑr<Úprint)ÚtitlerÚindexr@rAr r r!Ú _print_dict»s rcCsfdtjkrtƒdStdtƒƒtdtƒƒtdtƒƒtƒtdtƒƒtƒtdt ƒƒdS)Nz--generate-posix-varszPlatform: "%s"zPython version: "%s"z!Current installation scheme: "%s"ÚPathsÚ Variables) rWÚargvrºrr r rLrr rr r r r!Ú_mainÂs  rÚ__main__)rrrrrrr)r#r$)r#r$)F)rr)N)N)Br(rWZos.pathrrÚ__all__rDrÒrÚsplitrãrYršrÇrrGrÔráÚ base_prefixrärÕrâÚbase_exec_prefixråràÚ _USER_BASEr"rÉrÈr0ÚgetcwdrErÚendswithr*r5r-r r/r2r˜rHr:rBrKrLr]r“rr¡rºr¿rÊrrr r r rrrr r rrÚ__name__r r r r!Úsä           |  ?   M [