3 M(Y!D @spdZddlmZddlmZmZddlmZddlm Z ddl Z ddl Z ddl Z ddl Z ddlmZddlmZmZmZdd lmZdd lmZdd lmZydd lmZmZd dZWn,ek rddlmZmZddZYnXddZ ddZ!ddZ"GdddeZ#e$j%dj&Z'ddZ(ddZ)ddZ*d d!d"Z+d#d$Z,d%d&Z-d'd(Z.d)d*d+d,gZ/d1d/d0Z0dS)2z6setuptools.command.bdist_egg Build .egg distributions)DistutilsSetupError) remove_treemkpath)log)CodeTypeN)six)get_build_platform Distributionensure_directory) EntryPoint)Library)Command)get_pathget_python_versioncCstdS)Npurelib)rrrJ/private/tmp/pip-build-nl73fm5q/setuptools/setuptools/command/bdist_egg.py _get_purelibsr)get_python_librcCstdS)NF)rrrrrrscCs2d|krtjj|d}|jdr.|dd}|S)N.rmodulei)ospathsplitextendswith)filenamerrr strip_module"s   rccs:x4tj|D]&\}}}|j|j|||fVq WdS)zbDo os.walk in a reproducible way, independent of indeterministic filesystem readdir order N)rwalksort)dirbasedirsfilesrrr sorted_walk)sr$c Cs6tjdj}t|d}|j||WdQRXdS)NaR def __bootstrap__(): global __bootstrap__, __loader__, __file__ import sys, pkg_resources, imp __file__ = pkg_resources.resource_filename(__name__, %r) __loader__ = None; del __bootstrap__, __loader__ imp.load_dynamic(__name__,__file__) __bootstrap__() w)textwrapdedentlstripopenwrite)resourcepyfileZ_stub_templatefrrr write_stub2s  r.c@seZdZdZd*dddefd+d d d dfd,d-gZd ddgZddZddZddZ ddZ ddZ ddZ d d!Z d"d#Zd$d%Zd&d'Zd(d)Zd S). bdist_eggzcreate an "egg" distribution bdist-dir=b1temporary directory for creating the distributionz plat-name=pz;platform name to embed in generated filenames (default: %s)exclude-source-filesN+remove all .py files from the generated eggz keep-tempkz/keep the pseudo-installation tree around after z!creating the distribution archive dist-dir=d-directory to put final built distributions in skip-build2skip rebuilding everything (for testing/debugging)cCs.d|_d|_d|_d|_d|_d|_d|_dS)Nr) bdist_dir plat_name keep_tempdist_dir skip_build egg_outputexclude_source_files)selfrrrinitialize_optionsWszbdist_egg.initialize_optionscCs|jd}|_|j|_|jdkr>|jdj}tjj|d|_|jdkrPt |_|j dd|j dkrt dd|j |jt|jjo|jj }tjj|j|d|_ dS)Negg_infobdistZeggr?z.egg)r?r?)get_finalized_commandei_cmdrEr< bdist_baserrjoinr=rset_undefined_optionsrAr egg_nameZ egg_versionr distributionhas_ext_modulesr?)rCrHrIbasenamerrrfinalize_options`s      zbdist_egg.finalize_optionsc Cs|j|jd_tjjtjjt}|jj g}|j_ x|D]}t |t rt |dkrtjj |drtjj|d}tjj|}||ks|j|tjr|t |dd|df}|jj j|qrgetattrr)rCZinstcmdZold_rootrq all_outputs ext_outputsZ to_compiler3Zext_namerextr,Z archive_rootrEZ script_dirZ native_libsZ libs_filerrrrunsz                    z bdist_egg.runcCsdtjdxTt|jD]F\}}}x:|D]2}|jdr&tjj||}tjd|tj |q&WqWdS)Nz+Removing .py files from temporary directoryz.pyz Deleting %s) rrbwalk_eggr<rrrrJdebugr)rCr!r"r#namerrrrrs    zbdist_egg.zap_pyfilescCs2t|jdd}|dk r|Stjdt|j|jS)Nrz4zip_safe flag not set; analyzing archive contents...)rrMrr analyze_eggr<r)rCsaferrrrs  zbdist_egg.zip_safec Cstj|jjpd}|jdijd}|dkr0dS|j s>|jrLtd|ftj dd}|j }dj |j}|jd}t j j|j}d t}|jstt j j|j|jd t|jd} | j|| jd S) Nzsetuptools.installationZ eggsecutabler%zGeggsecutable entry point (%r) cannot have 'extras' or refer to a modulerraH#!/bin/sh if [ `basename $0` = "%(basename)s" ] then exec python%(pyver)s -c "import sys, os; sys.path.insert(0, os.path.abspath('$0')); from %(pkg)s import %(base)s; sys.exit(%(full)s())" "$@" else echo $0 is not the correct name for this egg file. echo Please rename it back to %(basename)s and try again. exec false fi )rja)r parse_maprM entry_pointsgetattrsextrasrsysversion module_namerJrrrOrAlocalsrjrrpr)r*r) rCZepmeppyverpkgfullr!rOheaderr-rrrrs*      zbdist_egg.gen_headercCsltjj|j}tjj|d}xJ|jjjD]<}|j|r(tjj||t |d}t ||j ||q(WdS)z*Copy metadata (egg info) to the target_dirrN) rrnormpathrErJrHfilelistr#r_r]r copy_file)rC target_dirZ norm_egg_infoprefixrtargetrrrr&s zbdist_egg.copy_metadata_toc Csg}g}|jdi}x|t|jD]n\}}}x6|D].}tjj|djtkr.|j|||q.Wx*|D]"}|||d|tjj||<qfWqW|j j r |j d}xd|j D]Z} t | trq|j| j} |j| }tjj|jdstjjtjj|j|r|j|qW||fS)zAGet a list of relative paths to C extensions in the output distrorrSrt build_extzdl-)r<r$rrrlowerNATIVE_EXTENSIONSrarJrMrNrG extensionsr[r Zget_ext_fullnamerZget_ext_filenamerOr_r) rCrrpathsr!r"r#rZ build_cmdrfullnamerrrr~2s(   &      zbdist_egg.get_ext_outputs)r0r1r2)r4Nr5)r7r8r9)r:Nr;)__name__ __module__ __qualname__ descriptionr user_optionsboolean_optionsrDrPrhrircrrrrrr~rrrrr/@s4   Q ' r/z.dll .so .dylib .pydccsLt|}t|\}}}d|kr(|jd|||fVx|D] }|Vq:WdS)z@Walk an unpacked egg's contents, skipping the metadata directoryzEGG-INFON)r$nextremove)egg_dirwalkerr!r"r#ZbdfrrrrRs   rc Csx0tjD]$\}}tjjtjj|d|r |Sq Wts.visit) compression) zipfilerrrrprrb ZIP_DEFLATED ZIP_STOREDZipFiler$r) zip_filenamerrzrjcompressr{rrrrrpr"r#r)rrjrrs  r)rrTr%)1__doc__Zdistutils.errorsrdistutils.dir_utilrr distutilsrtypesrrrr&rZsetuptools.externr pkg_resourcesrr r r Zsetuptools.extensionr setuptoolsr sysconfigrrr ImportErrordistutils.sysconfigrrr$r.r/rrsplitrrrrrrrrrkrrrrrsJ          "