_i"UddlZddlZddlZddlZddlZddlZddlZddlmZm Z m Z m Z m Z m Z ddlmZmZmZmZdZdZdZej,ded e e eddffd Zd ed efd Zd ed efd Zd eded efdZej:dZeeefe d<Gdde Z!d e efdZ"d e efdZ#d e efdZ$ded e eeffdZ%ejLd e eeffdZ'dedede!d efdZ(dddd Z)d!eded e efd"Z*y)#N)Dict GeneratorIterator NamedTupleOptionalTuple)EIClassEIDataELFFileEMachinel~iipathreturnc#K t|d5}t|dddy#1swYyxYw#tttf$rdYywxYww)Nrb)openr OSError TypeError ValueError)rfs /builddir/build/BUILDROOT/alt-python312-setuptools-69.0.2-3.el8.x86_64/opt/alt/python312/lib/python3.12/site-packages/setuptools/_vendor/packaging/_manylinux.py _parse_elfrsF $ !*    Y + s>A 3'3A03A3A A AA executablecxt|5}|duxr|jtjk(xrt|jt j k(xrU|jtjk(xr6|jtztk(xr|jtztk( cdddS#1swYyxYwN)rcapacityr C32encodingr Lsbmachiner ArmflagsEF_ARM_ABIMASKEF_ARM_ABI_VER5EF_ARM_ABI_FLOAT_HARDrrs r_is_linux_armhfr's J 1 TM I gkk) I fjj( I X\\) I.(O;  I //3HH    s BB00B9ct|5}|duxr[|jtjk(xr<|jt j k(xr|jtjk( cdddS#1swYyxYwr) rrr rrr rr r I386r&s r_is_linux_i686r*+se J 1 TM + gkk) + fjj( + X]]*    s A"A88BarchcJ|dk(r t|S|dk(r t|S|dvS)Narmv7li686>ppc64s390xx86_64aarch64ppc64le)r'r*)rr+s r_have_compatible_abir45s3 xz** v~j)) E EEcy)N2r8r5rr9BsBr5_LAST_GLIBC_MINORc"eZdZUeed<eed<y) _GLibCVersionmajorminorN)__name__ __module__ __qualname__int__annotations__r8r5rr<r<Es J Jr5r<c ttdd}|J|j\}}|S#ttt t f$rYywxYw)zJ Primary implementation of glibc_version_string using os.confstr. confstrCS_GNU_LIBC_VERSIONN)getattrosrsplitAssertionErrorAttributeErrorrr)version_string_versions r_glibc_version_string_confstrrOJs]4gb)45JK)))#**, 7 N NGZ @s-1A  A c ddl} |jd} |j}|j |_|}t|ts|jd}|S#t$rYywxYw#t$rYywxYw#t $rYywxYw)zG Fallback implementation of glibc_version_string using ctypes. rNascii) ctypes ImportErrorCDLLrgnu_get_libc_versionrKc_char_prestype isinstancestrdecode)rRprocess_namespacerU version_strs r_glibc_version_string_ctypesr]]s""KK-0EE$*?? +-K k3 '!((1 G $  s3A A/ A> A,+A,/ A;:A;> B  B c.txs tS)z9Returns glibc version string, or None if not using glibc.)rOr]r8r5r_glibc_version_stringr_s ( * L.J.LLr5r\ctjd|}|stjd|tyt |j dt |j dfS)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: rbr=r>)rematchwarningswarnRuntimeWarningrBgroup)r\ms r_parse_glibc_versionrjsb 8+FA   M #   qwww #aggg&6"7 77r5c2t}|yt|S)Nra)r_rj)r\s r_get_glibc_versionrls')K  ,,r5namerNct}||kry ddl}t|dr'|j |d|d|}| t |Sy|t ddk(r!t|drt |jS|t dd k(r!t|d rt |jS|t dd k(r!t|d rt |jSy#t$rYywxYw) NFrTmanylinux_compatibler manylinux1_compatible manylinux2010_compatiblemanylinux2014_compatible) rl _manylinuxrShasattrroboolr<rrrtrv)rmr+rN sys_glibcrwresults r_is_compatibler|s"$I7z1200WQZN  < -1%% :6 7 889 9-2&& :9 : ;;< <-2&& :9 : ;;< < ! sC C&%C& manylinux2014 manylinux2010 manylinux1))rpru)rprs)rprqlinuxc#Kttj|sytdd}|dvr tdd}tt }|g}t |j dz ddD]&}t|}|jt||(|D]}|j |j k(r |j}nd}t |j|dD]|}t|j |} dj| } t| || r|jd| | tvsRt| } t| || si|jd| ~yw) Nrp>r.r1r rbzmanylinux_{}_{}r)r4sysrr<rlranger=r:appendr>formatr|replace_LEGACY_MANYLINUX_MAP) rr+too_old_glibc2 current_glibcglibc_max_list glibc_major glibc_minor glibc_max min_minor glibc_versiontag legacy_tags r platform_tagsrsD  5"1b)N !!&q!,!#5#78M#_N]0014a< ' 4 mKEF=$ ??n22 2&,,II )R@K))//;GM*#**M:Cc47mmGS11 552=A !*dMB--<<A $sD#E&E=E)+ collections contextlib functoolsrHrcrretypingrrrrrr_elffiler r r r r#r$r%contextmanagerrYrryr'r*r4 defaultdictr:rBrCr<rOr]r_rj lru_cacherlr|rrr8r5rrs II88"  SYx'8$'DE       s t FSFFF%GJ x}&)hsm)XMx}M 8c8eCHo8&-E#s(O--C-D8   "="=C"=HSM"=r5