CasperSecurity

Current Path : /usr/lib/python3.10/distutils/__pycache__/
Upload File :
Current File : //usr/lib/python3.10/distutils/__pycache__/cygwinccompiler.cpython-310.pyc

o

��bc�?�@s�dZddlZddlZddlZddlmZmZmZddlZddl	m
Z
ddlmZddl
mZmZmZmZddlmZddlmZd	d
�ZGdd�de
�ZGd
d�de�ZdZdZdZdd�Ze�d�Zdd�Zdd�Z dd�Z!dS)adistutils.cygwinccompiler

Provides the CygwinCCompiler class, a subclass of UnixCCompiler that
handles the Cygwin port of the GNU C compiler to Windows.  It also contains
the Mingw32CCompiler class which handles the mingw32 port of GCC (same as
cygwin in no-cygwin mode).
�N)�Popen�PIPE�check_output)�
UnixCCompiler)�
write_file)�DistutilsExecError�CCompilerError�CompileError�UnknownFileError)�LooseVersion)�find_executablecCs�tj�d�}|dkr>tj|d|d�}|dkrdgS|dkr#dgS|d	kr*d
gS|dkr1dgS|d
kr8dgStd|��dS)zaInclude the appropriate MSVC runtime library if Python was built
    with MSVC 7.0 or later.
    zMSC v.�����
�1300�msvcr70�1310�msvcr71�1400�msvcr80�1500�msvcr90�1600�msvcr100zUnknown MS Compiler version %s N)�sys�version�find�
ValueError)�msc_pos�msc_ver�r �0/usr/lib/python3.10/distutils/cygwinccompiler.py�	get_msvcr=s�r"c@sZeZdZdZdZdZdZdZdZdZ	dZ
dd
d�Zdd
�Z				ddd�Z
ddd�ZdS)�CygwinCCompilerz? Handles the Cygwin port of the GNU C compiler to Windows.
    �cygwinz.o�.az.dllzlib%s%sz%s%sz.exercCs�t�||||�t�\}}|�d||f�|tur!|�d|�t�\|_|_|_	|�|j
d|j|j|j	f�|jdkrCd|_nd|_|jdkrNd}nd	}|jd
ddd
d|j|fd�|jdkrodg|_
|�d�dSt�|_
dS)Nz%Python's GCC status: %s (details: %s)z�Python's pyconfig.h doesn't seem to support your compiler. Reason: %s. Compiling may fail because of undefined preprocessor macros.z: gcc %s, ld %s, dllwrap %s
z2.10.90�gcc�dllwrap�2.13�-shared�
-mdll -staticzgcc -mcygwin -O -Wallzgcc -mcygwin -mdll -O -Wallzg++ -mcygwin -O -Wallzgcc -mcygwinz%s -mcygwin %s��compiler�compiler_so�compiler_cxx�
linker_exe�	linker_so�2.91.57�msvcrtz,Consider upgrading to a newer version of gcc)r�__init__�check_config_h�debug_print�CONFIG_H_OK�warn�get_versions�gcc_version�
ld_version�dllwrap_version�
compiler_type�
linker_dll�set_executables�
dll_librariesr")�self�verbose�dry_run�force�status�details�
shared_optionr r r!r3bsN
����
��


