퀏Rc@sddlTddlTddlTddlmZddlZddlmZmZddl m Z m Z ddl m Z ddlTddlmZddlTddlmZmZdd lmZmZdd lmZdd lmZddlZddlZddlZddlZddl Z ddl!Z"ddl#Z#ddl$Z$ddl%Z%ddl&Z&ddl'Z'ddl(Z(ddl)Z)ddl*Tddl+Te,Z-e.Z/ie0d 6e1d 6e2d6e3d6e4d6e5d6Z6ide76de86de96de:6de;6de<6Z=dZ>ie?e@6eAeB6eCeD6eCeE6eFeG6eCeH6eIeJ6ZKieLe@6eMeB6e;eD6e;eE6eNeG6e;eH6e<eJ6eOe>6ZPdejQfdYZRdZSddZTdZUdZVd ZWd!ZXd"ZYd#d$ZZd%Z[d&Z\d'Z]d(e^efd)YZ_d*efd+YZ`d,e fd-YZad.fd/YZbd0ecfd1YZdd2ejefd3YZfd4Zgehd5kregndS(6i(t*(tPackagekitPackageN(t BaseMetert format_number(t URLGrabbert URLGrabError(tRPMBaseCallback(tUpdateMetadata(tprco_tuple_to_stringtunique(tYumLocalPackaget parsePackages(tMetaSack(t YumBaseErrortrepomdtprimaryt fileliststothertcompst updateinfoii i(i-i7i_t repackagingtGPGKeyNotImportedcBseZRS((t__name__t __module__(((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRrscCs1tr tjtjtntjddS(Ni(tyumbaset closeRpmDBtdoUnlockt YUM_PID_FILEtsystexit(tsignumtframe((s//usr/share/PackageKit/helpers/yum/yumBackend.pytsigquitus sutf-8cCs[t|trt|}n9t|trWt|tsWt||dd}qWn|S(Nterrorstreplace(t isinstanceR tunicodet basestring(ttxttencoding((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt _to_unicode{s cCsod}|jdkr4d|j|j|jf}n7|jrVd|j|jf}n|jrk|j}n|S(sI return the a ver as epoch:version-release or version-release, if epoch=0tt0s%s:%s-%ss%s-%s(tepochtversiontrelease(tpotver((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_package_vers   cCsM|jd}t|dkr)d|Sd|d|d|d|dfS( sE Convert 'hal;0.5.8;i386;fedora' to 'hal-0.5.8-fedora(i386)' t;isincorrect package_id: %ss %s-%s(%s)%siiii(tsplittlen(t package_idtparts((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_format_package_idscCs*|r"|jd}dj|SdSdS(s@ Convert a multi line string to a list separated by ';' s R1R)N(R2tjoin(ttexttlines((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt _format_strs cCs|rdj|SdSdS(s@ Convert a multi line string to a list separated by ';' R1R)N(R7(tlst((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt _format_lists cCs|jd}|dkr6|| }||d}nd}yt|jd\}}Wntk r|}d}d}nX|||fS(s5 get the e, v, r from the package id version t:iiR*t-(tfindttupleR2t ValueError(tidvertcposR+R,R-te((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_getEVRs   s...cCs&t||kr|S|| |SdS(N(R3(R8tlengthtetc((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt _truncatescCsP|jdrtS|jdr&tS|jdr9tS|jdrLtStS(Ns -debuginfos-debugs -developments-source(tendswithtTruetFalse(trepo((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_is_development_reposcCst|tr!|jd}nydj|}WnFtjk rX}t|}n%tk r|}tt j }nXt |d}|j dd}|j dd}|j dd}|S(Ns R1is%;Please report this error in bugzillaR)sMissing Dependency: s (installed)( R#R%R2R7t exceptionst TypeErrortstrt ExceptionR:t tracebackt format_excRHR"(tmsgsR8RD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt _format_msgsscCsE|s dStd|jjd}dj|jd}|S(Ntinvalids/proc/%d/cmdlinett (topentreadR2R7tstrip(tpidtcmdlinestcmdline((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_cmdline_for_pids tPackageKitYumBackendcBseZedZdZdZdZdZdZdZ dZ dZ d Z d Z d Zd Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"e#d Z$d!Z%d"Z&d#Z'd$Z(d%Z)d&Z*d'Z+d(Z,d)Z-d*Z.d+Z/d,Z0d-Z1d.Z2d/Z3dGe#d0Z5d1Z6d2Z7d3Z8d4Z9d5Z:d6Z;d7Z<d8Z=d9Z>d:Z?d;Z@d<ZAd=ZBd>ZCd?ZDdGZEeFd@eDZGdAZHdBZIdCZJdDZKe#dEZLdFZMRS(HcCstjtjttj||yt||_Wn)tk ra}|j|j |j nXt j }y|j dWn,t k r}ttdt|nXy"|jddjd|_WnJt jk r}g|_n,t k r}ttdt|nXy"|jddjd|_WnJt jk r`}g|_n,t k r}ttdt|nX|r|jni|_t|j|_|jjs|jt|jjs|jtdqnd}tj||jrqd t_ y5tjtj!tj"}|j#tj$tj d Wqqtjk rm}qqXnt%t&t't(g|_)|j}y|j*Wn)tk r}|j|j |j nXdS( Ns/etc/PackageKit/Yum.confsFailed to load Yum.conf: %stBackendtSystemPackagesR1tInfrastructurePackagess$comps categories could not be loadedg.@i tlp(+tsignaltSIGQUITR tPackageKitBaseBackendt__init__tPackageKitYumBaseRtPkErrorterrortcodetdetailst ConfigParserRZRQtERROR_REPO_CONFIGURATION_ERRORR(tgetR2tsystem_packagest NoOptionErrortinfra_packagestdoLocktpackage_summary_cachetyumCompsRtconnectt refresh_cacheRJtERROR_GROUP_LIST_INVALIDtsockettsetdefaulttimeoutt backgroundtTCP_CONGESTIONtAF_INETt SOCK_STREAMt setsockoptt IPPROTO_TCPt TS_UPDATEt TS_INSTALLtTS_TRUEINSTALLt TS_OBSOLETINGttransaction_sig_check_mapt _setup_yum(tselftargstlockRDtconfigttimeouttsockR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRhs\ " "        cCs/t|}tj|||||||dS(s Send 'details' signal @param id: The package ID name, e.g. openoffice-clipart;2.6.22;ppc64;fedora @param license: The license of the package @param group: The enumerated group @param desc: The multi line package description @param url: The upstream project homepage @param bytes: The size of the package, in bytes convert the description to UTF before sending N(R(RgRm(RR4tpackage_licensetgrouptdescturltbytes((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRm&s cCst|}|j|\}}}}t|dkrI||j||D]6}x-|D]%}||kr#|j||q#q#WqWdS(N(Rtget_meta_packagest_show_meta_package(Rtfilterstvaluestgrpstgrpidtvalue((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_do_meta_package_searchs    cCs ||_dS(sh Implement the set-locale functionality Needed to be implemented in a sub class N(tlang(RRl((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt set_localesc Csut|}g}t|kr1|j||nt|krqg}g}yb|jj||}xF|D]>\} } | jjjdr|j | qh|j | qhWWnt j j k r} t tdt| qqtjk r } t tdt| qqtk r:} t tttjqqX|j||j||j}|j|ndS(s Search for yum packages @param searchlist: The yum package fields to search in @param filters: package types to search (all, installed, available) @param values: key to seach for t installeds"failed to use search generator: %ssDisk error: %sN(t YumFiltertFILTER_NOT_COLLECTIONSRtFILTER_COLLECTIONSRtsearchGeneratorRLtidt startswithtappendRRt RepoErrorRjtERROR_NO_CACHER(RNRRRQRR:RRRSt add_installedt add_availabletget_package_listt_show_package_list( Rt searchlistRRt pkgfiltert package_listRt availabletrestpkgtinstRD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt _do_searchs.      cCs+x$|D]\}}|j||qWdS(N(t _show_package(RR;RR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRscCsQy|jdtWn0tk rF}|j|j|jdtdSXd|jj_ |j t|j ddg}|j ty|jjddddWn^tjk r}|jtdt|n/tk r}|jtttjnXy|j|||Wn/tk rL}|j|j|jdtnXdS( s9 Implement the search-name functionality t lazy_cacheRNiRt errorlevelt debuglevelsDisk error: %s(t _check_initRJRjRkRlRmRKRtconftcacheRt percentageRRt STATUS_QUERYt doConfigSetupRNRRR(RQRR:RRRSR(RRRRDR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt search_names(     cCsZy|jdtWn0tk rF}|j|j|jdtdSXy|jjddddWn^t j k r}|jt dt |n/t k r}|jtttjnXd|jj_|jt|jddd d d g}|jty|j|||Wn/tk rU}|j|j|jdtnXdS( s< Implement the search-details functionality RRNRiRsDisk error: %sRRt descriptionR(RRJRjRkRlRmRKRRRNRRR(RQRR:RRRSRRRRRRRR(RRRRDR((s//usr/share/PackageKit/helpers/yum/yumBackend.pytsearch_detailss(    cCsg}x|D]}y|jjjd|}Wn\tjk r`}ttdt|q tk r}tt t t j q X|j |q W|S(NRsDisk error: %s(Rtrpmdbt searchNevraRNRRjRR(RQRR:RRRStextend(Rt name_listtfoundRtpkgsRD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_installed_from_namess cCsd}y|jjjd|}Wntjjk rV}ttdt |n\t j k r}tt dt |n.t k r}ttttjnX|S(Ntnamessfailed to search names: %ssDisk error: %s(RRtpkgSackt searchNamesRRRRjRR(RNRRRQRR:RRRS(RRRRD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_available_from_namessc Cs|jdt|}g}g}g}y|jj}Wn^tjk rm}|jtdt |n/t k r}|jt t t jnXx9|D]1}|jjd|kr|j|gqqWy|jjj|} Wn\tjk r"}ttdt |n.t k rO}tt t t jnXt| dkrxttd|n| djsttd|| djfny|jjj|Wn\tjk r}ttdt |n.t k r }tt t t jnXx"| djD]}|j|q/W|j||j||j} |j| |jddS(s0 Handle the special repo groups sDisk error: %st from_repoiscannot find repo %ss$%s cannot be found as %s is disabledidN( RRRRRRNRRkRR(RQRR:RRRSt yumdb_infoRpRtrepost findReposRjR3tERROR_REPO_NOT_FOUNDt isEnabledtERROR_PACKAGE_NOT_FOUNDRt populateSacktsackRRRR( Rtrepo_idRRRRRRDRRR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt%_handle_repo_group_search_using_yumdb sJ    #    c Cs|jd t|}g}g}y|jjj|}Wn\tjk ro}tt dt |n.t k r}tt t tjnXt|dkrttd|ndGH|djsttd||djfny|jjj|Wn\tjk rE}tt dt |n.t k rr}tt t tjnXx|djD]}yC|jjjd|jd|jd|jd |jd |j} Wn\tjk r}tt dt |n.t k r(}tt t tjnX|j|rL|j| dq|j|qW|j ||j!||j"} |j#| |jd d S( s Handle the special repo groups This is much slower than using _handle_repo_group_search_using_yumdb() as we have to resolve each package in the repo to see if it's installed. Of course, on RHEL5, there is no yumdb. sDisk error: %siscannot find repo %ss found reposs$%s cannot be found as %s is disabledRR+R/treltarchidN($RRRRRRRNRRjRR(RQRR:RRRSR3RRRRRRRRRR+R/RRt_is_instRRRRR( RRRRRRRRDRtinstpoR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_handle_repo_group_search=sH  #C    c Cs |jd t|}g}y)|jjdd}|j|jWntjj k rx}t t t |nt jk r}t tdt |n`tk r}t tttjn3Xg}g}x|D]}yC|jjjd|jd|jd|jd|jd|j} Wn\t jk ra}t tdt |n.tk r}t tttjnXt| d kr|j| d q|j|qW|j||j||j } |j!| |jd d S( s1 Handle the special newest group t pkgnarrowtrecentsDisk error: %sRR+R/RRiidN("RRRRtdoPackageListsRRRRRRjtERROR_REPO_NOT_AVAILABLER(RNRRRQRR:RRRSRRRR+R/RRR3RRRRR( RRRRtyglRDRRRRR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_handle_newestts:   C    cCs|jd|jj}t|dkr@ttdnd}d}d|t|}xV|D]N}|j||||7}t|t|krg|j||}qgqgW|jddS(s5 Handle the special collection group is:No groups could be found. A cache refresh should fix this.iigY@idN( RRRRR3RjRyRtint(RRt collectionstpcttold_pcttsteptcol((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_handle_collectionss     c Cset|k}t|k}d|}y|jjj|}Wntjjk ro}tt dt |ntjj k r}tt d|t |fnt jk r}ttdt |ntk r}ttttjn`X|ra|j|j}|jrB|r^|j|t|q^qa|ra|j|t|qandS(Ns %s;;;metas#failed to get groups from comps: %ssfailed to find group '%s': %ssDisk error: %s(tFILTER_INSTALLEDtFILTER_NOT_INSTALLEDRRt return_groupRRRRjRR(t GroupsErrortERROR_GROUP_NOT_FOUNDRNRRRQRR:RRRSt nameByLangRRRtINFO_COLLECTION_INSTALLEDtINFO_COLLECTION_AVAILABLE( RRRt show_availt show_instR4tgrpRDR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRs(   " c Cs]y|jdtWn0tk rF}|j|j|jdtdSX|jty|jj ddddWn^t j k r}|jt dt |n/tk r}|jtttjnXd|jj_|jtg}t|}t|krSy|j|Wn/tk rN}|j|j|jdtnXdSt|kry|j|Wn/tk r}|j|j|jdtnXdSd|dkry$|j|djdd |Wn/tk r }|j|j|jdtnXdSx|D] }|dd krL|d }|jj|}n|jj |}|sjqnt!|kry|j"|j#|Wqtk r}|j|j|jdtdSXnt$|kry|j%|j&|Wq"tk r}|j|j|jdtdSXqqW|j }|j'd |j(||j'd dS(s: Implement the search-group functionality RRNRiRsDisk error: %ssrepo:R)t@iiZid()RRJRjRkRlRmRKRRRRNRRR(RQRR:RRRSRRRRRtGROUP_COLLECTIONSRt GROUP_NEWESTRRR"Rtget_meta_package_listRRRRRRRRR( RRRRDRRRRt all_packages((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt search_groupsr        $         cCs|jt|jty|jjddddWn^tjk ri}|jt dt |n/t k r}|jt t tjnXd|jj_g}t|}y|jj}Wn^tjk r}|jt dt |n/t k r)}|jt t tjnX|j|t|kry|jj}Wntjjk r}|jtdt |dtdStjk r}|jt dt |qt k r}|jt t tjqX|j|n|j}|j|dS(s Search for yum packages @param searchlist: The yum package fields to search in @param filters: package types to search (all, installed, available) RiRsDisk error: %ssfailed to get package sack: %sRN(RRRRJRRRNRRkRR(RQRR:RRRSRRRRRRRRRRRRKRRR(RRRDRRR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt get_packagess>          cCs-y|jdtWn0tk rF}|j|j|jdtdSXd|jj_ |j t|j d|j tt|}t|kr0x|D]}y|jjj|}Wn^tjk r}|jtdt|n/tk r}|jtttjnX|j|qWnt|krx|D]}y|jjj|}Wntj j!k r}|jt"dt|dtdStjk r}|jtdt|qCtk r}|jtttjqCX|j#|qCWn|j$}|j%|dS(s9 Implement the search-file functionality RRNisDisk error: %ssfailed to search sack: %s(&RRJRjRkRlRmRKRRRRRRRRRRRt searchFilesRNRRR(RQRR:RRRSRRRRRRRRRR(RRRRDRRRR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt search_fileGsB            cCsy|jds|jdr%|gS|tkr<d|gS|tkrSd|gS|tkrjd|gS|tkrd|gS|tkr|jdr|gSd|gS|tkrbg}|j|jt|d |j|jt|d |j|jt|d |j|jt|d |j|jt|d |j||St t d |dS( Nsgstreamer0.10(s gstreamer1(sgstreamer0.10(%s)sfont(%s)smimehandler(%s)spostscriptdriver(%s)tplasmas plasma4(%s)is+this backend does not support '%s' provides( RtPROVIDES_CODECt PROVIDES_FONTtPROVIDES_MIMETYPEtPROVIDES_POSTSCRIPT_DRIVERtPROVIDES_PLASMA_SERVICEt PROVIDES_ANYRt_get_provides_queryRjtERROR_NOT_SUPPORTED(Rt provides_typeRtprovides((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR"ws0            c Cs[y|jdtWn0tk rF}|j|j|jdtdSXd|jj_ |j t|j d|j tg}t|}yEx>|D]6}|j||}x|D]} |j| qWqWWn/tk r}|j|j|jdtn9Xx5|D]-} y|jjj| } Wn/tk r]}|jtttjq X|j| t|kr y|jjj| } Wntjjk r}|jtdt |dtdSt!j"k r}|jt#dt |q:tk r)}|jtttjq:X|j$| q q W|j%} |j&| dS(s; Implement the what-provides functionality RRNis#failed to get provides for sack: %ssDisk error: %s('RRJRjRkRlRmRKRRRRRRRRRR"RRtsearchProvidesRQRR:RRRSRRRRRRRR(RNRRRRR( RRR$RRDtvalues_providesRRR%tprovideRR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt what_providessJ              c Csy|jdtWn0tk rF}|j|j|jdtdSXd|jj_ |j d|j t |jtg}y|jjj}Wntjjk r}|jtdt|dtnNtjjk r }|jtdt|dtntjk r8}|jtdt|ntk rf}|jtttjnXt |dkr|jtddtdSx|D]}|j!}t|j"}t|j#}d |}t$j%|t$j&r|}nd }|j'd |||||j(|qW|j'd d d ddy|jj)j)j*} Wn`tjk r}|jtdt|dStk r}|jtttjdSXxG| D]?} | j+r|j'd d | j,| j"d| j"dqqWdS(s< Implement the get-categories functionality RRNisfailed to get comps list: %ssFailed to get groups list: %ssDisk error: %ssno comps categoriess/usr/share/pixmaps/comps/%s.pngs image-missingR)srepo:sSoftware Sourcess'Packages from specific software sourcess base-systemsPackages from (-RRJRjRkRlRmRKRRRRRRRRRt categoriesRRRRR(R RyRNRRRQRR:RRRSR3t categoryidRRRtaccesstR_OKRt _get_groupsRRRR( RRDtcatstcatRRRtfnRRRL((s//usr/share/PackageKit/helpers/yum/yumBackend.pytget_categoriessZ   ##       c Cs|jt|jt|r,|g}n%g|jjjD]}|j^q<}x~|D]v}g}x|jj|D]}y|jjj |}Wn^t j k r}|j t dt|n/tk r}|j tttjnX|rw|j|qwqwWxt|D]}|j}d|}|j|j} |j|j} d} d|} tj| tjr|} n(d|} tj| tjr|} n|j||| | | qWqXWdS(s= Implement the get-collections functionality sDisk error: %ss@%ss image-missings/usr/share/pixmaps/comps/%s.pngN(RRRRJRRR*R+t get_groupsR RNRRkRR(RQRR:RRRSRtsortedtgroupidR RtdescriptionByLangRR,R-R( RRR/R0Rtgrp_idRRDt cat_id_nameRRRR1((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR.s:   %        cCs4y|jWn0tk r@}|j|j|jdtdSXd|jj_|j t |j t d}dt |}x|D]}|j|y|j|\}}Wn0tk r}|j|j|jdt dSX|s|jtd|qn|j\} } }} } y%|jjj| || | | } Wntjjk r}|jtdt|dtdStjk r}|jtdt|n/tk r}|jttt j!nXt | dkr |jtd|qn| d}|j"|t#y|jj$j%|j&}Wn^tjk rq}|jtdt|n/tk r}|jttt j!nX|j'd }|rbt(j)j*|}t(j)j+|s|jt,d dtdSt(j)j-||}t(j)j+|rbt(j)j.|t/|j'd krb|jt,d |dtdSnd|_|r}||_0ny2|j1|}|j2|}|j3||Wnctjj4k r}|jt5d t|dtdStk r}|jt,ddtdSX||7}qW|jddS(s? Implement the download-packages functionality RNiidsCould not find the package %ss!failed to search package sack: %ssDisk error: %ss%Could not find a match for package %st relativepathsNo destination directory existst packagesizesPackage already exists as %ssFailed to download: %ssCannot write to file(6RRjRkRlRmRKRRRRRJRtSTATUS_DOWNLOADR3Rt _findPackageRtMESSAGE_COULD_NOT_FIND_PACKAGEtpkgtupRRRRRRR(RNRRRQRR:RRRSRtINFO_DOWNLOADINGRtgetRepotrepoidt returnSimpleRtpathtbasenametexiststERROR_PACKAGE_DOWNLOAD_FAILEDR7tgetsizeRt localpatht getPackaget _pkg_to_idtfilestNoMoreMirrorsRepoErrortERROR_NO_MORE_MIRRORS_TO_TRY(Rt directoryt package_idsRDRtbumpR4RRtnRtvtrtpackst pkg_downloadRLtremotetlocalRCtpackage_id_tmp((s//usr/share/PackageKit/helpers/yum/yumBackend.pytdownload_packages,s    %    9   c Csd}t|jddkr|j|\}}}}t}|dkr|ddkrk|d}ny|jjj|}Wn^tj k r}|j t dt |n/t k r}|j tttjnXt}n|ddkry|jjj|d}Wn^tj k rM}|j t dt |n/t k r{}|j tttjnXt}n|r| r|j td|t|fdSn|S(NR1itmetaiRsDisk error: %ss)group %s does not exist (searched for %s)(RR3R2RRKRRR RNRRkRR(RQRR:RRRSRJR R6( RR4RRRBRRLtisGroupRD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_is_meta_packages4        c Cs|j|rdtfSt|jddkrPttdt|n|j|\}}}}t |\}}}|j drLy4|j j j d|d|d|d|d |} Wn\tjk r}ttd t|n.tk r!}ttttjnXt| d krB| d tfSdtfSy|j jj|} Wn\tjk r}ttd t|n.tk r}ttttjnXt| d krttd |n| d js%ttd t|| d jfny|j jj|Wn\tjk rm}ttd t|n.tk r}ttttjnXy5| d jj d|d|d|d|d |} Wnt j!j"k r}tt#t|n\tjk r.}ttd t|n.tk r[}ttttjnXt| d krxdtfSt| dkr|j$t%dt|n| d tfS(sQ find a package based on a package id (name;version;arch;repoid) R1is package_id '%s' cannot be parsedRRR+R/RRsDisk error: %siscannot find repo %ss$%s cannot be found as %s is disableds"more than one package match for %sN(&R\RRKR3R2RjtERROR_PACKAGE_ID_INVALIDR6RRERRRRRNRRR(RQRR:RRRSRJRRRRRRRRRRRRRR=( RR4RQRBRRLRDRRRSRR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR<sZ 4 )5 cCs#y|jdtWn0tk rF}|j|j|jdtdSXd|jj_ |j t|j d|j td}dt|}g}g}x |D]} |j ||j| } | r| js|jtd| jqy|jj| j} Wn^tjk r<}|jtdt|n/tk rj}|jtttjnXx1|jjD]} |j| j qxWn y|j!| \} }WnXtk r}|jt"kr|j#t$|jqn|j|j|jdtdSX|r| r|j| y|jj%d| } Wqtjk rm}|jtdt|qtk r}|jtttjqXn||7}qWt|jjdkr|ry|jj&\}}Wnt'j(j)k r}|jt*t|n^tjk rD}|jtdt|n/tk rr}|jtttjnXx9|jjD](} | j |kr|j| j qqWnx*|D]"} | |kr|j%| qqWx3|D]+} |j+| } |j,| t-| j.qW|j ddS( s> Print a list of requires for a given package RRNiidsThe Group %s is not installedsDisk error: %sR.(/RRJRjRkRlRmRKRRRRRRRt STATUS_INFOR3R\RtERROR_PACKAGE_NOT_INSTALLEDR5t groupRemoveRNRRR(RQRR:RRRSttsInfoRR.R<RRR=tremovetbuildTransactionRRRRRJRtINFO_INSTALLEDR(RRROt recursiveRDRRPt deps_listt resolve_listR4RttxmbrsttxmbrRRtrcRT((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt get_requiress~         #    cCsy|jjjd|}Wn^tjk rN}|jtdt|n/tk r|}|jt t t j nX|S(NR.sDisk error: %s( RRRRNRRkRR(RQRR:RRRS(RRtretRD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR9s cCsP|j|}|rtS|jdkrLd|_|j|}d|_n|S(Nti386ti686(RRJR(RRRl((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt _is_inst_archCs  c Csy|jjj}Wn^tjk rE}|jtdt|n/tk rs}|jt t t j nX|j |rtSy(|jjjd|jd|j}Wn^tjk r}|jtdt|n/tk r}|jt t t j nXg}xK|D]C}tjj|jtjj|jkr|j|qqqWt|dkrx |D]}|j|jkr|j|kr|j|jkrtSqytSq}|j|jkrtS|j|jkr}|ryy|jj|}Wn^tjk r:}|jtdt|n/tk rh}|jt t t j nX|rvtSqyq}q}WntStS(s:check if the package is reasonably installable, true/falsesDisk error: %sRRi(RRt exactarchlistRNRRkRR(RQRR:RRRSRoRKRRRRtrpmUtilstisMultiLibArchRR3tEVRRJtallowedMultipleInstalls( RRtematchRpRDtinstalledByKeyt comparableRRl((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt _installablePsP (  *  c CsAd}x|D]}|j\}}}}}y.|jjjd|d|d|d|} Wn^tjk r}|jtdt |n/t k r}|jt t t jnXx8| D]0} |r| j|jkr| }qq| }qWq W|s=x;|D]0} |r0| j|jkr6| }q6q| }qWn|S(s3 Gets best dep package from a list RR+R/RsDisk error: %sN(RR>RRRRNRRkRR(RQRR:RRRSRs( RtpkglisttbesttpkgiRQRRDRRRSRR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_best_pkg_from_lists* .      c Csg}y|jj|}Wn^tjk rN}|jtdt|n/tk r|}|jtt t j nXg}g}xt|j D]f}x]||j D]K} ||| } | s|jt dt| dtPn|j| qWqWx_|D]W} |j| }||kr|j||r^|j| r^|j|q^qqWt|dkr|j|t} x-| D]"}||kr|j|qqWn|S(s Gets the best deps for a package @param pkgs: a list of package objects @param recursive: if we recurse @return: a list for yum package object providing the dependencies sDisk error: %ss*the (%s) requirement could not be resolvedRi(RtfindDepsRNRRkRR(RQRR:RRRStkeystERROR_DEP_RESOLUTION_FAILEDRRKRR|RR3t_get_best_dependsRJ( RRReRftresultsRDt require_listtrecursive_listRtreqtreqlisttpkgsdeps((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRs8       cCs'|jsy|jj|j}Wqtjk rT}|jtdt|qt k r}|jt t t j qXnzy|jj|j}Wn^tjk r}|jtdt|n/t k r}|jt t t j nXg}x|D]}|j|jq W|jsy|jj|jWq#tjk ry}|jtdt|q#t k r}|jt t t j q#Xnxy|jj|jWn^tjk r}|jtdt|n/t k r"}|jt t t j nX|S(sb Get the packages there will be installed when a comps group is installed sDisk error: %s(RRt selectGroupR5RNRRkRR(RQRR:RRRSR`RR.t deselectGroupt groupUnremove(RRRhRDRtt((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_group_packagess< #   # cCsd}dt|}g}g}x|D]}|j||j|} | r| jrt|jtd| jqy|jj| j} Wn^t j k r} |jt dt | n/t k r} |jtttjnXx$|jjD]} |j| jqWy|jj| jWqt j k r^} |jt dt | qt k r} |jtttjqXny|j|\} }Wn0tk r} |j| j| jdtdSX| r| r|j| y|jjd| } Wqtjjk r@} |jtt | qt j k ro} |jt dt | qt k r} |jtttjqXn||7}q)Wt|jjdkr|ry|jj \}}Wntjjk r} |jtt | n^t j k rF} |jt dt | n/t k rt} |jtttjnX|dkr|jt!t"|qx9|jjD](} | j|kr|j| jqqWnt#|}xv|D]n}y|j|\} }Wn0tk r:} |j| j| jdtdSX| |kr|j$| qqWx-|D]%} |j%| rb|j$| qbqbW|S( s Gets the deps that are not installed, optimisation of get_depends using a yum transaction Returns a list of pkgs. iids!The Group %s is already installedsDisk error: %sRNR.i(&R3RR\RRktERROR_PACKAGE_ALREADY_INSTALLEDR5RRRNRRR(RQRR:RRRSRaRR.RR<RjRlRmRJtinstallRRRRRcRRUR RbR(RRROReRRPRfRgR4RRhRDRiRRRjRT((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_depends_not_installeds    #  #      cCsy|jdtWn0tk rF}|j|j|jdtdSXd|jj_ |j t|j d|j tt|}t|kr|r|j|||}|j||j}|j||j ddSd}dt|} g} g} g} x|D]} |j ||j| }|r]|j|}| j|ny|j| \}}WnXtk r}|jtkr|jt|jqn|j|j|jdtdSX|r| j|n|jtd| P|| 7}qW| r | j| n|j| |} t| } | rT| j| nx@| D]8}|j |r|j!|gq[|j|gq[W|j}|j||j ddS(s= Print a list of depends for a given package RRNiidsPackage %s was not found("RRJRjRkRlRmRKRRRRRRRR^RRRRRRR3R\RRR<RRR=RRR RR(RRROReRDRRRRRPRfRgtgrp_pkgsR4RRR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt get_dependsZsl              cCst}y%|jjj|j}|j}Wntjjk r[}t t t |n\t j k r}t tdt |n.tk r}t tttjnX|S(sK Finds out if the repo that contains the package is signed sDisk error: %s(RKRRR@RAtgpgcheckRRRRjRR(RNRRRQRR:RRRS(RRtsignedRLRD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_is_package_repo_signeds cCst|jdrN| }||j_x&|jjjD]}||_q8Wnx{dD]s}t|jj|rt|jj||nx<|jjjD](}t||rt|||qqWqUWdS(Nt_override_sigchecksRt repo_gpgchecktlocalpkg_gpgcheck(sgpgcheckRR(thasattrRRRt listEnabledRtsetattr(Rt only_trustedtoverride_sigchecksRLtattrname((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_set_only_trusteds  cCs4y|jWn0tk r@}|j|j|jdtdSX|jt|jd|j t |j s|jt ddtdSd}yt |jjjdkr|jddSdt |jjjd}x|jjjD]}|j|j|jt|jr$qnd|_|jjjd|jgd d d d ||7}|j||jjjd|jgd d d d ||7}|j|qW|jdy|jjWnvtjjk r}n^tjk r}|jtdt|n/tk rE}|jt t!t"j#nX|jdWntjj$k r}t%|j&}|j'ddkr|jt(|dtq0|jt)|dtnntjj*k r}|jt+dt|n<tk r"}|jt t!t"j#nX|j,j-dS(s; Implement the refresh_cache functionality RNis!cannot refresh cache when offlineidi_itwhichtmdtypetmetadatat cacheonlyiRsDisk error: %ssNo more mirrors to tryiscannot refresh cache: %s(.RRjRkRlRmRKRRJRRtSTATUS_REFRESH_CACHEt has_networktERROR_NO_NETWORKR3RRRt repo_detailRRtmediaidtmetadata_expireRt doGroupSetupRRR RNRRR(RQRR:RRRSRRURR?RMRoR t ERROR_UNKNOWNRtrefresh(RtforceRDRRPRLR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRxs`        (  (    c Csvy|jdtWn0tk rF}|j|j|jdtdSX|jt|jdy|j j ddddWn^t j k r}|jtdt|n/tk r}|jtttjnXd|j j_|jtt|}g}x|D]}t|kry|j jjd|}Wn^t j k rt}|jtdt|qtk r}|jtttjqX|j|nt|kry|j jj d|}Wnt!j"j#k r}qt!j"j$k r/}|jt%d t|dtdSt j k r^}|jtdt|qtk r}|jtttjqX|j&|qqWx|D]}|dd kr|j'j(} x| D]z} | |d krt!j)j*} |d | _+d | _,d | _-d | _.d | _/d| _0y|j j'j1| } Wnt!j"j$k r}tt%dt|nt!j"j2k r}tt3d|t|fn\t j k r}ttdt|n.tk r}ttttjnX| j+| _4| j5r;|j| gqN|j&| gqqWqqW|j6}|j7|dS(s5 Implement the resolve functionality RRNRiRsDisk error: %sRs+failed to return newest by package sack: %sRiR)R*RZs#failed to get groups from comps: %ssfailed to find group '%s': %s(8RRJRjRkRlRmRKRRRRRRNRRR(RQRR:RRRSRRRRRRRRRRRtreturnNewestByNameRRtPackageSackErrorRRRRRtpackagest PackageObjectRR,R-RR+RLR R R RRRR( RRRRDRRRRR4RRRR((s//usr/share/PackageKit/helpers/yum/yumBackend.pytresolves                   "   c Csy|jWn0tk r@}|j|j|jdtdSXd|jj_|j t|j d|j t g}|j t|kpt|kx|D]}|j|}|r|jr|jtd|jdtdSyX|jj|j|jj|j}|s?|jtd|jt|fnWn^tjk rr}|jtdt|n/tk r}|jtttj nX|j!|qy|j"|\}} Wn0tk r}|j|j|jdt#dSX|r/| r/|jj$d|}|j!|n| r|jtd|j%dtdSqW|rpx|D]} | j&}| j'|j(krqgny|j)|} Wn0tk r}|j|j|jdtdSX| rqgnt|kr|jt*d |j%|j+fdtdS|j,|t-qgWy|j.|Wqtk rl}|j|j|jdtqXn|jt/d dtdS( s> Implement the install-packages functionality RNis"This Group %s is already installeds.No packages were found in the %s group for %s.sDisk error: %sR.s#The package %s is already installeds:The package %s will not be installed from unsigned repo %ss&The packages are already all installed(0RRjRkRlRmRKRRRRRRtSTATUS_RUNNINGRtTRANSACTION_FLAG_ONLY_TRUSTEDtTRANSACTION_FLAG_SIMULATER\RRR5RRR R6RNRRR(RQRR:RRRSRR<RJRRR.t output_stateRRt"ERROR_CANNOT_INSTALL_REPO_UNSIGNEDRARtINFO_UNTRUSTEDt_runYumTransactiont$ERROR_ALL_PACKAGES_ALREADY_INSTALLED( Rttransaction_flagsRORDRhR4RRiRRRR((s//usr/share/PackageKit/helpers/yum/yumBackend.pytinstall_packagesnsv     *     &#cCsd}y|jjjd|j}Wntjjk r>nvtjjk rV}n^t j k r}|j t dt |n/tk r}|j tttjnX|r|d}|j|jkr|jtd|jqndS(NRsDisk error: %sis*A newer version of %s is available online.(RRRRRRRRRRNRRkRR(RQRR:RRRSRsRtMESSAGE_NEWER_PACKAGE_EXISTS(RR.RRDtnewest((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_checkForNewers  c Cs x7|D]/}|jdr|jtddtdSqWy|jWn0tk rz}|j|j|jdtdSXd|jj _ |j t|j d|j tt|dkr|jtddtdSx>|D]6}tjj|s|jtd|dtdSqWtj}g}x\|D]T}|jdrRq7q7|jd rq|j|q7|jtd dtdSq7Wx|D]}|j|tjd |d d }|j} x!| D]} |j| d|qWtj|} d} xm| D]e} | dkr tj}|jtjj || |j!ddrn|j"dd} nPq q W| dkr| dkr|jtd| dtdSx| D]} | jdrtjj || }y@t#d|jj$j%d|}|jj$j&d |j'}Wnt(j)j*k rJ|jtd|qt(j)j+k rr}|jtdqt,j-k r}|jt.dt/|q|jt0dqXt|dkr|dj1|j1kr|j2t3d|j'qt|dkr<|dj1|j1kr<|j2t3d|j'q| dkrmt|dkr|j|qq| dkr|j|qqqWqWt|dkr|jt4dn|j5t6|kpt7|kx|D]}y%t#d|jj$j%d|}Wnt(j)j*k r>|jtd|dtdSt,j-k rm}|jt.dt/|n/t8k r}|jt9t:t;j<nXy|jj=|gdWqt(j)j?k r }t6|kr|jt@t/|dtdS|jA|tBqt,j-k r<}|jt.dt/|qt8k rj}|jt9t:t;j<qXqWx!|D]}|jC|svdSqvWg}ySx|D]}y|jjD|}Wn^t,j-k r}|jt.dt/|n/t8k r}|jt9t:t;j<nX|rJ|jE||jF|djGq|jtHd t/|qWt|jjIdkr|jtHd!d"j |dtdSy|jJ|Wn0tk r}|j|j|jdtdSXWnt(j)jKk r}|jtHt/|nt(j)jLt(j)jMt-fk r y`x$|jjNjOD]}|jPqUWx2|D]*}y|jjD|}Wn^t,j-k r}|jt.dt/|n/t8k r}|jt9t:t;j<nX|r |jE|t|jjIdkr |jjIjQs< tR|jjI_Qny|jJ|Wq tk r }|j|j|jdtdSXq qp|jtHd!|qpWWq t(j)jKk r }|jtHt/|q t8k r }|jt9t:t;j<q XnXtSjT|dS(#s Implement the install-files functionality Install the package containing the inst_file file Needed to be implemented in a sub class s.src.rpms'Backend will not install a src rpm fileRNisno files specified to installs%s could not be founds.rpms .servicepacks&Only rpm files and packs are supportedRtmodeRSRCtunknowns metadata.confsPackageKit Service PackttypeRtupdatesno support for type %sttstfilenames)%s does not appear to be a valid package.s!Package could not be decompressedsDisk error: %ss*Failed to open local file -- please reportis.%s is already installed and the latest versions*a newer version of %s is already installeds9All of the specified packages have already been installeds"Can't install %s as no transactionsCan't install %ss or (URIRkt#ERROR_CANNOT_INSTALL_SOURCE_PACKAGERKRRjRlRmRRRRRRRR3tERROR_FILE_NOT_FOUNDRRCREttempfiletmkdtempRtERROR_INVALID_PACKAGE_FILERbttarfiletTarFiletgetnamestextracttlistdirRnRZR7t has_optionRpR Rt readOnlyTSRRRRt MiscErrorR RNRRR(RRsRt!MESSAGE_PACKAGE_ALREADY_INSTALLEDRRRRRQRR:RRRSt_checkSignaturesRtYumGPGCheckErrortERROR_MISSING_GPG_SIGNATURERRt_check_local_filet installLocalRRR.tERROR_LOCAL_INSTALL_FAILEDRaRt InstallErrorRRRRtdisableRR tshutiltrmtree(RRt inst_filest inst_fileRDttempdirt inst_packst inst_packtpacktmemberstmemRKtpacktypeR1RRt pkgs_localR.RhRiRL((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt install_filess(               !((     %  $    # "    $cCsd }y%td|jjjd|}Wntjjk r_|jt d|dt t St j k r}|jt dt|t Stk r}|jtttjt SXtjj}|j|kr|jtd||j|fdt t S|j|r:|jtdt|dt t St|jjjdkrt|g|jjjd d \}}}|||kr|jtd |dt t Snt S( s Duplicates some of the checks that yumbase.installLocal would do, so we can get decent error reporting. RRs)%s does not appear to be a valid package.RsDisk error: %ssGPackage %s has incompatible architecture %s. Valid architectures are %ss#The package %s is already installedit casematchis4Installation of %s is excluded by yum configuration.N(!RR RRRRRRRkRRKRNRRR(RQRR:RRRSRqRt getArchListtERROR_INCOMPATIBLE_ARCHITECTURERoRRPR3RtexcludeR tERROR_PACKAGE_INSTALL_BLOCKEDRJ(RRR.RDtsuitable_archst exactmatchtmatchedt unmatched((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRs2%& *c Csy|jWn0tk r@}|j|j|jdtdSXd|jj_|j t|j d|j t |j t|kpt|kg}yOxH|D]@}y|j|\}}Wnetk r,}|jtkr |jt|j|j|qn|j|j|jdtdSX|ry|jjd|}Wn^tjk r~}|jtdt|n/tk r}|jtttjnX|s|jtdt ||fq|j!|qqWWnct"j#j$k r"}|jt%t|dtnatk rP}|jtttjn3X|rmx|D]} | j&|j'kr|q^n| j(}y|j)|} Wn0tk r}|j|j|jdtdSX| rq^nt|kr |jt*d|j+|j,fdtdS|j-|t.q^Wy|j/|dtWqtk ri}|j|j|jdtqXn|jt0d dtdS( sj Implement the install functionality This will only work with yum 3.2.4 or higher RNiR.sDisk error: %ss'could not add package update for %s: %ss8The package %s will not be updated from unsigned repo %stallow_skip_brokensNo updates available(1RRjRkRlRmRKRRRRRRRRRRR<RRR=RbRJRRNRRR(RQRR:RRRSR6RRRRRRRR.Rt!ERROR_CANNOT_UPDATE_REPO_UNSIGNEDRRARRRtERROR_NO_PACKAGES_TO_UPDATE( RRRORDRhR4RRRiRR((s//usr/share/PackageKit/helpers/yum/yumBackend.pytupdate_packagessr      #    &#cCs|j}x|jjD]q}|j}|j|j|j|jf}|r|jj dr|dr|j t |j |qqWdS(Ntreboot_suggested( tupdateMetadataRRaR.t get_noticeRR,R-t get_metadataRtrequire_restarttRESTART_SYSTEMRJ(RtmdRiRtnotice((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_check_for_reboots   !%c Cs'd}yCd|jj_t|jj_|jj\}}t|}Wntj j k ry}t t t |ntj jk r}t tt |n\tjk r}t tdt |n.tk r}t tttjnX|r|dkry<d|jj_|jj\}}|dt|7}Wqtj j k r}t t t |qtjk r}t tdt |qtk r}t tttjqXn|j|tkr(t|jjdkr(d}t t|q(n|dkr|jdd kr[t t|n|jd d krt t|nt t|nt|kr#g} xO|jjD]A} | j t!j"krt!| j } | j#| j$| fqqW|j%d |j&| |j%d d St'|krx|jjD]|} | j t(kr<y-|j)| j$t*|jj+| j$gWqtk r}|j,t-dt |dtd SXq<q<W|j%d d Sy5t.|} t/|} |jj0d| d| Wntj j1k r5}t t-t|j2ntj j3k re}t t4t|j2nt5k rC}|jj6}|st t4dn|j7|d}|d}dt|t8t9t:|}|j;||dj<|dj=dd|d|d|t>j?|ddt t@d|dntj jAk r}t|j2}|jdd krt tB|n|jdd krt tC|q#t t|n\tjk r}t tdt |n.tk r"}t tttjnXd S(s^ Run the yum Transaction This will only work with yum 3.2.4 or higher R)isDisk error: %sis : %ss<package could not be removed, as other packages depend on itis is needed byisempty transactioniZidNsCannot download packages: %sRtcallbackt rpmDisplays7GPG key not imported, and no GPG information was found.R.t fingerprints%02xtkeyurlsfile://tuseridthexkeyidt timestamptgpgsGPG key %s requiredsconflicts with filesrpm_check_debug vs depsolve(DRRt skip_brokenRKRt auto_closeRcRURRRRjRR(RtERROR_PACKAGE_DATABASE_CHANGEDRNRRRQRR:RRRSRR3RaRR?RtERROR_TRANSACTION_ERRORRRtTransactionsInfoMapR~RR.RRtTRANSACTION_FLAG_ONLY_DOWNLOADtTS_INSTALL_STATESRR?t downloadPkgsRkRFtPackageKitCallbacktProcessTransPackageKitCallbacktprocessTransactiontYumDownloadErrorRRtERROR_BAD_GPG_SIGNATURERt missingGPGKeyRJR@tmaptordtrepo_signature_requiredRAR"RtctimetERROR_GPG_FAILURER tERROR_FILE_CONFLICTStERROR_PACKAGE_CONFLICTS(RRtallow_remove_depsRRRjRTRDtretmsgRRitinfoRRtyetkeyDataR4Rthex_fingerprint((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR s"                 #  cCs*y|jWn0tk r@}|j|j|jdtdSXd|jj_|j t|j d|j t |r|j tdng}x|D]}|j|}|re|js|jtd|jny|jj|j} Wn^tjk r&}|jtdt|n/tk rT}|jtttjnX|j| qy|j|\} } Wn0tk r}|j|j|jdtdSX| rG| rGy|jj d| } Wn^tjk r}|jtdt|n/tk r6}|jtttjnX|j| n| r| r|jtd| j!qqW|ry|jj"\} } Wnt#j$j%k r}|jt&t|n^tjk r}|jtdt|n/tk r}|jtttjnX| d krE|jt't(| nSxP|jj)D]B} | j*} | j!|j+krR|jt,d | j!dtdSqRWy3|s|j-|d tn|j-|d tWq&tk r}|j|j|jdtq&Xn&d t.|}|jt|dtdS( sd Implement the remove functionality Needed to be implemented in a sub class RNis+the yum backend does not support autoremovesThis Group %s is not installedsDisk error: %sR.sThe package %s is not installedisWThe package %s is essential to correct operation and cannot be removed using this tool.Rs/The following packages failed to be removed: %s(/RRjRkRlRmRKRRRRRRRRtMESSAGE_PARAMETER_INVALIDR\RR_R5R`RNRRR(RQRR:RRRSRR<RJRbRRcRRRRRRURaR.Rqt"ERROR_CANNOT_REMOVE_SYSTEM_PACKAGERRP(RRROtallowdept autoremoveRDRhR4RRiRRRjRTR((s//usr/share/PackageKit/helpers/yum/yumBackend.pytremove_packagesv s~            #cCsC|jj|}|jjjj|r;|jjj|SdSdS(N(Rt get_categoryRt _categoriesRR(RR5R((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt _get_category sc Csy|jdtWn0tk rF}|j|j|jdtdSXd|jj_ |j t|j d|j txe|D]]}|j|}|r:d|j}|j|j}|jdd}|jdd }t}|j|}d}x|D]} || j}qW|j|d ||d |qy|j|\} } WnXtk r}|jtkr|jt|jqn|j|j|jdtdSX| r|j| q|jtd t|qqWdS( s> Print a detailed details for a given package RRNis %s;;;metas R1s RXR)sPackage %s was not found(RRJRjRkRlRmRKRRRRRRRR^R\R5R6RR"RRtsizeR<RRR=t_show_details_pkgR6( RRORDR4RRRRR(RR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt get_details sD      c Cst|}|j|j||j|j}t|j}t|j}t|j}|r|j dd}|j dd}nd}|j }|jj j d r|j rd}n|jj|j}|j||||||dS(Ns R1s RXR)Ri(R0tget_package_idRRRLR(RRtlicenseR"R(RRtverifyLocalPkgRt get_groupRm( RRtpkgverR4RRR,R(R((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR) s ! " cCs6y|jWn0tk r@}|j|j|jdtdSXd|jj_|j t |j d|j tx|D]}y|j|\}}Wn0tk r}|j|j|jdt dSX|r|jd}|j|jdj|}|j||q~|jtd|q~WdS(NRitdirR1sPackage %s was not found(RRjRkRlRmRKRRRRRJRRRR^R<treturnFileEntriesRR7RKR(RRORDR4RRRKt file_list((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt get_files s*    cCst|}t|jdr-|jj}n |j}|jdrNd}n|dkr|jjd}|rd|}qn|j|j||j |}|S(NRt/RWRRs installed:( R0RRLRRRRpR+RR(RRR/RLtrepo_tmpR4((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRJ% s    cCs)|j|}|j|||jdS(s Show info about packageN(RJRR(RRRR4((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR5 sc Csy|jWn0tk r@}|j|j|jdtdSXd|jj_|j t |j d|j ttjjdsdStj}|jdd}d}xh|jD]Z}|j|dr|j|dr|j|d}||kr|}|}qqqW|s6|jtdnyt|jjjd}Wn/tk r}|jtttjnX||krdS|j d }d |dj!|d f} |j"t#| |dS( sA Implement the get-distro-upgrades functionality RNis#/usr/share/preupgrade/releases.listtstableR,s could not get latest distro datat releaseverRXs%s-%si($RRjRkRlRmRKRRRRRJRRRRRRCRERnRZtsectionsRt getbooleantgetfloattERROR_FAILED_CONFIG_PARSINGtfloattyumvarRQRR:RRRSR2tlowertdistro_upgradetDISTRO_UPGRADE_STABLE( RRDRRt last_versiontsectionR,tpresent_versionttokR((s//usr/share/PackageKit/helpers/yum/yumBackend.pytget_distro_upgrades: s@     $   cCsf|d}|dkrtS|dkr*tS|dkr:tS|dkrJtS|jtd|tSdS(NRtsecuritytbugfixt enhancementt newpackages2status unrecognised, please report in bugzilla: %s(t INFO_SECURITYt INFO_BUGFIXtINFO_ENHANCEMENTRRt INFO_NORMAL(RRtut((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt _get_statusl s     cCsGt|krt|_ny|jWn0tk rX}|j|j|jdtdSXd|jj _ |j t |j d|jtd|j_d|j_g}t|}g}yN|jjdd}|j|j|jjdd}|j|jWntjjk r>}|jtt|n^tjk rm}|jtdt|n/t k r}|jt!t"t#j$nXi}x.|jjj%D]\}} | || dtnoticesR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt get_updatesz sj              cCsy|jWn0tk r@}|j|j|jdtdSXd|jj_|j t y|jj j |}|s|j r|jqnW|j s|j|jddkrd|}|jt|jddqnWntjjk r }|jtt|n^tjk rO}|jtd t|n/tk r}}|jtttj nX|j!j"dS( s9 Implement the repo-enable functionality RNitrawhideisThese packages are untested and still under development.This repository is used for development of new releases. This repository can see significant daily turnover and major functionality changes which cause unexpected problems with other development packages. Please use these packages if you want to work with the Fedora developers by testing these new development packages. If this is not correct, please disable the %s software source.s R1sDisk error: %s(#RRjRkRlRmRKRRRRR^RR@RtdisablePersistenttenablePersistentR?Rt MESSAGE_REPO_FOR_DEVELOPERS_ONLYR"RRRRR(RNRRRQRR:RRRSRR(RRAtenableRDRLtwarning((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt repo_enable s2    & cCs2y|jWn0tk r@}|j|j|jdtdSXd|jj_|j t y|jj j j }Wn`t jk r}|jtdt|dStk r}|jtttjdSXxR|D]J}t|kst|j r|j}|j|j|j|qqWdS(s; Implement the get-repo-list functionality RNisDisk error: %s(RRjRkRlRmRKRRRRR^RRRNRRR(RQRR:RRRStFILTER_NOT_DEVELOPMENTRMRRRR(RRRDRRLtenabled((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt get_repo_list s&   cCsyy|jjj|jjjdd}xJ|D]B\}}|d|kr2|jjj|d}|j|Sq2WWnBtjk r}|j t dt |nt k r}nXdS(NRiisDisk error: %sR)( RRSt doObsoletestgetObsoletesTuplesRtsearchPkgTupleRJRNRRkRR(RQ(RRRQt obsoletingRRRD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_obsoleted scCsy(|jjjd|jd|j}Wn^tjk rZ}|jtdt |n/t k r}|jt t t jnX|r|j|dSdSdS(NRRsDisk error: %siR)(RRRRRRNRRkRR(RQRR:RRRSRJ(RRRRD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt _get_updated s( cCs|jst|_xv|jjjD]_}y|jj|Wq(tjk rt}|jt dt |q(t k r}q(Xq(Wn|jS(NsDisk error: %s( t_updateMetadataRRRRtaddRNRRkRR(RQ(RRLRD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_update_metadata! s   tfgetc CsP|j}|j|j|j|jf}igd6gd6gd6}|r3|d}|rp|jdd}n|djdd kr|d r|jjj d }d ||d f}d |d|d f}|dj d||fqn|d} | rx| D]} | d} | d}| dp1d}|jdd}|r | dkrv|| j d||fq|dj d||fq q Wnd} |dpd} |dpd}|dpd}||krd}n|j j dr|drd}nd}t |||| | ||fSd|dddddfSdS(NtbugzillatcvetvendorRs RXtfromsupdates@fedoraproject.orgit update_idR7s.https://admin.fedoraproject.org/updates/F%s/%ss %s Update %sR-s%s;%st referencesRthrefttitleR)R1s, RtissuedtupdatedRtsystemtnone(RsRt(RRRR,R-R"R?RRR=RRRR:(RRRRturlsRR7RyRztrefstrefttypR\tstateR{R|treboot((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_get_update_extras0 sF !  !     %   cCsy|jWn0tk r@}|j|j|jdtdSXd|jj_|j t |j d|j tx=|D]5}y|j|\}}WnXtk r}|jtkr|jt|jq~n|j|j|jdt dSX|dkr$|jtdt|q~n|j|}|j|j}|j|\}} } } } } }| jdd} |jdd}t| dkrUd}y|jjjd|j}Wn^tjk r}|jtdt|n/t k r$}|jt!t"t#j$nXt|d krD|d}ny|j%}Wnt&j'j(k r}|jt)t|n^tjk r}|jtdt|n/t k r}|jt!t"t#j$nXxo|D]d}t|d kr| d t*|7} qnt|d }|j+dd }|rd}yt,|d }Wnt k rs}nX|dkr| d |7} nt-j.j/|j0|j1|j2j3ddf|}|dkrPqnt4j5|d}d|d|d |df}t|djdd}| t"d|d|d|d7} qWnt6| d}t6| d}t6| d}|j7||||||| || | | | q~WdS(s? Implement the get-update_detail functionality RNiscould not find %sRXtTRsDisk error: %siis(;*Could not parse change element:* '%s';R*sh;*Could not parse header:* '%s', *expected*: 'Firstname Lastname - version-release';t.s %i-%02i-%02iis s**s** s s RtRsRu(R*R*R*(R*R*R*(8RRjRkRlRmRKRRRRRJRRRR^R<RRR=R6RnRmRRR"R3RRRNRRR(RQRR:RRRSRVRRRRRPtrsplitRERqt miscutilst compareEVRR+R,R-R2RtgmtimeR<t update_detail(RRORDR4RRRtobsoleteRRRR\RR{R|tinstpkgtinstpkgstchangestchangetheaderR,tevrRjRttime_strtbodytcve_urltbz_urlt vendor_url((s//usr/share/PackageKit/helpers/yum/yumBackend.pytget_update_detaild s     $     4 /cCsy|jWn0tk r@}|j|j|jdtdSXd|jj_y|jj j |}Wnt j j k r}|jtd|dtntjk r}|jtdt|ntk r}|jtttjnX|s |jtd|dtdS|jj|||y |jjt|jdWn)tk r}|jtt|nXdS(s; Implement the repo-set-data functionality RNis!repo '%s' cannot be found in listsDisk error: %ssrepo %s not foundtw(RRjRkRlRmRKRRRRR@RRRRRNRRR(RQRR:RRRStcfgtsettwritetfiletrepofiletERROR_CANNOT_WRITE_REPO_CONFIG(RRAt parameterRRDRL((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt repo_set_data s,  c Csy|jWn0tk r@}|j|j|jdtdSXd|jj_|j t |j d|j t|jdr|jdd}|jjj|}|ry3|jjjd||jj|ddWqtjjk r}|jtd t|qtjk rK}|jtd t|qtk r}}|jtd |t|fqXqny|j |\}}Wn0tk r}|j|j|jdt dSX|ry|jj!|d d Wqtjjk r(}|jtd t|qtjk rW}|jtd t|qtk r}|jt"t#t$j%q|jtd|qXndS(NRis;;;R1itthisrepoRcSstS(N(RJ(tx((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt sscannot install signature: %ssDisk error: %ss1Error importing GPG Key for the %s repository: %staskcbcSstS(N(RJ(Rtytz((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR ssError importing GPG Key for %s(&RRjRkRlRmRKRRRRRJRRRR^RR2RR@tdoSetupt getKeyForRepoRRR RRPRNRRR(RQRR<tgetKeyForPackageRR:RRRS( Rtsigtypetkey_idR4RDRARLRR((s//usr/share/PackageKit/helpers/yum/yumBackend.pytinstall_signature sL   *cCs|jtd |j_t|jj_|jsid|jj_ x&|jj j D]}d|_ qSWn|j dkrd|_ nx5|jj j D]!}|jrqn|j |_ qWx|jj j D]}yb|js|jnK|jj|j}|s6|jj j|j|jtd|jnWqtjk ri}|jtdt|qtjjk r}|jj j|j|jtd|jqXqWtjjd |jjj}|r| rt t!d nd |jj_"t#|jj_$d S(sJust does the caching tweaksiiii<is;Could not contact media source '%s', so it will be disabledsDisk error: %ss5Could not contact source '%s', so it will be disabledt yumlibpathsYThere are unfinished transactions remaining. Please run yum-complete-transaction as root.s90%NiiQ(%RRJRRt_tsInfoRRRRRRRRt cache_ageRtrepoXMLt_media_find_roott disableRepoRRt%MESSAGE_REPO_METADATA_DOWNLOAD_FAILEDRNRRkRR(RRRtmisctfind_unfinished_transactionst persistdirRjtERROR_FAILED_INITIALIZATIONtthrottleRKtasync(RRRLtrootRDt unfinished((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR s@         cCs}y|jjddddWn.tk rM}ttttjnXt|dt |_ |jj j |j dS(NRiRt showNames( RRRQRjRR:RRRStDownloadCallbackRJt dnlCallbackRtsetProgressBar(RRD((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR= s N(NRRRJRhRmRRRtRRRRRRRRRRRRRRRRRR"R)R2R.RYR\R<RkRRoRKRxR|RRRRRRRxRRRRRRRRRR$R'R*R)R3RJRREROR^ReRhRmRnRqRotpropertyRRRRRRR(((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR`s ?   !   '    4 7 &   R . 0 # 5 9 $ W  J O @ , & X O   F Z H  & E r M  +     2  L '    4 Z  * 8RcBsneZdZedZdZdZd dZd dZ d dZ d dZ dZ d Z RS( s; Customized version of urlgrabber.progress.BaseMeter class cCs>tj|||_d|_d|_d|_d|_dS(Ni(RRhtbaset percent_startRt saved_pkgstnumber_packagestdownload_package_number(RRR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRhI s      cCs.||_tt|j|_||_dS(N(RR<R3RR(Rtnew_pkgsRtpercent_length((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt setPackagesQ s cCsn|s dS|jsdS|jdd}t|dkr?dSx(|jD]}|d|jkrI|SqIWdS(NR>iii(RRRR3R(RRR8R((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt _getPackageV s cCstj|||dS(N(RR(Rt amount_readtnow((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRq scCs0|j}|sdS|j|ddddS(NgR)(t_getNametupdateProgress(RRR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt _do_startt s cCst|}|j}|jdkrU|jj}d}|j|||dn4|jj}|jj}|j|||ddS(NgR)( RRR(Rtret elapsed_timeRtremaining_timet fraction_read(RRRtfreadRtetimetfractrtime((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt _do_updatez s  cCs<t|}|j}|s"dS|j|d|ddS(Ng?R)(RRR(RRRt total_sizeR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_do_end s   cCs|jS(s> Get the name of the package being downloaded (RD(R((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR sc Cst|d}|dkr|r|j|}|rM|jj|tqxAtjD]0}||krZt|}|jj|PqZqZWn|r|j|}|r|jj|jj |t |qn|dkr|r|j|}|r|jj|t qnt t } t t } |jdkrx| | |j} | | |j| d|} |jj| n|dkr|jd7_ndS(s Update the progressbar (Overload in child class) @param name: filename @param frac: Progress fracment (0 -> 1) @param fread: formated string containing BytesRead @param ftime: formated string containing remaining or elapsed time idigY@iN(RRRRR?t MetaDataMapR~Rt item_progressRJR;t INFO_FINISHEDtStatusPercentageMaptSTATUS_SIG_CHECKRRR( RRRRtftimetvalRtkeyRt pct_starttpct_endtdivR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR s4    (   N(RRt__doc__RKRhRRRRRRRRR(((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRG s        R cBs,eZdZdZdZdZRS(cCs5tj|||_d|_d|_d|_dS(Ni(RRhRRtcurpkgRR(RR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRh s     cCst|jtjkrO|jj|jddd}|jj||dnt|jjj }|j ddkrd}nt |j}|jj|jj ||jj |}|jj|||jjdS(NR)R4iRW(RRttypest StringTypesRR+RR(RLRR?R0RRR(RRR4RR/((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt _showName s 'cCs6t|t|jkr||_y)|jjt||jt|Wqtjk r}|jj t dt |qtj k r}|jj td|t |fqXn|r|dkr|d|}|jrt|jtjkr:|jj|jddd} |jj| t||qt |jjj} | jddkrmd} nt|j} |jj|jj| |jj| } |jj| t||qntt} |dkr2|dkr2|d|}d | |} | |d | | d |}|jj|ndS( NsDisk error: %ss9The constant '%s' was unknown, please report. details: %sildR)R4iRWidigY@(RPRRRtTransactionsStateMapRR RNRRkRR(tKeyErrorRRRRRR+RRLRR?R0RRRtSTATUS_INSTALLR(RRtactiont te_currenttte_totalt ts_currenttts_totalRDRR4RR/RRR((s//usr/share/PackageKit/helpers/yum/yumBackend.pytevent s6  *  '  cCsdS(N((RR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyterrorlog s(RRRhRRR(((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR  s   &RcBseZdZddZRS(cCs ||_dS(N(R(RR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRh scCsG|tkrI|jjttt}|jj||jjtn|tkrq|jj j |ddn|t krtt }|jj||jjt n|t krtt}|jjt|jj||jjtnP|tkr,tt}|jjt|jj|n|jjtd|dS(Ni isunhandled transaction state: %s(t PT_DOWNLOADRRRJRR;RRtPT_DOWNLOAD_PKGSRRt PT_GPGCHECKRt PT_TEST_TRANStSTATUS_TEST_COMMITRKtPT_TRANSACTIONRRR(RRtdataR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR s*         N(RRRhRR(((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR s tDepSolveCallbackcBs,eZdZdZdZdZRS(cCst|_||_dS(N(RKtstartedtbackend(RR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRh* s cCs:|js6|jjttt}|jj|ndS(N(RRRtSTATUS_DEP_RESOLVERR(RR((s//usr/share/PackageKit/helpers/yum/yumBackend.pytstart. s  cOsdS(N((RRtkwargs((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt _do_nothing5 scCs|jS(N(R(RR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt __getattr__8 s(RRRhRRR(((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR& s   RicBsVeZdZdZdZdZdZdZdZdZ dZ RS( sg Subclass of YumBase. Needed so we can overload _checkSignatures and nab the gpg sig data cCstjj|t|dr2|jjdntj}y,|jd|jddj d}WnGtj k r}g}n,t k r}t t dt|nX|jdy|j}||_Wntjjk r}t t t|nVtjk r5}t td t|n(tk r\}t tt|nXtjjd td td|_t||_ ||_!|j"|_#t|_$yRt|d r|j%|j&_'|j(|j&_)n|j%|j*_'|j(|j*_)Wntjk r/}t td t|ngt k r}t+|j,d dkrwt t-t.t/j0qt t1t.t/j0nXdS(Ntrun_with_package_namessPackageKit-yums/etc/PackageKit/Yum.confRatDisabledPluginsR1sFailed to load Yum.conf: %ssrefresh-packagekitsDisk error: %st override_timetoverride_codecst prerepoconfsrpmdb open failedi(2RtYumBaseRhRRRpRnRZRpR2RrRQRjRoR(Rtpreconftdisabled_pluginsRt ConfigErrorRNRRRAR;Rt setup_localeRJRKRRRt dsCallbackRt MediaGrabbert mediagrabbertuse_txmbr_in_callbackt_repo_gpg_confirmR t confirm_funct_repo_gpg_importtgpg_import_funcRRPR?RR:RRRSR(RRRR RDtpc((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRhA sN          c Cstj}|j}x|D]}|jj}d|}tjj|sYqnt|d}|j }|j t |dkrqn|dj } t | |dkrqn|SWdS(s1 returns the root "/media/Fedora Extras" or None s %s/.discinfoRSiiN(tgiotvolume_monitor_gett get_mountstget_roottget_pathRRCRERYt readlinestcloseR3R[tcmpR( Rtmedia_idtvmtmountstmountRtdiscinfotfR9t media_id_tmp((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR s"      c Os|j|d}|rtd|d}y@|jd||df|dd|dd|ddd Wqttfk r}qXn|sd |d |d f}|jjt|||jjt d |dt t j j dn|dS(s( Handle physical media. Rt checkfuncs%s/%strelativeRWR8tranget copy_localis %s Volume #%sRtdiscnums0Insert media labeled '%s' or disable media reposRsThe disc was not inserted(RRturlgrabRRRtmedia_change_requiredtMEDIA_TYPE_DISCRktERROR_MEDIA_CHANGE_REQUIREDRKRRt MediaError(RRRRtugRDR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR s"  c Cs|s|jjtdn|d}|d}dt|ttt|}|jjd|j|j|dj dd|d |d |t j |d d |jjt d |d dS(s# Confirm Repo GPG signature import s7GPG key not imported, and no GPG information was found.RLRs%02xs;;;%sRsfile://R)RRRRsGPG key %s requiredN( RRkRR3R@RRRRR"RRR(RRRLRR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR s    #cCs|j|d|dS(s Repo GPG signature importerRN(R(RRLtconfirm((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR scCspxi|D]a}|j|\}}|dkr4qq|dkrY|j|d|jqtjj|qWdS(s/ The the signatures of the downloaded packages iit fullaskcb(t sigCheckPkgRt_fullAskForGPGKeyImportRRR(RRRR.tresultterrmsg((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR s   cCs||_tdS(N(RR(RR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyR5 s cCstS(s& Ask for GPGKeyImport (RK(RR.RR((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt_askForGPGKeyImport s( RRRRhRRRRRR5R8(((s//usr/share/PackageKit/helpers/yum/yumBackend.pyRi; s D "     cCs*tddt}|jtjddS(NR)Ri(R`RJt dispatcherRtargv(R((s//usr/share/PackageKit/helpers/yum/yumBackend.pytmain st__main__(itpackagekit.backendtpackagekit.progresstpackagekit.enumstpackagekit.packageRRturlgrabber.progressRRturlgrabber.grabberRRt yum.rpmtransRt yum.constantst yum.update_mdRt yum.callbackstyum.miscRR t yum.packagesR R tyum.packageSackR t yum.ErrorsR RqRNRReRtos.pathRtloggingRzRRRRRnt yumFilterRvRRtPackagekitProgresstprogresstSTATUS_DOWNLOAD_REPOSITORYtSTATUS_DOWNLOAD_PACKAGELISTtSTATUS_DOWNLOAD_FILELISTtSTATUS_DOWNLOAD_CHANGELOGtSTATUS_DOWNLOAD_GROUPtSTATUS_DOWNLOAD_UPDATEINFORRR;RRRtSTATUS_CLEANUPRtTS_REPACKAGINGt INFO_UPDATINGRt INFO_REMOVINGtTS_ERASEtINFO_INSTALLINGRRtINFO_OBSOLETINGt TS_OBSOLETEDRt INFO_CLEANUPt TS_UPDATEDR t STATUS_UPDATEt STATUS_REMOVEtSTATUS_OBSOLETEtSTATUS_REPACKAGINGRRQRR R(R0R6R:R<RERHRMRUR_RgR`RR RtobjectRR RiR;R(((s//usr/share/PackageKit/helpers/yum/yumBackend.pyt!s                                mB