3 Re @ s d Z ddlZddlZddlZddlmZ ddlZddlmZ ddl m Z ddlmZm Z ddlmZ ejeZd d Zdd Zd d Zdd Zd#ddZej Zejddd ejddddd ejddddd ejdddd d d! Zed"kr eej dS )$z%Build a project using PEP 517 hooks. N)toml )BuildEnvironment)Pep517HookCaller)tempdirmkdir_p)FileNotFoundErrorc C s4 ddh}|t | ks0dj|t | d}t|dS )z7 Ensure build system has the requisite fields. requiresz build-backendz"Missing required fields: {missing})missingN)setformat ValueError)systemrequiredmessage r /builddir/build/BUILDROOT/alt-python36-pip-20.2.4-5.el9.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_vendor/pep517/build.pyvalidate_system s r c C s4 t jj| d}t|}tj|}W dQ R X |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 sJ yt | }W n ttfk r( i }Y nX |jdd |jdddg |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 dj f t }t| |}|i }tjd| |j| tjd t b}tjd|| dj f t }t| |} | |i } tjj || }t j|tjj |tjj| W d Q R X d 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 sv |p t | }tjj| |pd}t| t| t| |d |jd}t "}|j |d t |||| W d Q R X d S )Nr, z build-backendzbackend-pathr )r r r r r r r getr r&