aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastien Douheret <sebastien.douheret@iot.bzh>2018-10-12 16:38:41 +0200
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2018-10-18 08:26:19 +0000
commit79333f3eca65f37542e217f37e305ea81f6e42a4 (patch)
treecb7e49a26c1659ed55e952220ce5a1a062bf0139
parent5e979f0ba451e64fc44ffaa8b79d714d9ad75a57 (diff)
Fix qemu sdk detection
arch for qemu sdk is qemux86-64 in sdk-latest.json but extracted value for environement file is corei7-64. Change-Id: Id2656de1648b6c9289d42c9f55fa8e1e4e056760 Signed-off-by: Sebastien Douheret <sebastien.douheret@iot.bzh>
-rwxr-xr-xscripts/sdks/agl/db-dump52
1 files changed, 36 insertions, 16 deletions
diff --git a/scripts/sdks/agl/db-dump b/scripts/sdks/agl/db-dump
index 2fcd4c4..e5ee8c8 100755
--- a/scripts/sdks/agl/db-dump
+++ b/scripts/sdks/agl/db-dump
@@ -50,7 +50,7 @@ ENV = subprocess.check_output(
SDK_ROOT_DIR = None
for elt in ENV:
- #only match what defines a variable
+ # only match what defines a variable
z = re.match(r"^(\w+)=([^']*)$", elt.decode())
if z:
k = z.group(1)
@@ -67,11 +67,11 @@ elif SDK_ENV_SETUP_FILENAME is None:
SDK_ENV_SETUP_FILENAME = 'environment-setup*'
# Get list of available SDKs
-SDK_DB_FILEPATH = os.path.join(SDK_ROOT_DIR, "sdks_latest.json")
+SDK_DB_FILEPATH = os.path.join(SDK_ROOT_DIR, 'sdks_latest.json')
if not os.path.exists(SDK_DB_FILEPATH):
DB_UPDATE_FILEPATH = os.path.join(SCRIPT_PATH, 'db-update')
- os.system(DB_UPDATE_FILEPATH + " " + SDK_DB_FILEPATH)
+ os.system(DB_UPDATE_FILEPATH + ' ' + SDK_DB_FILEPATH)
SDK_DB_JSON = json.load(open(SDK_DB_FILEPATH, 'r'))
@@ -89,25 +89,41 @@ for root, dirs, files in os.walk(SDK_ROOT_DIR):
# profile/version/arch/tag
elif depth != 2 and depth != 3:
continue
- EF, VF = '', ''
+
+ # Only consider SDK as valid if environment-setup and version files and
+ # sysroots directory can be found
+ EF, VF, SR = '', '', ''
+ for one_dir in dirs:
+ if fnmatch.fnmatch(one_dir, 'sysroots'):
+ SR = os.path.join(root, one_dir)
+
for one_file in files:
if fnmatch.fnmatch(one_file, SDK_ENV_SETUP_FILENAME):
EF = os.path.join(root, one_file)
- if fnmatch.fnmatch(one_file, 'version-*'):
+ elif fnmatch.fnmatch(one_file, 'version-*'):
VF = os.path.join(root, one_file)
- if EF != '' and VF != '':
+ if EF != '' and VF != '' and SR != '':
logging.debug('Adding installed SDK ' + root)
- INSTALLED_SDK.append({'ENV_FILE': EF, 'VERSION_FILE': VF})
+ INSTALLED_SDK.append(
+ {'ENV_FILE': EF, 'VERSION_FILE': VF, 'SYSROOTS': SR})
elif (EF == '' and VF != '') or (EF != '' and VF == ''):
logging.debug(
- 'WARNING SDK ignored : root=%s, EnvFile=%s, VersFile=%s', root, EF, VF)
+ 'WARNING SDK ignored : root=%s, EnvFile=%s, VersionFile=%s, sysroots=%s', root, EF, VF, SR)
for one_sdk in INSTALLED_SDK:
- logging.debug("Processing %s", one_sdk['ENV_FILE'])
+ logging.debug('Processing %s', one_sdk['ENV_FILE'])
envFile = one_sdk['ENV_FILE'].split(SDK_ROOT_DIR+'/')[1]
PROFILE = envFile.split('/')[0]
VERSION = envFile.split('/')[1]
ARCH = envFile.split('/')[2]
+ # and specific case for qemu where arch is not the same (qemux86-64 vs corei7-64)
+ if ARCH == 'corei7-64':
+ # Use /etc/rpm/platform to distinguish qemux86-64 from corei7-64 architecture
+ grepQemu = subprocess.call(['grep', '-q', 'qemux86', os.path.join(
+ one_sdk['SYSROOTS'], 'corei7-64-agl-linux', 'etc', 'rpm', 'platform')])
+ if grepQemu == 0:
+ ARCH = 'qemux86-64'
+
DIR = os.path.dirname(one_sdk['ENV_FILE'])
if PROFILE == '' or VERSION == '' or ARCH == '' or DIR == '':
logging.debug('Path not compliant, skipping')
@@ -125,22 +141,26 @@ for one_sdk in INSTALLED_SDK:
D[0:4], D[4:6], D[6:8], D[8:10], D[10:12])
logging.debug('Found date: %s', SDK_DATE)
+ # Check if installed SDKs match the ones listed in json file
found = False
for sdk in SDK_DB_JSON:
+ # Matching based on profile + version + arch fields
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 = 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)
+ logging.error('Error while checking UUID: ' % e)
found = True
sdk['status'] = 'Installed'
@@ -161,11 +181,11 @@ for one_sdk in INSTALLED_SDK:
'version': VERSION,
'arch': ARCH,
'path': DIR,
- 'url': "",
- 'status': "Installed",
+ 'url': '',
+ 'status': 'Installed',
'date': SDK_DATE,
- 'size': "",
- 'md5sum': "",
+ 'size': '',
+ 'md5sum': '',
'setupFile': one_sdk['ENV_FILE']
}
SDK_DB_JSON.append(NEW_SDK)