3 ”Re2%ã@s„dZddlZddlZddlZddlZddlmZddlm Z ddl m Z ddl m Z ddlmZmZmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZe�rddlmZm Z m!Z!m"Z"m#Z#m$Z$ddl%m&Z&ddl'm(Z(e e(ge)fZ*e$e"e(e"e(fZ+ej,e-ƒZ.ej/dej0ƒZ1dd„Z2dd„Z3dd„Z4dd„Z5dd„Z6dd„Z7dd„Z8d d!„Z9d"d#„Z:d$d%„Z;d&d'„Zt|jƒ}|jst‚|r.t|ƒr.|j|jƒ}n |j|jƒ}|S)zdReturn the persistent or temporary cache directory where the built wheel need to be stored. )rÚ cache_dirr-r/r8Úget_path_for_linkÚget_ephem_path_for_link)r&Ú wheel_cacheÚcache_availabler9rrrÚ_get_cache_dir�s     r>cCsdS)NTr)Ú_rrrr* sr*cCs^y t|ƒWn0tk r<}ztjd|j|ƒdSd}~XnX|j�t||||ƒSQRXdS)zaBuild one wheel. :return: The filename of the built wheel, or None if the build failed. z Building wheel for %s failed: %sN)rÚOSErrorr Úwarningr"Ú build_envÚ_build_one_inside_env)r&Ú output_dirÚ build_optionsÚglobal_optionsÚerrrÚ _build_one¥s   rHc Cstdd���}|jst‚|jrD|js(t‚t|j|j|j||jd�}nt|j|j |j |||jd�}|dk röt jj |ƒ}t jj ||ƒ}y@t|ƒ\}} tj||ƒtjd|j|| |jƒƒtjd|ƒ|Stk rô} ztjd|j| ƒWYdd} ~ XnX|j�st||ƒdSQRXdS)NÚwheel)Úkind)r"ÚbackendÚmetadata_directoryrEÚtempd)r"Ú setup_py_pathr$rFrErMz3Created wheel for %s: filename=%s size=%d sha256=%szStored in directory: %sz Building wheel for %s failed: %s)r r"r/r%rLrÚpep517_backendÚpathrrNÚunpacked_source_directoryÚosÚbasenameÚjoinrÚshutilÚmover r!Ú hexdigestÚ ExceptionrAÚ_clean_one_legacy) r&rDrErFÚtemp_dirÚ wheel_pathÚ wheel_nameÚ dest_pathÚ wheel_hashÚlengthrGrrrrCÀsF          rCc CsVt|j|d�}tjd|jƒyt||jd�dStk rPtjd|jƒdSXdS)N)rFzRunning setup.py clean for %s)ÚcwdTz Failed cleaning build dir for %sF) r rNr r!r"r r$rXÚerror)r&rFÚ clean_argsrrrrYósrYc Csð|s ggfStjddjdd„|Dƒƒƒtƒ�tgg}}xb|D]Z}t||ƒ}t||||ƒ}|r�tt|ƒƒ|_|jj |_ |jj s„t ‚|j |ƒq@|j |ƒq@WWdQRX|rÈtjddjdd „|Dƒƒƒ|rètjd djd d „|Dƒƒƒ||fS) z˜Build wheels. :return: The list of InstallRequirement that succeeded to build and the list of InstallRequirement that failed to build. z*Building wheels for collected packages: %sz, css|] }|jVqdS)N)r")Ú.0r&rrrú szbuild..NzSuccessfully built %sú cSsg|] }|j‘qSr)r")rcr&rrrú ,szbuild..zFailed to build %scSsg|] }|j‘qSr)r")rcr&rrrrf1s)r r!rTrr>rHrr r-Ú file_pathÚlocal_file_pathrr/Úappend) Ú requirementsr<rErFÚbuild_successesÚbuild_failuresr&r9Ú wheel_filerrrÚbuilds4        rn)=Ú__doc__ÚloggingÚos.pathrRÚrerUÚpip._internal.models.linkrÚ$pip._internal.operations.build.wheelrÚ+pip._internal.operations.build.wheel_legacyrÚpip._internal.utils.loggingrÚpip._internal.utils.miscrrrÚ$pip._internal.utils.setuptools_buildr Úpip._internal.utils.subprocessr Úpip._internal.utils.temp_dirr Úpip._internal.utils.typingr Úpip._internal.utils.urlsr Úpip._internal.vcsrÚtypingrrrrrrÚpip._internal.cacherZpip._internal.req.req_installrrZBinaryAllowedPredicateZ BuildResultÚ getLoggerÚ__name__r ÚcompileÚ IGNORECASErrr)r+r,r8r>r*rHrCrYrnrrrrÚsD               -  !3