diff --git a/bundles/com.espressif.idf.core/src/com/espressif/idf/core/toolchain/ESPToolChainManager.java b/bundles/com.espressif.idf.core/src/com/espressif/idf/core/toolchain/ESPToolChainManager.java index 5d23a1e66..bcee65e52 100644 --- a/bundles/com.espressif.idf.core/src/com/espressif/idf/core/toolchain/ESPToolChainManager.java +++ b/bundles/com.espressif.idf.core/src/com/espressif/idf/core/toolchain/ESPToolChainManager.java @@ -146,13 +146,10 @@ public void initToolChain(IToolChainManager manager, IToolChainProvider toolchai public File findDebugger(String target) { - return toolchainElements - .values() - .stream() - .filter(espToolChainElement -> espToolChainElement.name.equals(target)) - .map(espToolChainElement -> findToolChain(getAllPaths(), espToolChainElement.debuggerPattern)) - .findFirst() - .orElse(null); + return toolchainElements.values().stream() + .filter(espToolChainElement -> espToolChainElement.name.equals(target)) + .map(espToolChainElement -> findToolChain(getAllPaths(), espToolChainElement.debuggerPattern)) + .findFirst().orElse(null); } public File findToolChain(List paths, String filePattern) @@ -174,10 +171,7 @@ public File findToolChain(List paths, String filePattern) private Path[] getDirectories(String path) { - return Arrays.stream(path.split(File.pathSeparator)) - .map(String::trim) - .map(Paths::get) - .toArray(Path[]::new); + return Arrays.stream(path.split(File.pathSeparator)).map(String::trim).map(Paths::get).toArray(Path[]::new); } private File findMatchingFile(Path dir, String filePattern) @@ -204,7 +198,6 @@ private File findMatchingFile(Path dir, String filePattern) return null; } - public void removePrevInstalledToolchains(IToolChainManager manager) { try @@ -224,10 +217,12 @@ private void addToolChain(IToolChainManager manager, IToolChainProvider toolchai { try { - if (!isToolChainExist(manager, toolChainElement)) + if (isToolChainExist(manager, toolChainElement)) { - manager.addToolChain(new ESPToolchain(toolchainProvider, compilerFile.toPath(), toolChainElement)); + removeMatchedToolChain(manager, toolChainElement); } + + manager.addToolChain(new ESPToolchain(toolchainProvider, compilerFile.toPath(), toolChainElement)); } catch (CoreException e) { @@ -235,6 +230,23 @@ private void addToolChain(IToolChainManager manager, IToolChainProvider toolchai } } + private void removeMatchedToolChain(IToolChainManager manager, ESPToolChainElement toolChainElement) + { + Map props = new HashMap<>(); + props.put(IToolChain.ATTR_OS, toolChainElement.name); + props.put(IToolChain.ATTR_ARCH, toolChainElement.arch); + props.put(TOOLCHAIN_ATTR_ID, toolChainElement.fileName); + try + { + manager.getToolChainsMatching(props).forEach(toolchain -> manager.removeToolChain(toolchain)); + } + catch (CoreException e) + { + Logger.log(e); + } + + } + private boolean isToolChainExist(IToolChainManager manager, ESPToolChainElement toolChainElement) throws CoreException {