��
�zCygwinCCompiler.__init__c
Cs�|dks|dkr&z
|�dd|d|g�WdSty%}zt|��d}~wwz|�|j||d|g|�WdStyH}zt|��d}~ww)z:Compiles the source by spawning GCC and windres if needed.�.rc�.res�windresz-iz-oN)�spawnrr	r-)r@�obj�src�ext�cc_args�extra_postargs�pp_opts�msgr r r!�_compile�s�����zCygwinCCompiler._compileNcCsHt�|
pg�}
t�|pg�}t�|pg�}|�|j�|dur�||jks)|jdkr�tj�|d�}tj�tj�	|��\}}tj�
||d�}tj�
|d|d�}dtj�	|�dg}|D]}|�|�q]|�t
||fd	|�|jd
kr�|
�d|g�|
�d|g�n|�|�|	s�|
�d
�t�||||||||d|	|
|||
�dS)zLink the objects.Nr&rz.def�libr%z
LIBRARY %s�EXPORTSz
writing %sr'z--output-libz--defz-s)�copy�extendr?�
EXECUTABLEr=�os�path�dirname�splitext�basename�join�append�executerr�link)r@�target_desc�objects�output_filename�
output_dir�	libraries�library_dirs�runtime_library_dirs�export_symbols�debug�
extra_preargsrO�
build_temp�target_lang�temp_dir�dll_name�
dll_extension�def_file�lib_file�contents�symr r r!r`�sB	
���


�zCygwinCCompiler.link�cCs�|durd}g}|D]H}tj�tj�|��\}}||jddgvr)td||f��|r1tj�|�}|dvrE|�tj�||||j	��q
|�tj�|||j	��q
|S)z#Adds supports for rc and res files.NrtrGrHz"unknown file type '%s' (from '%s'))rHrG)
rXrYr[�normcase�src_extensionsr
r\r^r]�
obj_extension)r@�source_filenames�	strip_dirrd�	obj_names�src_name�baserMr r r!�object_filenames�s&���z CygwinCCompiler.object_filenames�rrr)
NNNNNrNNNN)rrt)�__name__�
__module__�__qualname__�__doc__r<rw�static_lib_extension�shared_lib_extension�static_lib_format�shared_lib_format�
exe_extensionr3rRr`r}r r r r!r#Ws"
;
�Nr#c@seZdZdZdZddd�ZdS)�Mingw32CCompilerz@ Handles the Mingw32 port of the GNU C compiler to Windows.
    �mingw32rc	Csxt�||||�|jdkrd}nd}|jdkrd}nd}t�r#td��|jdd	d
dd|j||fd
�g|_t	�|_dS)Nr(r)r*r1z--entry _DllMain@12rtz1Cygwin gcc cannot be used with --compiler=mingw32zgcc -O -Wallzgcc -mdll -O -Wallzg++ -O -Wallr&z%s %s %sr+)
r#r3r:r9�is_cygwingccrr>r=r?r")r@rArBrCrF�entry_pointr r r!r3s.

����zMingw32CCompiler.__init__Nr~)rr�r�r�r<r3r r r r!r�sr��okznot ok�	uncertainc
Cs�ddlm}dtjvrtdfS|��}z(t|�}zd|��vr+td|fW|��WSt	d|fW|��WS|��wt
yV}ztd||jffWYd	}~Sd	}~ww)
awCheck if the current Python installation appears amenable to building
    extensions with GCC.

    Returns a tuple (status, details), where 'status' is one of the following
    constants:

    - CONFIG_H_OK: all is well, go ahead and compile
    - CONFIG_H_NOTOK: doesn't look good
    - CONFIG_H_UNCERTAIN: not sure -- unable to read pyconfig.h

    'details' is a human-readable string explaining the situation.

    Note there are two ways to conclude "OK": either 'sys.version' contains
    the string "GCC" (implying that this Python was built with GCC), or the
    installed "pyconfig.h" contains the string "__GNUC__".
    r)�	sysconfig�GCCzsys.version mentions 'GCC'�__GNUC__z'%s' mentions '__GNUC__'z '%s' does not mention '__GNUC__'zcouldn't read '%s': %sN)
�	distutilsr�rrr6�get_config_h_filename�open�read�close�CONFIG_H_NOTOK�OSError�CONFIG_H_UNCERTAIN�strerror)r��fn�config_h�excr r r!r4Fs$
����r4s(\d+\.\d+(\.\d+)*)cCst|��d}t|�durdSt|dtd�j}z
|��}W|��n|��wt�|�}|dur1dSt	|�
d����S)z�Find the version of an executable by running `cmd` in the shell.

    If the command is not found, or the output does not match
    `RE_VERSION`, returns None.
    rNT)�shell�stdout�)�splitrrrr�r�r��
RE_VERSION�searchr�group�decode)�cmd�
executable�out�
out_string�resultr r r!�_find_exe_versionss

r�cCsgd�}tdd�|D��S)zg Try to find out the versions of gcc, ld and dllwrap.

    If not possible it returns None for it.
    )zgcc -dumpversionzld -vzdllwrap --versioncSsg|]}t|��qSr )r�)�.0r�r r r!�
<listcomp>�sz get_versions.<locals>.<listcomp>)�tuple)�commandsr r r!r8�sr8cCstddg�}|���d�S)z>Try to determine if the gcc that would be used is from cygwin.r&z-dumpmachinescygwin)r�strip�endswith)r�r r r!r��sr�)"r�rXrrU�
subprocessrrr�re�distutils.unixccompilerr�distutils.file_utilr�distutils.errorsrrr	r
�distutils.versionr�distutils.spawnrr"r#r�r6r�r�r4�compiler�r�r8r�r r r r!�<module>s./;1
+
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY