ó
@K7]c           @` sK  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l m Z m Z m	 Z	 m
 Z
 d  d l Z y* d  d l m Z d  d l m Z m Z Wn n Xd  d l m Z d  d l m Z m Z m Z m Z m Z d  d l m Z m Z i d	 d
 6d d 6d d 6d d 6d d 6d d 6Z d „  Z d „  Z d d „ Z  d „  Z! e" d „ Z# d S(   i    (   t   absolute_importt   divisiont   print_functionN(   t   isdirt   joint   dirnamet   isfile(   t   find_vcvarsall(   t   Regt   WINSDK_BASE(   t   environ(   t   check_call_envt   path_prependedt	   copy_intot
   get_loggert   write_bat_activation_text(   t   set_language_env_varst   get_default_variants   Visual Studio 8 2005s   8.0s   Visual Studio 9 2008s   9.0s   Visual Studio 10 2010s   10.0s   Visual Studio 11 2012s   11.0s   Visual Studio 12 2013s   12.0s   Visual Studio 14 2015s   14.0c         C` s6  t  |  ƒ s d Sxt j |  ƒ D]} t t |  | ƒ ƒ s  d | k rN q  n  t t |  | ƒ d ƒ ° } | j ƒ  } | j d ƒ o“ d | j ƒ  k sœ w  n  t	 d | ƒ t t |  | d ƒ d ƒ  } | j
 | j ƒ  ƒ Wd QXt t t t ƒ d	 | j ƒ t |  | d
 ƒ ƒ Wd QXt j t |  | ƒ ƒ q  Wd S(   sV   
    Fixes scripts which have been installed unix-style to have a .bat
    helper
    Nt   .t   rbs   #!t   pythons@   Adjusting unix-style #! script %s, and adding a .bat file for its
   -script.pyt   wbs
   cli-%s.exes   .exe(   R   t   ost   listdirR   R   t   opent   readlinet
   startswitht   lowert   printt   writet   readR   R   t   __file__t	   host_archt   remove(   t   scripts_dirt   configt   fnt   ft   linet   fo(    (    s2   lib/python2.7/site-packages/conda_build/windows.pyt   fix_staged_scripts"   s     "!c         C` s¢   d t  j k r t  j d } n t  j d } t |  ƒ j d d ƒ } d j | ƒ } | t  j k r| t  j j t  j | d ƒ St  j j | d j |  ƒ d d	 ƒ Sd
 S(   s¸   
    Given the Visual Studio version, returns the default path to the
    Microsoft Visual Studio vcvarsall.bat file.
    Expected versions are of the form {9.0, 10.0, 12.0, 14.0}
    s   ProgramFiles(x86)t   ProgramFilesR   t    s   VS{0}COMNTOOLSs   ..\..\VC\vcvarsall.bats   Microsoft Visual Studio {}t   VCs   vcvarsall.batN(   R   R
   t   strt   replacet   formatt   pathR   (   t   versiont   PROGRAM_FILES_PATHt   flatversiont   vstools(    (    s2   lib/python2.7/site-packages/conda_build/windows.pyt   build_vcvarsall_vs_pathA   s    c         C` s¶  t  t ƒ } | j d ƒ | r/ | j d ƒ n  t |  ƒ }  |  d k rM d n d } g  } d  } | d  k	 rt | } n  | j d ƒ | j d ƒ | s| j j d t | ƒ d ƒ } t	 | d	 ƒ d
 k rú t	 | j
 d ƒ d ƒ d k  rñ d } n  d } qd } n  t | ƒ d k r:| j d j | j d d ƒ ƒ ƒ n  t | ƒ } | d „ }	 | j d j | ƒ ƒ | j d j | j
 d ƒ d	 ƒ ƒ | j d j t | d ƒ ƒ | j d j t | i d d 6d d 6|  ƒ ƒ | j d ƒ | j d ƒ | d k rÉy  t j t j j t d ƒ d ƒ }
 t j j |
 d  d! ƒ } |  d k rMd" n d# } |	 | d$ | ƒ} | j d% ƒ | j | ƒ | j d& j |
 |	 | ƒ ƒ ƒ Wq¥t k
 rÅ| j |	 | ƒ ƒ q¥XnÜ | d k r’y. t j j t j j t d' ƒ ƒ d( d) ƒ } Wn t t f k
 r"d  } n Xd* } | j |	 | ƒ ƒ | d k rm| rm| j | j |	 | ƒ ƒ ƒ n  | j | j |	 t d' ƒ ƒ ƒ ƒ n | j |	 | ƒ ƒ d+ j | ƒ d+ S(,   NsÜ   Using legacy MSVC compiler setup.  This will be removed in conda-build 4.0. If this recipe does not use a compiler, this message is safe to ignore.  Otherwise, use {{compiler('<language>')}} jinja2 in requirements/build.sÀ   msvc_compiler key in meta.yaml is deprecated. Use the newvariant-powered compiler configuration instead. Note that msvc_compileris incompatible with the new \{\{compiler('c')\}\} jinja scheme.t   32t   x86t   amd64s   set DISTUTILS_USE_SDK=1s   set MSSdk=1R   i    i   R   i   i   s   10.0s   14.0s   9.0g      ,@s6   set PY_VCRUNTIME_REDIST=%LIBRARY_BIN%\vcruntime{0}.dllR*   c         S` s   d j  d |  d | ƒ S(   Ns   call "{cmd}" {arch}t   cmdt   arch(   R.   (   R8   R9   (    (    s2   lib/python2.7/site-packages/conda_build/windows.pyt   build_vcvarsall_cmd‡   s    s   set "VS_VERSION={}"s   set "VS_MAJOR={}"s   set "VS_YEAR={}"iüÿÿÿs   set "CMAKE_GENERATOR={}"s    Win64t   64s+   set "MSYS2_ARG_CONV_EXCL=/AI;/AL;/OUT;/out"s   set "MSYS2_ENV_CONV_EXCL=CL"s   v7.1t   installationfoldert   Bins
   SetEnv.cmds   /Release /x86s   /Release /x64R9   s   Setlocal EnableDelayedExpansions'   if not "%WindowsSDKDir%" == "{}" ( {} )i	   t   bins   vcvars64.bats   IF %ERRORLEVEL% NEQ 0 {}s   
