<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    Re3              
   @   st  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mZ d dlmZ d dlmZ d d	lmZ yd dlmZ ed
 W n ek
r   eZY nX ed d dlmZ dd ZdZdZdZejdkrdZn>e j dkr$yd dl!Z!e"e!d ZZW n ek
r"   Y nX dd Z#dd Z$G dd deZesVe j dkrbdddZ%ndZd ddZ%dS )!    N)EXTENSION_SUFFIXES)	build_ext)	copy_file)new_compiler)customize_compilerget_config_var)DistutilsError)log)LibraryzCython.Compiler.MainLDSHARED)_config_varsc          	   C   sZ   t jdkrNt }z$dtd< dtd< dtd< t|  W d t  t| X nt|  d S )Ndarwinz0gcc -Wl,-x -dynamiclib -undefined dynamic_lookupr   z -dynamiclibCCSHAREDz.dylibSO)sysplatform_CONFIG_VARScopyr   clearupdate)compilertmp r   /builddir/build/BUILDROOT/alt-python37-setuptools-58.3.0-4.el8.x86_64/opt/alt/python37/lib/python3.7/site-packages/setuptools/command/build_ext.py_customize_compiler_for_shlib   s    
r   FZsharedr   TntRTLD_NOWc             C   s   t r| S dS )N )	have_rtld)sr   r   r   if_dl>   s    r    c              C   s*   x$t D ]} d| kr| S | dkr| S qW dS )z;Return the file extension for an abi3-compliant Extension()z.abi3z.pydN)r   )suffixr   r   r   get_abi3_suffixB   s
    
r"   c               @   sv   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdddZdS )r   c             C   s.   | j d }| _ t|  || _ |r*|   dS )z;Build extensions in build directory, then copy if --inplacer   N)Zinplace
_build_extruncopy_extensions_to_source)selfZold_inplacer   r   r   r$   L   s
    
zbuild_ext.runc       
      C   s   |  d}x| jD ]}| |j}| |}|d}d|d d }||}tj	|tj	
|}tj	| j|}	t|	|| j| jd |jr| |ptj|d qW d S )Nbuild_py.)verbosedry_runT)get_finalized_command
extensionsget_ext_fullnamenameget_ext_filenamesplitjoinZget_package_dirospathbasename	build_libr   r*   r+   _needs_stub
write_stubcurdir)
r&   r'   extfullnamefilenameZmodpathpackagepackage_dirZdest_filenameZsrc_filenamer   r   r   r%   T   s    




z#build_ext.copy_extensions_to_sourcec             C   s   t d}|r&t jj|d | }nt| |}td}|| jkr| j| }t	|do\t
 }|r|d t|  }t
 }|| }t|trt j|\}}| j|tS tr|jrt j|\}}t j|d| S |S )NZSETUPTOOLS_EXT_SUFFIXr(   
EXT_SUFFIXZpy_limited_apizdl-)r3   getenvr4   r2   r1   r#   r0   r   ext_mapgetattrr"   len
isinstancer
   splitextshlib_compilerlibrary_filenamelibtype	use_stubs_links_to_dynamic)r&   r;   Zso_extr<   r:   Zuse_abi3fndr   r   r   r0   j   s&    




zbuild_ext.get_ext_filenamec             C   s    t |  d | _g | _i | _d S )N)r#   initialize_optionsrF   shlibsrA   )r&   r   r   r   rM      s    
zbuild_ext.initialize_optionsc             C   s4  t |  | jpg | _| | j dd | jD | _| jrB|   x| jD ]}| |j|_qJW x| jD ]}|j}|| j	|< || j	|
dd < | jr| |pd}|otot|t }||_||_| | }|_tjtj| j|}|r
||jkr
|j| |rhtrhtj|jkrh|jtj qhW d S )Nc             S   s   g | ]}t |tr|qS r   )rD   r
   ).0r:   r   r   r   
<listcomp>   s    z.build_ext.finalize_options.<locals>.<listcomp>r(   r)   F)r#   finalize_optionsr-   Zcheck_extensions_listrN   setup_shlib_compilerr.   r/   
_full_namerA   r1   links_to_dynamicrI   rD   r
   rJ   r7   r0   
_file_namer3   r4   dirnamer2   r6   library_dirsappendr9   runtime_library_dirs)r&   r:   r;   Zltdnsr<   Zlibdirr   r   r   rQ      s,    

zbuild_ext.finalize_optionsc             C   s   t | j| j| jd }| _t| | jd k	r8|| j | jd k	rbx| jD ]\}}|	|| qJW | j
d k	rx| j
D ]}|| qtW | jd k	r|| j | jd k	r|| j | jd k	r|| j | jd k	r|| j t||_d S )N)r   r+   force)r   r   r+   r[   rF   r   include_dirsZset_include_dirsZdefineZdefine_macroZundefZundefine_macro	librariesZset_librariesrW   Zset_library_dirsZrpathZset_runtime_library_dirsZlink_objectsZset_link_objectslink_shared_object__get__)r&   r   r/   valueZmacror   r   r   rR      s(    






zbuild_ext.setup_shlib_compilerc             C   s   t |tr|jS t| |S )N)rD   r
   export_symbolsr#   get_export_symbols)r&   r:   r   r   r   rb      s    
