3
©ft`À ã @ s¬ d dl mZ d dl mZ ddlmZ d dlmZ d dlZd dl Zd dl
Z
dd„ Zd d
„ Zdd„ Z
e
dJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dEœƒZdFdG„ ZdHdI„ ZdS )aé )Úabsolute_import)Úunicode_literalsé )Útransaction)Úis_py3bytesNc ) C s¢ t j| d�}|jtjtjB ƒ �xztjjD �]l}tj j
rDt|dƒ}y|jd|ƒ}W n< t
tjfk
r� } ztjjdt|ƒ ƒ‚W Y dd}~X nX t|ƒsœq,yt|ƒ}W n$ tk
rÌ d}tjj|ƒ‚Y nX |d }y�y|tj j|ƒ}W n, tk
�r |tj j|jdƒƒ}Y nX |tj | } |tj | }
| tjk�rd|
�rd|d ||jdƒfk�rd|
}W n tttfk
�r‚ Y nX t|ƒ�r˜t|dƒ}|S W dS )
z-Calculate the release version for the system.)Úrootzutf-8Zprovidesz Error: %sNz:Error: rpmdb failed to list provides. Try: rpm --rebuilddbÚversionÚutf8Úname)r ÚinitReadOnlyTransactionZpushVSFlagsÚrpmZ_RPMVSF_NOSIGNATURESZ_RPMVSF_NODIGESTSÚdnfÚconstZDISTROVERPKGZpycompZPY3ÚbytesZdbMatchÚ TypeErrorÚerrorÚ
exceptionsÚErrorÚstrÚlenÚnextÚ
StopIterationZRPMTAG_PROVIDENAMEÚindexÚ
ValueErrorÚdecodeZRPMTAG_PROVIDEFLAGSZRPMTAG_PROVIDEVERSIONZRPMSENSE_EQUALÚKeyErrorÚ
IndexErrorr )ZinstallrootÚtsZdistroverpkgÚidxÚeÚhdrÚmsgZ
releaseverZoffÚflagZver© r# ú/usr/lib/python3.6/__init__.pyÚdetect_releasever sB
&
r% c C sp t jƒ }t| ƒ�V}|jƒ }y|j|ƒ}W n8 tjk
r` } ztjj dj
|| ƒƒ‚W Y dd}~X nX |S Q R X dS )zReturn RPM header of the file.z
{0}: '{1}'N)r r ÚopenÚfilenoZhdrFromFdnor r r
r r Úformat)Úpathr ÚpackageZfdnor r r# r# r$ Ú_headerI s
&r+ c s ‡ fdd„ˆ D ƒS )Nc s i | ]}ˆ | D ]
}||“qqS r# r# )Ú.0ÚkÚv)Údctr# r$ ú