import os
import logging
+import hashlib
from tic.dependency import get_installed_packages
from tic.parser.recipe_parser import get_default_recipe, convert_recipe_to_yaml
from tic.pykickstarter import KSoption, kswriter
from tic.utils import process
from tic.utils import misc
+from tic.utils import file
DEFAULT_CACHEDIR='/var/tmp/tic-core'
DEFAULT_ANALYSIS_CACHEDIR='/var/tmp/tic-core/analysis'
#Download repodata from repositories (Remote/Local)
repoinfo = get_repodata_from_repos(repos, DEFAULT_CACHEDIR)
logger.info('time to get repodata from repo: %d ms', misc.get_timestamp() - start_time)
+
+ checksum_list=[]
+ for repo in repoinfo:
+ checksum_list.append(repo['checksum'])
+ all_checksum = hashlib.sha256('_'.join(checksum_list)).hexdigest()
+ analysis_file=os.path.join(DEFAULT_ANALYSIS_CACHEDIR, all_checksum, 'analysis.json')
+ pkg_group=None
+ if os.path.exists(analysis_file):
+ pkg_group=file.read_json(analysis_file)
- start_time = misc.get_timestamp()
- # Parse the xml files for the analysis of package (.rpm)
- repo_parser = RepodataParser('armv7l', repoinfo)
- pkg_group = repo_parser.parse()
- logger.info('packages: %d, provides: %d, files: %d', len(pkg_group['pkg_dict']), len(pkg_group['provides']), len(pkg_group['files']))
- logger.info('time to parse repodata: %d ms', misc.get_timestamp() - start_time)
+ if not pkg_group or not pkg_group.get('pkg_dict'):
+ start_time = misc.get_timestamp()
+ # Parse the xml files for the analysis of package (.rpm)
+ repo_parser = RepodataParser('armv7l', repoinfo)
+ pkg_group = repo_parser.parse()
+ logger.info('packages: %d, provides: %d, files: %d', len(pkg_group['pkg_dict']), len(pkg_group['provides']), len(pkg_group['files']))
+ logger.info('time to parse repodata: %d ms', misc.get_timestamp() - start_time)
+ # dump to cached file
+ file.write_json_flock(analysis_file, pkg_group)
+ else:
+ logger.info('use a cache parsing data - %s', analysis_file)
start_time = misc.get_timestamp()
# Make a data for TIC (Tizen image creation)
# copy the ks to output directory
output=copyfile(kspath, outdir, filename)
logger.info('copy the ks file from %s to dst:%s', kspath, output)
-
- return output
+ result = {'kspath':output, 'arch':config.get('Architecture')}
+ return result
def createimage(recipes, ksfile, outdir):
logger = logging.getLogger(__name__)