[TIC-Core] classification of building-block-category pkgs 94/123494/1
authorChulwoo Shin <cw1.shin@samsung.com>
Thu, 6 Apr 2017 01:08:34 +0000 (10:08 +0900)
committerChulwoo Shin <cw1.shin@samsung.com>
Thu, 6 Apr 2017 01:08:34 +0000 (10:08 +0900)
- Supports meta classification functions
- Tic-core can dynamically expand categories

Change-Id: I69157ba02bc4b91b73bbf4082c1f323c2183b98e
Signed-off-by: Chulwoo Shin <cw1.shin@samsung.com>
tic/config.py
tic/parser/recipe_parser.py
tic/parser/repo_parser.py
tic/parser/view_parser.py
tic/server/tic_server.py

index c83d1c8..e2efc8a 100644 (file)
@@ -33,7 +33,7 @@ class ConfigMgr(object):
                        "meta_prefix": "building-blocks",
                        "meta_prefix_root": "building-blocks-root-",
                        "meta_prefix_sub1": "building-blocks-sub1-",
-                       "meta_pattern": "-(?P<meta>root|sub1|sub2)-(?P<pkgname>.+)",    
+                       "meta_pattern": "-(?P<meta>root|sub1|sub2|category)-(?P<pkgname>.+)",
                        "meta_sub1_pattern": "(?P<root>.+)-(?P<sub1>.+)",
                        "meta_sub2_pattern": "(?P<root>.+)-(?P<sub1>.+)-(?P<sub2>.+)",
                        "profile_pattern": "(?P<pkgname>.+)-profile_(?P<profile>[^-]+)-?(?P<extra>.+)?"}
index 9c5c751..feb371b 100644 (file)
@@ -74,7 +74,6 @@ class DefaultRecipe(object):
           'Repositories': [{'Name': 'tizen_unified',
                             'Options': '--ssl_verify=no',
                             'Url': 'http://download.tizen.org/snapshots/tizen/unified/latest/repos/standard/packages/'},
-                            #'Url': 'http://download.tizen.org/live/devel:/Tizen:/Unified/standard/'},
                            {'Name': 'tizen_base_armv7l',
                             'Options': '--ssl_verify=no',
                             'Url': 'http://download.tizen.org/snapshots/tizen/base/latest/repos/arm/packages/'}]}
index 2ee2c8e..25a7ac0 100644 (file)
@@ -75,7 +75,6 @@ class RepodataParser(object):
             pkg_info['arch'] = pkg.findtext(tag_dic['arch'])
             pkg_info['summary'] = pkg.findtext(tag_dic['summary'])
             pkg_info['selfChecked'] = False # for web-ui tree
-            
             # Parsing meta-pkg using meta naming rule
             meta_match = META_PATTERN.search(pkg_info['name'])
             if meta_match is not None:
@@ -95,6 +94,13 @@ class RepodataParser(object):
                                               ''.join([META_PREFIX_SUB1, sub2_match.group('root'),'-', sub2_match.group('sub1')]),
                                               pkg_info['summary']])
                     pkg_info['meta'] = 'sub2'
+                elif meta_match.group('meta') == 'category':
+                    pkg_info['meta'] = 'category'
+                    # 0: pkg_name, 1: category_name
+                    meta_info['category'].append([pkg_info['name'], meta_match.group('pkgname')])
+                else:
+                    # building-blocks.rpm, etc...
+                    pkg_info['meta'] = 'etc'
 
             # check profile pkg
             profile_match = PROFILE_PATTERN.search(pkg_info['name']);
@@ -123,7 +129,7 @@ class RepodataParser(object):
                         require = dict(name= rpm.attrib['name'])
                         _set_version(require, rpm)
                         dep_list.append(require)
-                    pkg_info['requires'] = dep_list;
+                    pkg_info['requires'] = dep_list
                 provides_tag = format_tag.find(tag_dic['provides'])
                 if provides_tag is not None:
                     dep_list = []
@@ -131,14 +137,14 @@ class RepodataParser(object):
                         provide = dict(name= rpm.attrib['name'])
                         _set_version(provide, rpm)
                         if provide.get('ver') and not provide.get('rel') and pkg_info['version']['rel']:
-                            provide['rel'] = pkg_info['version']['rel'];
+                            provide['rel'] = pkg_info['version']['rel']
                         
                         if rpm.attrib['name'] in provides_dict:
                             provides_dict[rpm.attrib['name']].append({'name': pkg_name, 'data': provide})
                         else:
                             provides_dict[rpm.attrib['name']] = [{'name': pkg_name, 'data': provide}]
                         dep_list.append(provide)
-                    pkg_info['provides'] = dep_list;
+                    pkg_info['provides'] = dep_list
                 conflicts_tag = format_tag.find(tag_dic['conflicts'])
                 if conflicts_tag is not None:
                     dep_list = []
@@ -146,7 +152,7 @@ class RepodataParser(object):
                         conflict = dict(name= rpm.attrib['name'])
                         _set_version(conflict, rpm)
                         dep_list.append(conflict)
-                    pkg_info['conflicts'] = dep_list;
+                    pkg_info['conflicts'] = dep_list
                 recommends_tag = format_tag.find(tag_dic['recommends'])
                 if recommends_tag is not None:
                     dep_list = []
@@ -154,14 +160,14 @@ class RepodataParser(object):
                         recommend = dict(name=rpm.attrib['name'])
                         _set_version(recommend, rpm)
                         dep_list.append(recommend)
-                    pkg_info['recommends'] = dep_list;
+                    pkg_info['recommends'] = dep_list
                 suggests_tag = format_tag.find(tag_dic['suggests'])
                 if suggests_tag is not None:
                     dep_list = []
                     for rpm in suggests_tag:
                         suggests = dict(name= rpm.attrib['name'])
                         dep_list.append(suggests)
-                    pkg_info['suggests'] = dep_list;
+                    pkg_info['suggests'] = dep_list
                 file_tag = format_tag.find(tag_dic['file'])
                 if file_tag is not None:
                     dep_list = []
@@ -171,7 +177,7 @@ class RepodataParser(object):
                         else:
                             files_dict[file_t.text] = [pkg_name]
                         dep_list.append(file_t.text)
-                    pkg_info['file'] = dep_list;
+                    pkg_info['file'] = dep_list
             pkg_dict[pkg_name] = pkg_info
             pkg_id += 1
     
@@ -253,8 +259,8 @@ class RepodataParser(object):
         tag_dic = self._get_tagname(xml_list[0])
         
         # TODO: temporary code (should be deleted)
-        # meta_string='<?xml version="1.0" encoding="UTF-8"?><metadata xmlns="http://linux.duke.edu/metadata/common" xmlns:rpm="http://linux.duke.edu/metadata/rpm" packages="1467"><package type="rpm"><name>building-blocks-root-metapkg</name><arch>armv7l</arch><version epoch="0" ver="2.0.4" rel="4.2" vcs="platform/upstream/SDL#5f9405ba696ad79a0e05150430fe69e874f8280d" /><checksum type="sha256" pkgid="YES">6f74666eb89e1addc4ce75e25f3e639bbfdd8798fc848a6b7027501070567dcf</checksum><summary>Simple DirectMedia Layer</summary><description>This is the Simple DirectMedia Layer, a generic API that provides low level access to audio, keyboard, mouse, and display framebuffer across multiple platforms.</description><packager /><url>http://www.libsdl.org/</url><time file="1476718677" build="1476718668" /><size package="264245" installed="956696" archive="957124" /><location href="armv7l/SDL2-2.0.4-4.2.armv7l.rpm" /><format><rpm:license>Zlib and SGI-B-2.0</rpm:license><rpm:vendor>tizen</rpm:vendor><rpm:group>System Environment/Libraries</rpm:group><rpm:buildhost>w36</rpm:buildhost><rpm:sourcerpm>SDL2-2.0.4-4.2.src.rpm</rpm:sourcerpm><rpm:header-range start="280" end="5958" /><rpm:requires><rpm:entry name="building-blocks-sub1-metapkg-extsub1" /><rpm:entry name="building-blocks-sub1-metapkg-extsub2" /></rpm:requires></format></package><package type="rpm"><name>building-blocks-sub1-metapkg-extsub1</name><arch>armv7l</arch><version epoch="0" ver="2.0.4" rel="4.2" vcs="platform/upstream/SDL#5f9405ba696ad79a0e05150430fe69e874f8280d" /><checksum type="sha256" pkgid="YES">6f74666eb89e1addc4ce75e25f3e639bbfdd8798fc848a6b7027501070567dcf</checksum><summary>sub1-extension</summary><description>This is the Simple DirectMedia Layer, a generic API that provides low level access to audio, keyboard, mouse, and display framebuffer across multiple platforms.</description><packager /><url>http://www.libsdl.org/</url><time file="1476718677" build="1476718668" /><size package="264245" installed="956696" archive="957124" /><location href="armv7l/SDL2-2.0.4-4.2.armv7l.rpm" /><format><rpm:license>Zlib and SGI-B-2.0</rpm:license><rpm:vendor>tizen</rpm:vendor><rpm:group>System Environment/Libraries</rpm:group><rpm:buildhost>w36</rpm:buildhost><rpm:sourcerpm>SDL2-2.0.4-4.2.src.rpm</rpm:sourcerpm><rpm:header-range start="280" end="5958" /><rpm:requires><rpm:entry name="building-blocks-sub2-metapkg-extsub1-exts1sub1" /></rpm:requires></format></package><package type="rpm"><name>building-blocks-sub2-metapkg-extsub1-exts1sub1</name><arch>armv7l</arch><version epoch="0" ver="2.0.4" rel="4.2" vcs="platform/upstream/SDL#5f9405ba696ad79a0e05150430fe69e874f8280d" /><checksum type="sha256" pkgid="YES">6f74666eb89e1addc4ce75e25f3e639bbfdd8798fc848a6b7027501070567dcf</checksum><summary>sub2-extension</summary><description>This is the Simple DirectMedia Layer, a generic API that provides low level access to audio, keyboard, mouse, and display framebuffer across multiple platforms.</description><packager /><url>http://www.libsdl.org/</url><time file="1476718677" build="1476718668" /><size package="264245" installed="956696" archive="957124" /><location href="armv7l/SDL2-2.0.4-4.2.armv7l.rpm" /><format><rpm:license>Zlib and SGI-B-2.0</rpm:license><rpm:vendor>tizen</rpm:vendor><rpm:group>System Environment/Libraries</rpm:group><rpm:buildhost>w36</rpm:buildhost><rpm:sourcerpm>SDL2-2.0.4-4.2.src.rpm</rpm:sourcerpm><rpm:header-range start="280" end="5958" /><rpm:conflicts><rpm:entry name="building-blocks-sub2-metapkg-extsub1-exts1sub2" /></rpm:conflicts></format></package><package type="rpm"><name>building-blocks-sub2-metapkg-extsub1-exts1sub2</name><arch>armv7l</arch><version epoch="0" ver="2.0.4" rel="4.2" vcs="platform/upstream/SDL#5f9405ba696ad79a0e05150430fe69e874f8280d" /><checksum type="sha256" pkgid="YES">6f74666eb89e1addc4ce75e25f3e639bbfdd8798fc848a6b7027501070567dcf</checksum><summary>sub2-extension</summary><description>This is the Simple DirectMedia Layer, a generic API that provides low level access to audio, keyboard, mouse, and display framebuffer across multiple platforms.</description><packager /><url>http://www.libsdl.org/</url><time file="1476718677" build="1476718668" /><size package="264245" installed="956696" archive="957124" /><location href="armv7l/SDL2-2.0.4-4.2.armv7l.rpm" /><format><rpm:license>Zlib and SGI-B-2.0</rpm:license><rpm:vendor>tizen</rpm:vendor><rpm:group>System Environment/Libraries</rpm:group><rpm:buildhost>w36</rpm:buildhost><rpm:sourcerpm>SDL2-2.0.4-4.2.src.rpm</rpm:sourcerpm><rpm:header-range start="280" end="5958" /><rpm:conflicts><rpm:entry name="building-blocks-sub2-metapkg-extsub1-exts1sub1" /></rpm:conflicts></format></package><package type="rpm"><name>building-blocks-sub1-metapkg-extsub2</name><arch>armv7l</arch><version epoch="0" ver="2.0.4" rel="4.2" vcs="platform/upstream/SDL#5f9405ba696ad79a0e05150430fe69e874f8280d" /><checksum type="sha256" pkgid="YES">6f74666eb89e1addc4ce75e25f3e639bbfdd8798fc848a6b7027501070567dcf</checksum><summary>sub1-extension</summary><description>This is the Simple DirectMedia Layer, a generic API that provides low level access to audio, keyboard, mouse, and display framebuffer across multiple platforms.</description><packager /><url>http://www.libsdl.org/</url><time file="1476718677" build="1476718668" /><size package="264245" installed="956696" archive="957124" /><location href="armv7l/SDL2-2.0.4-4.2.armv7l.rpm" /><format><rpm:license>Zlib and SGI-B-2.0</rpm:license><rpm:vendor>tizen</rpm:vendor><rpm:group>System Environment/Libraries</rpm:group><rpm:buildhost>w36</rpm:buildhost><rpm:sourcerpm>SDL2-2.0.4-4.2.src.rpm</rpm:sourcerpm><rpm:header-range start="280" end="5958" /><rpm:requires><rpm:entry name="building-blocks-sub2-metapkg-extsub2-exts2sub1" /><rpm:entry name="SDL2" /></rpm:requires></format></package><package type="rpm"><name>building-blocks-sub2-metapkg-extsub2-exts2sub1</name><arch>armv7l</arch><version epoch="0" ver="2.0.4" rel="4.2" vcs="platform/upstream/SDL#5f9405ba696ad79a0e05150430fe69e874f8280d" /><checksum type="sha256" pkgid="YES">6f74666eb89e1addc4ce75e25f3e639bbfdd8798fc848a6b7027501070567dcf</checksum><summary>sub2-extension</summary><description>This is the Simple DirectMedia Layer, a generic API that provides low level access to audio, keyboard, mouse, and display framebuffer across multiple platforms.</description><packager /><url>http://www.libsdl.org/</url><time file="1476718677" build="1476718668" /><size package="264245" installed="956696" archive="957124" /><location href="armv7l/SDL2-2.0.4-4.2.armv7l.rpm" /><format><rpm:license>Zlib and SGI-B-2.0</rpm:license><rpm:vendor>tizen</rpm:vendor><rpm:group>System Environment/Libraries</rpm:group><rpm:buildhost>w36</rpm:buildhost><rpm:sourcerpm>SDL2-2.0.4-4.2.src.rpm</rpm:sourcerpm><rpm:header-range start="280" end="5958" /></format></package><package type="rpm"><name>building-blocks-sub2-metapkg-extsub2-exts2sub2</name><arch>armv7l</arch><version epoch="0" ver="2.0.4" rel="4.2" vcs="platform/upstream/SDL#5f9405ba696ad79a0e05150430fe69e874f8280d" /><checksum type="sha256" pkgid="YES">6f74666eb89e1addc4ce75e25f3e639bbfdd8798fc848a6b7027501070567dcf</checksum><summary>sub2-extension</summary><description>This is the Simple DirectMedia Layer, a generic API that provides low level access to audio, keyboard, mouse, and display framebuffer across multiple platforms.</description><packager /><url>http://www.libsdl.org/</url><time file="1476718677" build="1476718668" /><size package="264245" installed="956696" archive="957124" /><location href="armv7l/SDL2-2.0.4-4.2.armv7l.rpm" /><format><rpm:license>Zlib and SGI-B-2.0</rpm:license><rpm:vendor>tizen</rpm:vendor><rpm:group>System Environment/Libraries</rpm:group><rpm:buildhost>w36</rpm:buildhost><rpm:sourcerpm>SDL2-2.0.4-4.2.src.rpm</rpm:sourcerpm><rpm:header-range start="280" end="5958" /><rpm:requires><rpm:entry name="SDL2" /></rpm:requires></format></package></metadata>'
-        # xml_list.append(etree.fromstring(meta_string))
+        #meta_string='<?xml version="1.0" encoding="UTF-8"?><metadata xmlns="http://linux.duke.edu/metadata/common" xmlns:rpm="http://linux.duke.edu/metadata/rpm" packages="1467"><package type="rpm"><name>building-blocks-category-domains</name><arch>armv7l</arch><version epoch="0" ver="2.0.4" rel="4.2" vcs="platform/upstream/SDL#5f9405ba696ad79a0e05150430fe69e874f8280d" /><checksum type="sha256" pkgid="YES">6f74666eb89e1addc4ce75e25f3e639bbfdd8798fc848a6b7027501070567dcf</checksum><summary>Simple DirectMedia Layer</summary><description>This is the Simple DirectMedia Layer, a generic API that provides low level access to audio, keyboard, mouse, and display framebuffer across multiple platforms.</description><packager /><url>http://www.libsdl.org/</url><time file="1476718677" build="1476718668" /><size package="264245" installed="956696" archive="957124" /><location href="armv7l/SDL2-2.0.4-4.2.armv7l.rpm" /><format><rpm:license>Zlib and SGI-B-2.0</rpm:license><rpm:vendor>tizen</rpm:vendor><rpm:group>System Environment/Libraries</rpm:group><rpm:buildhost>w36</rpm:buildhost><rpm:sourcerpm>SDL2-2.0.4-4.2.src.rpm</rpm:sourcerpm><rpm:header-range start="280" end="5958" /><rpm:suggests><rpm:entry name="building-blocks-root-metapkg" /></rpm:suggests></format></package><package type="rpm"><name>building-blocks-category-presets</name><arch>armv7l</arch><version epoch="0" ver="2.0.4" rel="4.2" vcs="platform/upstream/SDL#5f9405ba696ad79a0e05150430fe69e874f8280d" /><checksum type="sha256" pkgid="YES">6f74666eb89e1addc4ce75e25f3e639bbfdd8798fc848a6b7027501070567dcf</checksum><summary>Simple DirectMedia Layer</summary><description>This is the Simple DirectMedia Layer, a generic API that provides low level access to audio, keyboard, mouse, and display framebuffer across multiple platforms.</description><packager /><url>http://www.libsdl.org/</url><time file="1476718677" build="1476718668" /><size package="264245" installed="956696" archive="957124" /><location href="armv7l/SDL2-2.0.4-4.2.armv7l.rpm" /><format><rpm:license>Zlib and SGI-B-2.0</rpm:license><rpm:vendor>tizen</rpm:vendor><rpm:group>System Environment/Libraries</rpm:group><rpm:buildhost>w36</rpm:buildhost><rpm:sourcerpm>SDL2-2.0.4-4.2.src.rpm</rpm:sourcerpm><rpm:header-range start="280" end="5958" /><rpm:suggests><rpm:entry name="building-blocks-root-metapkg2" /></rpm:suggests></format></package><package type="rpm"><name>building-blocks-root-metapkg2</name><arch>armv7l</arch><version epoch="0" ver="2.0.4" rel="4.2" vcs="platform/upstream/SDL#5f9405ba696ad79a0e05150430fe69e874f8280d" /><checksum type="sha256" pkgid="YES">6f74666eb89e1addc4ce75e25f3e639bbfdd8798fc848a6b7027501070567dcf</checksum><summary>Meta root pkg2</summary><description>This is the Simple DirectMedia Layer, a generic API that provides low level access to audio, keyboard, mouse, and display framebuffer across multiple platforms.</description><packager /><url>http://www.libsdl.org/</url><time file="1476718677" build="1476718668" /><size package="264245" installed="956696" archive="957124" /><location href="armv7l/SDL2-2.0.4-4.2.armv7l.rpm" /><format><rpm:license>Zlib and SGI-B-2.0</rpm:license><rpm:vendor>tizen</rpm:vendor><rpm:group>System Environment/Libraries</rpm:group><rpm:buildhost>w36</rpm:buildhost><rpm:sourcerpm>SDL2-2.0.4-4.2.src.rpm</rpm:sourcerpm><rpm:header-range start="280" end="5958" /></format></package><package type="rpm"><name>building-blocks-root-metapkg</name><arch>armv7l</arch><version epoch="0" ver="2.0.4" rel="4.2" vcs="platform/upstream/SDL#5f9405ba696ad79a0e05150430fe69e874f8280d" /><checksum type="sha256" pkgid="YES">6f74666eb89e1addc4ce75e25f3e639bbfdd8798fc848a6b7027501070567dcf</checksum><summary>Meta root pkg1</summary><description>This is the Simple DirectMedia Layer, a generic API that provides low level access to audio, keyboard, mouse, and display framebuffer across multiple platforms.</description><packager /><url>http://www.libsdl.org/</url><time file="1476718677" build="1476718668" /><size package="264245" installed="956696" archive="957124" /><location href="armv7l/SDL2-2.0.4-4.2.armv7l.rpm" /><format><rpm:license>Zlib and SGI-B-2.0</rpm:license><rpm:vendor>tizen</rpm:vendor><rpm:group>System Environment/Libraries</rpm:group><rpm:buildhost>w36</rpm:buildhost><rpm:sourcerpm>SDL2-2.0.4-4.2.src.rpm</rpm:sourcerpm><rpm:header-range start="280" end="5958" /><rpm:requires><rpm:entry name="building-blocks-sub1-metapkg-extsub1" /><rpm:entry name="building-blocks-sub1-metapkg-extsub2" /></rpm:requires></format></package><package type="rpm"><name>building-blocks-sub1-metapkg-extsub1</name><arch>armv7l</arch><version epoch="0" ver="2.0.4" rel="4.2" vcs="platform/upstream/SDL#5f9405ba696ad79a0e05150430fe69e874f8280d" /><checksum type="sha256" pkgid="YES">6f74666eb89e1addc4ce75e25f3e639bbfdd8798fc848a6b7027501070567dcf</checksum><summary>sub1-extension</summary><description>This is the Simple DirectMedia Layer, a generic API that provides low level access to audio, keyboard, mouse, and display framebuffer across multiple platforms.</description><packager /><url>http://www.libsdl.org/</url><time file="1476718677" build="1476718668" /><size package="264245" installed="956696" archive="957124" /><location href="armv7l/SDL2-2.0.4-4.2.armv7l.rpm" /><format><rpm:license>Zlib and SGI-B-2.0</rpm:license><rpm:vendor>tizen</rpm:vendor><rpm:group>System Environment/Libraries</rpm:group><rpm:buildhost>w36</rpm:buildhost><rpm:sourcerpm>SDL2-2.0.4-4.2.src.rpm</rpm:sourcerpm><rpm:header-range start="280" end="5958" /><rpm:requires><rpm:entry name="building-blocks-sub2-metapkg-extsub1-exts1sub1" /></rpm:requires></format></package><package type="rpm"><name>building-blocks-sub2-metapkg-extsub1-exts1sub1</name><arch>armv7l</arch><version epoch="0" ver="2.0.4" rel="4.2" vcs="platform/upstream/SDL#5f9405ba696ad79a0e05150430fe69e874f8280d" /><checksum type="sha256" pkgid="YES">6f74666eb89e1addc4ce75e25f3e639bbfdd8798fc848a6b7027501070567dcf</checksum><summary>sub2-extension</summary><description>This is the Simple DirectMedia Layer, a generic API that provides low level access to audio, keyboard, mouse, and display framebuffer across multiple platforms.</description><packager /><url>http://www.libsdl.org/</url><time file="1476718677" build="1476718668" /><size package="264245" installed="956696" archive="957124" /><location href="armv7l/SDL2-2.0.4-4.2.armv7l.rpm" /><format><rpm:license>Zlib and SGI-B-2.0</rpm:license><rpm:vendor>tizen</rpm:vendor><rpm:group>System Environment/Libraries</rpm:group><rpm:buildhost>w36</rpm:buildhost><rpm:sourcerpm>SDL2-2.0.4-4.2.src.rpm</rpm:sourcerpm><rpm:header-range start="280" end="5958" /><rpm:conflicts><rpm:entry name="building-blocks-sub2-metapkg-extsub1-exts1sub2" /></rpm:conflicts></format></package><package type="rpm"><name>building-blocks-sub2-metapkg-extsub1-exts1sub2</name><arch>armv7l</arch><version epoch="0" ver="2.0.4" rel="4.2" vcs="platform/upstream/SDL#5f9405ba696ad79a0e05150430fe69e874f8280d" /><checksum type="sha256" pkgid="YES">6f74666eb89e1addc4ce75e25f3e639bbfdd8798fc848a6b7027501070567dcf</checksum><summary>sub2-extension</summary><description>This is the Simple DirectMedia Layer, a generic API that provides low level access to audio, keyboard, mouse, and display framebuffer across multiple platforms.</description><packager /><url>http://www.libsdl.org/</url><time file="1476718677" build="1476718668" /><size package="264245" installed="956696" archive="957124" /><location href="armv7l/SDL2-2.0.4-4.2.armv7l.rpm" /><format><rpm:license>Zlib and SGI-B-2.0</rpm:license><rpm:vendor>tizen</rpm:vendor><rpm:group>System Environment/Libraries</rpm:group><rpm:buildhost>w36</rpm:buildhost><rpm:sourcerpm>SDL2-2.0.4-4.2.src.rpm</rpm:sourcerpm><rpm:header-range start="280" end="5958" /><rpm:conflicts><rpm:entry name="building-blocks-sub2-metapkg-extsub1-exts1sub1" /></rpm:conflicts></format></package><package type="rpm"><name>building-blocks-sub1-metapkg-extsub2</name><arch>armv7l</arch><version epoch="0" ver="2.0.4" rel="4.2" vcs="platform/upstream/SDL#5f9405ba696ad79a0e05150430fe69e874f8280d" /><checksum type="sha256" pkgid="YES">6f74666eb89e1addc4ce75e25f3e639bbfdd8798fc848a6b7027501070567dcf</checksum><summary>sub1-extension</summary><description>This is the Simple DirectMedia Layer, a generic API that provides low level access to audio, keyboard, mouse, and display framebuffer across multiple platforms.</description><packager /><url>http://www.libsdl.org/</url><time file="1476718677" build="1476718668" /><size package="264245" installed="956696" archive="957124" /><location href="armv7l/SDL2-2.0.4-4.2.armv7l.rpm" /><format><rpm:license>Zlib and SGI-B-2.0</rpm:license><rpm:vendor>tizen</rpm:vendor><rpm:group>System Environment/Libraries</rpm:group><rpm:buildhost>w36</rpm:buildhost><rpm:sourcerpm>SDL2-2.0.4-4.2.src.rpm</rpm:sourcerpm><rpm:header-range start="280" end="5958" /><rpm:requires><rpm:entry name="building-blocks-sub2-metapkg-extsub2-exts2sub1" /><rpm:entry name="SDL2" /></rpm:requires></format></package><package type="rpm"><name>building-blocks-sub2-metapkg-extsub2-exts2sub1</name><arch>armv7l</arch><version epoch="0" ver="2.0.4" rel="4.2" vcs="platform/upstream/SDL#5f9405ba696ad79a0e05150430fe69e874f8280d" /><checksum type="sha256" pkgid="YES">6f74666eb89e1addc4ce75e25f3e639bbfdd8798fc848a6b7027501070567dcf</checksum><summary>sub2-extension</summary><description>This is the Simple DirectMedia Layer, a generic API that provides low level access to audio, keyboard, mouse, and display framebuffer across multiple platforms.</description><packager /><url>http://www.libsdl.org/</url><time file="1476718677" build="1476718668" /><size package="264245" installed="956696" archive="957124" /><location href="armv7l/SDL2-2.0.4-4.2.armv7l.rpm" /><format><rpm:license>Zlib and SGI-B-2.0</rpm:license><rpm:vendor>tizen</rpm:vendor><rpm:group>System Environment/Libraries</rpm:group><rpm:buildhost>w36</rpm:buildhost><rpm:sourcerpm>SDL2-2.0.4-4.2.src.rpm</rpm:sourcerpm><rpm:header-range start="280" end="5958" /></format></package><package type="rpm"><name>building-blocks-sub2-metapkg-extsub2-exts2sub2</name><arch>armv7l</arch><version epoch="0" ver="2.0.4" rel="4.2" vcs="platform/upstream/SDL#5f9405ba696ad79a0e05150430fe69e874f8280d" /><checksum type="sha256" pkgid="YES">6f74666eb89e1addc4ce75e25f3e639bbfdd8798fc848a6b7027501070567dcf</checksum><summary>sub2-extension</summary><description>This is the Simple DirectMedia Layer, a generic API that provides low level access to audio, keyboard, mouse, and display framebuffer across multiple platforms.</description><packager /><url>http://www.libsdl.org/</url><time file="1476718677" build="1476718668" /><size package="264245" installed="956696" archive="957124" /><location href="armv7l/SDL2-2.0.4-4.2.armv7l.rpm" /><format><rpm:license>Zlib and SGI-B-2.0</rpm:license><rpm:vendor>tizen</rpm:vendor><rpm:group>System Environment/Libraries</rpm:group><rpm:buildhost>w36</rpm:buildhost><rpm:sourcerpm>SDL2-2.0.4-4.2.src.rpm</rpm:sourcerpm><rpm:header-range start="280" end="5958" /><rpm:requires><rpm:entry name="SDL2" /></rpm:requires></format></package></metadata>'
+        #xml_list.append(etree.fromstring(meta_string))
         
         filter_data = self._filtering_data_based_arch(xml_list, tag_dic)
         
@@ -263,7 +269,7 @@ class RepodataParser(object):
                          files={},
                          groups={},
                          conflicts={},
-                         meta_info=dict(root=[], sub1=[], sub2=[]))
+                         meta_info=dict(root=[], sub1=[], sub2=[], category=[]))
         
         # parses the repodata (primary.xml)
         # for xml_root in xml_list:
index 80ef325..5ed1d0c 100644 (file)
@@ -51,11 +51,12 @@ def make_view_data(pkg_group):
                         if not pkg.get('meta') and pkg['name'] not in duplicate:
                             refer_count[pkg['id']] += 1
                             duplicate.add(pkg['name'])
-                            meta_nodes.append(make_node(pkg))
+                            meta_nodes.append(make_node(pkg, meta_info.get('category')))
         meta_nodes.sort()
-    def make_node(pkg_info):
-        #return dict(id=pkg_info['id'], text=pkg_info['name'], nodes=[])
-        return dict(text=pkg_info['name'], nodes=[])
+    def make_node(pkg_info, category=None):
+        n = dict(text=pkg_info['name'], nodes=[])
+        if category: n['category'] = category
+        return n
     def make_meta_node(pkgname, viewtext):
         return dict(text=viewtext, metaname=pkgname, nodes=[])
 
@@ -78,10 +79,20 @@ def make_view_data(pkg_group):
     meta_info['sub1'] = sorted(meta_info['sub1'], key=itemgetter(0))
     meta_info['sub2'] = sorted(meta_info['sub2'], key=itemgetter(0))
     
