X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;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])