#
# Contributors:
# - S-Core Co., Ltd
-
+from lxml import etree
+from tic.utils.error import TICError
import logging
def analyze_dependency(pkg_group):
return analyze()
+def get_installed_packages(recipe, repoinfo, pkg_group):
+ logger = logging.getLogger(__name__)
+
+ if not recipe or not repoinfo:
+ return []
+
+ default = recipe.get('Default')
+ config = recipe.get('Configurations')[0]
+ platform_name = config.get('Platform')
+ platform = recipe.get(platform_name)
+
+ # check groups/extraPackages
+ group_set = set([])
+ extrapkg_set = set([])
+ for g in [default, platform, config]:
+ if g.has_key('Groups'):
+ group_set.update(g.get('Groups'))
+ if g.has_key('ExtraPackages'):
+ extrapkg_set.update(g.get('ExtraPackages'))
+ group_dict = dict.fromkeys(group_set)
+
+ # parsing group.xml
+ try:
+ tree = etree.parse(repoinfo[0].get('comps'))
+ root = tree.getroot()
+ except etree.XMLSyntaxError as e:
+ raise TICError('primary.xml syntax error. %s', e)
+
+ # Convert groups to packages
+ pkg_set = set([])
+ for elm in root.findall('group'):
+ group_name = elm.find('name').text
+ if group_dict.has_key(group_name):
+ pkglist = elm.find('packagelist')
+ plist = []
+ for pkgreq in pkglist.findall('packagereq'):
+ plist.append(pkgreq.text)
+ pkg_set.update(set(plist))
+
+ # set up required package from group packages
+ pkg2id = pkg_group.get('pkg2id')
+ pkg_list = pkg_group.get('pkg_list')
+ for pkg in pkg_set:
+ pkg_id = pkg2id.get(pkg)
+ if pkg_id and pkg_list[pkg_id].get('dependency'):
+ extrapkg_set.update(set(pkg_list[pkg_id].get('dependency')))
+ return list(extrapkg_set)
\ No newline at end of file