grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026a jªã@s¶ddlmZddlmZddlmZddlmZddlZddl Zddl Z dd„Z d d „Z d d „Z d d„Zedddddddddddddddddd d!d"d#d$d%d&d'œƒZd(d)„Zd*d+„ZdS),é)Úabsolute_import)Úunicode_literalsé)Ú transaction)Ú is_py3bytesNc Cs‚tj|d�}| tjtjB¡tjj}tjj }tj j rLt |dƒ}t |dƒ}tjj D�]&}tj j rlt |dƒ}z| d|¡}Wn>ttjfyº}z tj dt|ƒ¡‚WYd}~n d}~00t|ƒsÆqTz t|ƒ}Wn"tyôd}tj |¡‚Yn0|d} d} d} �zz|tj |¡} Wn*t�yH|tj | d¡¡} Yn0|tj| } |tj| }| tjk�r”|�r”|d || d¡fv�r”|} t|tj|tj|tjƒD]b\}} }t|tƒ�rÒt |dƒ}||k�rò| tjk�rò|�rò|} ||k�r²| tjk�r²|�r²|} �q²Wntt t!f�y2Yn0t"| ƒ�rHt| dƒ} t"| ƒ�r\t| dƒ} t"| ƒ�rpt| dƒ} | | | fSd S) z¹Calculate the release version for the system, including releasever_major and releasever_minor if they are overriden by the system-release-major or system-release-minor provides.)Úrootúutf-8Zprovidesz Error: %sNz:Error: rpmdb failed to list provides. Try: rpm --rebuilddbÚversionÚutf8Úname)NNN)#rÚinitReadOnlyTransactionZ pushVSFlagsÚrpmZ_RPMVSF_NOSIGNATURESZ_RPMVSF_NODIGESTSÚdnfÚconstZDISTROVER_MAJOR_PKGZDISTROVER_MINOR_PKGZpycompZPY3ÚbytesZ DISTROVERPKGZdbMatchÚ TypeErrorÚerrorÚ exceptionsÚErrorÚstrÚlenÚnextÚ StopIterationZRPMTAG_PROVIDENAMEÚindexÚ ValueErrorÚdecodeZRPMTAG_PROVIDEFLAGSZRPMTAG_PROVIDEVERSIONZRPMSENSE_EQUALÚzipÚ isinstanceÚKeyErrorÚ IndexErrorr)Ú installrootÚtsZdistrover_major_pkgZdistrover_minor_pkgZ distroverpkgÚidxÚeÚhdrÚmsgÚ releaseverZreleasever_majorZreleasever_minorZoffÚflagZverZprovide©r(ú4/usr/lib/python3.9/site-packages/dnf/rpm/__init__.pyÚdetect_releaseverssn    *  ý         r*cCst|ƒ\}}}|S)z-Calculate the release version for the system.)r*)r r&Ú_r(r(r)Údetect_releaseverdsr,c CsŠt ¡}t|ƒ�f}| ¡}z| |¡}Wn:tjyb}z tj  d  ||¡¡‚WYd}~n d}~00|WdƒS1s|0YdS)zReturn RPM header of the file.z {0}: '{1}'N) rr ÚopenÚfilenoZ hdrFromFdnor rrrrÚformat)Úpathr!ÚpackageZfdnor$r#r(r(r)Ú_headerls *r2cs‡fdd„ˆDƒS)Ncs i|]}ˆ|D] }||“qqSr(r()Ú.0ÚkÚv©Zdctr(r)Ú yóz_invert..r(r6r(r6r)Ú_invertxsr9)Úaarch64) ÚalphaZalphaev4Z alphaev45Zalphaev5Z alphaev56Zalphaev6Z alphaev67Z alphaev68Zalphaev7Z alphapca56)Z armv5tejlZarmv5telZarmv5tlZarmv6lZarmv7lZarmv8l)Zarmv6hlZarmv7hlZarmv7hnlZarmv8hl)Úi386ZathlonZgeoder<Zi486Zi586Zi686)Úia64)Úmips)Úmipsel)Úmips64)Úmips64el)Ú loongarch64)Únoarch)Úppc)Úppc64Z ppc64iseriesZppc64p7Z ppc64pseries)Úppc64le)Úriscv32)Úriscv64)Úriscv128)Ús390)Ús390x)Úsh3)Úsh4Zsh4a)ÚsparcZsparc64Zsparc64vZsparcv8Zsparcv9Zsparcv9v)Úx86_64Zamd64Zia32e)r:r;ZarmZarmhfpr<r=r>r?r@rArBrCrDrErFrGrHrIrJrKrLrMrNrOcCst|S)N)Ú _BASEARCH_MAP)Zarchr(r(r)Úbasearch™srQcCs||}t|ƒrt|dƒ}|S)z€ Returns value of rpm_hdr[key] as a string. Rpm has switched from bytes to str and we need to handle both properly. r)rr)Zrpm_hdrÚkeyÚvaluer(r(r)Ú getheaderžs rT)Z __future__rrÚrZ dnf.pycomprZ dnf.constrZdnf.exceptionsr r*r,r2r9rPrQrTr(r(r(r)ÚsL    G æ