a XC?hRa� @s�ddlZddlZddlmZmZgd�ZdhZddddd d d d d �ddddddd d d �dddddddd d �dddddddd�dddddd dd�d!d!d"d"d#d dd�d$�ZdZej � �dZ d%ej dd&�Z d'ej dd&�Zej�ej�Zej�ej�Zej�ej�Zej�ej�ZdadZd(d)�Zej�r@ej�eej��Zn ee���Zej d*k�r|e�!��"d+��r|eej�#eee��Zd,ej$v�r�eej$d,�Zd-d.�Z%e&ed/d�Z'ej d*k�r�d0d1�Z(e(e�Ze(e'�Z'djd3d4�Z)e)d5�Z*e*�r d6D]Z+d7ee+d8<d9ee+d:<�q�d;d<�Z,d=d>�Z-d?d@�Z.dAdB�Z/dCdD�Z0dkdEdF�Z1dGdH�Z2dIdJ�Z3dKdL�Z4dMdN�Z5dOdP�Z6dldQdR�Z7dSdT�Z8dUdV�Z9dWdX�Z:e/�dd5fdYdZ�Z;e/�dd5fd[d\�Zdadb�Z?dcdd�Z@dedf�ZAdgdh�ZBeCdik�r�eB�dS)m�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_hZMACOSX_DEPLOYMENT_TARGETz6{installed_base}/{platlibdir}/python{py_version_short}z0{platbase}/{platlibdir}/python{py_version_short}z1{base}/lib/python{py_version_short}/site-packagesz>{platbase}/{platlibdir}/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})rrrrrrrz0{userbase}/{platlibdir}/python{py_version_short}z5{userbase}/lib/python{py_version_short}/site-packagesz>{userbase}/{platlibdir}/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�ntZnt_userZ posix_userZosx_framework_user�%d.%d�z%d%dcCs&z t|�WSty |YS0dS�N)r�OSError)�path�r�./opt/alt/python39/lib64/python3.9/sysconfig.py�_safe_realpathgs  r!r)z\pcbuild\win32z\pcbuild\amd64Z_PYTHON_PROJECT_BASEcCs,dD]"}tj�tj�|d|��rdSqdS)N)ZSetupz Setup.localZModulesTF)�osr�isfile�join)�d�fnrrr �_is_python_source_dir|sr'�_homecCs0|r,tj�|��tj�tj�td���r,tS|S)NZPCbuild)r"r�normcase� startswithr$�_PREFIX)r%rrr � _fix_pcbuild�s �r,FcCs|rtrtt�Stt�Sr)� _sys_homer'� _PROJECT_BASE)Z check_homerrr �is_python_build�sr/T)rrz{srcdir}/Includerz{projectbase}/.rc Csvz|jfi|��WStypz|jfitj��WYStyj}ztd|�d�WYd}~n d}~00Yn0dS)Nz{%s})�format�KeyErrorr"�environ�AttributeError)�sZ local_vars�varrrr � _subst_vars�s r6cCs0|��}|��D]\}}||vr"q|||<qdSr)�keys�items)Z target_dictZ other_dictZ target_keys�key�valuerrr � _extend_dict�s r;cCsbi}|duri}t|t��t|��D]4\}}tjdvrFtj�|�}tj�t ||��||<q(|S)N)�posixr) r;r�_INSTALL_SCHEMESr8r"�namer� expanduser�normpathr6)�scheme�vars�resr9r:rrr � _expand_vars�s   rDcCstjdkrdStjS)Nr<r)r"r>rrrr �_get_default_scheme�s rEcCsztj�dd�}|r|Sdd�}tjdkrBtj�d�p6d}||d�Stjdkrptjrp|dd tjd tjdd ��S|dd �S) N�PYTHONUSERBASEcWstj�tjj|��Sr)r"rr?r$)�argsrrr �joinuser�sz_getuserbase..joinuserr�APPDATA�~�Python�darwin�Libraryrrz.local)r"r2�getr>�sys�platform� _framework� version_info)�env_baserH�baserrr � _getuserbase�s   �rUc Csrddl}|�d�}|�d�}|�d�}|dur2i}i}i}t|dd��}|��} Wd�n1sd0Y| D]�} | �d�sr| ��dkr�qr|�| �} | rr| �d d �\} } | ��} | �d d�}d |vr�| || <qrz| t vr�t �t | �} Wn$t �y| �d d �|| <Yqr0| || <qrt |� ��}d }t|�dk�r8t|�D�]�}||}|�|�}|�|�}|�r�|�r�|��|��k�r�|n|} n|�r�|n|} | du�r| �d �} d}| |v�r�t|| �}n�| |v�r�d}nx| tjv�r�tj| }n`| |v�rD|�d��r|dd�|v�rd}n$d| |v�r2d}nt|d| �}n d|| <}|�r0|| ��d�}|d| ���||}d |v�r�|||<n�z|t v�r�t �t |�}Wn t �y�|��||<Yn 0|||<|�|�|�d��r0|dd�|v�r0|dd�}||v�r0|||<n|||<|�|��q@�q*|��D]"\}} t| t��r@| ��||<�q@|�|�|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$$�$)ZCFLAGSZLDFLAGSZCPPFLAGSTFZPY_�)�re�compile�open� readlinesr*�strip�match�group�replace� _ALWAYS_STR� ValueError�int�listr7�len�tuple�search�start�strr"r2�end�remover8� isinstance�update)�filenamerBr]Z _variable_rxZ _findvar1_rxZ _findvar2_rxZdoneZnotdone�f�lines�line�m�n�vZtmpvZ variablesZrenamed_variablesr>r:Zm1Zm2�found�itemZafter�krrr �_parse_makefile�s�    &                 �       �     r|cCsdtrtj�tptd�Sttd�r0dttj f}nd}ttj d�rP|dtj j 7}tj�t d�|d�S)NZMakefile�abiflagsz config-%s%sZconfig� _multiarchz-%sr) � _PYTHON_BUILDr"rr$r-r.�hasattrrO�_PY_VERSION_SHORTr}�implementationr~r)Zconfig_dir_namerrr rUs  rc Cs(tj�ddjtjtjttjdd�d��S)NZ_PYTHON_SYSCONFIGDATA_NAMEz+_sysconfigdata_{abi}_{platform}_{multiarch}r~rY)ZabirPZ multiarch) r"r2rNr0rOr}rP�getattrr�rrrr �_get_sysconfigdata_namebs ��r�c Csddl}i}t�}zt||�WnLtyl}z4d|}t|d�rP|d|j}t|��WYd}~n d}~00t�}z6t|��}t||�Wd�n1s�0YWnLty�}z4d|}t|d�r�|d|j}t|��WYd}~n d}~00t �r |d|d<t �}dt j v�r>ddl }|�|�} || _| t j|<dt�tf} tt d ��r`| d 7} tj| d d �tj�| |d �} t| ddd��2}|�d�|�d�|j||d�Wd�n1�s�0Ytdddd��}|�| �Wd�n1�s0YdS)Nrz.invalid Python installation: unable to open %s�strerrorz (%s)ZLDSHAREDZ BLDSHAREDrLzbuild/lib.%s-%sZgettotalrefcountz-pydebugT)�exist_okz.py�w�utf8)�encodingzB# system configuration generated and used by the sysconfig module zbuild_time_vars = )�streamzpybuilddir.txt)�pprintrr|rr�r�rr_rrr�rOrP�types� ModuleType�build_time_vars�modulesr r�r"�makedirsrr$�write) r�rBZmakefile�e�msgZconfig_hrsr>r��moduleZ pybuilddirZdestfilerrr �_generate_posix_varsksL  ,        .r�cCs0t�}t|t�t�dgd�}|j}|�|�dS)Nr�r)r�� __import__�globals�localsr�rq)rBr>Z_tempr�rrr � _init_posix�sr�cCsfddl}td�|d<td�|d<td�|d<|��d|d<d |d <t|d <tj�ttj ��|d <dS) NrrZLIBDESTrZ BINLIBDESTrZ INCLUDEPY� EXT_SUFFIXz.exeZEXEZVERSIONZBINDIR) �_impr�extension_suffixes�_PY_VERSION_SHORT_NO_DOTr"r�dirnamer!rO� executable)rBr�rrr �_init_non_posix�s   r�c Cs�|dur i}ddl}|�d�}|�d�}|��}|s6q�|�|�}|r�|�dd�\}}z|tvrbt�t|�}Wnty~Yn0|||<q(|�|�}|r(d||�d�<q(|S)Nrz"#define ([A-Z][A-Za-z0-9_]+) (.*) z&/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/ rZr)r]r^�readlinerbrcrerfrg) �fprBr]Z define_rxZundef_rxrurvrwrxrrr r�s,       rcCsBtr,tjdkr"tj�tptd�}q4tp(t}ntd�}tj�|d�S)NrZPCrz pyconfig.h)rr"r>rr$r-r.r)Zinc_dirrrr r�s   rcCs ttt��Sr)rj�sortedr=rrrr r �sr cCstSr)� _SCHEME_KEYSrrrr r �sr cCs|rt||�St|SdSr)rDr=)rArB�expandrrr r �s r cCst|||�|Sr)r )r>rArBr�rrr rsrcGs�tdu�rViattd<ttd<ttd<ttd<ttd<ttd<ttd<ttd<ttd <ttd <t j td <zt j td <Wnt y�d td <Yn0t jdkr�tt�d td<t jdkr�tt�t�d�}|dur�|td<t�td<t�dt�}t jdk�r,t�rt j�t��}t j�||�}nt j�t��}t|�td<t jdk�rVddl}|�t�|�r�g}|D]}|�t�|���qd|StSdS)N�prefix� exec_prefixZ py_versionZpy_version_shortZpy_version_nodotZinstalled_baserTZinstalled_platbaseZplatbaseZ projectbase� platlibdirr}rYrZTZPATHr<r��SO�userbase�srcdirrLr)� _CONFIG_VARSr+� _EXEC_PREFIX� _PY_VERSIONr�r�� _BASE_PREFIX�_BASE_EXEC_PREFIXr.rOr�r}r3r"r>r�r�rNrUrrr�rr$r!rP� _osx_supportZcustomize_config_vars�append)rGr�r�rTr�Zvalsr>rrr rsT            rcCs*|dkrddl}|�dtd�t��|�S)Nr�rz SO is deprecated, use EXT_SUFFIXr)�warnings�warn�DeprecationWarningrrN)r>r�rrr r^src Cs�tjdkrFdtj��vrdSdtj��vr.dSdtj��vr@dStjStjdksZttd �s`tjSd tjvrttjd St��\}}}}}|��� d d �}|� d d�}|� d d�}|dd�dkr�d||fS|dd�dk�r,|ddk�r�d}dt |d�d|dd�f}ddd�}|d|tj 7}n�|dd�dk�rPddl m }|�S|dd �d!k�r�d!}ddl}|�d"�}|�|�} | �r�| ��}n2|dd �d#k�r�ddl} | �t�|||�\}}}d$|||fS)%NrZamd64z win-amd64z(arm)z win-arm32z(arm64)z win-arm64r<�unameZ_PYTHON_HOST_PLATFORM�/rY� �_�-�Zlinuxz%s-%sZsunosr�5Zsolarisz%d.%sr\rZ32bitZ64bit)i���l����z.%sZaix)� aix_platform��cygwinz[\d.]+rLz%s-%s-%s)r"r>rO�version�lowerrPr�r2r�rdrg�maxsizeZ _aix_supportr�r]r^rbrcr�Zget_platform_osxr) ZosnameZhost�releaser��machineZbitnessr�r]Zrel_rervr�rrr r jsR            � r cCstSr)r�rrrr r �sr cCsFtt|����D]0\}\}}|dkr0td|�td||f�qdS)Nrz%s: z %s = "%s")� enumerater�r8�print)�titler�indexr9r:rrr � _print_dict�s r�cCsfdtjvrt�dStdt��tdt��tdt��t�tdt��t�tdt ��dS)Nz--generate-posix-varszPlatform: "%s"zPython version: "%s"z!Current installation scheme: "%s"ZPathsZ Variables) rO�argvr�r�r r rEr�r rrrrr �_main�s  r��__main__)F)N)N)Dr"rOZos.pathrr�__all__rer=r�r��splitr�rRr�r�rr@r�r+� base_prefixr�r�r��base_exec_prefixr�r�Z _USER_BASEr!r�r�r.�getcwdr>r��endswithr$r2r'r�r-r,r/rrAr6r;rDrErUr|rr�r�r�r�rrr r r rrrr r r�r��__name__rrrr �s��� � � � � ��?   �           ? "  O Q