
0c@_                 @   s!  d  Z  d d l Z d d l Z d d l Z d d l m Z d d l m Z d d l m	 Z	 d d l
 m Z d d l m Z d d l m Z d d	 l m Z d d
 l m Z e r d d l m Z m Z m Z d d l m Z d d l m Z e j e  Z Gd d   d e  Z  d d   Z! d S)z6Legacy installation process, i.e. `setup.py install`.
    N)change_root)InstallationError)
indent_log)
ensure_dir)make_setuptools_install_args)runner_with_spinner_message)TempDirectory)MYPY_CHECK_RUNNING)ListOptionalSequence)BuildEnvironment)Schemec               @   s   e  Z d  Z d d   Z d S)LegacyInstallFailurec             C   s   t  j   |  _ d  S)N)sysexc_infoparent)self r   F/tmp/pip-build-jynh7p1z/pip/pip/_internal/operations/install/legacy.py__init__   s    zLegacyInstallFailure.__init__N)__name__
__module____qualname__r   r   r   r   r   r      s   r   c          ,      si  | j  } t d d  } y t j j | j d  } t | d | d |  d | d   d | d	 | d
 | d | d |	 d | 
} t d j |
   } t   & |  | d | d |  Wd  QRXWd  QRXt j j	 |  s t
 j d |  d SWn t k
 rt  Yn Xt |   } | j   j   } Wd  QRXWd  QRX  f d d   } xW | D]4 } t j j |  } | j d  rO| |  } PqOWd j |  } t |   g  } x^ | D]V } | j   } t j j |  r| t j j 7} | j t j j | |  |   qW| j   t |  t j j | d  } t | d  ! } | j d j |  d  Wd  QRXd S)Nkindrecordzinstall-record.txtglobal_optionsinstall_optionsrecord_filenamerootprefix
header_dirhomeuse_user_siteZno_user_config	pycompilezRunning setup.py install for {}cmdcwdzRecord file %s not foundFc                s4     d  k s t  j j |   r# |  St   |   Sd  S)N)ospathisabsr   )r(   )r   r   r   prepend_root`   s    zinstall.<locals>.prepend_rootz	.egg-infoz{} did not indicate that it installed an .egg-info directory. Only setup.py projects generating .egg-info directories are supported.zinstalled-files.txtw
T)headersr   r'   r(   joinr   r   formatr   existsloggerdebug	Exceptionr   openread
splitlinesdirnameendswithr   stripisdirsepappendrelpathsortr   write)r   r   r   r"   r    r#   r$   schemeZsetup_py_pathisolatedZreq_nameZ	build_envZunpacked_source_directoryZreq_descriptionr!   temp_dirr   install_argsZrunnerfZrecord_linesr*   line	directoryegg_info_dirmessage	new_linesfilenameinst_files_pathr   )r   r   install!   sf    		 	 

!rL   )"__doc__loggingr'   r   distutils.utilr   Zpip._internal.exceptionsr   Zpip._internal.utils.loggingr   Zpip._internal.utils.miscr   Z$pip._internal.utils.setuptools_buildr   Zpip._internal.utils.subprocessr   Zpip._internal.utils.temp_dirr   Zpip._internal.utils.typingr	   Ztypingr
   r   r   Zpip._internal.build_envr   Zpip._internal.models.schemer   	getLoggerr   r1   r3   r   rL   r   r   r   r   <module>   s$   