� c��j���D�dZddlZddlZd d�Zd�Zd�Zd�Zd�Zd�Zd �Z y) zShared AIX support functions.�Nc�.�ddl}ddl}td|j���d�}|j |�5}|r|�d|j �d�}n|�d|j �d�}|j |�s|j�ndcddd�S#1swYyxYw) z0Output from successful command execution or NonerNz/tmp/_aix_support.zw+bz >'z' 2>&1z 2>/dev/null >'�')�os� contextlib�open�getpid�closing�name�system�read)� commandstring�capture_stderrrr�fp�cmds �%/usr/lib64/python3.12/_aix_support.py�_read_cmd_outputrsw�� �� � � � � ��� �B� � � �B� �2� �%2�B�G�G�<�C�,9�2�7�7�C�C� "� � �#��r�w�w�y�D� � � �s �A B � Bc�~�tjdk(rdnd}|dk7r|nd}dj|d|d|d||�S) Ni���� �@r�'zaix-{:1x}{:1d}{:02d}-{:04d}-{}��)�sys�maxsize�format)�vrtl�bd�_sz�_bds r�_aix_tagr sI��� � ��(�"�b�C��a��"�T�C� +� 2� 2�4��7�D��G�T�!�W�c�SV� W�W�c�x�|jd�dd\}}}t|d�t|�t|�gS)N�.������)�split�int)�vrmf�v�r�tls r� _aix_vrtlr,$s9���z�z�#��r��"�H�A�q�"� ��"��J��A���B�� (�(r!c�� ddl}|jgd��}|j d�}|j �j d�}|ddk7rt|d�nd }t|d �|fS#t$rtd�}Y�nwxYw) a( Return a Tuple[str, int] e.g., ['7.1.4.34', 1806] The fileset bos.rte represents the current AIX run-time level. It's VRMF and builddate reflect the current ABI levels of the runtime environment. If no builddate is found give a value that will satisfy pep425 related queries rN)z/usr/bin/lslppz-Lqczbos.rtez/usr/bin/lslpp -Lqc bos.rtezutf-8�:r%�rr) � subprocess� check_output� ImportErrorr�decode�stripr&r'�str)r0�outrs r� _aix_bos_rter7*s���>���%�%�&K�L�� �*�*�W� �C� �)�)�+� � �C� �C��b�'�R�-�#�c�"�g�,�T�C� ��A��K�� ��� �>��<�=��>�s�A1�1B�Bc�F�t�\}}tt|�|�S)a� AIX filesets are identified by four decimal values: V.R.M.F. V (version) and R (release) can be retrieved using ``uname`` Since 2007, starting with AIX 5.3 TL7, the M value has been included with the fileset bos.rte and represents the Technology Level (TL) of AIX. The F (Fix) value also increases, but is not relevant for comparing releases and binary compatibility. For binary compatibility the so-called builddate is needed. Again, the builddate of an AIX release is associated with bos.rte. AIX ABI compatibility is described as guaranteed at: https://www.ibm.com/ support/knowledgecenter/en/ssw_aix_72/install/binary_compatability.html For pep425 purposes the AIX platform tag becomes: "aix-{:1x}{:1d}{:02d}-{:04d}-{}".format(v, r, tl, builddate, bitsize) e.g., "aix-6107-1415-32" for AIX 6.1 TL7 bd 1415, 32-bit and, "aix-6107-1415-64" for AIX 6.1 TL7 bd 1415, 64-bit )r7r r,)r(rs r� aix_platformr9?s ��&�~�H�D�"� �I�d�O�R� (�(r!c�^�tjd�}|s td��t|��S)N�BUILD_GNU_TYPEzBUILD_GNU_TYPE is not defined)r()� sysconfig�get_config_var� ValueErrorr,)�gnu_types r�_aix_bgtr@Ws-���'�'�(8�9�H� ��8�9�9� �(� #�#r!c��tjd�} t|�}t t �|�S#ttf$rtd|����wxYw)zD Return the platform_tag of the system Python was built on. � AIX_BUILDDATEz)AIX_BUILDDATE is not defined or invalid: )r<r=r'r>� TypeErrorr r@)� build_dates r� aix_buildtagrE_sc���)�)�/�:�J�,���_� � �H�J� � +�+�� � � "�,��D�&�>�+�,� ,�,�s � 6�A)F) �__doc__rr<rr r,r7r9r@rE�r!r�rHs2��#� ��9�$X�)� �*)�0$� ,r!