a (Re 8@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z ddl mZejdrddlmmmmZn ejejZzeZWneydZYn0eZgdZd-ddZejd.dd Z ejd d Z!ejd d Z"ejddZ#Gddde$Z%GdddZ&ejddZ'ddZ(ejddZ)ejddZ*hdZ+ddZ,dd Z-d!d"Z.Gd#d$d$Z/e0ed%rej1gZ2ngZ2Gd&d'd'e/Z3e4ej5d(d)d*6DZ7Gd+d,d,e Z8dS)/N)DistutilsError) working_setjava)AbstractSandboxDirectorySandboxSandboxViolation run_setupcCs^d}t||}|}Wdn1s,0Y|durB|}t||d}t|||dS)z. Python 3 implementation of execfile. rbNexec)openreadcompiler )filenameglobalslocalsmodestreamscriptcoder/builddir/build/BUILDROOT/alt-python39-setuptools-58.3.0-2.el8.x86_64/opt/alt/python39/lib/python3.9/site-packages/setuptools/sandbox.py _execfile$s & rc csRtjdd}|dur$|tjdd<z|VW|tjdd<n|tjdd<0dSN)sysargv)replsavedrrr save_argv1s rc cs<tjdd}z|VW|tjdd<n|tjdd<0dSr)rpathrrrr save_path<sr ccs8tj|ddtj}|t_zdVW|t_n|t_0dS)zL Monkey-patch tempfile.tempdir with replacement, ensuring it exists T)exist_okN)osmakedirstempfiletempdir) replacementrrrr override_tempEs r'c cs8t}t|z|VWt|n t|0dSr)r"getcwdchdir)targetrrrrpushdVs  r+c@seZdZdZeddZdS)UnpickleableExceptionzP An exception representing another Exception that could not be pickled. c CsNzt|t|fWStyHddlm}|||t|YS0dS)z Always return a dumped (pickled) type and exc. If exc can't be pickled, wrap it in UnpickleableException first. r)r,N)pickledumps Exceptionsetuptools.sandboxr,dumprepr)typeexcclsrrrr1es   zUnpickleableException.dumpN)__name__ __module__ __qualname____doc__ staticmethodr1rrrrr,`sr,c@s(eZdZdZddZddZddZdS) ExceptionSaverz^ A Context Manager that will save an exception, serialized, and restore it later. cCs|Srrselfrrr __enter__zszExceptionSaver.__enter__cCs |sdSt|||_||_dSNT)r,r1_saved_tb)r=r3r4tbrrr__exit__}s zExceptionSaver.__exit__cCs2dt|vrdSttj|j\}}||jdS)z"restore and re-raise any exceptionr@N)varsmapr-loadsr@with_tracebackrA)r=r3r4rrrresumes zExceptionSaver.resumeN)r6r7r8r9r>rCrHrrrrr;ts r;c#sjtjt}VWdn1s,0YtjfddtjD}t||dS)z Context in which imported modules are saved. Translates exceptions internal to the context into the equivalent exception outside the context. Nc3s$|]}|vr|ds|VqdS)z encodings.N startswith).0mod_namerrr s zsave_modules..)rmodulescopyr;update_clear_modulesrH) saved_excZ del_modulesrrr save_moduless $  rScCst|D] }tj|=qdSr)listrrN)Z module_namesrLrrrrQs rQc cs.t}z|VWt|n t|0dSr) pkg_resources __getstate__ __setstate__rrrrsave_pkg_resources_statesrXc cstj|d}tttttnt|Ft |t ddVWdn1sj0YWdn1s0YWdn1s0YWdn1s0YWdn1s0YWdn1s0YdS)Ntemp setuptools) r"rjoinrXrSr hide_setuptoolsrr'r+ __import__) setup_dirtemp_dirrrr setup_contexts  r`> distutilsrUZCython_distutils_hackrZcCs|ddd}|tvS)aH >>> _needs_hiding('setuptools') True >>> _needs_hiding('pkg_resources') True >>> _needs_hiding('setuptools_plugin') False >>> _needs_hiding('setuptools.__init__') True >>> _needs_hiding('distutils') True >>> _needs_hiding('os') False >>> _needs_hiding('Cython') True .r)split_MODULES_TO_HIDE)rL base_modulerrr _needs_hidingsrhcCs6tjdd}|dur|tttj}t|dS)a% Remove references to setuptools' modules from sys.modules to allow the invocation to import the most appropriate setuptools. This technique is necessary to avoid issues such as #315 where setuptools upgrading itself would fail to find a function declared in the metadata. rbN)rrNgetZ remove_shimfilterrhrQ)rbrNrrrr\s  r\c Cstjtj|}t|z|gt|tjdd<tjd|t t j ddt |&t|dd}t||Wdn1s0YWn6ty}z|jr|jdrWYd}~n d}~00Wdn1s0YdS)z8Run a distutils setup script, sandboxed in its directoryNrcSs|Sr)activate)distrrrzrun_setup..__main__)__file__r6)r"rabspathdirnamer`rTrrinsertr__init__ callbacksappendrdictr SystemExitargs)Z setup_scriptryr^nsvrrrrs   ,rc@seZdZdZdZddZddZddZd d Zd d Z d dZ dD]Z e e e rDe e ee <qDd$ddZerzedeZedeZdD]Z e e e ree ee <qddZdD]Z e e e ree ee <qddZdD]Z e e e ree ee <qddZddZd d!Zd"d#ZdS)%rzDWrap 'os' module and 'open()' builtin for virtualizing setup scriptsFcsfddttD_dS)Ncs$g|]}|dst|r|qS)_)rJhasattr)rKnamer<rr sz,AbstractSandbox.__init__..)dir_os_attrsr<rr<rrts zAbstractSandbox.__init__cCs"|jD]}tt|t||qdSr)rsetattrr"getattr)r=sourcer~rrr_copys zAbstractSandbox._copycCs(||tr|jt_|jt_d|_dSr?)r_filebuiltinsfile_openr _activer<rrrr>s  zAbstractSandbox.__enter__cCs$d|_trtt_tt_|tdSNF)rrrrrr rr)r=exc_type exc_value tracebackrrrrC!s zAbstractSandbox.__exit__cCs.||WdS1s 0YdS)zRun 'func' under os sandboxingNr)r=funcrrrrun(szAbstractSandbox.runcsttfdd}|S)Ncs>|jr&|j||g|Ri|\}}||g|Ri|Sr)r _remap_pair)r=srcdstrykwr~originalrrwrap0s z3AbstractSandbox._mk_dual_path_wrapper..wraprrr~rrrr_mk_dual_path_wrapper-s z%AbstractSandbox._mk_dual_path_wrapper)renamelinksymlinkNcs p ttfdd}|S)Ncs6|jr |j|g|Ri|}|g|Ri|Sr)r _remap_inputr=rryrrrrr>sz5AbstractSandbox._mk_single_path_wrapper..wrapr)r~rrrrr_mk_single_path_wrapper;sz'AbstractSandbox._mk_single_path_wrapperrr )statlistdirr)r chmodchownmkdirremoveunlinkrmdirutimelchownchrootlstatZ startfilemkfifomknodpathconfaccesscsttfdd}|S)NcsT|jr>|j|g|Ri|}||g|Ri|S|g|Ri|Sr)rr _remap_outputrrrrrcsz4AbstractSandbox._mk_single_with_return..wraprrrrr_mk_single_with_return`s z&AbstractSandbox._mk_single_with_return)readlinktempnamcsttfdd}|S)Ncs$|i|}|jr ||S|Sr)rr)r=ryrretvalrrrrrs z'AbstractSandbox._mk_query..wraprrrrr _mk_queryos zAbstractSandbox._mk_query)r(tmpnamcCs|S)z=Called to remap or validate any path, whether input or outputr)r=rrrr_validate_path~szAbstractSandbox._validate_pathcOs ||SzCalled for path inputsrr= operationrryrrrrrszAbstractSandbox._remap_inputcCs ||S)zCalled for path outputsr)r=rrrrrrszAbstractSandbox._remap_outputcOs<|j|d|g|Ri||j|d|g|Ri|fS)?Called for path pairs like rename, link, and symlink operationsz-fromz-to)rr=rrrryrrrrrszAbstractSandbox._remap_pair)N)r6r7r8r9rrtrr>rCrrr~r}rrrrrrrrrrrrrrrr s<          rdevnullc@seZdZdZegdZgZefddZ ddZ e r@ddd Z dd d Z d d Z ddZddZddZddZdddZdS)rz.) r"rrr_sandboxr[_prefix _exceptionsrrt)r=Zsandbox exceptionsrrrrts zDirectorySandbox.__init__cOsddlm}||||dS)Nr)r)r0r)r=rryrrrrr _violations zDirectorySandbox._violationrcOsF|dvr.||s.|jd||g|Ri|t||g|Ri|S)Nrrtr ZrUUr)_okrrr=rrryrrrrrszDirectorySandbox._filecOsF|dvr.||s.|jd||g|Ri|t||g|Ri|S)Nrr )rrrrrrrrszDirectorySandbox._opencCs|ddS)Nr)rr<rrrrszDirectorySandbox.tmpnamcCsV|j}zBd|_tjtj|}||p@||jkp@||jW||_S||_0dSr) rr"rrr _exemptedrrJr)r=ractiverrrrrs  zDirectorySandbox._okcs<fdd|jD}fdd|jD}t||}t|S)Nc3s|]}|VqdSrrI)rK exceptionfilepathrrrMsz-DirectorySandbox._exempted..c3s|]}t|VqdSr)rematch)rKpatternrrrrMs)r_exception_patterns itertoolschainany)r=rZ start_matchesZpattern_matches candidatesrrrrs   zDirectorySandbox._exemptedcOs:||jvr6||s6|j|tj|g|Ri||Sr) write_opsrrr"rrrrrrrs"zDirectorySandbox._remap_inputcOs8||r||s0|j|||g|Ri|||fS)r)rrrrrrrszDirectorySandbox._remap_paircOsL|t@r0||s0|jd|||g|Ri|tj|||g|Ri|S)zCalled for low-level os.open()zos.open) WRITE_FLAGSrrrr )r=rflagsrryrrrrr szDirectorySandbox.openN)r)r)r)r6r7r8r9rwfromkeysrr _EXCEPTIONSrtrrrrrrrrr rrrrrs      rcCsg|]}tt|dqS)rr)rKarrrrsrz4O_WRONLY O_RDWR O_APPEND O_CREAT O_TRUNC O_TEMPORARYc@s&eZdZdZedZddZdS)rzEA setup script attempted to modify the filesystem outside the sandboxa SandboxViolation: {cmd}{args!r} {kwargs} The package setup script has attempted to modify files on your system that are not within the EasyInstall build area, and has been aborted. This package cannot be safely installed by EasyInstall, and may not support alternate installation locations even if you run its setup script by hand. Please inform the package's author and the EasyInstall maintainers to find out if a fix or workaround is available. cCs |j\}}}|jjfitSr)rytmplformatr)r=cmdrykwargsrrr__str__s zSandboxViolation.__str__N) r6r7r8r9textwrapdedentlstriprrrrrrrs r)N)N)9r"rr$operator functoolsrr contextlibr-rrrUdistutils.errorsrrplatformrJZ$org.python.modules.posix.PosixModulepythonrNposixZ PosixModulerr~rr NameErrorr r__all__rcontextmanagerrr r'r+r/r,r;rSrQrXr`rfrhr\rrr}rrrreduceor_rerrrrrrsr                  ^