Improve duplicate detection and error reporting parsing emsdk_manifest.json
diff --git a/emsdk.py b/emsdk.py index b714f1f..e00005c 100644 --- a/emsdk.py +++ b/emsdk.py
@@ -2206,9 +2206,10 @@ def add_tool(tool): tool.is_sdk = False + existing = find_tool(str(tool)) + if existing: + raise Exception(f'Duplicate tool {tool}! Existing:\n{vars(existing)}, New:\n{vars(tool)}') tools.append(tool) - if find_tool(str(tool)): - raise Exception('Duplicate tool ' + str(tool) + '! Existing:\n{' + ', '.join("%s: %s" % item for item in vars(find_tool(str(tool))).items()) + '}, New:\n{' + ', '.join("%s: %s" % item for item in vars(tool).items()) + '}') tools_map[str(tool)] = tool @@ -2219,9 +2220,10 @@ def add_sdk(sdk): sdk.is_sdk = True + existing = find_sdk(str(sdk)) + if existing: + raise Exception(f'Duplicate sdk {sdk}! Existing:\n{vars(existing)}, New:\n{vars(sdk)}') sdks.append(sdk) - if find_sdk(str(sdk)): - raise Exception('Duplicate sdk ' + str(sdk) + '! Existing:\n{' + ', '.join("%s: %s" % item for item in vars(find_sdk(str(sdk))).items()) + '}, New:\n{' + ', '.join("%s: %s" % item for item in vars(sdk).items()) + '}') sdks_map[str(sdk)] = sdk @@ -2436,10 +2438,9 @@ def load_sdk_manifest(): try: manifest = json.loads(read_file(sdk_path('emsdk_manifest.json'))) - except Exception as e: - print('Error parsing emsdk_manifest.json!') - print(str(e)) - return + except Exception: + errlog('Error parsing emsdk_manifest.json!') + raise emscripten_tags = load_legacy_emscripten_tags() llvm_precompiled_tags_32bit = []