Pc@sddkZddkZddkZddkZddkZddkZddklZddki Z ddk i i Z ddk i iZddkiiZddkiiZddkiiZddkiiZddkiiZddkiZddkiZddk i!Z!ddk"i#Z#ddk$i%Z&dei'i(Z)dei'i(Z*dei'i(Z+dei'i(Z,dei'i(Z-dei'i(Z.d ei'i(Z/d ei'i(Z0d ei'i(Z1ed d dgZ2eddddddgZ3de4fdYZ5de5fdYZ6de5fdYZ7de5fdYZ8de5fdYZ9de5fd YZ:d!e5fd"YZ;e<e<e=d#Z>d$Z?d%Z@d&ZAheiBe#iC6eiDe#iE6eiFe#iG6eAe#iH6ZIe=d'ZJd(ZKd)ZLd*ZMd+ZNde<d,ZPd-ZQd.ZRd/d0ZSd1ZTd2ZUd3ZVd4ZWd5ZXd6ZYd7ZZd8Z[d9Z\d:Z]e=d;Z^d<Z_de=d=Z`d>Zae=d?ZbdS(@iN(t namedtuples%s.paths%s.files %s.reasons%s.types %s.targets %s.bypasseds %s.via-linkss %s.path-ids %s.fullpathtEntriest deliveredt installedtLinkInfotpathtpfmrit nearest_pfmritvariant_combinationt via_linkstDependencyErrorcBseZdZRS(s/The parent class for all dependency exceptions.(t__name__t __module__t__doc__(((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyR MstUnresolvedDependencyErrorcBs eZdZdZdZRS(sVThis exception is used when no package delivers a file which is depended upon.cCs||_||_||_dS(N(Rtfile_deptpvars(tselftpthRR((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyt__init__Us  c Csd|ii}|iiotdh|id6|dd6dig}|iiD]G}|dig}t|D]\}}|d||fqx~qX~d6Stdh|id6|d6SdS( Ns sc%(pth)s has unresolved dependency '%(dep)s' under the following combinations of variants: %(combo)sRtdept s%s:%stcombos,%(pth)s has unresolved dependency '%(dep)s'.(Rt pretty_printRt not_sat_sett_Rtjointsorted(Rtdep_strt_[1]tgrpt_[2]tnametval((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyt__str__Zs    a (R R R RR"(((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyRQs tMissingPackageVariantErrorcBs eZdZdZdZRS(s}This exception is used when an action is tagged with a variant or variant value which the package is not tagged with.cCs||_||_||_dS(N(tact_varstpkg_varsR(RR$R%R((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyRts  cCs,tdh|id6|id6|id6S(NsThe action delivering %(path)s is tagged with a variant type or value not tagged on the package. Dependencies on this file may fail to be reported. The action's variants are: %(act)s The package's variants are: %(pkg)sRtacttpkg(RRR$R%(R((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyR"ys    (R R R RR"(((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyR#ps tBadPackageFmricBs eZdZdZdZRS(sAThis exception is used when a manifest's fmri isn't a valid fmri.cCs||_||_dS(N(Rtexc(RRte((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyRs cCs"tdh|id6|id6S(Ns=The manifest '%(path)s' has an invalid package FMRI: %(exc)sRR)(RRR)(R((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyR"s (R R R RR"(((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyR(s tExtraVariantedDependencycBs eZdZdZdZRS(sThis exception is used when one or more dependency actions have a variant set on them which is not in the package's set of variants.cCs9||_t|djpt||_||_dS(Ni(R'tlentAssertionErrortrvstmanual(RR'treason_variantst manual_dep((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyRs  c Csd}xt|iiD]\}}x3|iD](}|tdh|d6|d67}q2Wx@|iD]5\}}|tdh|d6|d6|d67}qhWqW|ip tdh|id6|d 6Std h|id6|d 6SdS( Nts. %(r)-15s Variant '%(kind)s' is not declared. trtkindsF %(r)-15s Variant '%(kind)s' is not declared to have value '%(val)s'. R!sThe package '%(pkg)s' contains actions with the paths seen below which have variants set on them which are not set on the package. These variants must be set on the package or removed from the actions. %(rvs)sR'R.sThe package '%(pkg)s' contains manually specified dependencies which have variants set on them which are not set on the package. These variants must be set on the package or removed from the actions. %(rvs)s(RR.t iteritemst type_diffsRt value_diffsR/R'(RtsR3tdiffR4tktv((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyR"s(     %      (R R R RR"(((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyR+s tNeedConditionalRequireAnycBs eZdZdZdZRS(sThis exception is used when pkgdepend would need a dependency which was both require-any and conditional to properly represent the dependency.cCs||_||_dS(N(t conditionalstpkg_vct(RR=R%((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyRs c Cs8td}x%t|iD]\}\}}}|d7}|i|i|ip |i o|td|7}n|td|7}|ddig}|iD]G}|dig}t|D]\} } |d| | fq~q~7}|d7}||i d7}||i d7}qW|S( Ns~pkgdepend has inferred conditional dependencies with different targets but which share a predicate. pkg(5) can not represent these dependencies. This issue can be resolved by changing the packaging of the links which generated the conditional dependencies so that they have different predicates or share the same FMRI. Each pair of problematic conditional dependencies follows: isPair %s s?Pair %s is only problematic in the listed variant combinations:s Rs%s:%ss ( Rt enumerateR=tsimplifyR>tis_emptytsat_setRRR( RR8titd1td2R;RRRR R!((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyR"s"    \ (R R R RR"(((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyR<s t __NotSubsetcBseZdZRS(cCs+tit|it|i|_dS(N(tvariantst VCTDifferencettupleR6R7R9(RR9((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyRs(R R R(((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyRFscCst||\}}|i} t||| ||d|\} } } } g}|ot| ||| \} }n|ot| } n| || || | fS(sGiven the manifest provided in file_path, use the known dependency generators to produce a list of dependencies the files delivered by the manifest have. 'file_path' is the path to the manifest for the package. 'proto_dirs' is a list of paths to proto areas which hold the files that will be delivered by the package. 'dyn_tok_conv' is the dictionary which maps the dynamic tokens, like $PLATFORM, to the values they should be expanded to. 'run_paths' contains the run paths that are used to find modules. 'convert' determines whether PublishingDependencies will be transformed to DependencyActions prior to being returned. This is primarily an option to facilitate testing and debugging. 'ignore_bypass' determines whether to bypass generation of dependencies against certain files or directories. This is primarily an option to facilitate testing and debugging. t ignore_bypass(t__make_manifesttget_all_variantstlist_implicit_deps_for_manifesttresolve_internal_depstconvert_to_standard_dep_actions(t file_patht proto_dirst dyn_tok_convt run_pathstremove_internal_depstconvertRJtmt manifest_errsR%tdepstelisttmissingt pkg_attrstrid_errs((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pytlist_implicit_depss  cCsd}g}x|D]}g}xS|iiD]E}|ii}|i||||itii|q/W|p6|ii}|||itii|n|i |qW|S(sYConvert pkg.base.Dependency objects to pkg.actions.dependency.Dependency objects.cSsEx>|iD]0\}}t|tot|||/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyt norm_attrss ( tdep_varsRtattrstcopytupdatetappendtactionstdependtDependencyActiontextend(RXRctrestdttmptcRe((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyRO s"     c Csg}g}h}h}thh}h} t|i| tidd|x|idD]} | i} | p |} nB| i|p$|it | || i dn| i |t i | dt} | i d} tii| }|i|ti| q_Wxr|D]j}|id|id|d| d t\}} |d joqn| i|| |_|i|qW||fS( sGiven a list of dependencies, remove those which are satisfied by others delivered by the same package. 'deps' is a list of Dependency objects. 'mfst' is the Manifest of the package that delivered the dependencies found in deps. 'proto_dir' is the path to the proto area which holds the files that will be delivered by the package. 'pkg_vars' are the variants that this package was published against.s INTERNAL@0-0t0tfileRt satisfiedtdelivered_filestdelivered_base_namestlinkst resolve_linksN(Rtadd_fmri_path_mappingRtfmritPkgFmritgen_actions_by_typetget_variant_templatetissubsetRhR#Ret merge_unknownRGtVariantCombinationstTruetosRtbasenamet setdefaultRftresolve_internalRwtNoneR@Rd(RXtmfstRQR%RmterrsRt delivered_bntfilesRvRbRtpvctptbnRntetype((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyRN$sD            cKs gti|idghfS(s=Function to handle dispatch of files not found on the system.R(tbaset MissingFileRe(tactiontkwargs((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyt no_such_file]scCsg}g}h}h} t|id} ti| } ti|joH|ti} t| } | o||| || fS| id}ng}ti|jot|ti}nxt | D]\}}| |}|}ti|i joK|i ti}t|} | o||| || fS|id}nt|i i ti|}d|jp d|jo$| od|i d| t /usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyRMksf%     "    cCs2x+|D]#}|i|gi||qWdS(s?Update the pkg_attrs dictionary with the contents of new_attrs.N(RRl(R[t new_attrstkey((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyRscCsut|tptitdtigSt|idtdgjotitdtigSgS(scVerify we've been passed a single item and ensure it contains at least one non-null string.sVManifest specified multiple values for %s rather than a single colon-separated string.RR2sPManifest did not specify any entries for %s, expecting a colon-separated string.( R_tstrRRRRRR`R(R((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyRs % cCsLt|to|St|to|o|gSgSn tddS(sGiven a value, return it if that value is a list, or if it's a string, return a single-element list of just that string.s Value was not a string or a listN(R_RaRt ValueError(tvalue((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyRsc Cs1g}x$|D]}tt|}t}g}yx|D]}d|jp d|jon(d|jodtii|f}n|oV|idp|d}n|idpd|}n|iti |q>q>WWn*ti j o} t i || nXxa|D]Y} | |jo|i | qnx/|D]'} | i| o|i | qMqMWqW|o|iitd|iitdg|_g|_||}tt||_|i|it" All bypass-list entries are assumed to be regular expressions that are rooted at ^ and $. The special match-all wildcard ".*" is dealt with separately, by list_implicit_deps_for_manifest(..) t*t?t/s.*%s%st$t^N(R`t make_pathsRRtseptendswitht startswithRhtretcompileterrorRtInvalidDependBypassValuetaddtmatchRetpopt files_prefixRt paths_prefixt base_namesRSRRat full_pathstfullpaths_prefixR( RRR[tnew_dsRRtbypassed_filestbypass_regexpstitemR*Rtregexp((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyRsV  "     c Csoti}yt|d}Wn$tj o}ti|nXg}g}g}d} x|D]} | i} | ido| | dd!7} qen| o| | } d} n| p| ddjoqeny(ti | d|d|\} } } Wnti j op}ti | d|dt \}} } |i d jod } |} q|iti|id |qen~tij o}|i|qenWX| oNti| ijpt| | iti<| | iti<|| iti/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyRKFsb         cCs|djo titii|dfS|id|idd}|dj o@yti|d}Wnti j o d}nX||fStitii|dfS(sFind the package name for this manifest. If it's defined in a set action in the manifest, use that. Otherwise use the basename of the path to the manifest as the name. If a proper package fmri is found, then also return a PkgFmri object so that we can track which packages are being processed. 'fp' is the path to the file for the manifest. 'mfst' is the Manifest object.spkg.fmriRys5.11N( RturllibtunquoteRRRRRyRzt IllegalFmri(RRR R((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyt choose_names     cCs|iitgo |itS|iitdg}|it}t|to |g}nt|to |g}ng}|D])}|D]}|tii ||qq~S(sRFind all the possible paths which could satisfy the dependency 'file_dep'.R2( ReRRRRR_t basestringRRR(RtrpsRRtrptf((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyRs    ic$ Csg}g}||joti|}|ip|i ptxt||D]h\} } |i| pqUn|i| } | i|i| |it || | | gqUW|o|io ||fSn|i t i i } |t| jo ||fSt i i| d|!} |i| t}|p!t|||||d|dSh}xm|D]e\}}}|i|pqwn|i|}|io|i oqwnt i it i it i i| || |it i i }t|||||\}}|pqwn|i|x|D]\}}}}}|i||i|ptd||f|i|gi|||f|it |||||qQWqwWx|iD]}t||}x|D]\}}|i}|i|x|D]\} }!| |!joq6nd}"|i}#|#ih| id6|!id6dt6|gt6|"d 6|#it d |#it"d |it#i$i%|#|fq6Wq WqW||fS( sThis method maps a path to one or more real paths and the variants under which each real path can exist. 'path' is the original text of the path which is being resolved to a real path. 'files_dict' is a dictionary which maps package identity to the files the package delivers and the variants under which each file is present. 'links' is an Entries namedtuple which contains two dictionaries. One dictionary maps package identity to the links that it delivers. The other dictionary, contains the same information for links that are installed on the system. 'path_vars' is the set of variants under which 'path' exists. 'file_dep_attrs' is the dictonary of attributes for the file dependency for 'path'. 'index' indicates how much of 'path' should be checked against the file and link dictionaries.itindexisvc:%s vc_intersection:%st conditionalRyt predicatetlinkttypeN(&RfRAt is_satisfiedR-t intersectst intersectiontmark_all_as_satisfiedtmark_as_satisfiedRhRRRRRR,RRRRwtnormpathtdirnametlstripRlRtkeystgroup_by_variant_combinationstunsatisfied_copyRgtget_short_fmrit type_prefixRRRRRRiRjRk($Rt files_dictRvt path_varstfile_dep_attrsRt res_pathst res_linksttmp_varsRtp_vctintertlsttcur_patht rel_linkst links_foundt link_pfmritlink_vct rel_targettvc_intersectiont next_patht rec_pathst link_depstrec_patht rec_pfmriRtrec_vcR tcur_depst pfmri_pairstvctdep_vctl_pfmritr_pfmritdep_typeRe((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyRws "                     cCsg}g}g}g}tt|} di| } xz| D]r} |ip|i ptttii | ||||i i \} } |i | || 7}q@Wt g}|D]%}||i|i|i|ifq~}x|D]\}}|i||i i }d}ttg}|D]\}}}||iq;~}ttg}|D]\}}}||qw~}g}t|djo;d}|d}|dd}|idi|}n;x7|D]/\}}}|i|idi|qW|itd |itd |ih|d6|d6|t6|o||t/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyt"find_package_using_delivered_files8sh ! 5  /0     #  c Cs2|ip|i ptti|}t|i||||\}}}|i p"|p|p|ipt|p|o |ip| o|||fSti|} | ip| i ptt|i|||| \} }} |i| |i| |||fS(sFind the packages which resolve the dependency. It returns a list of dependency actions with the fmri tag resolved. 'files' is an Entries namedtuple which contains two dictionaries. One dictionary maps package identity to the files that it delivers. The other dictionary, contains the same information for files that are installed on the system. 'links' is an Entries namedtuple which contains two dictionaries. One dictionary maps package identity to the links that it delivers. The other dictionary, contains the same information for links that are installed on the system. 'file_dep' is the dependency being resolved. 'orig_dep_vars' is the original set of variants under which the dependency must be satisfied. 'pkg_vars' is the variants against which the package was published.(RARR-RfR4RRRl( RRvRR*R%t use_systemRdRmRtconst_dep_varstinst_rest inst_errs((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyt find_packages"!"#"!  cCsO|idjo?|iiddtiijot|ijp t|ijS(NRjRy( R ReRRRt Dependencyt DUMMY_FMRIRR(R&((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pytis_file_dependencys"c Csg}x|D]}|d}|d }t|djo|d}ng}x#|D]\}}|djo|i||fqUn|i|\}} } |p| p| pt|p|i|tpt| p|i|tpt| p|o| pt| o|i|| fn| o+|} | i||i| | fn|}qUW|dj o|i|g|fn|}q W|S(sThe goal of this function is to produce the smallest list of (info list, VariantCombinations) tuples which has the following properties: 1. The intersection between any two satisfied sets of the VariantCombinations must be empty. 2. If a piece of information was satisfied under a particular combination of variants, that information must be paired with the VariantCombination which has that combination in its satisfied set. Note: A piece of information can appear more than once in the result. The 'lst' parameter is a list of tuples. The last item in each tuple must be a VariantCombination. The rest of each tuple is the "piece of information" discussed above.iiiN(R,RRhtseparate_satisfiedR-R}R( RtseedRti_vctinfotnew_restold_infotold_vctonly_it intersecttonly_oldRo((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyRs:    !!    cCsx|iiD]\}}|id pt||ijo||i|/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyt merge_depss   cCsZy,|did|diitdfSWn'tj otd|dnXdS(NiRs$Expected this to have a predicate:%s(ReRR)RRt RuntimeError(Rn((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyt__predicate_path_id_attrget's cCsUh}xv|D]n\}}|iddjoq nti|idd}|i|idtgi|||fq Wh}t}xti t g}|D]1\}}|iddjo|||fqq~dt t D]J\\}} } t | } |i|gi| | f|i |qWg} x|o||i}ti|d}|idt} | |joqCng} xB|| D]6\}}}|i|o| i||fqqW| pqCng}x|i|gD]\} } g}t| }g}g}x2|D]*\}}x| D]\}}|i|\}}}|p|p|pt|p|i|tpt|p|i|tpt|p|o|pt|o|i||fn|}|d joPqDqDW|d j o2|ig}|D]}|||fq:~q1q1W|o|i| |fn| d jox|D]\}}x|D]}tii|i}|id=d|id<| i||f|i |idti|idd}|i|idtgi|||fqWqWqnx;|D]3\}}tii|d i}x|d D]}t||qWt t|id|id/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyt__collapse_conditionals2s    E         !   6                E   c Csug}h}x\|D]T\}}|iddjo|i||fqng}x0|idD]}|iti|dqcWt}|dj o/x,|D] } |i| o t}qqWn|oqn|iddjo|i||fqnt} g} x|D]\} } | iddjoqnt}ti| idd}x)|D]!}|i|o t}PqdqdW|pqn|i | \}}}|i | p | i ot} | i||fqqW| p|i||fqn|i o|i||fn| pt |iitd}|o| ||/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyt)__remove_unneeded_require_and_require_anysh      cCsd}d}h}x{titg}|D]1\}}|iddjo|||fq/q/~d||D]\}} t| ||/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyt fmri_attrget:s cSs|diitdS(Ni(ReRR)R(Rn((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pytpath_id_attrget>sRR&RRRys5.11RL(RNRORReRaRRRARRhRBRyRzRMRPRh(RXRjRxRyRSRRnR;ttargetRXtneeded_cond_depsRRWRpRnts_dts_vtd_fmritr_dtr_vtr_fmriR2((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyt __remove_extraneous_conditionals4sP   E  E       Bc Csd}d}t|}g}t||\}}t||}g} x1titg} |D]1\} } | iddjo| | | fqeqe~ dttD]\\} }}|pqnt|}xt |D]\}\}}x||dD]p\}}|i |\}}}|i p |i o5|id|idjo| i |||fqqWqWqW| o|i t| |ng}xtit|d||D]|\}}t|}|dd}ti|t}x.|D]&\}}t|||i|qW|i ||fqW|}g}x-|D]%\} }|i|| ||q[W|}||fS( sCombine duplicate dependency actions. 'deps' is a list of tuples. Each tuple contains a dependency action and the variants associated with that dependency. 'pkg_vars' are the variants that the package for which dependencies are being generated was published against. 'pkg_fmri' is the name of the package being resolved. This can be None. 'pkg_name' is either the same as 'pkg_fmri', if 'pkg_fmri' is not None, or it's the basename of the path to the manifest being resolved.cSsa|di|diidd|diidd|dii|dit|dfS(sReturn a key on which the tuples can be sorted and grouped so that the groups match the duplicate actions that the code in pkg.manifest notices.iRRN(R ReRRtkey_attrtid(Rn((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pytaction_group_keys cSs|i|g}xV|iD]K}|ii}|i|tii|}|i|i |qW|p|i|g}n|S(sAdd the variants 'd_vars' to the dependency 'd', after removing the variants matching those defined in 'pkg_vars'.( R@RBReRfRgRiRjRktconsolidate_attrsRh(Rntd_varsR%RmR8ReR/((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pytadd_varss      RRRiRyi(RgRwRRNRORReRKRaR?R=RARBRhR<RGRRRIRRl(RXR%Ritpkg_nameRRRmRtomitted_require_anyt conflictsRRnR;RRWRXRCRDtv1REtv2tonly_v1Rtonly_v2RAR:Retres_varsRkRlR!((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pytcombinetsV    E    &     cCse|i}|i|pt|i|n|i||i|ti|d|fS(sbTake a dependency which may be tagged with variants and move those tags into a VariantSet.Rs(R|R}RFt differenceR~tstrip_variantsRGR(RR%RsRd((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pytsplit_off_variantss    cCs/td|iiD}tii|S(syGiven a dependency action with pkg.debug.depend attributes return a matching action with those attributes removedcss?x8|]1\}}|itiip||fVqqWdS(N(RRR:tDEPEND_DEBUG_PREFIX(t.0R:R;((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pys s (tdictReR5RiRjRk(RRe((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pytprune_debug_attrssc Cs[| p| pt|p(|i}|o|i|qFnxv|idD]e}|i}|p&|i|ti|dt}n|i|i dgi ||fqVWxt i |id|idD]o}|i}|p&|i|ti|dt}n|i|i dgi |||i dfqWdS(sAdd mappings from path names to FMRIs and variants. 'files_dict' is a dictionary which maps package identity to the files the package delivers and the variants under which each file is present. 'links_dict' is a dictionary which maps package identity to the links the package delivers and the variants under which each link is present. 'pfmri' is the FMRI of the current manifest. 'mfst' is the manifest to process. 'distro_vars' is a VariantCombinationTemplate which contains all the variant types and values known. 'use_template is a boolean which indicates whether to fill the dictionaries with VariantCombinationTemplates instead of VariantCombinations.RrRsRRRRzN( R-RLR~R{R|RGRRRReRhRNtchain( R t links_dictRRt distro_varst use_templatet pvariantsRR!((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyRxs0         cCs<d}yti|di}Wntij onX|S(Ns5.11(RRyRzRR(ttxttdep_name((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyt__safe_fmri_parse!s cB!CsYg}d|DD]7\}\}}||t||||i|fq~}thh} h} ti} t} xK|D]C\}\} }}}}| i||o| i|iqqWd}t}t}|of|i t i i d|dt }h}h}h}d}yx|D]\\}}}}}}}|| joq2ntid|d|d|}|i|d t }d|_|i|i| i|i|i||d|7DD]/}?|?dj o|?|*jo |>|?qqq~>}@|-i|@|i8|@|o+g}A|7D]}1|At9|1q~A}7n|7|+|/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pys Bs cSs |i|ti|dtS(NRs(R~RGRR(tact_vctR>((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyt__merge_actvct_with_pkgvctUs tpatternstraise_unmatchedit publisherR tversiont all_variantsRiRs5.11RjRsRyRcssQxJ|]C}x:|idD])}|iddjot|VqqWqWdS(RyRRR&s require-anyN(s conditionalsrequires require-any(RQReR(RRbR((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pys s  N(:RRLRRGtVariantCombinationTemplateR`t merge_valuesRRt get_pkg_listtapitImageInterfacetLIST_INSTALLEDRRyRzt get_manifestRRRxRtInventoryExceptiontnotfoundtremoveRRgRRR~R5RRR(RRlR{R<RRhRFRRet reason_prefixRHR6R9R7R+RR9tboolRthasattrR@RRRtdifference_updateR(Btmanifest_pathstapi_insttsystem_patternst prune_attrsRRRRWt manifestsRRvRtresolving_pkgsR RR%t miss_filesRt sys_fmristunmatched_patternstpkg_listt tmp_filest tmp_linkst package_varstpkg_cnttpubtstemtvertsummtcatststatesReR*R>RRRRttmpltnew_valR2Rzt res_fmristpkg_depsRt external_depst name_to_useRtbad_dsRnR3R9t_[4]Rtpkg_resRXtbad_depsRRmRdtpkg_errst combine_errst_[5]Rt ext_pfmrist_[6]((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyt resolve_deps)s2H                6 <          A            %  + (cRfRNtoperatorRRRt collectionsRt pkg.actionsRitpkg.client.apitclientRtpkg.client.api_errorst api_errorsRtpkg.flavor.basetflavorRtpkg.flavor.elftelftelf_deptpkg.flavor.hardlinkRtpkg.flavor.scripttscripttpkg.flavor.smf_manifestt smf_manifesttpkg.fmriRyt pkg.manifestRtpkg.misctmisct pkg.portableRt pkg.varianttvariantRGR:RRRRRt target_prefixRR(R)RRRt ExceptionR RR#R(R+R<RFRRR]RORNRtprocess_elf_dependenciestELFtprocess_script_depstEXECtprocess_smf_manifest_depst SMF_MANIFESTtUNFOUNDRRMRRRRRRKRRRwR4R9R<RRIRKRgRwRRRRRxRR(((s>/usr/lib/python2.6/vendor-packages/pkg/publish/dependencies.pyts       ($&  9      e   S:   ^ 2  E  U @ h  .