Ñò ÍOc@sjdZddkZddklZddkZddkiZddkl Z dei fd„ƒYZ dS(sŒmodule describing a driver packaging object. This module contains the DriverAction class, which represents a driver-type packaging object. iÿÿÿÿN(tmkstemp(t DebugValuest DriverActioncBsóeZdZgZdZdZeZei eZ dZ dZ dZdZdd„Zd„Zed„ƒZed„ƒZed„ƒZed„ƒZd „Zd „Zedded „ƒZeed „ƒZd „Zd„Zd„ZRS(s2Class representing a driver-type packaging object.tdrivertnamecKsåtii||||iip|iƒn|idƒpdSg}x]|idƒD]L}t|iƒƒdjo |i |i dd|ƒq\|i |ƒq\Wt|ƒdjo|d|i d}|dd||f}ti|dh|d6|d6ƒq:WdS(Ns-bs-ds-is%ss8driver (%(name)s) upgrade (removal of alias '%(alias)s')Rtalias(RRR tget_roott_DriverAction__call(t driver_nametaliasestimagetrem_basetiR-((s8/usr/lib/python2.6/vendor-packages/pkg/actions/driver.pytremove_aliases…s  cCs$|i|iddgdhƒdS(Ntdevfsadms-usDriver activation failed(R5R (tcls((s8/usr/lib/python2.6/vendor-packages/pkg/actions/driver.pyt__activate_driverssc!sÑ|i}|iƒodSt}yPxIti|dddddƒD])}|d|idjo t}PqCqCWWntj onXh}h}d}g} y¿x¸ti|ddtddddƒD]’}t |t ƒo| i |d ƒqÇn|\} } |i | t ƒƒi| ƒ|i | gƒi | t| ƒfƒ| i d t|ƒƒqÇWWntj onXt|id dƒ} |iid ƒ} | djoÊx$| iƒD]} |i| dƒqµWh} x@d „| iƒDƒD](\} } | i | t ƒƒi| ƒqìWxG|iƒD]9\} }x*|D]"} | i | t ƒƒi| ƒq8Wq%W| |i_nxZ|idƒD]I} | | }|id|jpt‚t|ƒdjo | }Pq‚q‚W|oit|iddƒ}||d\} }h|idd6| d6|d6|d6|d6|iƒd6}| | jotd|ƒ‚n6d}|| || |<|o d|GHn d|GH|iƒd}tddd|iƒdƒ\}}ti|dƒ}|i | ƒ|i!ƒti"|ƒ}ti#||i$ƒti%||i&|i'ƒti(||ƒn|o%| o|i)||idƒ}n|o| o d}n|o|i*||ƒS|i+ƒo,|i,d f}|ii-d!d"|i.ƒn|i,d#d$|iƒf}d|ijoE|d%d&i/g}|idƒD]}|d'|q ~ƒf7}nd(|ijo&|d)d&i/|id(ƒƒf7}nd*|ijo&|d+d,i/|id*ƒƒf7}nd-|ijo&|d.d&i/|id-ƒƒf7}nd/|ijo&|d0d,i/|id/ƒƒf7}n||idf7}|i0|d1h|idd6ƒx\|id2ƒD]K}|i1d$|iƒd3d+|d4f}|i0|d5h|idd6ƒqbWd6|ijo ti2i3ti2i/|iƒd7ƒƒ}t4|ƒ}|i5ƒ‰|i!ƒti"|ƒ}tdd8d|iƒdƒ\}} ti|dƒ}|i ˆƒ|i ‡fd9†|id6ƒDƒƒ|i!ƒti#| |i$ƒti%| |i&|i'ƒti(| |ƒndS(:Nsetc/name_to_majort minfieldsit maxfieldsiRsetc/driver_aliasestraws s%s "%s" talias_to_driverRcssPxI|]B\}}x3|D]+}x"|idƒD]}||fVq/WqWqWdS(R3N(R (t.0tntact_listtactta((s8/usr/lib/python2.6/vendor-packages/pkg/actions/driver.pys ×s   R3it be_name_clonetnewtoldtlinetbetimgrootsThe '%(new)s' driver shares the alias '%(alias)s' with the '%(old)s' driver; both drivers cannot be installed simultaneously. Please remove the package delivering '%(old)s' or ensure that the package delivering '%(new)s' will not be installed, and try the operation again.s # pkg(5): s?The '%(new)s' driver shares the alias '%(alias)s' with the '%(old)s' driver, but the system cannot determine how the latter was delivered. Its entry on line %(line)d in /etc/driver_aliases has been commented out. If this driver is no longer needed, it may be removed by booting into the '%(be)s' boot environment and invoking 'rem_drv %(old)s' as well as removing line %(line)d from /etc/driver_aliases or, before rebooting, mounting the '%(be)s' boot environment and running 'rem_drv -b %(old)s' and removing line %(line)d from /etc/driver_aliases.s€The '%(new)s' driver shares the alias '%(alias)s' with the '%(old)s' driver, but the system cannot determine how the latter was delivered. Its entry on line %(line)d in /etc/driver_aliases has been commented out. If this driver is no longer needed, it may be removed by invoking 'rem_drv -b %(imgroot)s %(old)s' as well as removing line %(line)d from %(imgroot)s/etc/driver_aliases.s/etc/driver_aliasestsuffixs.driver_aliasestdirs/etctws-utinstallsactivate-driverss-ns-bs-iRs"%s"tclasss-ctpermss-mt,tpolicys-ptprivss-Psdriver (%(name)s) installRs-aRs)driver (%(name)s) clone permission updatetdevlinksetc/devlink.tabs .devlink.tabc3sJxC|]<}|iddƒdˆjo|iddƒdVqqWdS(s\ts s N(treplace(RCts(tdllines(s8/usr/lib/python2.6/vendor-packages/pkg/actions/driver.pys os (6R8tis_zonetFalseRt$_DriverAction__gen_read_binding_fileRtTruetIOErrortNonet isinstancetstrRt setdefaulttsettaddRttupletgetattrt imageplant get_actionstiterkeystpopt iteritemsRBR tAssertionErrortbootenvR4t RuntimeErrorRtostfdopent writelinestclosetstattchmodtst_modetchowntst_uidtst_gidtrenamet_DriverAction__get_image_datat_DriverAction__update_installt is_liverootRt add_actuatort_DriverAction__activate_driversR,R5Rtpathtnormpathtfilet readlines(!RtpkgplantorigR8tmajortfieldstfile_dbt alias_linestalias_conflicttlinesRR3ta2dtdriver_actionsR7tnamestbe_nameRKterrdicttcommenttdaptdatdtdatptftstR-t_[1]txRtdlptdlftdlttdltp((RZs8/usr/lib/python2.6/vendor-packages/pkg/actions/driver.pyRQ•s$           $            ?             c!s1ˆidˆiƒdf}ˆidˆiƒdf}tˆidƒƒtˆidƒƒ}tˆidƒƒ}tˆidƒƒ}||}||} tˆidƒƒ} tˆidƒƒ} | | } | | } tˆidƒƒ}tˆidƒƒ}||}||}tˆidƒƒ}tˆidƒƒ}||}||}tˆid ƒƒ}tˆid ƒƒ}||}||}xT|D]L}|d d |ˆid f}ˆi|d hˆid d 6|d6ƒq›W‡‡fd†}|p| ojy||| ƒWqutj oF}dˆiˆid |d|d|dfGHd|| fGHquXn‡‡‡fd†}dˆijpdˆijo–y |ƒWq@tj o7}dˆiˆid |d|d|dfGHq@tj o6}dˆiˆid fdi |i dƒGHq@XnxP| D]H}|d|ˆid f}ˆi|dhˆid d 6|d6ƒqGWxP| D]H}|d|ˆid f}ˆi|dhˆid d 6|d6ƒqšWxP|D]H}|d|ˆid f}ˆi|dhˆid d 6|d6ƒqíWxP|D]H}|d|ˆid f}ˆi|d hˆid d 6|d6ƒq@Wx³|D]«}|i ƒ}t |ƒd!jo|d} n7t |ƒdjo d"} nd#ˆid |fGHq“|d$| ˆid f}ˆi|d%hˆid d 6|d6ƒq“WxP|D]H}|d$|ˆid f}ˆi|d&hˆid d 6|d6ƒqIWxI|D]A}|d|d'f}ˆi|d(hˆid d 6|d6ƒqœWxI|D]A}|d|d'f}ˆi|d)hˆid d 6|d6ƒqèWdS(*Ns-bs-as-dR3RRRSRVRURs-is%sRs9driver (%(name)s) upgrade (addition of alias '%(alias)s')c sqtiitiiˆiƒdƒƒ}y)t|dƒ}|iƒ}|iƒWn'tj o}|i d 7_ ‚nXxmt |ƒD]_\}}|i ƒ}t |ƒdjo4|dˆi djo|d|jo ||=q‡q‡Wx,|D]$}|dˆi d|fg7}qñWy*t|d ƒ}|i|ƒ|iƒWn'tj o}|i d 7_ ‚nXdS( Nsetc/driver_classestrtreadingiiRis%s %s RPtwriting(Rž(RŸ(RpR€RR,R4R‚RƒRsR_R-t enumerateRRRRr( t add_classt rem_classtdcptdcfR‹teR:tltarr(R8R(s8/usr/lib/python2.6/vendor-packages/pkg/actions/driver.pytupdate_classes£s4   " sW%s (%s) upgrade (classes modification) failed %s etc/driver_classes with error: %s (%s)iiistried to add %s and remove %sc s$tiitiiˆiƒdƒƒ}y5t|ƒ}|iƒ‰|iƒti|ƒ}Wn't j o}|i d7_ ‚nXt ˆi dƒƒ}t ˆi dƒƒ}||}||}g}xj|D]b} y#ˆi | iddƒdƒ} Wn/tj o#|i| iddƒƒqÑnXˆ| =qÑWˆi‡fd†|DƒƒyŽtdd d ˆiƒd ƒ\} } ti| d ƒ} | iˆƒ| iƒti| |iƒti| |i|iƒti| |ƒWn'tj o}|i d7_ ‚nX|o t|‚ndS(Nsetc/devlink.tabRžRWs\ts s c3sJxC|]<}|iddƒdˆjo|iddƒdVqqWdS(s\ts s N(RX(RCRY(R‹(s8/usr/lib/python2.6/vendor-packages/pkg/actions/driver.pys îs RNs .devlink.tabROs/etcRPRŸ(sreading(swriting(RpR€RR,R4R‚RƒRsRtR_R-RdR tindexRXt ValueErrorRtextendRRqRrRuRvRwRxRyRztEnvironmentErrorRo( R™RšR–R¥tolinestnlinest add_linest rem_linestmissing_entriesRKtlinenoR›Rœ(R8R…R(R‹s8/usr/lib/python2.6/vendor-packages/pkg/actions/driver.pytupdate_devlinksÍsP     #      RWsU%s (%s) upgrade (devlinks modification) failed %s etc/devlink.tab with error: %s (%s)s%s (%s) upgrade (devlinks modification) failed modifying etc/devlink.tab. The following entries were to be removed, but were not found: s s-ms<driver (%(name)s) upgrade (removal of minor perm '%(perm)s')tperms=driver (%(name)s) upgrade (addition of minor perm '%(perm)s')s-Ps<driver (%(name)s) upgrade (addition of privilege '%(priv)s')tprivs;driver (%(name)s) upgrade (removal of privilege '%(priv)s')it*sHdriver (%s) update (removal of policy '%s') failed: invalid policy spec.s-ps:driver (%(name)s) upgrade (removal of policy '%(policy)s')s;driver (%(name)s) upgrade (addition of policy '%(policy)s')RsBdriver (%(name)s) upgrade (removal of clone permission '%(perm)s')sCdriver (%(name)s) upgrade (addition of clone permission '%(perm)s')( RR4RdR RR5R_RRoR,R-RR(!RR8R…tadd_baseR9t add_aliastnclasstoclassR¡R¢tnpermstopermst add_permst rem_permstnprivstoprivst add_privst rem_privstnpolicytopolicyt add_policyt rem_policytnclonetoclonet add_clonet rem_cloneR:R-R¨R¥R³tspect minornode((R8R…Rs8/usr/lib/python2.6/vendor-packages/pkg/actions/driver.pyt__update_installxsÆ            6                   c csCttiitii|iƒ|ƒƒƒ}x|D]ý}|iƒ}|iƒ}g}x@|D]8} | ddjoPn| idƒ} |i| ƒq_W|dj o.t |ƒ|jo|o |Vq4q4qÖn|dj o.t |ƒ|jo|o |Vq4q4qn|o |Vq4|o |Vq4q4W|i ƒdS(Nit#t"( R‚RpR€RR,R4tstripRRR`RRs( timgR€R?R@RAtmyfileRKR‡t result_fieldstfield((s8/usr/lib/python2.6/vendor-packages/pkg/actions/driver.pyt__gen_read_binding_filegs8          c$Cs~g}d}yLxEti|dddddƒD]%}|d|jo|d7}q.q.WWn?tj o3}|id7_|o|i|ƒqš‚nX|djo|o dgfSdSn|djoHytd|‚Wqtj o$}|o|i|ƒq‚qXn|d|ƒ}ygg|id s