qfc@sdZdZddlZddlZddlmZddlmZddlmZm Z ddl m Z ddl m Z d efd YZdS( sHdistutils.command.build_py Implements the Distutils 'build_py' command.s$Id$iN(tglob(tCommand(tDistutilsOptionErrortDistutilsFileError(t convert_path(tlogtbuild_pycBseZdZd#d$d&d'd(gZdd gZidd6ZdZdZdZ dZ dZ dZ dZ dZdZdZdZdZdZdZddZdZd Zd!Zd"ZRS()s5"build" pure Python modules (copy to build directory)s build-lib=tdsdirectory to "build" (copy) totcompiletcscompile .py to .pycs no-compiles!don't compile .py files [default]s optimize=tOslalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]tforcetfs2forcibly build everything (ignore file timestamps)cCsLd|_d|_d|_d|_d|_d|_d|_d|_dS(Ni( tNonet build_libt py_modulestpackaget package_datat package_dirRtoptimizeR (tself((s2/usr/lib64/python2.7/distutils/command/build_py.pytinitialize_options!s       cCs|jddd|jj|_|jj|_|jj|_i|_|jjrx6|jjjD]\}}t||j|X|jd|tjj|Sq>W|jjd}|dk r|jd|n|rtjj|SdSdS(sReturn the directory, relative to the top of the source distribution, where package 'package' should be found (at least according to the 'package_dir' option, if any).R+R9iiN( R/RR-R"R.tKeyErrortinsertR:R (RRR"ttailtpdir((s2/usr/lib64/python2.7/distutils/command/build_py.pyR,s(      cCs|dkrYtjj|s1td|ntjj|sYtd|qYn|rtjj|d}tjj|r|Stjdd|ndS(NR9s%package directory '%s' does not exists>supposed package directory '%s' exists, but is not a directorys __init__.pys!package init file '%s' not found s(or not a regular file)( R-R"texistsRtisdirR.tisfileRtwarnR (RRRtinit_py((s2/usr/lib64/python2.7/distutils/command/build_py.pyt check_packages  cCs1tjj|s)tjd||tStSdS(Ns!file %s (for module %s) not found(R-R"RNRROREtTrue(Rtmodulet module_file((s2/usr/lib64/python2.7/distutils/command/build_py.pyt check_modulesc Cs|j||ttjj|d}g}tjj|jj}xx|D]p}tjj|}||krtjjtjj |d}|j |||fqP|j d|qPW|S(Ns*.pyis excluding %s( RQRR-R"R.tabspathRt script_nametsplitexttbasenameR2t debug_print( RRRt module_filestmodulest setup_scriptR tabs_fRS((s2/usr/lib64/python2.7/distutils/command/build_py.pytfind_package_moduless  "c Cs!i}g}x|jD]}|jd}dj|dd!}|d}y||\}}Wn&tk r|j|}d}nX|s|j||} |df||<| r|j|d| fqntjj||d} |j || sqn|j||| fqW|S(sFinds individually-specified Python modules, ie. those listed by module name in 'self.py_modules'. Returns a list of tuples (package, module_base, filename): 'package' is a tuple of the path through package-space to the module; 'module_base' is the bare (no packages, no dots) module name, and 'filename' is the path to the ".py" file (relative to the distribution root) that implements the module. R+iiit__init__s.py( RR/R.RHR,RQR2R-R"RU( RRR\RSR"Rt module_baseRtcheckedRPRT((s2/usr/lib64/python2.7/distutils/command/build_py.pyt find_moduless*   cCswg}|jr%|j|jn|jrsxB|jD]4}|j|}|j||}|j|q8Wn|S(s4Compute the list of all modules that will be built, whether they are specified one-module-at-a-time ('self.py_modules') or by whole packages ('self.packages'). Return a list of tuples (package, module, module_file), just like 'find_modules()' and 'find_package_modules()' do.(RR;RcRR,R_(RR\RRtm((s2/usr/lib64/python2.7/distutils/command/build_py.pytfind_all_moduless  cCs!g|jD]}|d^q S(Ni(Re(RRS((s2/usr/lib64/python2.7/distutils/command/build_py.pytget_source_files,scCs.|gt||dg}tjj|S(Ns.py(tlistR-R"R.(RR5RRSt outfile_path((s2/usr/lib64/python2.7/distutils/command/build_py.pytget_module_outfile/sic Cs|j}g}x|D]\}}}|jd}|j|j||}|j||r|jr|j|dn|jdkr|j|dqqqW|g|jD]4\}}} } | D]}tj j | |^qq7}|S(NR+R ito( ReR/RiRR2RRRR-R"R.( RR$R\toutputsRRSRTRFR4R5R8((s2/usr/lib64/python2.7/distutils/command/build_py.pyR)3s    )cCst|tr!|jd}n$t|ttfsEtdn|j|j||}tj j |}|j ||j ||ddS(NR+s:'package' must be a string (dot-separated), list, or tupleRAi( RtstrR/Rgttuplet TypeErrorRiRR-R"RCRBRD(RRSRTRtoutfiletdir((s2/usr/lib64/python2.7/distutils/command/build_py.pyt build_moduleHs  cCs=|j}x*|D]"\}}}|j|||qWdS(N(RcRq(RR\RRSRT((s2/usr/lib64/python2.7/distutils/command/build_py.pyR%Ws cCsxxq|jD]f}|j|}|j||}x<|D]4\}}}||ksYt|j|||q8Wq WdS(N(RR,R_RRq(RRRR\tpackage_RSRT((s2/usr/lib64/python2.7/distutils/command/build_py.pyR&as  c Cstjr|jddSddlm}|j}|dtjkrV|tj}n|jr||ddd|j d|d|j n|j dkr||d|j d|j d|d|j ndS( Ns%byte-compiling is disabled, skipping.i(R(RiR tprefixtdry_run( tsystdont_write_bytecodeROtdistutils.utilR(RR-tsepRR RtR(RR=R(Rs((s2/usr/lib64/python2.7/distutils/command/build_py.pyR(vs    (s build-lib=Rsdirectory to "build" (copy) to(scompileR scompile .py to .pycN(s no-compileNs!don't compile .py files [default](s optimize=R slalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0](sforceR s2forcibly build everything (ignore file timestamps)(t__name__t __module__t descriptionR t user_optionstboolean_optionst negative_optRR#R*RR1R'R,RQRUR_RcReRfRiR)RqR%R&R((((s2/usr/lib64/python2.7/distutils/command/build_py.pyRs8       (    4      (t__doc__t __revision__R-RuRtdistutils.coreRtdistutils.errorsRRRwRt distutilsRR(((s2/usr/lib64/python2.7/distutils/command/build_py.pyts