a
    ze=                     @   sp   d Z ddlZddlZzddlZW n ey:   ddlZY n0 dd Zdd Zdd Zd	d
 Z	dd Z
dd ZdS )zShared AIX support functions.    Nc                 C   s@   t jdkrdnd}|dkr|nd}d| d | d | d ||S )	Ni    @   r   '  zaix-{:1x}{:1d}{:02d}-{:04d}-{}      )sysmaxsizeformat)ZvrtlbdZ_sz_bd r   "/usr/lib/python3.9/_aix_support.py_aix_tag   s    r   c                 C   s2   |  dd d \}}}t|d t|t|gS )N.   )splitint)vrmfvrtlr   r   r   	_aix_vrtl   s    r   c                  C   sR   t g d} | d} |  d} | d dkr>t| d nd}t| d |fS )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
    )z/usr/bin/lslppz-Lqczbos.rtezutf-8:r    r   r   )
subprocesscheck_outputdecodestripr   r   str)outr   r   r   r   _aix_bos_rte   s
    	
r!   c                  C   s   t  \} }tt| |S )a  
    AIX filesets are identified by four decimal values: V.R.M.F.
    V (version) and R (release) can be retreived 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
    )r!   r   r   )r   r
   r   r   r   aix_platform.   s    
r"   c                  C   s    t d} | stdt| dS )NZBUILD_GNU_TYPEzBUILD_GNU_TYPE is not defined)r   )	sysconfigget_config_var
ValueErrorr   )Zgnu_typer   r   r   _aix_bgtF   s    
r&   c               	   C   sH   t d} zt| } W n$ ttfy:   td| Y n0 tt | S )zD
    Return the platform_tag of the system Python was built on.
    ZAIX_BUILDDATEz)AIX_BUILDDATE is not defined or invalid: )r#   r$   r   r%   	TypeErrorr   r&   )Z
build_dater   r   r   aix_buildtagN   s    
r(   )__doc__r   r#   r   ImportErrorZ_bootsubprocessr   r   r!   r"   r&   r(   r   r   r   r   <module>   s   
