3 NO�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 [