[TIC-CORE] provides default-recipe for 1st-release
[archive/20170607/tools/tic-core.git] / tic / command.py
1 import logging
2
3 from tic.dependency import analyze_dependency, get_installed_packages
4 from tic.parser.recipe_parser import get_default_recipe
5 from tic.parser.repo_parser import RepodataParser
6 from tic.parser.view_parser import make_view_data
7
8 from tic.utils.error import TICError
9 from tic.repo import get_repodata_from_repos
10
11 DEFAULT_CACHEDIR='/var/tmp/tic-core/cached'
12
13 def analyze(repo_list, recipe_list=None):
14     logger = logging.getLogger(__name__)
15     
16     if not repo_list and not recipe_list:
17         raise TICError('No repositories defined')
18     
19     repos = []
20     recipe = None
21     #TODO Repository check
22     # using default recipe (Temporary Code)
23     if recipe_list and recipe_list[0] == 'default':
24         recipe = get_default_recipe()
25         for repo_url in recipe.get('Repositories'):
26             repos.append({'name': repo_url.get('Name'), 
27                           'url': repo_url.get('Url')})
28     else:
29         number=1
30         for repo_url in repo_list:
31             repos.append({'name': 'repository_%d' % number, 
32                           'url': repo_url})
33             number = number + 1
34     
35     #Download repodata from repositories (Remote/Local)
36     repoinfo = get_repodata_from_repos(repos, DEFAULT_CACHEDIR)
37     
38     # Parse the xml files for the analysis of package (.rpm)
39     repo_parser = RepodataParser(repoinfo)
40     pkg_group = repo_parser.parse()
41     logger.info('pkg_list: %d, pkg2id: %d', len(pkg_group['pkg_list']), len(pkg_group['pkg2id']))
42     
43     # package install-dependency analysis
44     analyze_dependency(pkg_group)
45     # Make a data for TIC (Tizen image creation)
46     view_data = make_view_data(pkg_group)
47     inst_packages = get_installed_packages(recipe, repoinfo, pkg_group)
48     
49     result = {'packages': view_data,
50               'repos': repos,
51               'defaultpackages': inst_packages}
52     
53     return result