;ò
µAc           @   s{   d  k  Z  d  k Z d  k Z d  k Z d k l Z d f  d „  ƒ  YZ d „  Z e d j o d Z	 e  i
 ƒ  Z e ƒ  n d  S(   N(   s   parserErrors   Groups_Infoc           B   sŒ   t  Z d 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 „  Z e d „ Z RS(   Ni    c         C   sž   | |  _  h  |  _ h  |  _ g  |  _ h  |  _ h  |  _ h  |  _ h  |  _ h  |  _	 g  |  _
 h  |  _ h  |  _ h  |  _ h  |  _ h  |  _ d |  _ |  i ƒ  d  S(   Ni    (   s   overwrite_groupss   selfs   group_installeds
   sub_groupss   visible_groupss   group_by_ids   group_by_names   optional_pkgss   mandatory_pkgss   default_pkgss	   grouplists   optional_metapkgss   default_metapkgss   mandatory_metapkgss   installed_pkgss   pkgs_per_groups
   compscounts   _get_installed(   s   selfs   overwrite_groups(    (    s   /usr/share/yum/yumcomps.pys   __init__)   s"    																c         C   s£  y t  i | ƒ } WnF t  i j
 o } d | GHd Sn# t j
 o } d | GHd Sn X|  i d |  _ | i	 } | i ƒ  } x5 | D]- } | | i } | |  i | <| |  i | <qˆ Wxã| D]Û} | | } | i o |  i i | ƒ n | |  i j o| |  i i | ƒ d |  i | <g  |  i | <g  |  i | <g  |  i | <g  |  i | <g  |  i | <g  |  i | <g  |  i | <n |  i ol d |  i | <g  |  i | <g  |  i | <g  |  i | <g  |  i | <g  |  i | <g  |  i | <g  |  i | <n | i }	 |	 i ƒ  } x– | D]Ž } |	 | \ } } | d j o |  i | i | ƒ q| d j o |  i | i | ƒ q| d j o |  i | i | ƒ qd	 | GHqWxR | i	 i ƒ  D]A }
 |
 |  i | j o d
 |
 | f GHq®|  i | i |
 ƒ q®W| i% } xœ | i ƒ  D]Ž } | | \ } } | d j o |  i | i | ƒ q	| d j o |  i | i | ƒ q	| d j o |  i | i | ƒ q	d	 | GHq	WqÀ Wd S(   s:   This method takes a filename and populates the above dictss   Damaged xml file error:
 %sNs%   Damaged or Empty xml file error: 
 %si   i    u	   mandatoryu   optionalu   defaults0   %s not optional, default or mandatory - ignorings   Duplicate group entry %s in %s()   s   compss   Compss   filenames   compsobjs   CompsExceptions   es   parserErrors   selfs
   compscounts   groupss	   groupsobjs   keyss	   groupnames   ids   group_by_ids   group_by_names	   thisgroups   user_visibles   visible_groupss   appends	   grouplists   group_installeds   mandatory_pkgss
   sub_groupss   optional_pkgss   default_pkgss   mandatory_metapkgss   default_metapkgss   optional_metapkgss   overwrite_groupss   packagess
   packageobjs   pkgss   pkgs   types   names   sub_group_ids   metapkgss
   metapkgobjs   metapkgs	   metapkgid(   s   selfs   filenames	   metapkgids   es   groupss   names	   groupnames
   metapkgobjs   metapkgs
   packageobjs   sub_group_ids   compsobjs	   thisgroups   pkgss   types   ids	   groupsobjs   pkg(    (    s   /usr/share/yum/yumcomps.pys   add?   sŠ     				  


	  	 c         C   s"   |  i ƒ  |  i ƒ  |  i ƒ  d  S(   N(   s   selfs   _correctGroupss   _installedgroupss   _pkgs_per_group(   s   self(    (    s   /usr/share/yum/yumcomps.pys   compileGroups”   s    

c         C   sL  x |  i i ƒ  D]~ } g  } xb |  i | D]S } |  i i | ƒ o1 |  i | | j o | i |  i | ƒ q} q* d | GHq* W| |  i | <q Wx |  i	 i ƒ  D]~ } g  } xb |  i	 | D]S } |  i i | ƒ o1 |  i | | j o | i |  i | ƒ qq¼ d | GHq¼ W| |  i	 | <q¢ Wx |  i
 i ƒ  D]~ } g  } xb |  i
 | D]S } |  i i | ƒ o1 |  i | | j o | i |  i | ƒ q¡qNd | GHqNW| |  i
 | <q4Wx |  i i ƒ  D]~ } g  } xb |  i | D]S } |  i i | ƒ o1 |  i | | j o | i |  i | ƒ q3qàd | GHqàW| |  i | <qÆWd  S(   Ns   Invalid group id %ss   Invalid metapkg id %s(   s   selfs
   sub_groupss   keyss   keys   newlists   ids   group_by_ids   has_keys   appends   mandatory_metapkgss   default_metapkgss   optional_metapkgs(   s   selfs   newlists   ids   key(    (    s   /usr/share/yum/yumcomps.pys   _correctGroups™   sP            c         C   s5  xË |  i D]À } t |  i | ƒ d j oM d } x3 |  i | D]$ } |  i i | ƒ o
 d } q> q> W| |  i	 | <q
 d } x= |  i
 | |  i | D]# } |  i i | ƒ o
 d } q– q– W| |  i	 | <q
 Wx` |  i D]U } t |  i | ƒ d j o5 x2 |  i | D] } |  i	 | o
 d } qqWqØ qØ Wd  S(   Ni    i   (   s   selfs	   grouplists	   groupnames   lens   mandatory_pkgss   groupinstalleds   reqpkgs   installed_pkgss   has_keys   group_installeds   optional_pkgss   default_pkgss   anypkgs   mandatory_metapkgss   metapkg(   s   selfs   groupinstalleds	   groupnames   reqpkgs   metapkgs   anypkg(    (    s   /usr/share/yum/yumcomps.pys   _installedgroupsÃ   s,    
   
  c         C   s2   t  i ƒ  } x | D] } d |  i | d <q Wd S(   s}   this should reference rpmUtils and or the nevral for speed
           also it needs to obey the excludes - so probably nevrali   s   nameN(   s   tss   dbMatchs   mis   hdrs   selfs   installed_pkgs(   s   selfs   mis   hdr(    (    s   /usr/share/yum/yumcomps.pys   _get_installedÜ   s
      c         C   s   |  i | Sd  S(   N(   s   selfs   group_installeds	   groupname(   s   selfs	   groupname(    (    s   /usr/share/yum/yumcomps.pys   isGroupInstalledä   s    c         C   s   | g |  i | |  i | |  i | } xZ | D]R } xI |  i | |  i | |  i | D]$ } | | j o | i | ƒ q[ q[ Wq1 W| Sd S(   s<   returns list of all groups, recursively, needed by groupnameN(	   s	   groupnames   selfs
   sub_groupss   mandatory_metapkgss   default_metapkgss	   grouplists   subgroups   groups   append(   s   selfs	   groupnames	   grouplists   groups   subgroup(    (    s   /usr/share/yum/yumcomps.pys	   groupTreeç   s     * $ c         C   so   |  i | ƒ } g  } xO | D]G } x> |  i | |  i | D]$ } | | j o | i	 | ƒ q; q; Wq W| Sd S(   sv   get all pkgs in mandatory and default for all groups and their required 
           groups and metapkgs etc, recursingN(
   s   selfs	   groupTrees	   groupnames	   grouplists   pkglists   groups   default_pkgss   mandatory_pkgss   pkgs   append(   s   selfs	   groupnames	   grouplists   groups   pkgs   pkglist(    (    s   /usr/share/yum/yumcomps.pys   pkgTreeò   s       c         C   sO   g  } x> |  i | |  i | D]$ } | | j o | i | ƒ q q W| Sd S(   sÔ   return a list of all required pkgs and pkgs _ONLY_ to install this group
           this is not the same as pkgTree b/c it only lists packages for the group,
           it does not recurse through other groupreqsN(   s   pkglists   selfs   default_pkgss	   groupnames   mandatory_pkgss   pkgs   append(   s   selfs	   groupnames   pkglists   pkg(    (    s   /usr/share/yum/yumcomps.pys   requiredPkgsþ   s      c         C   sZ   g  } xI |  i | |  i | |  i | D]$ } | | j o | i | ƒ q* q* W| Sd S(   s[   return a list of required groups for this group. Do not recurse 
        through the groupsN(   s   grplists   selfs
   sub_groupss	   groupnames   mandatory_metapkgss   default_metapkgss   groups   append(   s   selfs	   groupnames   groups   grplist(    (    s   /usr/share/yum/yumcomps.pys   requiredGroups	  s     $ c         C   s"   |  i | ƒ |  i | } | Sd S(   s&   duh - return list of all pkgs in groupN(   s   selfs   requiredPkgss	   groupnames   optional_pkgss   pkglist(   s   selfs	   groupnames   pkglist(    (    s   /usr/share/yum/yumcomps.pys   allPkgs  s     c         C   s¢   x› |  i i ƒ  D]Š } |  i | |  i | |  i | } x^ | D]V } |  i	 i
 | ƒ o= |  i i
 | ƒ o g  |  i | <n |  i | i | ƒ q@ q@ Wq Wd S(   s_    populate the pkgs_per_group dict - produces list of pkgs installed 
            for each groupN(   s   selfs   group_installeds   keyss   groups   optional_pkgss   default_pkgss   mandatory_pkgss   pkglists   pkgs   installed_pkgss   has_keys   pkgs_per_groups   append(   s   selfs   groups   pkglists   pkg(    (    s   /usr/share/yum/yumcomps.pys   _pkgs_per_group  s      # c         C   sP  | t j o |  i } nj | d j oS g  } xS |  i i ƒ  D]5 } |  i | o | |  i j o | i | ƒ q= q= Wn
 | g } xz | D]r } d | GHx |  i
 | D] } d | GHq§ Wx |  i | D] } d | GHqÈ Wx |  i | D] } d | GHqé WqŠ WxI | D]A } d | GH|  i | i ƒ  x |  i | D] } d | GHq5WqWd S(   s!   this is soley used to debug stuffs   all_installeds	   Group: %ss      %s *s      %s +s      %ss   Inst Pkgs: %sN(   s   reqgroups   Nones   selfs   visible_groupss   groupss   group_installeds   keyss   grps   appends   groups   mandatory_pkgss   items   default_pkgss   optional_pkgss   pkgs_per_groups   sorts   pkg(   s   selfs   reqgroups   groups   grps   items   pkgs   groups(    (    s   /usr/share/yum/yumcomps.pys	   _dumppkgs#  s:      	 	    	 (   s   __name__s
   __module__s   __init__s   adds   compileGroupss   _correctGroupss   _installedgroupss   _get_installeds   isGroupInstalleds	   groupTrees   pkgTrees   requiredPkgss   requiredGroupss   allPkgss   _pkgs_per_groups   Nones	   _dumppkgs(    (    (    s   /usr/share/yum/yumcomps.pys   Groups_Info(   s   	U		*							
		c          C   s–   t  t ƒ }  |  i d ƒ |  i d ƒ |  i ƒ  y: |  i t i d ƒ } |  i	 t i d ƒ } | GH| GHWn% t j
 o } d t i d GHn Xd  S(   Ns   ./comps.xmls   ./othercomps.xmli   s   No Group named %s(   s   Groups_Infos   overwrite_groupss   compsgrpfuns   adds   compileGroupss	   groupTrees   syss   argvs   groupss   pkgTrees   pkgss   KeyErrors   e(   s   compsgrpfuns   pkgss   groupss   e(    (    s   /usr/share/yum/yumcomps.pys   main?  s    
	s   __main__i   (   s   rpms   compss   syss   rpmUtilss   libxml2s   parserErrors   Groups_Infos   mains   __name__s   overwrite_groupss   TransactionSets   ts(	   s   overwrite_groupss   Groups_Infos   tss   syss   compss   parserErrors   rpmUtilss   mains   rpm(    (    s   /usr/share/yum/yumcomps.pys   ?   s   				!ÿ 	