o
    ^i                     @  s   d dl mZ d dlZd dlZd dlZd dlZd dlZd dl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dZejdddZdddZ			d d!ddZdS )"    )annotationsN)
ModuleType   )get_cache_manager   )knobsnamestrsrcsrcdirlibrary_dirs	list[str]include_dirs	librariesccflagsreturnc                 C  s@  t jj }r|| |||||S td}tj|dj| |d}	tj	
d}
|
d u rDtd}td}|d ur:|n|}
|
d u rDtdttdrNt }nt }|d	krXd
}tj|dd }t jj}|||g| }|
|ddddd|	g}|dd |D 7 }|dd |D 7 }|dd |D 7 }|| tj|tjd |	S )N
EXT_SUFFIXz{name}{suffix})r   suffixCCclanggcczeFailed to find C compiler. Please specify via CC environment variable or set triton.knobs.build.impl.get_default_schemeposix_localposix_prefix)schemeincludez-O3z-sharedz-fPICz
-Wno-psabiz-oc                 S     g | ]}d | qS )z-l ).0libr   r   O/var/www/html/RAG/RAG_venv/lib/python3.10/site-packages/triton/runtime/build.py
<listcomp>/       z_build.<locals>.<listcomp>c                 S  r   )z-Lr   r   dirr   r   r    r!   0   r"   c                 S  s   g | ]}|d urd| qS )Nz-Ir   r#   r   r   r    r!   1   s    )stdout)r   buildimpl	sysconfigget_config_varospathjoinformatenvirongetshutilwhichRuntimeErrorhasattrr   _get_default_scheme	get_pathsbackend_dirsextend
subprocess
check_callDEVNULL)r   r
   r   r   r   r   r   r'   r   soccr   r   r   py_include_dircustom_backend_dirscc_cmdr   r   r    _build   s8   





r@   c                  C  s,   ddl m} m}m} d|  | g| S )Nr   machinesystemarchitecture,)platformrB   rC   rD   r,   rA   r   r   r    platform_key7   s   rG   r+   r   c                 C  sH   t j| |}|r|jstd|  d| t j|}|j| |S )NzFailed to load newly compiled z from )	importlibutilspec_from_file_locationloaderr2   module_from_specexec_module)r   r+   specmodr   r   r    _load_module_from_path=   s   
rP   list[str] | Nonec              	   C  sh  t | t  d }t|}td}|| | }	|	d urCzt	||	W S  t
tfyB   tt}
|
d| d Y nw t `}tj||d }t|d}||  W d    n1 sfw   Y  t||||prg |pug |pxg |p{g }t|d}|j| | | dd	}	W d    n1 sw   Y  W d    n1 sw   Y  t	||	S )
Nzutf-8r   z$Triton cache error: compiled module z.so could not be loadedz.cwrbT)binary)hashlibsha256rG   encode	hexdigestr   r(   r)   get_filerP   r2   ImportErrorlogging	getLogger__name__warningtempfileTemporaryDirectoryr*   r+   r,   openwriter@   putread)r
   r   r   r   r   r   keycacher   
cache_pathlogtmpdirsrc_pathfr;   r   r   r    compile_module_from_srcF   s.   


$
rl   )r   r	   r
   r	   r   r	   r   r   r   r   r   r   r   r   r   r	   )r   r	   )r   r	   r+   r	   r   r   )NNNN)r
   r	   r   r	   r   rQ   r   rQ   r   rQ   r   rQ   r   r   )
__future__r   	functoolsrU   importlib.utilrH   r[   r*   r0   r8   r(   r_   typesr   rf   r    r   r@   	lru_cacherG   rP   rl   r   r   r   r    <module>   s*    
$
	