Re,UddlZddlZddlZddlZddlZddlZddlZddlmZm Z m Z m Z m Z m Z GddZde efdZdefdZdefdZd edefd Zejd Ze eefed <Gd de Zde efdZde efdZde efdZdede eeffdZejde eeffdZded ededefdZ ddddZ!ded ede efdZ"dS)N)IODictIterator NamedTupleOptionalTuplecveZdZGddeZdZdZdZdZdZ dZ dZ dZ d Z d Zd Zd Zd eeddfdZdS)_ELFFileHeaderceZdZdZdS)$_ELFFileHeader._InvalidELFFileHeaderz7 An invalid ELF file header was found. N)__name__ __module__ __qualname____doc__/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-3.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_vendor/packaging/_manylinux.py_InvalidELFFileHeaderr s    rriFLE(>l~iifilereturnNcndtdtffd }|d|_|j|jkrt|d|_|j|j|jhvrt|d|_ |j |j |j hvrt|d|_ |d|_ |d|_d|_|j |j krdnd}|j |j krd nd}|j |j krd nd }|j|jkr|n|}|||_|||_|||_|||_|||_|||_|||_|||_|||_|||_|||_|||_|||_dS) Nfmtrc tj|}tj||}n,#tj$rt wxYw|dS)Nr)readstructcalcsizeunpackerrorr r)rdataresultrs rr#z'_ELFFileHeader.__init__..unpack$so =yy!5!566*0-T*B*B< = = =$::<<< =!9 s IBzHzQ)strint e_ident_magicELF_MAGIC_NUMBERr r e_ident_class ELFCLASS32 ELFCLASS64 e_ident_data ELFDATA2LSB ELFDATA2MSBe_ident_version e_ident_osabie_ident_abiversionr e_ident_pade_type e_machine e_versione_entrye_phoffe_shoffe_flagse_ehsize e_phentsizee_phnum e_shentsizee_shnum e_shstrndx)selfrr#format_hformat_iformat_qformat_ps ` r__init__z_ELFFileHeader.__init__#s`        $VD\\  !6 6 6 6688 8#VC[[  dot%G G G 6688 8"F3KK  T%5t7G$H H H 6688 8%vc{{#VC[["(&++99Q<<,0@@@44d,0@@@44d,0@@@44d#1T_DD88(fX&& ))))vh'' vh'' vh'' vh'' x(( !6(++vh'' !6(++vh''  &**r)r rr ValueErrorrr,r.r/r1r2EM_386EM_S390EM_ARM EM_X86_64EF_ARM_ABIMASKEF_ARM_ABI_VER5EF_ARM_ABI_FLOAT_HARDrbytesrIrrrr r s        "JJKK FG FIN O&&+RY&+4&+&+&+&+&+&+rr rc ttjd5}t|}dddn #1swxYwYn##tt tjf$rYdSwxYw|S)Nrb)opensys executabler OSError TypeErrorr)f elf_headers r_get_elf_headerr\Ls #.$ ' ' +1'**J + + + + + + + + + + + + + + + Y D Ett s-A8 A<A<AA$#A$ct}|dS|j|jk}||j|jkz}||j|jkz}||j|jz|j kz}||j|j z|j kz}|SNF) r\r-r.r0r1r8rMr=rOrPrQr[r&s r_is_linux_armhfr`Us!""Ju  %)> >F j%)???F j"j&777F Z66  #$$F Z==  )**F Mrct}|dS|j|jk}||j|jkz}||j|jkz}|Sr^)r\r-r.r0r1r8rKr_s r_is_linux_i686rbhsW ""Ju  %)> >F j%)???F j"j&777F MrarchcZ|dkrtS|dkrtS|dvS)Narmv7li686>ppc64s390xx86_64aarch64ppc64le)r`rb)rcs r_have_compatible_abirlrs: x    v~~ E EErcdS)N2rrrrrosBr_LAST_GLIBC_MINORc$eZdZUeed<eed<dS) _GLibCVersionmajorminorN)r rrr*__annotations__rrrrrrrs" JJJ JJJJJrrrc tjd}|J|\}}n$#ttt t f$rYdSwxYw|S)zJ Primary implementation of glibc_version_string using os.confstr. CS_GNU_LIBC_VERSIONN)osconfstrsplitAssertionErrorAttributeErrorrXrJ)version_string_versions r_glibc_version_string_confstrrsl$9::)))#))++ 77 NGZ @tt Ns/2AAc8 ddl}n#t$rYdSwxYw |d}n#t$rYdSwxYw |j}n#t $rYdSwxYw|j|_|}t|ts| d}|S)zG Fallback implementation of glibc_version_string using ctypes. rNascii) ctypes ImportErrorCDLLrXgnu_get_libc_versionr|c_char_prestype isinstancer)decode)rprocess_namespacer version_strs r_glibc_version_string_ctypesrs tt "KK-- tt0E tt $*? ++--K k3 ' '2!((11 s* / ==A AAc:tp tS)z9Returns glibc version string, or None if not using glibc.)rrrrr_glibc_version_stringrs ( * * L.J.L.LLrrctjd|}|stjd|ztdSt |dt |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: %srrsrt)rematchwarningswarnRuntimeWarningr*group)rms r_parse_glibc_versionrs| 8+FFA   $ %    v qwww #aggg&6&6"7"7 77rcDt}|dSt|S)Nr)rr)rs r_get_glibc_versionrs&'))Kx  , ,,rnamerc<t}||krdS ddl}n#t$rYdSwxYwt|dr6||d|d|}|t |SdS|t ddkr$t|drt |jS|t dd kr$t|d rt |jS|t dd kr$t|d rt |j SdS) NFrTmanylinux_compatiblerrmanylinux1_compatible manylinux2010_compatiblemanylinux2014_compatible) r _manylinuxrhasattrrboolrrrrr)rrcr sys_glibcrr&s r_is_compatiblersL"$$I7u ttz12200WQZNN  << t-1%%%% :6 7 7 : 899 9-2&&&& :9 : : = ;<< <-2&&&& :9 : : = ;<< < 4s  ++ manylinux2014 manylinux2010 manylinux1))rr)rr)rrlinuxc#Kt|sdStdd}|dvrtdd}tt}|g}t|jdz ddD]2}t |}|t||3|D]}|j|jkr|j}nd}t|j|dD]}t|j|} dj| } t| || r| d| V| tvr6t| } t| || r| d| VdS) Nr>rfrirrzmanylinux_{}_{}r) rlrrrrangersrpappendrtformatrreplace_LEGACY_MANYLINUX_MAP) rrctoo_old_glibc2 current_glibcglibc_max_list glibc_major glibc_minor glibc_max min_minor glibc_versiontag legacy_tags r platform_tagsr s  % %"1b))N !!!&q!,,!#5#7#78M#_N]014a<<GG ' 4 mKEEFFFF#== ?n2 2 2&,III )R@@ = =K))/;GGM*#*M:Cc477 2mmGS11111 5552=A !*dMBB=--<<<<< = ==r)# collections functoolsrxrr!rVrtypingrrrrrrr r\rr`rbr)rl defaultdictrpr*rurrrrrr lru_cacherrrrrrrrs BBBBBBBBBBBBBBBB:+:+:+:+:+:+:+:+z.1&FsFtFFFF%GGGJ x}&)hsm))))XMx}MMMM 8c8eCHo8888&-E#s(O----C-D8   "="=C"=HSM"="="="="="=r