] C@sddlZddlZddlZddlmZddlmZddlTddlm Z m Z ddl m Z GdddeZ Gd d d e e ZdS) N)glob)Command)*) convert_path Mixin2to3)logc@s*eZdZdZd8d9d:d;d<gZddgZddiZddZddZddZ ddZ ddZ ddZ ddZ dd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd S)=build_pyz5"build" pure Python modules (copy to build directory) build-lib=ddirectory to "build" (copy) tocompileccompile .py to .pyc no-compileN!don't compile .py files [default] optimize=Olalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]forcef2forcibly build everything (ignore file timestamps)cCsLd|_d|_d|_d|_d|_d|_d|_d|_dS)Nr) build_lib py_modulespackage package_data package_dirr optimizer)selfr-/opt/alt/python35/lib64/python3.5/build_py.pyinitialize_options s       zbuild_py.initialize_optionsc Cs|jddd|jj|_|jj|_|jj|_i|_|jjrx3|jjjD]\}}t||j|ts z+build_py.get_data_files..) r"get_package_dirosr+joinrsplitlenfind_data_filesappend)rdatarsrc_dir build_dir filenamesr)r8rr$as %%zbuild_py.get_data_filescs|jjdg|jj|g}gxO|D]G}ttjj|t|}jfdd|Dq5WS)Ncs4g|]*}|krtjj|r|qSr)r;r+isfile)r6fn)filesrrr9s z,build_py.find_data_files..)rgetrr;r+r<rextend)rrrBZglobspatternZfilelistr)rHrr?ys !$zbuild_py.find_data_filescCsd}x|jD]v\}}}}xa|D]Y}tjj||}|jtjj||jtjj|||ddq)WqWdS)N preserve_modeF)r%r;r+r<mkpathdirname copy_file)rZlastdirrrBrCrDfilenametargetrrrr0s zbuild_py.build_package_datac Cs|jd}|js5|r.tjj|SdSng}x|ry|jdj|}Wn-tk r|jd|d|d=Yq>X|jd|tjj|Sq>W|jjd}|dk r|jd||rtjj|SdSdS)Nr4rErr5rR)r=rr;r+r<KeyErrorinsertrI)rrr+tailZpdirrrrr:s(      zbuild_py.get_package_dircCs|dkrPtjj|s.td|tjj|sPtd||rtjj|d}tjj|r|Stjdd|dS)NrEz%package directory '%s' does not existz>supposed package directory '%s' exists, but is not a directoryz __init__.pyz!package init file '%s' not found z(or not a regular file)) r;r+existsZDistutilsFileErrorisdirr<rFrwarn)rrrinit_pyrrr check_packages     zbuild_py.check_packagecCs1tjj|s)tjd||dSdSdS)Nz!file %s (for module %s) not foundFT)r;r+rFrrX)rmodule module_filerrr check_moduleszbuild_py.check_modulec Cs|j||ttjj|d}g}tjj|jj}xx|D]p}tjj|}||krtjjtjj |d}|j |||fqP|j d|qPW|S)Nz*.pyrz excluding %s) rZrr;r+r<abspathr!Z script_namesplitextbasenamer@Z debug_print) rrrZ module_filesmodulesZ setup_scriptrZabs_fr[rrrfind_package_moduless  "zbuild_py.find_package_modulesc Csi}g}x |jD]}|jd}dj|dd}|d}y||\}}Wn'tk r|j|}d}YnX|s|j||} |df||<| r|j|d| ftjj||d} |j || sq|j||| fqW|S)Nr4rr5__init__z.pyrRrR) rr=r<rSr:rZr@r;r+r]) rr"rar[r+rZ module_baserZcheckedrYr\rrr find_moduless*   zbuild_py.find_modulescCsqg}|jr"|j|j|jrmx?|jD]4}|j|}|j||}|j|q5W|S)N)rrJrdr"r:rb)rrarrmrrrfind_all_moduless  zbuild_py.find_all_modulescCsdd|jDS)NcSsg|]}|dqS)r5rRr)r6r[rrrr9-s z-build_py.get_source_files..)rf)rrrrget_source_files,szbuild_py.get_source_filescCs.|gt||dg}tjj|S)Nz.py)listr;r+r<)rrCrr[Z outfile_pathrrrget_module_outfile/szbuild_py.get_module_outfiler5cCs|j}g}x|D]\}}}|jd}|j|j||}|j||r|jr|jtjj|dd|j dkr|jtjj|d|j qW|dd|j D7}|S)Nr4 optimizationrErcSs>g|]4\}}}}|D]}tjj||qqSr)r;r+r<)r6rrBrCrDrPrrrr9Cs z(build_py.get_outputs..) rfr=rirr@r importlibutilcache_from_sourcerr%)rr-raZoutputsrr[r\rPrrrr23s"    zbuild_py.get_outputscCst|tr!|jd}n!t|ttfsBtd|j|j||}tj j |}|j ||j ||ddS)Nr4z:'package' must be a string (dot-separated), list, or tuplerLr) r&strr=rhtuple TypeErrorrirr;r+rNrMrO)rr[r\rZoutfiledirrrr build_moduleJs  zbuild_py.build_modulecCs=|j}x*|D]"\}}}|j|||qWdS)N)rdrr)rrarr[r\rrrr.Ys zbuild_py.build_modulescCsfx_|jD]T}|j|}|j||}x*|D]"\}}}|j|||q8Wq WdS)N)r"r:rbrr)rrrraZpackage_r[r\rrrr/bs  zbuild_py.build_packagesc Cstjr|jddSddlm}|j}|d tjkrS|tj}|jr||ddd|j d|d|j |j dkr||d|j d|j d|d|j dS) Nz%byte-compiling is disabled, skipping.r)r1r5rrprefixdry_runrR) sysdont_write_bytecoderXdistutils.utilr1rr;sepr rrtr)rrHr1rsrrrr1vs     zbuild_py.byte_compile)r r r )r r r)rNr)rrr)rrr)__name__ __module__ __qualname__ descriptionZ user_optionsZboolean_optionsZ negative_optr r,r3r$r?r0r:rZr]rbrdrfrgrir2rrr.r/r1rrrrrs8        '    4     rc@s(eZdZddZddZdS) build_py_2to3cCsfg|_|jr|j|jr9|j|j|j|j|j|jdddS)Nr-r) updated_filesrr.r"r/r0Zrun_2to3r1r2)rrrrr3s      zbuild_py_2to3.runcCs:tj||||}|dr6|jj|d|S)Nr5r)rrrr~r@)rr[r\rresrrrrrs zbuild_py_2to3.build_moduleN)ryrzr{r3rrrrrrr}s  r})r;importlib.utilrkrurZdistutils.corerZdistutils.errorsrwrrZ distutilsrrr}rrrrs    |