3 g@s|ddlZddlZddlmZddlmZddlZejdddZe edsPeje_ ej Z dd Z d d Z dd d ZddZdS)N)sstr) transactionzrhn-client-toolsT)ZfallbackugettextcKsVtj}|j}x$|jD]}|j|tj||qWg}x|D]}|j|q@W|S)z@ just cause this is such a potentially useful looking method... )rinitReadOnlyTransactiondbMatchkeyspatternrpmZ RPMMIRE_GLOBappend)kwargs_tsZmikeywordZ headerListhr/usr/lib/python3.6/rpmUtils.pyinstalledHeaderByKeywords rcCs~i}g}g}xf|D]\}|d|d|d|dd}x.|jD]"}||dks^||dkrB||=qBWtf|}t|dkr|j|x|D]}|d} | dkrd} |d } | dkrd} |d |d |d | | f} |d dkrd | d| d| df} n d| d| d| d| df} d| } tj| }|j}|jg}x|D]}|j|jqHW|j| |gqWqW||fS)zf given a list of package labels, run rpm -V on them and return a dict keyed off that data r)nameversionreleasearchNepochrrrrz%s-%s-%sz %s-%s-%s.%sz/usr/bin/rpmverify -V %s) rrlenr ospopen readlinesclosestrip)ZpackagesdataZmissing_packagesZretlistpackagekeywordskeyZheadersheaderrrZpkgZ packageLabelZ verifystringfdresZreslistlinerrrverifyPackages*sH           r)c Cs~g}|dkr|tdtj}d}d}x"|jD]}|dkr@P|d}q2W|}d}x|jD]}|dkrpPt|d|dt|dt|d|d d } | ddkrd | d<nd | d| d<|r|d | d <| d rt| d | d <|j| nP|r@|d rt|d | d <|dr4t|d| d<|j| n |j| |dkr^||||d}q`W|jddd|S)z| Return list of packages. Package is hash with keys name, epoch, version, release and optionaly arch and cookie Nz0Getting list of packages installed on the systemrrrrrr installtime)rrrrr*rz%srZcookiecSs|d|d|d|dfS)Nrrrrr)xrrrsz)getInstalledPackageList..)r$)_rrrrr sort) Z msgCallbackZprogressCallbackZgetArchZgetInfoZpkg_listr countZtotalrr"rrrgetInstalledPackageListlsP                 r0c Cs2ytjtjWntk r,tdYnXdS)zSet rpm's verbosity mode z4extra verbosity not supported in this version of rpmN)r Z setVerbosityZ RPMLOG_DEBUGAttributeErrorprintrrrrsetDebugVerbositysr3)NNNN)rr Zrhn.i18nrZup2date_clientrgettextZ translationthasattrrr-rr)r0r3rrrrs    B 9