3 Bu_@sdZddlZddlZddlZddlZddlmZddlmZddl m Z ddl m Z m Z mZddlmZddlmZdd lmZdd lmZmZdd lmZerdd lmZdd lmZmZm Z m!Z!m"Z"m#Z#ddl$m%Z%ej&e'Z(GdddZ)Gddde*Z+Gddde+Z,dS)z;Build Environment used for isolation during sdist building N) OrderedDict)get_python_lib) get_paths) RequirementVersionConflict WorkingSet)__file__) open_spinner)call_subprocess) TempDirectory tempdir_kinds)MYPY_CHECK_RUNNING) TracebackType)TupleSetIterableOptionalListType) PackageFinderc@seZdZddZdS)_PrefixcCsj||_d|_ttjdkrdnd||ddd|_td|d}td|d}||kr\|g|_n ||g|_dS) NFnt posix_prefix)baseplatbase)varsscripts) plat_specificprefixT)pathsetuprosnamebin_dirrlib_dirs)selfrpurelibplatlibr(/builddir/build/BUILDROOT/alt-python36-pip-20.2.4-1.el7.x86_64/opt/alt/python36/lib/python3.6/site-packages/pip/_internal/build_env.py__init__s    z_Prefix.__init__N)__name__ __module__ __qualname__r*r(r(r(r)rsrc@s8eZdZdZddZddZddZdd Zd d Zd S) BuildEnvironmentzFCreates and manages an isolated environment to install build deps c sttjddtfdddD|_g|_g|_x6tt|jj D] }|jj |j |jj |j qFWddtd d tdd fD}tjjjd |_tjj|jstj|jttjj|jd d "}|jtjdj||jdWdQRXdS)NT)kindglobally_managedc3s&|]}|ttjjj|fVqdS)N)rr!rjoin).0r")temp_dirr(r) ;sz,BuildEnvironment.__init__..normaloverlaycSsh|]}tjj|qSr()r!rnormcase)r2siter(r(r) Hsz,BuildEnvironment.__init__..F)rr8zsitecustomize.pywa import os, site, sys # First, drop system-sites related paths. original_sys_path = sys.path[:] known_paths = set() for path in {system_sites!r}: site.addsitedir(path, known_paths=known_paths) system_paths = set( os.path.normcase(path) for path in sys.path[len(original_sys_path):] ) original_sys_path = [ path for path in original_sys_path if os.path.normcase(path) not in system_paths ] sys.path = original_sys_path # Second, add lib directories. # ensuring .pth file are processed. for path in {lib_dirs!r}: assert not path in sys.path site.addsitedir(path) ) system_sitesr$)r5r6)r r BUILD_ENVr _prefixes _bin_dirs _lib_dirsreversedlistvaluesappendr#extendr$rr!rr1 _site_direxistsmkdiropenwritetextwrapdedentformat)r%rr;fpr()r3r)r*4s(    zBuildEnvironment.__init__cCsndddD|_|jdd}|jd}|r>|j|jtj|jg}tjjtjj |dtjj |ddS) NcSsi|]}tjj|d|qS)N)r!environget)r2r"r(r(r) osz.BuildEnvironment.__enter__..PATHPYTHONNOUSERSITE PYTHONPATH1)rQrRrS)rQrRrS) _save_envr>rDsplitr!pathseprErNupdater1)r%rold_path pythonpathr(r(r) __enter__ms   zBuildEnvironment.__enter__cCs>x8|jjD]*\}}|dkr,tjj|dq |tj|<q WdS)N)rUitemsr!rNpop)r%exc_typeexc_valexc_tbvarname old_valuer(r(r)__exit__szBuildEnvironment.__exit__cCst}t}|rt|j}xx|D]p}y"|jtj|dkrD|j|Wq tk r}z,|jt|j dj t|j dfWYdd}~Xq Xq W||fS)zReturn 2 sets: - conflicting requirements: set of (installed, wanted) reqs tuples - missing requirements: set of reqs Nr) setrr?findrparseaddrstrargsas_requirement)r%reqsmissing conflictingwsreqer(r(r)check_requirementss  (z#BuildEnvironment.check_requirementsc Cs|j|}|j std|_|s$dStjtjjtdddd|jdg}t j t j kr\|j dxBdD]:}t|j|}|jd |jd d d jt|pdhfqbW|j} | r|jd| dgx.| ddD]} |jd| gqWn |j dx|jD]} |jd| gqWx|jD]} |jd| gqW|jr<|j d|jrN|j d|j d |j|t|} t|| dWdQRXdS)NTinstallz--ignore-installedz --no-userz--prefixz--no-warn-script-locationz-v no_binary only_binaryz--_-,z:none:z-irrdz--extra-index-urlz --no-indexz --find-linksz--trusted-hostz--prez--prefer-binary)spinner)rtru)r=r AssertionErrorsys executabler!rdirname pip_locationloggergetEffectiveLevelloggingDEBUGrCgetattrformat_controlrDreplacer1sorted index_urls find_links trusted_hostsallow_all_prereleases prefer_binaryr r )r%finder requirementsprefix_as_stringmessagerrjrformatsr extra_indexlinkhostryr(r(r)install_requirementss@              z%BuildEnvironment.install_requirementsN) r+r,r-__doc__r*r[rcrrrr(r(r(r)r.0s 9 r.c@s8eZdZdZddZddZddZdd Zd d Zd S) NoOpBuildEnvironmentz5A no-op drop-in replacement for BuildEnvironment cCsdS)Nr()r%r(r(r)r*szNoOpBuildEnvironment.__init__cCsdS)Nr()r%r(r(r)r[szNoOpBuildEnvironment.__enter__cCsdS)Nr()r%r^r_r`r(r(r)rcszNoOpBuildEnvironment.__exit__cCsdS)Nr()r%r(r(r)cleanupszNoOpBuildEnvironment.cleanupcCs tdS)N)NotImplementedError)r%rrrrr(r(r)rsz)NoOpBuildEnvironment.install_requirementsN) r+r,r-rr*r[rcrrr(r(r(r)rs  r)-rrr!r{rJ collectionsrdistutils.sysconfigr sysconfigrZpip._vendor.pkg_resourcesrrrpiprr~pip._internal.cli.spinnersr pip._internal.utils.subprocessr pip._internal.utils.temp_dirr r pip._internal.utils.typingr typesrtypingrrrrrr"pip._internal.index.package_finderr getLoggerr+rrobjectr.rr(r(r(r)s,           !