X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=tic%2Fparser%2Frepo_parser.py;h=95c6b86ddedd9ce6dc144b65535d7bfc6ed837a0;hb=2aec5d13456aee7a0ec356089be91edaf317dede;hp=a7f0c5f91a2a7a5991d32aa14ca4a7634526d613;hpb=b33ff199503236d7128c0af49db32bfb205828ba;p=archive%2F20170607%2Ftools%2Ftic-core.git diff --git a/tic/parser/repo_parser.py b/tic/parser/repo_parser.py index a7f0c5f..95c6b86 100644 --- a/tic/parser/repo_parser.py +++ b/tic/parser/repo_parser.py @@ -19,18 +19,22 @@ # Contributors: # - S-Core Co., Ltd +import re +import logging from lxml import etree from tic.utils.error import TICError from tic.utils.rpmmisc import archPolicies, default_arch -import logging -import re +from tic.config import configmgr -meta_prefix = 'building-blocks' -meta_prefix_root = 'building-blocks-root-' -meta_prefix_sub1 = 'building-blocks-sub1-' -meta_pattern = re.compile(''.join(['^', meta_prefix, '-(?Proot|sub1|sub2)-(?P.+)']), re.I) -meta_sub1_pattern = re.compile("(?P.+)-(?P.+)") -meta_sub2_pattern = re.compile("(?P.+)-(?P.+)-(?P.+)") +# meta pkg +META_PREFIX = configmgr.regularexp['meta_prefix'] +META_PREFIX_ROOT = configmgr.regularexp['meta_prefix_root'] +META_PREFIX_SUB1 = configmgr.regularexp['meta_prefix_sub1'] +META_PATTERN = re.compile(''.join(['^', META_PREFIX, configmgr.regularexp['meta_pattern']]), re.I) +META_SUB1_PATTERN = re.compile(configmgr.regularexp['meta_sub1_pattern']) +META_SUB2_PATTERN = re.compile(configmgr.regularexp['meta_sub2_pattern']) +# profile pkg +PROFILE_PATTERN = re.compile(configmgr.regularexp['profile_pattern']) class RepodataParser(object): @@ -72,24 +76,30 @@ class RepodataParser(object): pkg_info['selfChecked'] = False # for web-ui tree # Parsing meta-pkg using meta naming rule - meta_match = meta_pattern.search(pkg_info['name']) + meta_match = META_PATTERN.search(pkg_info['name']) if meta_match is not None: #print(meta_match.group(0), ', ', meta_match.group('meta'), ', ', meta_match.group('pkgname')) if meta_match.group('meta') == 'root': meta_info['root'].append([pkg_info['name']]) pkg_info['meta'] = 'root' elif meta_match.group('meta') == 'sub1': - sub1_match = meta_sub1_pattern.search(meta_match.group('pkgname')) + sub1_match = META_SUB1_PATTERN.search(meta_match.group('pkgname')) meta_info['sub1'].append([pkg_info['name'], - ''.join([meta_prefix_root, sub1_match.group('root')])]) + ''.join([META_PREFIX_ROOT, sub1_match.group('root')])]) pkg_info['meta'] = 'sub1' elif meta_match.group('meta') == 'sub2': - sub2_match = meta_sub2_pattern.search(meta_match.group('pkgname')) + sub2_match = META_SUB2_PATTERN.search(meta_match.group('pkgname')) meta_info['sub2'].append([pkg_info['name'], - ''.join([meta_prefix_root, sub2_match.group('root')]), - ''.join([meta_prefix_sub1, sub2_match.group('root'),'-', sub2_match.group('sub1')])]) + ''.join([META_PREFIX_ROOT, sub2_match.group('root')]), + ''.join([META_PREFIX_SUB1, sub2_match.group('root'),'-', sub2_match.group('sub1')])]) pkg_info['meta'] = 'sub2' - + + # check profile pkg + profile_match = PROFILE_PATTERN.search(pkg_info['name']); + if profile_match and profile_match.group('profile'): + pkg_info['profile'] = profile_match.group('profile') + else: + pkg_info['profile'] = None ver_tag = pkg.find(tag_dic['version']) pkg_info['version'] = {'epoch':ver_tag.attrib['epoch'], @@ -229,6 +239,7 @@ class RepodataParser(object): return ret_list def parse(self): + logger = logging.getLogger(__name__) if not self.repodata_list: return None @@ -238,7 +249,8 @@ class RepodataParser(object): tree = etree.parse(repodata['primary']) xml_list.append(tree.getroot()) except etree.XMLSyntaxError as e: - raise TICError('primary.xml syntax error. %s', e) + logger.info(e) + raise TICError(configmgr.message['xml_parse_error'] % ('primary', repodata['baseurl'])) tag_dic = self._get_tagname(xml_list[0])