o ?Og @spdZddlZddlZzddlZWn eyddlZYnwddZddZddZd d Z d d Z d dZ dS)zShared AIX support functions.NcCs0tjdkrdnd}d|d|d|d||S)Ni @zaix-{:1x}{:1d}{:02d}-{:04d}-{}r)sysmaxsizeformat)ZvrtlbdZ_szr 3/opt/alt/python310/lib64/python3.10/_aix_support.py_aix_tagsr cCs2|ddd\}}}t|dt|t|gS)N.)splitint)vrmfvrZtlr r r _aix_vrtlsrcCs>tgd}|d}|d}t|dt|dfS)z Return a Tuple[str, int] e.g., ['7.1.4.34', 1806] The fileset bos.mp64 is the AIX kernel. It's VRMF and builddate reflect the current ABI levels of the runtime environment. )z/usr/bin/lslppz-Lqczbos.mp64zutf-8:rr) subprocessZ check_outputdecodestriprstrr)outr r r _aix_bosmp64s rcCst\}}tt||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.mp64 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.mp64. 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 )rr r)rr r r r aix_platform,s rcCs td}|s tdt|dS)NZBUILD_GNU_TYPEzBUILD_GNU_TYPE is not defined)r) sysconfigget_config_var ValueErrorr)Zgnu_typer r r _aix_bgtDs  r!c CsDtd}zt|}Wnttfytd|wtt|S)zD Return the platform_tag of the system Python was built on. Z AIX_BUILDDATEz)AIX_BUILDDATE is not defined or invalid: )rrrr TypeErrorr r!)Z build_dater r r aix_buildtagLs   r#) __doc__rrr ImportErrorZ_bootsubprocessr rrrr!r#r r r r s