zbuild_ext.get_export_symbolsc             C   s\   |   | j}z@t|tr"| j| _t| | |jrL| dj	}| 
|| W d || _X d S )Nr'   )Z_convert_pyx_sources_to_langr   rD   r
   rF   r#   build_extensionr7   r,   r6   r8   )r&   r:   Z	_compilercmdr   r   r   rc      s    
zbuild_ext.build_extensionc                sP   t dd | jD  d|jddd dg t fdd|jD S )	z?Return true if 'ext' links to a dynamic lib in the same packagec             S   s   g | ]
}|j qS r   )rS   )rO   libr   r   r   rP      s    z.build_ext.links_to_dynamic.<locals>.<listcomp>r(   Nr)   r   c             3   s   | ]}|  kV  qd S )Nr   )rO   libname)libnamespkgr   r   	<genexpr>   s    z-build_ext.links_to_dynamic.<locals>.<genexpr>)dictfromkeysrN   r2   rS   r1   anyr]   )r&   r:   r   )rg   rh   r   rT      s     zbuild_ext.links_to_dynamicc             C   s   t | |   S )N)r#   get_outputs_build_ext__get_stubs_outputs)r&   r   r   r   rm      s    zbuild_ext.get_outputsc                s6    fdd j D }t|  }tdd |D S )Nc             3   s0   | ](}|j rtjj jf|jd  V  qdS )r(   N)r7   r3   r4   r2   r6   rS   r1   )rO   r:   )r&   r   r   ri      s   z0build_ext.__get_stubs_outputs.<locals>.<genexpr>c             s   s   | ]\}}|| V  qd S )Nr   )rO   baseZfnextr   r   r   ri      s    )r-   	itertoolsproduct!_build_ext__get_output_extensionslist)r&   Zns_ext_basespairsr   )r&   r   Z__get_stubs_outputs   s    

zbuild_ext.__get_stubs_outputsc             c   s"   dV  dV  |  djrdV  d S )Nz.pyz.pycr'   z.pyo)r,   optimize)r&   r   r   r   Z__get_output_extensions   s    z!build_ext.__get_output_extensionsFc             C   s2  t d|j| tjj|f|jd d }|rJtj|rJt|d | j	st
|d}|dddd	td
 dtj|j dddtddddtddddddtddddg |  |r.ddlm} ||gdd| j	d  | d!j}|dkr||g|d| j	d  tj|r.| j	s.t| d S )"Nz writing stub loader for %s to %sr(   z.pyz already exists! Please delete.w
zdef __bootstrap__():z-   global __bootstrap__, __file__, __loader__z0   import sys, os, pkg_resources, importlib.utilz, dlz:   __file__ = pkg_resources.resource_filename(__name__,%r)z   del __bootstrap__z    if '__loader__' in globals():z       del __loader__z#   old_flags = sys.getdlopenflags()z   old_dir = os.getcwd()z   try:z(     os.chdir(os.path.dirname(__file__))z$     sys.setdlopenflags(dl.RTLD_NOW)z3     spec = importlib.util.spec_from_file_location(z#                __name__, __file__)z0     mod = importlib.util.module_from_spec(spec)z!     spec.loader.exec_module(mod)z   finally:z"     sys.setdlopenflags(old_flags)z     os.chdir(old_dir)z__bootstrap__()r   r   )byte_compileT)ru   r[   r+   install_lib)r	   inforS   r3   r4   r2   r1   existsr   r+   openwriter    r5   rU   closedistutils.utilrx   r,   ru   unlink)r&   
output_dirr:   compileZ	stub_filefrx   ru   r   r   r   r8      sX    



zbuild_ext.write_stubN)F)__name__
__module____qualname__r$   r%   r0   rM   rQ   rR   rb   rc   rT   rm   rn   rr   r8   r   r   r   r   r   K   s   	r   c             C   s(   |  | j|||||||||	|
|| d S )N)linkZSHARED_LIBRARY)r&   objectsoutput_libnamer   r]   rW   rY   ra   debugextra_preargsextra_postargs
build_temptarget_langr   r   r   r^   $  s
    r^   Zstaticc             C   s^   |d kst tj|\}}tj|\}}| ddrH|dd  }| ||||| d S )Nxre      )AssertionErrorr3   r4   r1   rE   rG   
startswithZcreate_static_lib)r&   r   r   r   r]   rW   rY   ra   r   r   r   r   r   r<   r5   r:   r   r   r   r^   3  s    )
NNNNNr   NNNN)
NNNNNr   NNNN)&r3   r   rp   Zimportlib.machineryr   Zdistutils.command.build_extr   Z_du_build_extdistutils.file_utilr   distutils.ccompilerr   distutils.sysconfigr   r   distutils.errorsr   	distutilsr	   Zsetuptools.extensionr
   ZCython.Distutils.build_extr#   
__import__ImportErrorr   r   r   r   rI   rH   r   r/   dlhasattrr    r"   r^   r   r   r   r   <module>   sV   

	 W   	   