o ?OgRn@s ddlZddlZddlZddlZddlmZddlmZddlm Z ddl m Z ddl m Z ddlmZddlmZmZmZdd lmZdd l mZdd lmZdd lmZeduZd ZiiidZeD]"ZdD]\ZZeZej eZ!edkr~ee!vr~dZe!eeee<qiqeeD]=Z"ee"#D]4\ZZ$e%dde$Z$e$&ddZ$e$&ddZ$edkre$d7Z$ej'dkredkre$&ddZ$e$ee"e<qqerddddd d ed!<ddd"d#d d ed$<Gd%d&d&eZ(dS)'N)log)Command)DEBUG)get_config_vars)DistutilsPlatformError) write_file) convert_path subst_vars change_root) get_platform)DistutilsOptionError) USER_BASE) USER_SITE)purelibplatlibheadersscriptsdata) unix_prefix unix_homent))rZ posix_prefix)rZ posix_home)rrrZincludez \{(.+?)\}z$\g<1>z$installed_basez$basez$py_version_nodot_platz$py_version_nodotz /$dist_name) rz/lib/z /$platlibdir/z $usersitez4$userbase/Python$py_version_nodot/Include/$dist_namez)$userbase/Python$py_version_nodot/Scriptsz $userbaseZnt_userz=$userbase/include/python$py_version_short$abiflags/$dist_namez $userbase/bin unix_userc@seZdZdZgdZgdZeredddefedddiZ d d Z d d Z d dZ ddZ ddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3efd4efd5efd6efd7d8d9fgZdS):installz'install everything from build directory))zprefix=Nzinstallation prefix)z exec-prefix=Nz.(Unix only) prefix for platform-specific files)zhome=Nz+(Unix only) home directory to install under)z install-base=Nz;base installation directory (instead of --prefix or --home))zinstall-platbase=Nz\base installation directory for platform-specific files (instead of --exec-prefix or --home))zroot=Nzfinalize_optionss                        zinstall.finalize_optionscCs tsdSddlm}t|d|jD]9}|d}|ddkr'|dd}||jvr=|j|}||}t|| }n ||}t||}td||qdS)Nr) longopt_xlate:=z %s: %s) rZdistutils.fancy_getoptrerdebug user_options negative_opt translategetattr)r<msgreoptZopt_namevalr=r=r>rNs"         zinstall.dump_dirscCs& |jdus |jdur/|jdur|jdur|jdus)|jdus)|jdus)|jdur-tddS|j rI|j dur;t d|j |_|_| ddS|j dur\|j |_|_| ddS|jdur{|jdurjtdtjtj|_tjtj|_n |jdur|j|_|j|_|j|_| ddS)NzPinstall-base or install-platbase supplied, but installation scheme is incomplete$User base directory is not specifiedrrz*must not supply exec-prefix without prefixr)r'r(r-r*r+r,r.r/r r"r1r select_schemer&r$r%rKr`normpathrQr;r=r=r>rOsD           zinstall.finalize_unixcCs |jr|jdur td|j|_|_|tjddS|jdur1|j|_|_|ddS|j dur>tj t j |_ |j |_|_z |tjWdSt y\tdtjw)NrqZ_userrz)I don't know how to install stuff on '%s')r"r1rr'r(rrrKrLr&r$r`rsrQKeyErrorr;r=r=r>rPs*    zinstall.finalize_othercCs> t|}tD]}d|}t||durt||||qdSNZinstall_)INSTALL_SCHEMES SCHEME_KEYSrmsetattr)r<rLZschemekeyattrnamer=r=r>rrszinstall.select_schemecCsX|D]'}t||}|dur)tjdkstjdkrtj|}t||j}t|||qdS)Nr@r)rmrKrLr` expanduserr rWrx)r<Zattrsattrrpr=r=r> _expand_attrss    zinstall._expand_attrscC |gddS)N)r'r(r)r}r;r=r=r>rYszinstall.expand_basedirscCr~)N)r*r+r-r,r.r/rr;r=r=r>r[szinstall.expand_dirscGs. |D]}d|}t||tt||qdSru)rxrrmr<namesrLr|r=r=r>r]s zinstall.convert_pathscCs |jdur |jj|_|jdurGtdt|jtr"|jd|_t|jdkr1|jd}}nt|jdkr>|j\}}ntdt |}nd}d}||_ ||_ dS)NzIDistribution option extra_path is deprecated. See issue27919 for details.,r#rrBzY'extra_path' option must be a list, tuple, or comma-separated string with 1 or 2 elementsrA) r4rUrrM isinstancestrrSlenr r path_filerb)r<rrbr=r=r>r^s*       zinstall.handle_extra_pathc Gs2 |D]}d|}t||t|jt||qdSru)rxr r)rmrr=r=r>rc"s zinstall.change_rootscCsd |jsdSttjd}|jD]\}}||r/tj|s/| d|t |dqdS)N~zos.makedirs('%s', 0o700)i) r"rrKr`r{rWitems startswithisdirZ debug_printmakedirs)r<r&rLr`r=r=r>r\(s zinstall.create_home_pathcCs( |js|d|jdj}|jr|tkrtd|D]}||q |j r/| |j r^| }|j rQt|j }tt|D] }|||d||<qD|t|j |fd|j ttjjtj}ttjj|}tjtj|j}|jr|j r|js||vrtd|jdSdSdSdS)NrJz"Can't install when cross-compilingz'writing list of installed files to '%s'zmodules installed to '%s', which is not in Python's module search path (sys.path) -- you'll have to change the search path yourself)r6Z run_commandrUZget_command_objZ plat_namer7r rget_sub_commandsrcreate_path_filer: get_outputsr)rrangeexecutermaprKr`rsrQnormcaser-r5rri)r<Z build_platcmd_nameoutputsZroot_lenZcounterZsys_pathr-r=r=r>run4sJ    z install.runcCsN tj|j|jd}|jr|t||jgfd|dS| d|dS)N.pthz creating %szpath file '%s' not created) rKr`rar_rr5rrrbrM)r<filenamer=r=r>r`s  zinstall.create_path_filecCsj g}|D]}||}|D] }||vr||qq|jr3|jr3|tj|j |jd|S)Nr) rget_finalized_commandrappendrr5rKr`rar_)r<rrcmdrr=r=r>rns     zinstall.get_outputscCs0 g}|D]}||}||q|SN)rrextend get_inputs)r<Zinputsrrr=r=r>rs   zinstall.get_inputscCs |jp |jSr)rUZhas_pure_modulesZhas_ext_modulesr;r=r=r>has_libs zinstall.has_libcC |jSr)rU has_headersr;r=r=r>r zinstall.has_headerscCrr)rU has_scriptsr;r=r=r>rrzinstall.has_scriptscCrr)rUZhas_data_filesr;r=r=r>has_datarzinstall.has_datar-r,r.r/Zinstall_egg_infocCsdS)NTr=r;r=r=r>szinstall.) __name__ __module__ __qualname__ descriptionrjZboolean_optionsr0rrrkr?rdrNrOrPrrr}rYr[r]r^rcr\rrrrrrrrZ sub_commandsr=r=r=r>rZsL; O(  " ,  r))rQrXrKreZ distutilsrZdistutils.corerZdistutils.debugrZdistutils.sysconfigrZdistutils.errorsrZdistutils.file_utilrZdistutils.utilrr r r r Zsiter rr0rwrvryZdistutils_scheme_nameZsys_scheme_nameZsys_keyZ_INSTALL_SCHEMESZ sys_schemeZmain_keyrvaluesubreplacerVrr=r=r=r>sh