+    # make category rpms
+    category_dict = {}
+    if meta_info.get('category'):
+        for category in meta_info['category']:
+            c_rpm = pkg_dict[category[0]]
+            for suggest in c_rpm.get('suggests'):
+                category_dict[suggest['name']] = category[1]
+    
     # make tree of meta
     for root in meta_info['root']:
         root_node = make_meta_node(root[0], root[1])
         view_ref[root[0]] = root_node
+        if root[0] in category_dict:
+            root_node['category'] = category_dict[root[0]]
         view_data.append(root_node)
         
     for sub1 in meta_info['sub1']:
@@ -90,6 +101,8 @@ def make_view_data(pkg_group):
         # search root
         if sub1[1] in view_ref:
             # add to root node
+            if view_ref[sub1[1]]['category']:
+                sub1_node['category'] = view_ref[sub1[1]]['category']
             view_ref[sub1[1]]['nodes'].append(sub1_node)
         else:
             # If root-meta does not exist, sub1 is added to top-level
@@ -100,9 +113,13 @@ def make_view_data(pkg_group):
         view_ref[sub2[0]] = sub2_node
         # search sub1
         if sub2[2] in view_ref:
+            if view_ref[sub2[2]]['category']:
+                sub2_node['category'] = view_ref[sub2[2]]['category']
             view_ref[sub2[2]]['nodes'].append(sub2_node)
         # search root    
         elif sub2[1] in view_ref: 
