R" fv%UddlZddlZddlZddlZddlZddlZddlZddlmZm Z m Z m Z m Z m Z mZddlmZmZmZmZdZdZdZej.ded e e eddffd Zd ed efd Zd ed efd Zd ede ed efdZej<dZee e fe!d<Gdde Z"d e efdZ#d e efdZ$d e efdZ%ded ee e ffdZ&ejNd ee e ffdZ(dede"d efdZ)dddd Z*de ed e efd!Z+y)"N)Dict GeneratorIterator NamedTupleOptionalSequenceTuple)EIClassEIDataELFFileEMachinel~iipathreturnc#K t|d5}t|dddy#1swYyxYw#tttf$rdYywxYww)Nrb)openr OSError TypeError ValueError)rfs 6/usr/lib/python3/dist-packages/packaging/_manylinux.py _parse_elfrsO $  !*     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 LsbmachinerArmflagsEF_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 r r!rI386r's r_is_linux_i686r++sn J  1 TM + gkk) + fjj( + X]]*     s A"A88Barchscpd|vr t|Sd|vr t|Shdtfd|DS)Narmv7li686>ppc64s390xx86_64aarch64ppc64leriscv64 loongarch64c3&K|]}|v ywr).0arch allowed_archss r z'_have_compatible_abi..Cs7t}$7s)r(r+any)rr,r;s @r_have_compatible_abir>5sB5z** j))M 77 77cy)N2r8r8r?rrBKsr?_LAST_GLIBC_MINORc"eZdZUeed<eed<y) _GLibCVersionmajorminorN)__name__ __module__ __qualname__int__annotations__r8r?rrErENs J Jr?rEc tjd}|J|j\}}|S#ttt t f$rYywxYw)zJ Primary implementation of glibc_version_string using os.confstr. CS_GNU_LIBC_VERSIONN)osconfstrrsplitAssertionErrorAttributeErrorrr)version_string_versions r_glibc_version_string_confstrrWSsX(* 3H(I)))#**, 7 N NGZ @s,0A  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_versionrSc_char_prestype isinstancestrdecode)rZprocess_namespacer] version_strs r_glibc_version_string_ctypesrefs""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.)rWrer8r?r_glibc_version_stringrgs ( * L.J.LLr?rdctjd|}|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: rjrFrG)rematchwarningswarnRuntimeWarningrKgroup)rdms r_parse_glibc_versionrrsb 8+FA   M #   qwww #aggg&6"7 77r?c2t}|yt|S)Nri)rgrr)rds r_get_glibc_versionrts')K  ,,r?r:rVct}||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) rt _manylinuxr[hasattrrvboolrEryr{r})r:rV sys_glibcr~results r_is_compatiblers"$I7z1200WQZN  < -1%% :6 7 889 9-2&& :9 : ;;< <-2&& :9 : ;;< < ! sC C&%C& manylinux2014 manylinux2010 manylinux1))rwr|)rwrz)rwrxc#Kttj|sytdd}t |ddhzr tdd}tt }|g}t |jdz ddD]&}t|}|jt||(|D]}|D]}|j|jk(r |j}nd}t |j|dD]d}t|j|} d j| } t|| r | d || tvsFt| } t|| s\| d |fyw) aGenerate manylinux tags compatible to the current platform. :param archs: Sequence of compatible architectures. The first one shall be the closest to the actual architecture and be the part of platform tag after the ``linux_`` prefix, e.g. ``x86_64``. The ``linux_`` prefix is assumed as a prerequisite for the current platform to be manylinux-compatible. :returns: An iterator of compatible manylinux tags. Nrwr2r/r rjzmanylinux_{}_{}rU)r>sysrrEsetrtrangerFrCappendrGformatr_LEGACY_MANYLINUX_MAP) r,too_old_glibc2 current_glibcglibc_max_list glibc_major glibc_minorr: glibc_max min_minor glibc_versiontag legacy_tags r platform_tagsrsh  6"1b)N 5zXv&&&q!,!#5#78M#_N]0014a<G ' 4 mKEFG5' 5I."6"66*00  $Y__iD 5 -ioo{ K .'.. >!$ 6 E4&/) $99!6}!EJ%dM:!+ AdV44 5  55sD(E+EE), collections contextlib functoolsrOrkrrmtypingrrrrrrr _elffiler r r rr$r%r&contextmanagerrarrr(r+r> defaultdictrCrKrLrErWrergrr lru_cachertrrrr8r?rrs SSS88"  SYx'8$'DE       s t 8S8#848,%GJ x}&)hsm)XMx}M 8c8eCHo8&-E#s(O--}8   -5#-58C=-5r?