(   R   t   __name__t   warnR,   t   Nonet   appendt   variantt   getR   t   intt   splitt   floatR.   R-   R4   t   VS_VERSION_STRINGR   t	   get_valueR   R/   R   R	   t   KeyErrorR   t   distutils_find_vcvarsallt	   TypeError(   t   bitsR#   t   overridet   logt   arch_selectort   msvc_env_linesR0   t   py_vert   vcvarsall_vs_pathR:   t   WIN_SDK_71_PATHt   WIN_SDK_71_BAT_PATHt   win_sdk_archt   win_sdk_cmdt   VCVARS64_VS9_BAT_PATHt   error1(    (    s2   lib/python2.7/site-packages/conda_build/windows.pyt   msvc_env_cmdY   sv    				#	
c         C` s@  t  |  j j d ƒ } |  j d k r1 t | d <n  d d  l } | j d ƒ t | d ƒ ƒ } | j d ƒ xT | j	 ƒ  D]F \ } } | d k rx | d  k	 rx | j d	 j d
 | d | ƒ ƒ qx qx W|  j s| j t d |  j j d |  j d |  j d d  ƒ ƒ ƒ n  | j d ƒ | j d j | d ƒ ƒ | j d j | d ƒ ƒ |  j j rt|  j ƒ  d k rtt | |  ƒ n  Wd  QXt  |  j j d ƒ } t j j | ƒ r6t | ƒ  }	 |	 j ƒ  }
 Wd  QX| j d ƒ t | d ƒ ƒ Q } | j d ƒ | j d j | ƒ ƒ | j d ƒ | j d ƒ | j |
 ƒ Wd  QXn  | | f S(   Ns   build_env_setup.batR   t   PYTHONDONTWRITEBYTECODEi    s   utf-8R   s	   @echo on
R*   s   set "{key}={value}"
t   keyt   valueRM   R#   RN   s   build/msvc_compilers   set "INCLUDE={};%INCLUDE%"
t   LIBRARY_INCs   set "LIB={};%LIB%"
t   LIBRARY_LIBt   condas   conda_build.bats   IF "%CONDA_BUILD%" == "" (
s       call {}
s   )
s%   REM ===== end generated header =====
(   R   R#   t   work_dirt   noarcht   Truet   codecst	   getwriterR   R   t   itemsRA   R.   t"   uses_new_style_compiler_activationRZ   R    RI   t   activatet   nameR   R   R/   R   R   (   t   mt   envt   bld_batt
   env_scriptRd   R'   R\   R]   t   work_scriptt   fit   data(    (    s2   lib/python2.7/site-packages/conda_build/windows.pyt   write_build_scriptsÒ   s8    !&	!!c   
      ` s¿  t  |  j j ƒ 0 t  |  j j ƒ  t j d |  ƒ ‰  Wd  QXWd  QXd ˆ  d <d ˆ  d <t ˆ  d <t ˆ  d <|  j j ˆ  d <t ˆ  d	 <ˆ  j t	 |  j j
 ƒ ƒ x8 d D]0 } ˆ  d | } t | ƒ s¦ t j | ƒ q¦ q¦ Wt |  ˆ  | ƒ \ } } | r»t j j | ƒ r»d d d t j j | ƒ g } |  j j r>d  }	 n6 ‡  f d †  d d d g Dƒ }	 t d t j |	 ƒ ƒ t | d |  j j d | d |	 ƒt t |  j j d ƒ d |  j ƒn  d  S(   NRj   t   BUILDt   CONDA_BUILD_STATEt   Falset   PIP_NO_BUILD_ISOLATIONt   PIP_NO_DEPENDENCIESt   PIP_IGNORE_INSTALLEDt   PIP_CACHE_DIRt   PIP_NO_INDEXt   BINt   INCt   LIBt   LIBRARY_s   cmd.exes   /ds   /cc         ` s)   i  |  ] } | ˆ  k r ˆ  | | “ q S(    (    (   t   .0t   k(   Rk   (    s2   lib/python2.7/site-packages/conda_build/windows.pys
   <dictcomp>"  s   	t   PREFIXt   BUILD_PREFIXt   SRC_DIRs   Rewriting env in output: %st   cwdt   statst   rewrite_stdout_envt   ScriptsR#   (   Rz   R{   R|   (   R   R#   t   host_prefixt   build_prefixR
   t   get_dictRc   t   pip_cache_dirt   updateR   RC   R   R   t   makedirsRq   R/   R   t   basenamet   debugRA   R   t   pprintt   pformatR   Ra   R(   R   (
   Rj   Rl   R„   t   provision_onlyRi   R/   Rn   Rm   R8   t   rewrite_env(    (   Rk   s2   lib/python2.7/site-packages/conda_build/windows.pyt   buildô   s0    




	"($   t
   __future__R    R   R   R   R   t   os.pathR   R   R   R   t
   setuptoolst   distutils.msvc9compilerR   RK   R   R	   t   conda_buildR
   t   conda_build.utilsR   R   R   R   R   t   conda_build.variantsR   R   RH   R(   R4   RA   RZ   Rq   Rt   R“   (    (    (    s2   lib/python2.7/site-packages/conda_build/windows.pyt   <module>   s0   "(
		y	"