Fixed incorrect detection of installed SDKs
[src/xds/xds-server.git] / scripts / sdks / agl / db-dump
index ec2b1d8..2fcd4c4 100755 (executable)
@@ -1,4 +1,4 @@
-#!/usr/bin/env python3
+#!/usr/bin/python3
 #
 # /**************************************************************************
 # * Copyright 2017-2018 IoT.bzh
 # **************************************************************************/
 
 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')
@@ -48,11 +50,15 @@ ENV = subprocess.check_output(
 
 SDK_ROOT_DIR = None
 for elt in ENV:
-    k, v = elt.decode().split('=', 1)
-    if k == 'SDK_ROOT_DIR':
-        SDK_ROOT_DIR = v.rstrip('/')
-    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.')
@@ -124,6 +130,18 @@ 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