X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=scripts%2Fsdks%2Fagl%2Fdb-dump;h=2fcd4c436ed57e77c1b2b8ff7e9232f13680d70c;hb=de8154b545ecdd5a35a0956ac5d93e26bb8ebc19;hp=5c040ea73a8e572fd9cfa6c7668d16cd87ff8a75;hpb=e97eebc18d726aa55738d7e19513491cf58a6e3a;p=src%2Fxds%2Fxds-server.git diff --git a/scripts/sdks/agl/db-dump b/scripts/sdks/agl/db-dump index 5c040ea..2fcd4c4 100755 --- a/scripts/sdks/agl/db-dump +++ b/scripts/sdks/agl/db-dump @@ -1,6 +1,6 @@ -#!/usr/bin/python +#!/usr/bin/python3 # -#/************************************************************************** +# /************************************************************************** # * Copyright 2017-2018 IoT.bzh # * # * author: Romain Forlot @@ -19,12 +19,14 @@ # **************************************************************************/ import os +import sys import json import logging import inspect import fnmatch import argparse import subprocess +import re PARSER = argparse.ArgumentParser( description='Lists available and installed SDKs') @@ -46,12 +48,17 @@ SCRIPT_PATH = os.path.dirname(os.path.abspath( ENV = subprocess.check_output( [os.path.join(SCRIPT_PATH, './_env-init.sh'), '-print']).splitlines() +SDK_ROOT_DIR = None for elt in ENV: - k, v = elt.split('=', 1) - if k == 'SDK_ROOT_DIR': - SDK_ROOT_DIR = v - elif k == 'SDK_ENV_SETUP_FILENAME': - SDK_ENV_SETUP_FILENAME = v + #only match what defines a variable + z = re.match(r"^(\w+)=([^']*)$", elt.decode()) + if z: + k = z.group(1) + v = z.group(2) + if k == 'SDK_ROOT_DIR': + SDK_ROOT_DIR = v.rstrip('/') + elif k == 'SDK_ENV_SETUP_FILENAME': + SDK_ENV_SETUP_FILENAME = v if SDK_ROOT_DIR is None: logging.error('No SDK_ROOT_DIR environment variable found.') @@ -70,6 +77,7 @@ SDK_DB_JSON = json.load(open(SDK_DB_FILEPATH, 'r')) for one_sdk in SDK_DB_JSON: one_sdk['status'] = 'Not Installed' + one_sdk['uuid'] = '' INSTALLED_SDK = [] for root, dirs, files in os.walk(SDK_ROOT_DIR): @@ -96,14 +104,17 @@ for root, dirs, files in os.walk(SDK_ROOT_DIR): for one_sdk in INSTALLED_SDK: logging.debug("Processing %s", one_sdk['ENV_FILE']) - PROFILE = one_sdk['ENV_FILE'].split('/')[3] - VERSION = one_sdk['ENV_FILE'].split('/')[4] - ARCH = one_sdk['ENV_FILE'].split('/')[5] + envFile = one_sdk['ENV_FILE'].split(SDK_ROOT_DIR+'/')[1] + PROFILE = envFile.split('/')[0] + VERSION = envFile.split('/')[1] + ARCH = envFile.split('/')[2] DIR = os.path.dirname(one_sdk['ENV_FILE']) if PROFILE == '' or VERSION == '' or ARCH == '' or DIR == '': logging.debug('Path not compliant, skipping') continue + UUID = os.path.basename(os.path.normpath(DIR)) + SDK_DATE = '' for line in open(one_sdk['VERSION_FILE']).readlines(): if line.startswith('Timestamp'): @@ -119,11 +130,24 @@ for one_sdk in INSTALLED_SDK: if sdk['profile'] == PROFILE and sdk['version'] == VERSION and sdk['arch'] == ARCH: if sdk['status'] == 'Installed': continue + # Additional verification based on url used to generate UUID (see also same logic in add script) + if sdk['url'] != '': + try: + ps = subprocess.Popen(('echo', sdk['url']), stdout=subprocess.PIPE) + uuid_md5 = subprocess.check_output(('md5sum'), stdin=ps.stdout) + ps.wait() + if str(uuid_md5).split(' ')[0][2:] != UUID: + continue + except: + e = sys.exc_info()[0] + logging.error("Error while checking UUID: " % e) + found = True sdk['status'] = 'Installed' sdk['date'] = SDK_DATE sdk['setupFile'] = one_sdk['ENV_FILE'] sdk['path'] = DIR + sdk['uuid'] = UUID break if not found: @@ -131,6 +155,7 @@ for one_sdk in INSTALLED_SDK: PROFILE + '-' + ARCH + '-' + VERSION) NEW_SDK = { 'name': PROFILE + '-' + ARCH + '-' + VERSION, + 'uuid': UUID, 'description': 'AGL SDK ' + ARCH + ' (version ' + VERSION + ')', 'profile': PROFILE, 'version': VERSION,