^Rc@sdZddlmZdZddlZddlZddlZddlTddlm Z ddl m Z ddl m Z dd lmZdd lmZdd lmZmZmZdd lmZdd lmZddlmZddlmZejdkr1idd6dd6dd6dd6dd6Zn)idd6dd6dd6dd6dd6Ziidd6dd6dd6dd6dd6d6idd6dd6d d6dd6dd6d!6id"d6d"d6d#d6d$d6d%d6d&6ed'6id"d6d"d6d(d6d)d6d%d6d*6idd6dd6dd6dd6dd6d+6id"d6d"d6d#d6d$d6d%d6d,6Zd/Zd-e fd.YZdS(0sFdistutils.command.install Implements the Distutils 'install' command.i(tlogs$Id$N(t*(tCommand(tDEBUG(tget_config_vars(tDistutilsPlatformError(t write_file(t convert_patht subst_varst change_root(t get_platform(tDistutilsOptionError(t USER_BASE(t USER_SITEs2.2s$basetpurelibtplatlibs$base/Include/$dist_nametheaderss $base/Scriptstscriptstdatas$base/Lib/site-packagess/$base/lib/python$py_version_short/site-packagess3$platbase/lib/python$py_version_short/site-packagess0$base/include/python$py_version_short/$dist_names $base/bint unix_prefixs$base/lib/pythons$base/include/python/$dist_namet unix_homes $usersites4$userbase/include/python$py_version_short/$dist_names $userbase/bins $userbaset unix_usertnts4$userbase/Python$py_version_nodot/Include/$dist_names$userbase/Scriptstnt_usertos2tos2_hometinstallcBseZdZdHdIdJddGdefdKd dGd d fdLdMdNddGddfdOdPdQdRdSdTdUdVdWgZdd%d(dgZidd 6Zd,Zd-Z d.Z d/Z d0Z d1Z d2Zd3Zd4Zd5Zd6Zd7Zd8Zd9Zd:Zd;Zd<Zd=Zd>Zd?Zd@ZdAefdBefdCefdDefdEdFfgZRS(Xs'install everything from build directorysprefix=sinstallation prefixs exec-prefix=s.(Unix only) prefix for platform-specific filesshome=s+(Unix only) home directory to install undertusers!install in user site-package '%s's install-base=s;base installation directory (instead of --prefix or --home)sinstall-platbase=s8base installation directory for platform-specific files s$(instead of --exec-prefix or --home)sroot=s<install everything relative to this alternate root directorysinstall-purelib=s;installation directory for pure Python module distributionssinstall-platlib=s8installation directory for non-pure module distributionss install-lib=s4installation directory for all module distributions s3(overrides --install-purelib and --install-platlib)sinstall-headers=s(installation directory for C/C++ headerssinstall-scripts=s)installation directory for Python scriptss install-data=s%installation directory for data filestcompiletcscompile .py to .pyc [default]s no-compilesdon't compile .py filess optimize=tOslalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0]tforcetfs1force installation (overwrite any existing files)s skip-builds2skip rebuilding everything (for testing/debugging)srecord=s3filename in which to record list of installed filescCsd|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ t|_t|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_dS(Nii(tNonetprefixt exec_prefixthomeRt install_basetinstall_platbasetroottinstall_purelibtinstall_platlibtinstall_headerst install_libtinstall_scriptst install_dataR tinstall_userbaseR tinstall_usersiteRtoptimizet extra_pathtinstall_path_fileRt skip_buildtwarn_dirt build_baset build_libtrecord(tself((s//usr/lib/python2.7/distutils/command/install.pytinitialize_optionss2                       cCsL|js|js|jr=|js-|jr=tddn|jrd|jsX|jrdtdn|jr|js|js|js|js|jrtdntjdkr|jr|j dd|_qn|j dtjdkr|j n |j |j dtjtjd }td d \}}i |jjd 6|jjd 6|jjd6|d6|d d!d6|d |dd6|d6|d 6|d6|d 6|jd6|jd6|_|j|j d|j|jd<|j|jdR"R#RG((s//usr/lib/python2.7/distutils/command/install.pytfinalize_optionss~  $                    cCstrddlm}|dGHx|jD]}|d}|ddkrY|dd!}n||jkrtj|j||}t|| }n!tj||}t||}d||fGHq)WndS(Ni(t longopt_xlatet:it=s %s: %s(Rtdistutils.fancy_getoptRgt user_optionst negative_optRQt translatetgetattr(R8tmsgRgtopttopt_nametval((s//usr/lib/python2.7/distutils/command/install.pyRN~s   c Cs|jdk s|jdk r|jdkrK|jdkrK|jdksx|jdksx|jdksx|jdkrt dndS|j r|j dkrt dn|j |_|_|j dn|jdk r|j|_|_|j dn|jdkra|jdk r.t dntjjtj|_tjjtj|_n|jdkr|j|_n|j|_|j|_|j ddS(NsPinstall-base or install-platbase supplied, but installation scheme is incompletes$User base directory is not specifiedRRs*must not supply exec-prefix without prefixR(R%R!R&R+R(R)R*R,R-R RR.Rt select_schemeR$R"R#RKRatnormpathRS(R8((s//usr/lib/python2.7/distutils/command/install.pyROs<      cCs|jrQ|jdkr'tdn|j|_|_|jtjdn|j dk r|j |_|_|jdnu|j dkrtj j t j |_ n|j |_|_y|jtjWn!tk rtdtjnXdS(Ns$User base directory is not specifiedt_userRs)I don't know how to install stuff on '%s'(RR.R!RR%R&RsRKRLR$R"RaRtRStKeyError(R8((s//usr/lib/python2.7/distutils/command/install.pyRPs"   cCsUt|}xDtD]<}d|}t||dkrt||||qqWdS(Ntinstall_(tINSTALL_SCHEMESt SCHEME_KEYSRnR!tsetattr(R8RLtschemetkeytattrname((s//usr/lib/python2.7/distutils/command/install.pyRss    cCsx|D]y}t||}|dk rtjdksFtjdkr[tjj|}nt||j}t|||qqWdS(NR:R( RnR!RKRLRat expanduserRRYRz(R8tattrstattrRr((s//usr/lib/python2.7/distutils/command/install.pyt _expand_attrss  cCs|jdddgdS(NR%R&R'(R(R8((s//usr/lib/python2.7/distutils/command/install.pyRZs cCs#|jddddddgdS(NR(R)R+R*R,R-(R(R8((s//usr/lib/python2.7/distutils/command/install.pyR[s  cGs>x7|D]/}d|}t||tt||qWdS(NRw(RzRRn(R8tnamesRLR((s//usr/lib/python2.7/distutils/command/install.pyR^s  cCs|jdkr!|jj|_n|jdk rt|jtkr`tj|jd|_nt|jdkr|jd}}n0t|jdkr|j\}}n tdt |}n d}d}||_ ||_ dS(Nt,iiisY'extra_path' option must be a list, tuple, or comma-separated string with 1 or 2 elementst( R1R!RUttypet StringTypeRQRRtlenR Rt path_fileRc(R8RRc((s//usr/lib/python2.7/distutils/command/install.pyR_s  c GsDx=|D]5}d|}t||t|jt||qWdS(NRw(RzR R'Rn(R8RRLR((s//usr/lib/python2.7/distutils/command/install.pyRds  cCs|js dSttjjd}xc|jjD]R\}}|j|r5tjj| r5|j d|tj |dq5q5WdS(s#Create directories under ~ Nt~sos.makedirs('%s', 0700)i( RRRKRaR~RYt iteritemst startswithtisdirt debug_printtmakedirs(R8R$RLRa((s//usr/lib/python2.7/distutils/command/install.pyR\"s "cCs|jsU|jd|jjdj}|jrU|tkrUtdqUnx!|jD]}|j|qbW|j r|j n|j r|j }|j rt|j }x/tt|D]}|||||sN(sprefix=Nsinstallation prefix(s exec-prefix=Ns.(Unix only) prefix for platform-specific files(shome=Ns+(Unix only) home directory to install under(s install-base=Ns;base installation directory (instead of --prefix or --home)(sroot=Ns<install everything relative to this alternate root directory(sinstall-purelib=Ns;installation directory for pure Python module distributions(sinstall-platlib=Ns8installation directory for non-pure module distributions(sinstall-headers=Ns(installation directory for C/C++ headers(sinstall-scripts=Ns)installation directory for Python scripts(s install-data=Ns%installation directory for data files(scompileRscompile .py to .pyc [default](s no-compileNsdon't compile .py files(s optimize=Rslalso compile with optimization: -O1 for "python -O", -O2 for "python -OO", and -O0 to disable [default: -O0](sforceR s1force installation (overwrite any existing files)(s skip-buildNs2skip rebuilding everything (for testing/debugging)(srecord=Ns3filename in which to record list of installed files(t__name__t __module__t descriptionR!R Rktboolean_optionsRlR9RfRNRORPRsRRZR[R^R_RdR\RRRRRRRRt sub_commands(((s//usr/lib/python2.7/distutils/command/install.pyR^s    M  +    "  .         (spurelibsplatlibsheaderssscriptssdata( t__doc__t distutilsRt __revision__RSRKRQttypestdistutils.coreRtdistutils.debugRtdistutils.sysconfigRtdistutils.errorsRtdistutils.file_utilRtdistutils.utilRRR R R tsiteR R RTtWINDOWS_SCHEMERxRyR(((s//usr/lib/python2.7/distutils/command/install.pyts$