[Kc@sdZddkZddkZddkZddkZddkZddklZddkl Z l Z ddk l Z ddk lZlZdZddklZdd klZlZlZlZlZdd klZdd klZd Zd eifd YZei dei!i"Z#ei dei!i"Z$ei dei!i"Z%ei dei!i&Z'ei dei!i&Z(dZ)dZ*dZ+ei dei!i"Z,ei dei!i"Z-dZ.dS(s" Build swig, f2py, pyrex sources. iN(t build_ext(t newer_grouptnewer(t get_platform(tDistutilsErrortDistutilsSetupErrorcCs/yddk}tSWntj otSXdS(Ni(tPyrex.Compiler.MaintTruet ImportErrortFalse(tPyrex((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pyt have_pyrexs  (tlog(tfortran_ext_matcht appendpatht is_stringt is_sequencetget_cmd(t process_filec Cstid}t|d}zt|d}zuxn|iD]`}|i|}|o7|i|id|id||idq@|i|q@WWd|iXWd|iXdS(sOSubstitute any occurence of @foo@ by d['foo'] from source file into target.s@([a-zA-Z_]+)@trtws@%s@iN( tretcompiletopent readlinestsearchtwritetreplacetgrouptclose(ttargettsourcetdtvartfstfttltm((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pyt subst_varss 7t build_srcc BseZdZd*d,d-d.d/d0d1d2ddddfg ZddgZgZdZdZdZ dZ dZ dZ dZ dZdZd Zd!Zd"Zd#Zgd$Zd%Zd&Zd'Zd(Zd)ZRS(3s1build sources from SWIG, F2PY files or a functions build-src=R sdirectory to "build" sources tos f2py-opts=s!list of f2py command line optionssswig=spath to the SWIG executables swig-opts=s!list of SWIG command line optionssswig-cppsAmake SWIG create C++ files (default is autodetected from sources)s f2pyflags=s3additional flags to f2py (use --f2py-opts= instead)s swigflags=s3additional flags to swig (use --swig-opts= instead)tforcetfs2forcibly build everything (ignore file timestamps)tinplacetis=ignore build-lib and put compiled extensions into the source s,directory alongside your pure Python modulescCsd|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_dS(N(tNonet extensionstpackaget py_modulestpy_modules_dictR't build_libt build_baseR(R*t package_dirt f2pyflagst f2py_optst swigflagst swig_optstswig_cpptswig(tself((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pytinitialize_optionsHs                cCs|idddd|idjo|ii|_n|ii|_|iipg|_|iipg|_|ii pg|_ |i djo@dt t i dd!f}tii|id||_ nh|_|io4|iotid n |i|_d|_n|idjo g|_nti|i|_|io4|iotid n |i|_d|_n|idjo g|_nti|i|_|id }|idjo|i|_n|idjo|i|_nxd d gD]}d|idd}t||d}|oPt||otid|qti d||ft!|||qqWdS(NtbuildR2R1R(s.%s-%siitsrcs0ignoring --f2pyflags as --f2py-opts already useds0ignoring --swigflags as --swig-opts already usedRR9tswig_opts--t_t-s-both build_src and build_ext define %s options+using "%s=%s" option from build_ext command(s build_bases build_base(s build_libs build_lib(sforcesforce("tset_undefined_optionsR.R,t distributiont ext_packaget ext_modulesR-t librariesR/t data_filesR'RtsystversiontostpathtjoinR2R0R4R5R twarntshlextsplitR6R7tget_finalized_commandR*R8Rtgetattrtinfotsetattr(R:tplat_specifierRtctotv((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pytfinalize_optionsZsX #            cCs4tid|ip|ipdS|idS(NR'(R RQR-REt build_sources(R:((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pytruns cCs|io|idi|_n|ix|iD]}|i|q7W|io5|i|ix"|iD]}|i|qrWn|i |i dS(Ntbuild_py( R*ROtget_package_dirtbuild_py_modules_sourcesREtbuild_library_sourcesR-tcheck_extensions_listtbuild_extension_sourcestbuild_data_files_sourcestbuild_npy_pkg_config(R:t libname_infotext((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pyRXs      c Cs|ipdStidddkl}g}x|iD]}t|to|i|q<t|toB|\}}|i o(|i di |i t i}nt ii |i|}tt|}td|}x|D]}|iidjo||} n |} | dj oXt| to|i| qt| to|i| qtt| qqW|||f} |i|| fq<tt|q<W||i(dS(Nsbuilding data_files sourcesi(tget_data_filest.cSs t| S((tcallable(R)((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pytsi(RFR RQtnumpy.distutils.misc_utilRdt isinstancetstrtappendttupleR*R[RKRNRItsepRJR'tfilterRft func_codet co_argcountR,tlisttextendt TypeErrortrepr( R:Rdtnew_data_filestdataR tfilest build_dirtfuncsR)tst filenames((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pyR`s>     (  cCs"ddk}|\}}}tii|}x$|iD]\}} | ||}tiitii|d} |i|| |fqW|i|c|7<|i|\}} | otid|| n||_dS(Nsbuilding extension "%s" sourcesReiis#%s - nothing done with h_files = %s(RqRR RQtnametget_ext_fullnameRNRKR*R[text_target_dirRRt swig_sourcest f2py_sourcest pyrex_sourcestfilter_py_filesR0RIRJRRRkR( R:RcRtfullnametmodpathR.tpy_filesRR)tmoduleR((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pyR_:s4 " c Cssg}g}x9|D]1}t|o|i|q|i|qW|p|S|iot| o |i}nNt|o|d}n |i}tii|i g|i dd }|i |x|D]}|||}|pqnt|o@g} |D]} | t i d| fq~ |i|qt i d|f|i|qW|S(NiReis adding '%s' to sources.(RRkR*RRRRIRJRKR'RNtmkpathR RQRr( R:Rt extensiont new_sourcest func_sourcesRRxRtfunct_[1]Rz((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pyRfs8      /cCs|i|dgS(Ns.py(t filter_files(R:R((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pyRscCs|i|dddgS(Ns.hs.hpps.inc(R(R:R((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pyRscCsjg}g}xQ|D]I}tii|\}}||jo|i|q|i|qW||fS(N(RIRJRRk(R:RtextsRRwRtbaseRc((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pyRs cCsg}t|o*|did}|did}n|i}|i}x|D]}tii|\}}|djoe|iotii|} nt |i tii|} |i | tii | tii |} |ipt|g|| out|o!tid| t|} ntid| t|} t| d} | i| | int| oEtii| } | |jo"tid| |i| qn|i| qV|i|qVW|S( Nitdependst include_dirss.srcsfrom_template:> %ssconv_template:> %sRs adding '%s' to include_dirs.(RRRRRIRJRR*R}RR'RRKRR(Rt_f_pyf_ext_matchR RQtprocess_f_filetprocess_c_fileRRRt_header_ext_matchRk(R:RRRRRRRRct target_dirt target_filetoutstrtfidR ((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pyRs@      !!     c Csg}|iidd}xi|D]a}tii|\}}|djo)|i||||}|i|q#|i|q#W|S(NReis.pyx(RRNRIRJRtgenerate_a_pyrex_sourceRk( R:RRRtext_nameRRRcR((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pyRs   c Cs|ip t otii|}nt|itii|}tii||d}|g|i}|i pt ||dotoddk }t i d||i||iiid|iiid|id|} |iii|d| } | id jotd | i|fq}qtii|ot id ||fqtd |fn|S( Ns.cRis pyrexc:> %stdefaultst include_patht output_filetoptionsis'%d errors while compiling %r with PyrexsFPyrex required for compiling %r but not available, using old target %rs0Pyrex required for compiling %r but notavailable(R*R RIRJR}RR'RKRR(RRR RQRtCompilertMaintCompilationOptionstdefault_optionsRRt num_errorsRtisfileRL( R:RRRRRRRR Rt pyrex_result((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pyRs2       cCsg}g}g}h}g}|iidd}d} x|D]} tii| \} } | djo|iotii| } nt|itii| } tii | oSt | }||jot d| ||fntii | |d}nt id| |}d} tii | |d}tii |pt id ||ftii| } tii | |d}tii |pt d |fnt id |n|i| |i| ||| <|i|qAt| o|i| qA|i| qAW|p|p|Sx|D]}|i|qXW|i|i}|iioNxK|iiD]9\}}||ijo|i|id gqqWnt id ||ot|djot d|fn|d} || }tii|pd} | g|i}|ipt||doF| o>t id| ddk}|ii |d| | gqt id| nt!|o|d}n |i}tii |ig|idd } tii | |d}|i|||i}|ipt||doa| oYt id||i| ddk}|ii |dd| gd|g|nt id|tii |pt"d|fntii |id}tii |id}t id||i||i|i#jo+t id|i|i#i|in| pddk}tii|ii$}tii |dd}tii |dd}t%||pt%||o=|itii||i&|||i&||qnUtii |pt d|fntii |pt d|fnxbdd gD]T}tii | ||}tii |o"t id||i|qqW||S(!NReiis.pyfs;mismatch of extension names: %s provides %r but expected %rsmodule.cs. source %s does not exist: skipping f2py'ing.isd target %s does not exist: Assuming %smodule.c was generated with "build_src --inplace" command.s %r missings& Yes! Using %r as up-to-date target.t f2py_optionssf2py options: %ssConly one .pyf file is allowed per extension module but got more: %rRsf2py: %ss --build-dirs+ skipping '%s' f2py interface (up-to-date)s f2py:> %ss--lowers-ms3 skipping f2py fortran files for '%s' (up-to-date)s!f2py target file %r not generatedsfortranobject.csfortranobject.hs adding '%s' to sources.s adding '%s' to include_dirs.R=sf2py target_c file %r not foundsf2py target_h file %r not founds-f2pywrappers.fs-f2pywrappers2.f90('RRNRIRJRR*R}RR'Rtget_f2py_modulenameRRKR tdebugRLRQRkR RRR5RBRERrRRRR(Rt numpy.f2pytf2pytrun_mainRRRt__file__Rt copy_file(R:RRRRt f_sourcest f2py_targetst target_dirsRt skip_f2pyRRRcRRRR RRRtnumpyttarget_cttarget_htsource_ctsource_htname_exttfilename((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pyRs              %           &       cCsg}g}h}g}g}d}|iod} t} n d} t} d} |iidd} x|D]} tii| \}}|djo|i otii |}|i }n%t |i tii |}|}tii| o t| }|| djo!td| || dfn| djo-t| } | dj} | o d }qnst| }| |joYtid | | |f|djotid t} d }qtid | ntii|d ||f}ntid| | d}d} t||}tii|pwtid||ftii |}t||}tii|ptd|fntid|n|i||i||itii||d|i| |d|| [\w_]+)".*\)|)\s*(?P[\w_]+)s-[*]-\s*c\s*-[*]-s-[*]-\s*c[+][+]\s*-[*]-cCs]t|d}d}|i}t|o d}nt|o d}n|i|S(NRRTsc++(Rtreadlinet_has_cpp_headert _has_c_headerR(RR)tresulttline((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pyRs      cCsst|d}t|d|i}d}x8|D]-}t|}|o|id}Pq4q4W|i|S(NRt xreadlinesR(RRPRR,t_swig_module_name_matchRR(RR)t f_readlinesRRR%((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pyRs    cCsRxKddgD]=}tii|d||f}tii|oPq q W|S(Ns.cpps.cs %s_wrap%s(RIRJRKR(RRRcR((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pyRs   s%\s*python\s*module\s*(?P[\w_]+)s4\s*python\s*module\s*(?P[\w_]*?__user__[\w_]*)cCsd}t|}t|d|i}xL|D]A}t|}|o(t|oq1n|id}Pq1q1W|i|S(NRR(R,RRPRt_f2py_module_name_matcht_f2py_user_module_name_matchRR(RRR)RRR%((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pyRs      (/t__doc__RIRRGRMRtdistutils.commandRtdistutils.dep_utilRRtdistutils.utilRtdistutils.errorsRRR tnumpy.distutilsR RhR RRRRtnumpy.distutils.from_templateRRtnumpy.distutils.conv_templateRR&R'RtItmatchRRRRRRRRRRRR(((sG/usr/lib64/python2.6/site-packages/numpy/distutils/command/build_src.pyts@      (