;ò ô Ec @s€dZdkZdkZdklZdklZlZlZl Z dk l Z dkl Z dddd d d d d ddddg Z d„Zdd„ZdddddddgZddddd gZdkZd!„Zd"„Zeed#„Zeeeed$„Zd%d&„Zd'e i fd(„ƒYZd)eifd*„ƒYZd+eifd,„ƒYZd-eifd.„ƒYZdS(/s§ Distutils convenience functionality. API Stability: Unstable. Don't use it outside of Twisted. Maintainer: U{Christopher Armstrong} N(s sysconfig(s build_scriptss install_datas build_extsbuild_py(s CompileError(scoresconchsflowsloresmailsnamessnewsspairsrunnerswebsweb2swordssvfsc s d|joÚdtidƒjotdƒ‚n|d}tiid|ƒ}t|ddƒ|d>> relativeTo('/home/', '/home/radix/') 'radix' >>> relativeTo('.', '/home/radix/Projects/Twisted') # curdir is /home/radix 'Projects/Twisted' The 'relativee' must be a child of 'basepath'. is%s is not a subpath of %sN( sosspathsabspathsbasesbasepaths relativees startswithslensrelativessepsjoins ValueError(sbases relativeesbasepathsrelative((s./twisted/python/dist.pys relativeToss c Cs3|pd}|pg}g}xti|ƒD]÷\} }}g}x,t D]$}||jo|i |ƒqLqLWx,|D]$} | |jo|i | ƒq{q{Wx!t|ƒD]} |i| ƒq°W|oY|it|| ƒgi}|D](} |t|tii| | ƒƒƒqî~fƒq0q0W|SdS(s Get all the data files that should be included in this distutils Project. 'dname' should be the path to the package that you're distributing. 'ignore' is a list of sub-packages to ignore. This facilitates disparate package hierarchies. That's a fancy way of saying that the 'twisted' package doesn't want to include the 'twisted.conch' package, so it will pass ['conch'] as the value. 'parent' is necessary if you're distributing a subpackage like twisted.conch. 'dname' should point to 'twisted/conch' and 'parent' should point to 'twisted'. This ensures that your data_files are generated correctly, only using relative paths for the first element of the tuple ('twisted/conch/*'). The default 'parent' is the current working directory. s.N(sparentsignoresresultsosswalksdnames directoryssubdirectoriess filenamess resultfiless EXCLUDE_NAMESsexnamesremovesigs _filterNamessfilenamesappends relativeTos_[1]spathsjoin( sdnamesignoresparentssubdirectoriessexnames resultfiless filenamess_[1]sresults directorysfilenamesig((s./twisted/python/dist.pys getDataFilesŠs,     /.c Csx|pd}g} |o |g} ntii|ƒ}|pg}||jogSn|t jo g}n|t jo g}nti |ƒ}gi }|D]} |tii|| ƒƒq¦~}d|joe|i | ||gƒxJttii|ƒD]/} t| d||gd|d|d|ƒq Wngi }|D]} |di| ƒƒqN~} | SdS( s¥ Get all packages which are under dname. This is necessary for Python 2.2's distutils. Pretty similar arguments to getDataFiles, including 'parent'. ss __init__.pyspkgnamesresultssignoresparents.N(sparentsprefixsosspathsbasenamesdnamesbnamesignoresresultssNonespkgnameslistdirssubfilessappends_[1]sxsjoins abssubfilessfiltersisdirssubdirs getPackagessresultsres(sdnamespkgnamesresultssignoresparents_[1]s abssubfilessbnamessubfilessprefixssubdirsressxsresult((s./twisted/python/dist.pys getPackages°s0        6  0scCsÕtii|d|ƒ}tii|ƒ o5tii|dƒ}tii|ƒ ogSqanti|ƒ}d|jo|i dƒnt tii gi }|D]}|tii||ƒƒq¨~ƒSdS(sƒ Returns a list of scripts for a Twisted subproject; this works in any of an SVN checkout, a project-specific tarball. sbins.svnN(sosspathsjoinsbasedirsprojnames scriptdirsisdirslistdirsthingiessremovesfiltersisfilesappends_[1]sx(sprojnamesbasedirs_[1]s scriptdirsthingiessx((s./twisted/python/dist.pys getScriptsÏs   sbuild_py_twistedcBstZdZd„ZRS(sr Changes behavior in Python 2.2 to support simultaneous specification of `packages' and `py_modules'. cCsM|io|iƒn|io|iƒn|i|iddƒƒdS(Nsinclude_bytecodei(sselfs py_moduless build_modulesspackagessbuild_packagess byte_compiles get_outputs(sself((s./twisted/python/dist.pysrunés   (s__name__s __module__s__doc__srun(((s./twisted/python/dist.pysbuild_py_twistedäs sbuild_scripts_twistedcBstZdZd„ZRS(s2Renames scripts so they end with '.py' on Windows.cCsÐtii|ƒtidj odSnx ti|iƒD]Œ}tii |i|ƒ}|i dƒ o]yti |dƒWn-t j o!}|iddjoq°nXti||dƒq<q<WdS(Nsnts.pyisNo such file or directory(s build_scriptssrunsselfsossnameslistdirs build_dirsfspathsjoinsfpathsendswithsunlinksEnvironmentErrorsesargssrename(sselfsesfsfpath((s./twisted/python/dist.pysrunós (s__name__s __module__s__doc__srun(((s./twisted/python/dist.pysbuild_scripts_twistedðs sinstall_data_twistedcBstZdZd„ZRS(s>I make sure data files are installed in the package directory.cCs*|idddfƒtii|ƒdS(Nsinstalls install_libs install_dir(sselfsset_undefined_optionss install_datasfinalize_options(sself((s./twisted/python/dist.pysfinalize_optionss  (s__name__s __module__s__doc__sfinalize_options(((s./twisted/python/dist.pysinstall_data_twisteds sbuild_ext_twistedcBs2tZdZd„Zd„Zd„Zd„ZRS(sb Allow subclasses to easily detect and customize Extensions to build at install-time. cCsYtidjoddfg|_n g|_|iƒpg|_tii|ƒdS(s— Override the build_ext build_extensions method to call our module detection function before it tries to build the extensions. sntsWIN32iN(sossnamesselfs define_macrossdetectExtensionss extensionss build_extsbuild_extensions(sself((s./twisted/python/dist.pysbuild_extensionss  cCsEx>dddfD]-}yti|ƒWqtj oqXqWdS(Ns conftest.cs conftest.os conftest.obj(sfilenamesossunlinksEnvironmentError(sselfsfilename((s./twisted/python/dist.pys_remove_conftests cCswtddƒ}zV|i|ƒ|iƒy|iidgddƒWntj o t SnXt SWd|i ƒXdS(Ns conftest.csws output_dirs( sopensconftestswritescontentsclosesselfscompilerscompiles CompileErrorsFalsesTrues_remove_conftest(sselfscontentsconftest((s./twisted/python/dist.pys_compile_helper$s   cCs,|iid|dƒ|id|ƒSdS(s„ Check if the given header can be included by trying to compile a file that contains only an #include line. schecking for %s ...is#include <%s> N(sselfscompilersannounces header_names_compile_helper(sselfs header_name((s./twisted/python/dist.pys _check_header2s(s__name__s __module__s__doc__sbuild_extensionss_remove_conftests_compile_helpers _check_header(((s./twisted/python/dist.pysbuild_ext_twisted s    (s__doc__ssyssoss distutilss sysconfigsdistutils.commands build_scriptss install_datas build_extsbuild_pysdistutils.errorss CompileErrorscorestwisted_subprojectsssetups getVersions EXCLUDE_NAMESsEXCLUDE_PATTERNSsfnmatchs _filterNamess relativeTosNones getDataFiless getPackagess getScriptssbuild_py_twistedsbuild_scripts_twistedsinstall_data_twistedsbuild_ext_twisted(stwisted_subprojectssEXCLUDE_PATTERNSs sysconfigs EXCLUDE_NAMESsinstall_data_twisteds build_extsbuild_pys relativeTosbuild_ext_twisteds CompileErrorsbuild_py_twistedscoresbuild_scripts_twistedssyss getVersions build_scriptss _filterNamess install_datassetups getPackagess getScriptss getDataFilessfnmatchsos((s./twisted/python/dist.pys?s(   * 8   &