ó
ÐEe]c           @  sj  d  d l  m Z m Z d  d l Z d  d l Z d  d l Z d  d l m Z m Z d  d l	 m
 Z
 m Z d  d l m Z d  d l m Z m Z d  d l m Z m Z d  d l m Z m Z d  d	 l m Z m Z d  d
 l m Z d d „ Z d a t a d Z d „  Z e ƒ  Z d e f d „  ƒ  YZ  d e  f d „  ƒ  YZ! d e  f d „  ƒ  YZ" d e# f d „  ƒ  YZ$ d S(   iÿÿÿÿ(   t   divisiont   print_functionN(   t   mkstempt   mkdtemp(   t   Popent   PIPE(   t   DistutilsError(   t	   ccompilert   customized_ccompiler(   t   assert_t   assert_equal(   t   system_infot   ConfigParser(   t   default_lib_dirst   default_include_dirs(   t   _shell_utilsi   c         C  s-   i t  d 6t d 6j |  j ƒ  t ƒ } | ƒ  S(   sg   
    notfound_action:
      0 - do nothing
      1 - display warning message
      2 - raise error
    t   temp1t   temp2(   t	   Temp1Infot	   Temp2Infot   gett   lowert   _system_info(   t   namet   notfound_actiont   cl(    (    sE   lib/python2.7/site-packages/numpy/distutils/tests/test_system_info.pyt	   get_class   s    

s|  
[ALL]
library_dirs = {dir1:s}{pathsep:s}{dir2:s}
libraries = {lib1:s},{lib2:s}
extra_compile_args = -I/fake/directory -I"/path with/spaces" -Os
runtime_library_dirs = {dir1:s}

[temp1]
library_dirs = {dir1:s}
libraries = {lib1:s}
runtime_library_dirs = {dir1:s}

[temp2]
library_dirs = {dir2:s}
libraries = {lib2:s}
extra_link_args = -Wl,-rpath={lib2_escaped:s}
rpath = {dir2:s}
s·   
/* This file is generated from numpy/distutils/testing/test_system_info.py */
#include<stdio.h>
void foo(void) {
   printf("Hello foo");
}
void bar(void) {
   printf("Hello bar");
}
c          C  sÄ   t  ƒ  }  y |  j } WnR t k
 rj y |  j s? |  j ƒ  n  Wn t t f k
 rZ t SX|  j g } n Xy@ t	 | d t
 d t
 ƒ} | j j ƒ  | j j ƒ  | j ƒ  Wn t k
 r¿ t SXt S(   s?    Return True if there appears to be an executable compiler
    t   stdoutt   stderr(   R   t   compilert   AttributeErrort   initializedt
   initializeR   t
   ValueErrort   Falset   ccR   R   R   t   closeR   t   waitt   OSErrort   True(   R   t   cmdt   p(    (    sE   lib/python2.7/site-packages/numpy/distutils/tests/test_system_info.pyt   have_compiler<   s$    		R   c           B  s#   e  Z e e d  d „ Z d „  Z RS(   i   c         C  sf   i  |  j  _ g  |  _ i d d 6d d 6d d 6d d 6d d 6d d 6d d	 6d d
 6} t | ƒ |  _ d  S(   Nt    t   library_dirst   include_dirst   runtime_library_dirst   rpatht   src_dirst   0t   search_static_firstt   extra_compile_argst   extra_link_args(   t	   __class__t   infot   local_prefixesR   t   cp(   t   selfR   R   t	   verbosityt   defaults(    (    sE   lib/python2.7/site-packages/numpy/distutils/tests/test_system_info.pyt   __init__X   s    	

c         C  s   i | d 6| d 6} | S(   s-   Override _check_libs to return with all dirs t	   librariesR,   (    (   R9   t   lib_dirst   libst   opt_libst   extsR6   (    (    sE   lib/python2.7/site-packages/numpy/distutils/tests/test_system_info.pyt   _check_libsk   s    (   t   __name__t
   __module__R   R   R<   RB   (    (    (    sE   lib/python2.7/site-packages/numpy/distutils/tests/test_system_info.pyR   V   s   R   c           B  s   e  Z d  Z d Z RS(   s   For testing purposesR   (   RC   RD   t   __doc__t   section(    (    (    sE   lib/python2.7/site-packages/numpy/distutils/tests/test_system_info.pyR   q   s   R   c           B  s   e  Z d  Z d Z RS(   s   For testing purposesR   (   RC   RD   RE   RF   (    (    (    sE   lib/python2.7/site-packages/numpy/distutils/tests/test_system_info.pyR   v   s   t   TestSystemInfoReadingc           B  s£   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z e j j	 e
 d d ƒd „  ƒ Z e j j	 e
 d d ƒe j j	 d e e j ƒ  ƒ k d d	 ƒd
 „  ƒ ƒ Z RS(   c         C  sÓ  t  ƒ  |  _ t j j |  j d ƒ |  _ t j j |  j d ƒ |  _ t  ƒ  |  _ t j j |  j d ƒ |  _ t j j |  j d ƒ |  _	 t
 j i |  j d 6|  j d 6|  j d 6|  j	 d 6t j d	 6t j j |  j	 g ƒ d
 6  a t ƒ  \ } |  _ t j | ƒ t |  j d ƒ  } | j t ƒ Wd QXt |  j d ƒ  } | j t ƒ Wd QXt |  j d ƒ  } | j t ƒ Wd QXd „  } | t d ƒ |  j ƒ |  _ | t d ƒ |  j ƒ |  _ | t d ƒ |  j ƒ |  _ d S(   s    Create the libraries s   foo.cs	   libfoo.sos   bar.cs	   libbar.sot   dir1t   lib1t   dir2t   lib2t   pathsept   lib2_escapedt   wNc         S  s   | g |  _  |  j ƒ  |  S(   N(   t   filest   parse_config_files(   t   ct   site_cfg(    (    sE   lib/python2.7/site-packages/numpy/distutils/tests/test_system_info.pyt   site_and_parseœ   s    
t   defaultR   R   (   R   t   _dir1t   ost   patht   joint   _src1t   _lib1t   _dir2t   _src2t   _lib2t   simple_sitet   formatRL   R   t   NativeParserRR   R   t   _sitecfgR$   t   opent   writet   fakelib_c_textR   t	   c_defaultt   c_temp1t   c_temp2(   R9   t   fdRS   (    (    sE   lib/python2.7/site-packages/numpy/distutils/tests/test_system_info.pyt   setup}   s2    	




	c         C  s|   y t  j |  j ƒ Wn t k
 r' n Xy t  j |  j ƒ Wn t k
 rO n Xy t j |  j ƒ Wn t k
 rw n Xd  S(   N(   t   shutilt   rmtreeRU   t	   ExceptionR[   RV   t   removeRa   (   R9   (    (    sE   lib/python2.7/site-packages/numpy/distutils/tests/test_system_info.pyt   teardown¤   s    c         C  sŠ   |  j  } t | j ƒ  |  j |  j g ƒ t | j ƒ  |  j |  j g ƒ t | j ƒ  |  j g ƒ | j	 ƒ  } t | d d d d g ƒ d  S(   NR3   s   -I/fake/directorys   -I/path with/spacess   -Os(
   Re   R
   t   get_lib_dirsRU   R[   t   get_librariesRZ   R]   t   get_runtime_lib_dirst   calc_extra_info(   R9   t   tsit   extra(    (    sE   lib/python2.7/site-packages/numpy/distutils/tests/test_system_info.pyt   test_all³   s    	c         C  sX   |  j  } t | j ƒ  |  j g ƒ t | j ƒ  |  j g ƒ t | j ƒ  |  j g ƒ d  S(   N(   Rf   R
   Ro   RU   Rp   RZ   Rq   (   R9   Rs   (    (    sE   lib/python2.7/site-packages/numpy/distutils/tests/test_system_info.pyt
   test_temp1¼   s    	c         C  s…   |  j  } t | j ƒ  |  j g ƒ t | j ƒ  |  j g ƒ t | j d d ƒ |  j g ƒ | j ƒ  } t | d d |  j g ƒ d  S(   Nt   keyR/   R4   s   -Wl,-rpath=(   Rg   R
   Ro   R[   Rp   R]   Rq   Rr   (   R9   Rs   Rt   (    (    sE   lib/python2.7/site-packages/numpy/distutils/tests/test_system_info.pyt
   test_temp2Ã   s    	t   reasons   Missing compilerc         C  s¬   t  ƒ  } t j ƒ  } z‚ t j |  j ƒ | j t j j |  j ƒ g d |  j ƒt	 t j j
 |  j j d d ƒ ƒ p’ t j j
 |  j j d d ƒ ƒ ƒ Wd  t j | ƒ Xd  S(   Nt
   output_dirs   .cs   .os   .obj(   R   RV   t   getcwdt   chdirRU   t   compileRW   t   basenameRY   R	   t   isfilet   replace(   R9   RQ   t   previousDir(    (    sE   lib/python2.7/site-packages/numpy/distutils/tests/test_system_info.pyt   test_compile1Í   s    	($&t   msvcs   Fails with MSVC compiler c         C  sª   |  j  } t ƒ  } | j ƒ  d } t j ƒ  } zg t j |  j ƒ | j t j j	 |  j
 ƒ g d |  j d | ƒt t j j |  j
 j d d ƒ ƒ ƒ Wd  t j | ƒ Xd  S(   NR4   Rz   t   extra_postargss   .cs   .o(   Rg   R   Rr   RV   R{   R|   R[   R}   RW   R~   R\   R	   R   R€   (   R9   Rs   RQ   R4   R   (    (    sE   lib/python2.7/site-packages/numpy/distutils/tests/test_system_info.pyt   test_compile2Ü   s    		')(   RC   RD   Ri   Rn   Ru   Rv   Rx   t   pytestt   markt   skipift   HAVE_COMPILERR‚   t   reprR   t   new_compilerR…   (    (    (    sE   lib/python2.7/site-packages/numpy/distutils/tests/test_system_info.pyRG   {   s   	'					
"!(%   t
   __future__R    R   RV   Rj   R†   t   tempfileR   R   t
   subprocessR   R   t   distutils.errorsR   t   numpy.distutilsR   R   t   numpy.testingR	   R
   t   numpy.distutils.system_infoR   R   R   R   R   R   R^   RR   Rd   R*   R‰   R   R   R   t   objectRG   (    (    (    sE   lib/python2.7/site-packages/numpy/distutils/tests/test_system_info.pyt   <module>   s*   		