+            if view_ref[sub2[1]]['category']:
+                sub2_node['category'] = view_ref[sub2[1]]['category']
             # If sub1-meta does not exist, sub2 is added to child of root-meta
             view_ref[sub2[1]]['nodes'].append(sub2_node)
         else:
@@ -112,7 +129,7 @@ def make_view_data(pkg_group):
     # configure meta dependency tree (requires)
     for meta_pkg in view_data:
         set_meta_require(meta_pkg)
-    
+        
     #The remaining rpms are grouped into a MISC tree
     misc_info = {}
     misc_info['text'] = 'ETC'
index 6b8c58c..d9613ad 100644 (file)
@@ -33,9 +33,9 @@ def analysis():
     except ValueError as ve:
         logger.error(ve)
         resp = makeresponse(str(ve), ve)
-    except Exception as ex:
-        logger.error(ex)
-        resp = makeresponse(str(ex), ex)
+    except Exception as ex:
+        logger.error(ex)
+        resp = makeresponse(str(ex), ex)
     
     return resp
 
@@ -71,9 +71,9 @@ def exports():
     except ValueError as ve:
         logger.error(ve)
         resp = makeresponse(str(ve), ve)
-    except Exception as ex:
-        logger.error(ex)
-        resp = makeresponse(str(ex), ex)
+    except Exception as ex:
+        logger.error(ex)
+        resp = makeresponse(str(ex), ex)
     return resp
 
 
@@ -107,7 +107,6 @@ def makeresponse(data, err):
                     response=res_body)
     return resp
 
-
 ResultInfoType = collections.namedtuple('ResultInfo', 'result, data, message')
 def ResultInfo(result='false', data=None, message=None):
     return ResultInfoType(result, data, message)