a Ggc @sddlZddlZddlmZmZgdZdhZddddd d d d d ddddddd d d dddddddd d dddddddddddddd ddd!d!d"d"d#d ddd$Zd%Ze ed&sej ej ksd'ej vrd(Z dZejdZd)ejdd*Zd+ejdd*Zejej Zejej ZejejZejejZdadZd,d-Zej rhej!eej Z"n ee#Z"ej$d.kre"%&d/reej'e"eeZ"d0ej vreej d0Z"d1d2Z(e)ed3dZ*ej$d.krd4d5Z+e+e"Z"e+e*Z*dmd6d7Z,e,d8Z-e-r2d9D]Z.d:ee.d;<dd?Z/d@dAZ0dBdCZ1dDdEZ2dFdGZ3dndHdIZ4dJdKZ5dLdMZ6dNdOZ7dPdQZ8dRdSZ9dodTdUZ:dVdWZ;dXdYZe2dd8fd^d_Z?d`daZ@dbdcZAdddeZBdfdgZCdhdiZDdjdkZEeFdlkreEdS)pN)pardirrealpath) get_config_h_filenameget_config_varget_config_varsget_makefile_filenameget_pathget_path_names get_paths get_platformget_python_versionget_scheme_namesparse_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 platstdlibpurelibplatlibinclude platincludescriptsdataz{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_homentZnt_userZ posix_userZosx_framework_userFZ real_prefixRPM_BUILD_ROOTz/local%d.%dz%d%dcCs&z t|WSty |YS0dSN)rOSError)pathr !/usr/lib64/python3.9/sysconfig.py_safe_realpathxs  r"r)z\pcbuild\win32z\pcbuild\amd64Z_PYTHON_PROJECT_BASEcCs,dD]"}tjtj|d|rdSqdS)N)ZSetupz Setup.localZModulesTF)osrisfilejoin)dfnr r r!_is_python_source_dirsr(_homecCs0|r,tj|tjtjtdr,tS|S)NZPCbuild)r#rnormcase startswithr%_PREFIX)r&r r r! _fix_pcbuilds r-cCs|rtrttSttSr) _sys_homer( _PROJECT_BASE)Z check_homer r r!is_python_buildsr0T)rrz{srcdir}/Includerz{projectbase}/.rc Csvz|jfi|WStypz|jfitjWYStyj}ztd|dWYd}~n d}~00Yn0dS)Nz{%s})formatKeyErrorr#environAttributeError)sZ local_varsvarr r r! _subst_varss r7cCs0|}|D]\}}||vr"q|||<qdSr)keysitems)Z target_dictZ other_dictZ target_keyskeyvaluer r r! _extend_dicts r<cCsbi}|duri}t|tt|D]4\}}tjdvrFtj|}tjt ||||<q(|S)N)posixr) r<r_INSTALL_SCHEMESr9r#namer expandusernormpathr7)schemevarsresr:r;r r r! _expand_varss   rEcCstjdkrdStjS)Nr=r)r#r?r r r r!_get_default_schemes rFcCsztjdd}|r|Sdd}tjdkrBtjdp6d}||dStjdkrptjrp|dd tjd tjdd S|dd S) NPYTHONUSERBASEcWstjtjj|Sr)r#rr@r%)argsr r r!joinusersz_getuserbase..joinuserrAPPDATA~PythondarwinLibraryrrz.local)r#r3getr?sysplatform _framework version_info)env_baserIbaser r r! _getuserbases   rVc Csrddl}|d}|d}|d}|dur2i}i}i}t|dd}|} Wdn1sd0Y| D]} | dsr| dkrqr|| } | rr| d d \} } | } | d d}d |vr| || <qrz| t vrt t | } Wn$t y| d d || <Yqr0| || <qrt | }d }t|dkr8t|D]}||}||}||}|r|r||kr|n|} n|r|n|} | dur| d } d}| |vrt|| }n| |vrd}nx| tjvrtj| }n`| |vrD|dr|dd|vrd}n$d| |vr2d}nt|d| }n d|| <}|r0|| d}|d| ||}d |vr|||<nz|t vrt t |}Wn t y|||<Yn 0|||<|||dr0|dd|vr0|dd}||vr0|||<n|||<||q@q*|D]"\}} t| tr@| ||<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_)recompileopen readlinesr+stripmatchgroupreplace _ALWAYS_STR ValueErrorintlistr8lentuplesearchstartstrr#r3endremover9 isinstanceupdate)filenamerCr^Z _variable_rxZ _findvar1_rxZ _findvar2_rxdoneZnotdoneflineslinemnvZtmpvZ variablesZrenamed_variablesr?r;Zm1Zm2founditemZafterkr r r!_parse_makefiles    &                             r~cCsdtrtjtptdSttdr0dttj f}nd}ttj drP|dtj j 7}tjt d|dS)NZMakefileabiflagsz config-%s%sZconfig _multiarchz-%sr) _PYTHON_BUILDr#rr%r.r/hasattrrP_PY_VERSION_SHORTrimplementationrr)Zconfig_dir_namer r r!rfs  rc Cs(tjddjtjtjttjdddS)NZ_PYTHON_SYSCONFIGDATA_NAMEz+_sysconfigdata_{abi}_{platform}_{multiarch}rrZ)ZabirQZ multiarch) r#r3rOr1rPrrQgetattrrr r r r!_get_sysconfigdata_namess rc Csddl}i}t}zt||WnLtyl}z4d|}t|drP|d|j}t|WYd}~n d}~00t}z6t|}t||Wdn1s0YWnLty}z4d|}t|dr|d|j}t|WYd}~n d}~00t r |d|d<t }dt j vr>ddl }||} || _| t j|<dttf} tt d r`| d 7} tj| d d tj| |d } t| ddd2}|d|d|j||dWdn1s0Ytdddd}|| Wdn1s0YdS)Nrz.invalid Python installation: unable to open %sstrerrorz (%s)ZLDSHAREDZ BLDSHAREDrMzbuild/lib.%s-%sZgettotalrefcountz-pydebugT)exist_okz.pywutf8)encodingzB# system configuration generated and used by the sysconfig module zbuild_time_vars = )streamzpybuilddir.txt)pprintrr~rrrrr`rrrrPrQtypes ModuleTypebuild_time_varsmodulesr rr#makedirsrr%write) rrCmakefileemsgZconfig_hrur?rmoduleZ pybuilddirZdestfiler r r!_generate_posix_vars|sL  ,        .rcCs0t}t|ttdgd}|j}||dS)Nrr)r __import__globalslocalsrrr)rCr?Z_temprr r r! _init_posixsrcCsfddl}td|d<td|d<td|d<|d|d<d |d <t|d <tjttj |d <dS) NrrZLIBDESTrZ BINLIBDESTrZ INCLUDEPY EXT_SUFFIXz.exeZEXEVERSIONZBINDIR) _imprextension_suffixes_PY_VERSION_SHORT_NO_DOTr#rdirnamer"rP executable)rCrr r r!_init_non_posixs   rc Cs|dur i}ddl}|d}|d}|}|s6q||}|r|dd\}}z|tvrbtt|}Wnty~Yn0|||<q(||}|r(d||d<q(|S)Nrz"#define ([A-Z][A-Za-z0-9_]+) (.*) z&/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/ r[r)r^r_readlinercrdrfrgrh) fprCr^Z define_rxZundef_rxrwrxryrzr r r!rs,       rcCsBtr,tjdkr"tjtptd}q4tp(t}ntd}tj|dS)NrZPCrz pyconfig-64.h)rr#r?rr%r.r/r)Zinc_dirr r r!rs   rcCs tttSr)rksortedr>r r r r!r sr cCstSr) _SCHEME_KEYSr r r r!r sr cCs|rt||St|SdSr)rEr>)rBrCexpandr r r!r s r cCst||||Sr)r )r?rBrCrr r r!rsrcGstdurViattd<ttd<ttd<ttd<ttd<ttd<ttd<ttd<ttd <ttd <t j td <zt j td <Wnt yd td <Yn0t jdkrttd td<t jdkrtttd}|dur|td<ttd<tdt}t jdkr,trt jt}t j||}nt jt}t|td<t jdkrVddl}|t|rg}|D]}|t|qd|StSdS)Nprefix exec_prefixZ py_versionZpy_version_shortZpy_version_nodotZinstalled_baserUZinstalled_platbaseZplatbaseZ projectbase platlibdirrrZrZTZPATHr=rSOuserbasesrcdirrMr) _CONFIG_VARSr, _EXEC_PREFIX _PY_VERSIONrr _BASE_PREFIX_BASE_EXEC_PREFIXr/rPrrr4r#r?rrrOrVrrrrr%r"rQ _osx_supportZcustomize_config_varsappend)rHrrrUrZvalsr?r r r!r sT            rcCs*|dkrddl}|dtdt|S)Nrrz SO is deprecated, use EXT_SUFFIXr)warningswarnDeprecationWarningrrO)r?rr r r!rosrc CstjdkrFdtjvrdSdtjvr.dSdtjvr@dStjStjdksZttd s`tjSd tjvrttjd St\}}}}}| d d }| d d}| d d}|dddkrd||fS|dddkr,|ddkrd}dt |dd|ddf}ddd}|d|tj 7}n|dddkrPddl m }|S|dd d!krd!}ddl}|d"}||} | r| }n2|dd d#krddl} | t|||\}}}d$|||fS)%NrZamd64z win-amd64z(arm)z win-arm32z(arm64)z win-arm64r=unameZ_PYTHON_HOST_PLATFORM/rZ _-linuxz%s-%sZsunosr5Zsolarisz%d.%sr]rZ32bitZ64bit)ilz.%sZaix) aix_platformcygwinz[\d.]+rMz%s-%s-%s)r#r?rPversionlowerrQrr3rrerhmaxsizeZ _aix_supportrr^r_rcrdrZget_platform_osxr) ZosnamehostreleasermachineZbitnessrr^Zrel_rerxrr r r!r {sR             r cCstSr)rr r r r!r sr cCsFtt|D]0\}\}}|dkr0td|td||fqdS)Nrz%s: z %s = "%s") enumeraterr9print)titlerindexr:r;r r r! _print_dicts rcCsfdtjvrtdStdttdttdtttdtttdt dS)Nz--generate-posix-varszPlatform: "%s"zPython version: "%s"z!Current installation scheme: "%s"ZPathsZ Variables) rPargvrrr r rFrr rr r r r!_mains  r__main__)F)N)N)Gr#rPZos.pathrr__all__rfr>Z_PIP_USE_SYSCONFIGrr base_prefixr3Z_prefix_additionrrsplitrrSrrrrAr,rrrbase_exec_prefixrrZ _USER_BASEr"rrr/getcwdr?rendswithr%r(rr.r-r0rrBr7r<rErFrVr~rrrrrrrr r r rrrr r rr__name__r r r r!s     A                ? "  O Q