� ��^i�,���UddlZddlZddlZddlZddlZddlZddlZddlmZm Z m Z m Z m Z m Z Gd�d��Zde efd�Zdefd�Zdefd�Zd edefd �Zejd ���Ze eefed <Gd �de ��Zde efd�Zde efd�Zde efd�Zdede eeffd�Zej��de eeffd���Zded ededefd�Z dddd�Z!ded ede efd�Z"dS)�N)�IO�Dict�Iterator� NamedTuple�Optional�Tuplec�v�eZdZGd�de��ZdZdZdZdZdZ dZ dZ dZ d Z d Zd Zd Zd eeddfd�ZdS)�_ELFFileHeaderc��eZdZdZdS)�$_ELFFileHeader._InvalidELFFileHeaderz7 An invalid ELF file header was found. N)�__name__� __module__� __qualname__�__doc__����/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_vendor/packaging/_manylinux.py�_InvalidELFFileHeaderr s������ � � � rriFLE�����(�>l~ii�file�returnNc�n��dtdtf�fd� }|d��|_|j|jkrt����|d��|_|j|j|jhvrt����|d��|_ |j |j |j hvrt����|d��|_ |d��|_ |d��|_��d��|_|j |j krdnd}|j |j krd nd}|j |j krd nd }|j|jkr|n|}||��|_||��|_||��|_||��|_||��|_||��|_||��|_||��|_||��|_||��|_||��|_||��|_||��|_dS) N�fmtrc���� ��tj|����}tj||��}n,#tj$rt ����wxYw|dS)Nr)�read�struct�calcsize�unpack�errorr r)r�data�resultrs �rr#z'_ELFFileHeader.__init__..unpack$so��� =��y�y����!5�!5�6�6��*0�-��T�*B�*B�����<� =� =� =�$�:�:�<�<�<� =�����!�9� s �I�B�zHzQ)�str�int� e_ident_magic�ELF_MAGIC_NUMBERr r� e_ident_class� ELFCLASS32� ELFCLASS64� e_ident_data� ELFDATA2LSB� ELFDATA2MSB�e_ident_version� e_ident_osabi�e_ident_abiversionr � e_ident_pad�e_type� e_machine� e_version�e_entry�e_phoff�e_shoff�e_flags�e_ehsize� e_phentsize�e_phnum� e_shentsize�e_shnum� e_shstrndx)�selfrr#�format_h�format_i�format_q�format_ps ` r�__init__z_ELFFileHeader.__init__#s`��� �� �� � � � � � �$�V�D�\�\��� � ��!6� 6� 6� �6�6�8�8� 8�#�V�C�[�[��� � �d�o�t��%G� G� G� �6�6�8�8� 8�"�F�3�K�K��� � �T�%5�t�7G�$H� H� H� �6�6�8�8� 8�%�v�c�{�{���#�V�C�[�[���"(�&��+�+����9�9�Q�<�<����,��0@�@�@�4�4�d���,��0@�@�@�4�4�d���,��0@�@�@�4�4�d��#�1�T�_�D�D�8�8�(���f�X�&�&�� ����)�)������)�)����v�h�'�'�� ��v�h�'�'�� ��v�h�'�'�� ��v�h�'�'�� ���x�(�(�� �!�6�(�+�+����v�h�'�'�� �!�6�(�+�+����v�h�'�'�� � �&��*�*����r)r rr� ValueErrorrr,r.r/r1r2�EM_386�EM_S390�EM_ARM� EM_X86_64�EF_ARM_ABIMASK�EF_ARM_ABI_VER5�EF_ARM_ABI_FLOAT_HARDr�bytesrIrrrr r s������� � � � � � � � � � "���J��J��K��K� �F��G� �F��I��N� �O�&��&+�R��Y�&+�4�&+�&+�&+�&+�&+�&+rr rc��� ttjd��5}t|��}ddd��n #1swxYwYn##tt tjf$rYdSwxYw|S)N�rb)�open�sys� executabler �OSError� TypeErrorr)�f� elf_headers r�_get_elf_headerr\Ls���� �#�.�$� '� '� +�1�'��*�*�J� +� +� +� +� +� +� +� +� +� +� +���� +� +� +� +��� �Y�� D� E�����t�t����� �s-�A�8� A�<�A�<�A�A$�#A$c��t��}|�dS|j|jk}||j|jkz}||j|jkz}||j|jz|j kz}||j|j z|j kz}|S�NF) r\r-r.r0r1r8rMr=rOrPrQ�r[r&s r�_is_linux_armhfr`Us���!�"�"�J����u� � %��)>� >�F� �j�%��)?�?�?�F� �j�"�j�&7�7�7�F� ���Z�6�6� � #�$�$�F� ���Z�=�=� � )�*�*�F� �Mrc��t��}|�dS|j|jk}||j|jkz}||j|jkz}|Sr^)r\r-r.r0r1r8rKr_s r�_is_linux_i686rbhsW�� �"�"�J����u� � %��)>� >�F� �j�%��)?�?�?�F� �j�"�j�&7�7�7�F� �Mr�archc�Z�|dkrt��S|dkrt��S|dvS)N�armv7l�i686>�ppc64�s390x�x86_64�aarch64�ppc64le)r`rb)rcs r�_have_compatible_abirlrs:�� �x���� � � � �v�~�~����� �E� E�Erc��dS)N�2rrrr�ros��B�r�_LAST_GLIBC_MINORc�$�eZdZUeed<eed<dS)� _GLibCVersion�major�minorN)r rrr*�__annotations__rrrrrrr�s"������� �J�J�J� �J�J�J�J�Jrrrc�� tjd��}|�J�|���\}}n$#ttt t f$rYdSwxYw|S)zJ Primary implementation of glibc_version_string using os.confstr. �CS_GNU_LIBC_VERSIONN)�os�confstr�split�AssertionError�AttributeErrorrXrJ)�version_string�_�versions r�_glibc_version_string_confstrr��sl�����$9�:�:���)�)�)�#�)�)�+�+� ��7�7�� �N�G�Z� @�����t�t����� �Ns�/2�A�Ac�8� ddl}n#t$rYdSwxYw |�d��}n#t$rYdSwxYw |j}n#t $rYdSwxYw|j|_|��}t|t��s|� d��}|S)zG Fallback implementation of glibc_version_string using ctypes. rN�ascii) �ctypes� ImportError�CDLLrX�gnu_get_libc_versionr|�c_char_p�restype� isinstancer)�decode)r��process_namespacer�� version_strs r�_glibc_version_string_ctypesr��s����� � � � �� �����t�t����� �"�K�K��-�-���� �����t�t������0�E���� �����t�t����� $*�?�� �+�+�-�-�K� �k�3� '� '�2�!�(�(��1�1� � �s*�� ��/� =�=�A � A�Ac�:�t��p t��S)z9Returns glibc version string, or None if not using glibc.)r�r�rrr�_glibc_version_stringr��s�� (� *� *� L�.J�.L�.L�Lrr�c���tjd|��}|stjd|zt��dSt |�d����t |�d����fS)a3Parse glibc version. We use a regexp instead of str.split because we want to discard any random junk that might come after the minor version -- this might happen in patched/forked versions of glibc (e.g. Linaro's version of glibc uses version strings like "2.20-2014.11"). See gh-3588. z$(?P[0-9]+)\.(?P[0-9]+)z=Expected glibc version with 2 components major.minor, got: %s������r�rsrt)�re�match�warnings�warn�RuntimeWarningr*�group)r��ms r�_parse_glibc_versionr��s|�� ��8�+�F�F�A� ��� � �$� %� � � � � �v� �q�w�w�w��� � �#�a�g�g�g�&6�&6�"7�"7� 7�7rc�D�t��}|�dSt|��S)Nr�)r�r�)r�s r�_get_glibc_versionr��s&��'�)�)�K����x� � � ,� ,�,r�namerc�<�t��}||krdS ddl}n#t$rYdSwxYwt|d��r6|�|d|d|��}|�t |��SdS|t dd��kr$t|d��rt |j��S|t dd ��kr$t|d ��rt |j��S|t dd ��kr$t|d ��rt |j ��SdS) NFrT�manylinux_compatiblerr��manylinux1_compatible� �manylinux2010_compatible��manylinux2014_compatible) r�� _manylinuxr��hasattrr��boolrrr�r�r�)r�rcr� sys_glibcr�r&s r�_is_compatibler��sL��"�$�$�I��7����u�������� �����t�t������z�1�2�2���0�0����W�Q�Z��N�N�� � ���<�<� ��t��-��1�%�%�%�%� �:�6� 7� 7� :�� �8�9�9� 9��-��2�&�&�&�&� �:�9� :� :� =�� �;�<�<� <��-��2�&�&�&�&� �:�9� :� :� =�� �;�<�<� <� �4s �� +�+� manylinux2014� manylinux2010� manylinux1))rr�)rr�)rr��linuxc#�K�t|��sdStdd��}|dvrtdd��}tt���}|g}t|jdz dd��D]2}t |}|�t||�����3|D]�}|j|jkr|j}nd}t|j|d��D]�}t|j|��} dj| �} t| || ��r|� d| ��V�| tvr6t| } t| || ��r|� d| ��V�����dS) Nr�>rfri�rr�zmanylinux_{}_{}r�) rlrrr��rangersrp�appendrt�formatr��replace�_LEGACY_MANYLINUX_MAP) r�rc�too_old_glibc2� current_glibc�glibc_max_list� glibc_major� glibc_minor� glibc_max� min_minor� glibc_version�tag� legacy_tags r� platform_tagsr� s����� �� %� %����"�1�b�)�)�N� �!�!�!�&�q�!�,�,��!�#5�#7�#7�8�M�#�_�N��]�0�1�4�a��<�<�G�G� �'� �4� ����m�K��E�E�F�F�F�F�#�=�=� � �?�n�2� 2� 2�&�,�I�I��I� ���)�R�@�@� =� =�K�)�)�/�;�G�G�M�*�#�*�M�:�C��c�4��7�7� 2��m�m�G�S�1�1�1�1�1�� 5�5�5�2�=�A� �!�*�d�M�B�B�=��-�-���<�<�<�<�<�� =� =�=r)#� collections� functoolsrxr�r!rVr��typingrrrrrrr r\r�r`rbr)rl� defaultdictrpr*rurrr�r�r�r�� lru_cacher�r�r�r�rrr�r�s������������ � � � � � � � � � � � � � � � �����B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�B�:+�:+�:+�:+�:+�:+�:+�:+�z��.�1�����������&������F�s�F�t�F�F�F�F�%<�K�$;�J�J�$G�$G��4��S��>�G�G�G������J���� �x��}�����&)�h�s�m�)�)�)�)�XM�x��}�M�M�M�M� 8�c�8�e�C��H�o�8�8�8�8�&�����-�E�#�s�(�O�-�-�-���-����C��-��D�����8� � � ���"=��"=�C�"=�H�S�M�"=�"=�"=�"=�"=�"=r