U e5dRN ã @ sÒ d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZm Z m Z d dlmZm Z d dlmZ d dlmZ d dlmZ dd„ Zd d „ Zddd ddœZdd„ Zdd„ Zddd„ZdddddœZG dd„ deƒZdS )é N)ÚDistutilsExecErrorÚDistutilsPlatformErrorÚCompileErrorÚLibErrorÚ LinkError)Ú CCompilerÚgen_lib_options)Úlog)Úget_platform)Úcountc C s zt jt jdt jt jB d�} W n tk r> t d¡ Y dS X d}d }| �¦ tƒ D ]˜}zt | |¡\}}}W n tk rˆ Y qîY nX |rT|t j krTtj |¡rTztt|ƒƒ}W n ttfk rÐ Y qTY nX |dkrT||krT|| }}qTW 5 Q R X ||fS )Nz'Software\Microsoft\VisualStudio\SxS\VC7)ÚaccesszVisual C++ is not registered©NNr é )ÚwinregZ OpenKeyExÚHKEY_LOCAL_MACHINEZKEY_READZKEY_WOW64_32KEYÚOSErrorr Údebugr Z EnumValueZREG_SZÚosÚpathÚisdirÚintÚfloatÚ ValueErrorÚ TypeError)ÚkeyÚbest_versionÚbest_dirÚiÚvZvc_dirZvtÚversion© r ú//usr/lib64/python3.8/distutils/_msvccompiler.pyÚ_find_vc2015 s2 ý r" c C sª dd l } tj d¡ptj d¡}|s(dS z8tjtj |ddd¡dd d ddd ddg ddd� ¡ }W n tj t tfk r~ Y dS X tj |ddd¡}tj |¡r¦d|fS dS )Nr zProgramFiles(x86)ZProgramFilesr zMicrosoft Visual StudioZ Installerzvswhere.exez-latestz-prereleasez -requiresz1Microsoft.VisualStudio.Component.VC.Tools.x86.x64z -propertyZinstallationPathz -productsÚ*ÚmbcsÚstrict)ÚencodingÚerrorsZVCZ AuxiliaryZBuildé ) Újsonr ÚenvironÚgetÚ subprocessÚcheck_outputr ÚjoinÚstripÚCalledProcessErrorr ÚUnicodeDecodeErrorr )r) Úrootr r r r! Ú_find_vc2017: s2 ú ùr3 Úx86Zx64ZarmZarm64)r4 Ú x86_amd64Úx86_armÚ x86_arm64c C s\ t ƒ \}}|stƒ \}}|s*t d¡ dS tj |d¡}tj |¡sTt d|¡ dS |d fS )Nz$No suitable Visual C++ version foundr z vcvarsall.batz%s cannot be found)r3 r" r r r r r. Úisfile)Ú plat_specÚ_r r Ú vcvarsallr r r! Ú_find_vcvarsallc s r<