Re @ sv d Z d d l Z d d l Z d d l Z d d l m Z d d l Z d d l m Z d d l m Z d d l m Z m Z d d l m Z e j e Z d d Z d d Z d d Z d d Z d d d d Z e j Z e j d d d e j d d d d d d e j d d d d d d e j d d d d d! d" Z e d# k rre e j d S)$z%Build a project using PEP 517 hooks. N)toml )BuildEnvironment)Pep517HookCaller)tempdirmkdir_p)FileNotFoundErrorc C sJ d d h } | t | k sF d j d | t | } t | d S)z7 Ensure build system has the requisite fields. requiresz build-backendz"Missing required fields: {missing}missingN)setformat ValueError)systemrequiredmessage r /builddir/build/BUILDROOT/alt-python35-pip-20.2.4-5.el8.x86_64/opt/alt/python35/lib/python3.5/site-packages/pip/_vendor/pep517/build.pyvalidate_system s r c C sB t j j | d } t | } t j | } Wd QRX| d S)zC Load the build system from a source dir (pyproject.toml). zpyproject.tomlNzbuild-system)ospathjoinopenr load) source_dir pyprojectfZpyproject_datar r r load_system s r c C s[ y t | } Wn t t f k r0 i } Yn X| j d d | j d d d g | S)z Given a source dir, attempt to get a build system backend and requirements from pyproject.toml. Fallback to setuptools but only if the file was not found or a build system was not indicated. z build-backendz setuptools.build_meta:__legacy__r setuptoolswheel)r r KeyError setdefault)r r r r r compat_system' s r! c C s d j t } t | | } | i } t j d | | j | t j d t } t j d | | d j t } t | | } | | i } t j j | | } t j | t j j | t j j | Wd QRXd S)Nzget_requires_for_build_{dist}zGot build requires: %sz$Installed dynamic build dependencieszTrying to build %s in %szbuild_{dist}) r localsgetattrloginfopip_installr r r r shutilmovebasename)hooksenvdistdestZget_requires_nameget_requiresreqstdZ build_namebuildfilenamesourcer r r _do_build: s r4 c C s | p t | } t j j | | p' d } t | t | t | | d | j d } t + } | j | d t | | | | Wd QRXd S)Nr, z build-backendzbackend-pathr )r r r r r r r getr r&